package org.mobicents.mgcp.stack; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.mobicents.mgcp.stack.handlers.EndpointHandlerManager; public class EndpointHandlerFactory { private static Logger logger = Logger.getLogger(EndpointHandlerFactory.class); private int size = 0; private int count = 0; private EndpointHandlerManager jainMgcpStackImpl = null; private List<EndpointHandler> list = new ArrayList<EndpointHandler>(); public EndpointHandlerFactory(int size, EndpointHandlerManager jainMgcpStackImpl) { this.size = size; this.jainMgcpStackImpl = jainMgcpStackImpl; } public EndpointHandler allocate(String endpoint) { EndpointHandler handler = null; if (!list.isEmpty()) { handler = list.remove(0); handler.init(endpoint); return handler; } handler = new EndpointHandler(this.jainMgcpStackImpl, this); handler.init(endpoint); count++; if (logger.isDebugEnabled()) { logger.debug("EndpointHandlerFactory underflow. Count = " + count); } return handler; } public void deallocate(EndpointHandler handler) { if (list.size() < size && handler != null) { list.add(handler); } } public int getSize() { return this.size; } public int getCount() { return this.count; } }