package cl.altiuz.reports.zmq;

import org.apache.commons.pool.PoolableObjectFactory;
import org.zeromq.ZMQ;
import org.zeromq.ZMQ.Context;
import org.zeromq.ZMQ.Socket;

public class SocketFactory implements PoolableObjectFactory {
	
	private static final String ENDPOINT = Messages
			.getString("Connector.endpoint");
	
	private Context ctx;

	public SocketFactory() {
		ctx = ZMQ.context(1);
	}

	public void activateObject(Object obj) throws Exception {
		// TODO Auto-generated method stub

	}

	public void destroyObject(Object obj) throws Exception {
		if (obj instanceof Socket) {
			Socket socket = (Socket) obj;
			socket.disconnect(ENDPOINT);
			socket.close();
		}
	}

	public Object makeObject() throws Exception {
		Socket socket = ctx.socket(ZMQ.REQ);
		socket.connect(ENDPOINT);
		return socket;
	}

	public void passivateObject(Object obj) throws Exception {
		// TODO Auto-generated method stub

	}

	public boolean validateObject(Object obj) {
		return true;
	}

}
