Class SocketPool


  • public class SocketPool
    extends Object
    Represents a set of open sockets that are being cached for subsequent transfers. CheckIn() a socket to add it to the pool. Other threads can use it. CheckOut() a socket to mark it busy; it will remain in the pool but noone else can check it out. Finally, you can remove a socket from the pool, in which case the pool will remove it from all its references.
    • Constructor Detail

      • SocketPool

        public SocketPool()
        Constructor for SocketPool.
    • Method Detail

      • add

        public void add​(SocketBox sb)
        add socketBox to the pool. Depending on its state, it will be added to free or busy sockets.
      • remove

        public void remove​(SocketBox sb)
        remove socketBox from the pool, remove all references to it
      • checkOut

        public SocketBox checkOut()
        checks out the next free socket and returns it, or returns null if there aren't any. Before calling this method, the socket needs to be first add()ed to the pool.
      • checkIn

        public void checkIn​(SocketBox sb)
        Before calling this method, the socket needs to be first add()ed to the pool and checked out. Note: checking in a socket that is not reusable will cause its removal from the pool.
      • count

        public int count()
        Returns:
        number of all cached sockets
      • countFree

        public int countFree()
        Returns:
        number of free sockets
      • countBusy

        public int countBusy()
        Returns:
        number of busy sockets
      • hasFree

        public boolean hasFree()
        Returns:
        true if there is at least 1 free socket
      • flush

        public void flush()
                   throws IOException
        Forcibly close all sockets, and remove them from the pool.
        Throws:
        IOException