org.globus.ftp.dc
Class SocketPool

java.lang.Object
  extended by org.globus.ftp.dc.SocketPool

public class SocketPool
extends java.lang.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.


Field Summary
protected  java.util.Hashtable allSockets
           
protected  java.util.Hashtable busySockets
           
protected  java.util.Hashtable freeSockets
           
 
Constructor Summary
SocketPool()
          Constructor for SocketPool.
 
Method Summary
 void add(SocketBox sb)
          add socketBox to the pool.
 void applyToAll(SocketOperator op)
          Apply the suplied callback to all socketBoxes.
 void checkIn(SocketBox sb)
          Before calling this method, the socket needs to be first add()ed to the pool and checked out.
 SocketBox checkOut()
          checks out the next free socket and returns it, or returns null if there aren't any.
 int count()
           
 int countBusy()
           
 int countFree()
           
 void flush()
          Forcibly close all sockets, and remove them from the pool.
 boolean hasFree()
           
 void remove(SocketBox sb)
          remove socketBox from the pool, remove all references to it
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

allSockets

protected java.util.Hashtable allSockets

freeSockets

protected java.util.Hashtable freeSockets

busySockets

protected java.util.Hashtable busySockets
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

applyToAll

public void applyToAll(SocketOperator op)
                throws java.lang.Exception
Apply the suplied callback to all socketBoxes.

Throws:
java.lang.Exception

flush

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

Throws:
java.io.IOException


Copyright © 2013. All Rights Reserved.