package libcsp.csp.core; import libcsp.csp.CSPManager; import libcsp.csp.ImmortalEntry; import libcsp.csp.handlers.RouteHandler; import libcsp.csp.util.ConnectionQueue; import libcsp.csp.util.IDispose; public class SocketCore implements IDispose, libcsp.csp.Socket { public byte port; public ConnectionQueue connections; public SocketCore(byte connectionsCapacity) { this.connections = new ConnectionQueue(connectionsCapacity); } public ConnectionCore accept(int timeout) { return connections.dequeue(timeout); } public synchronized void processConnection(ConnectionCore connection) { if(port != -1) { connections.enqueue(connection); } } public synchronized void close() { if(ImmortalEntry.portTable[port].isOpen) { ImmortalEntry.portTable[port].isOpen = false; ImmortalEntry.portTable[port].socket = null; dispose(); } } @Override public void dispose() { this.port = -1; this.connections.reset(); ImmortalEntry.resourcePool.putSocket(this); } }