|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectrice.pastry.wire.SocketManager
Class which maintains all outgoing open sockets. It is responsible for keeping only MAX_OPEN_SOCKETS number of client sockets open at once. It also binds a ServerSocketChannel to the specified port and listens for incoming connections. Once a connections is established, it uses the interal SocketConnector to read the greeting message (HelloMessage) off of the stream, and hands the connection off to the appropriate node handle.
Field Summary | |
static int |
MAX_OPEN_SOCKETS
the number of sockets where we start closing other sockets |
protected java.util.LinkedList |
openSockets
the linked list of open sockets |
Constructor Summary | |
SocketManager(WirePastryNode node,
int port,
java.nio.channels.Selector selector)
Constructs a new SocketManager. |
Method Summary | |
void |
accept(java.nio.channels.SelectionKey key)
Specified by the SelectionKeyHandler interface. |
void |
closeSocket(WireNodeHandle handle)
Method which is designed to be called by node handles which have been disconnected by the remote node (i.e. |
void |
connect(java.nio.channels.SelectionKey key)
Specified by the SelectionKeyHandler interface - should NEVER be called! |
protected java.util.LinkedList |
generateOpenSockets()
Can be overloaded. |
protected boolean |
needToDisconnectSockets()
called to determine if a socket should be closed |
void |
openSocket(WireNodeHandle handle)
Method which is designed to be called by node handles when they wish to open a socket to their remote node. |
void |
read(java.nio.channels.SelectionKey key)
Specified by the SelectionKeyHandler interface - is called whenever a key has data available. |
protected void |
removeOpenSocketsIfNeeded()
called routinely to recycle sockets that haven't recently been used |
void |
update(WireNodeHandle handle)
Method which is designed to be called whenever a node has network activity. |
void |
wakeup()
Specified by the SelectionKeyHandler interface - does nothing. |
void |
write(java.nio.channels.SelectionKey key)
Specified by the SelectionKeyHandler interface - should NEVER be called! |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected java.util.LinkedList openSockets
public static int MAX_OPEN_SOCKETS
Constructor Detail |
public SocketManager(WirePastryNode node, int port, java.nio.channels.Selector selector)
node
- The pastry node this manager is servingport
- The port number which this manager is listening onselector
- The Selector this manager should register withMethod Detail |
protected java.util.LinkedList generateOpenSockets()
public void openSocket(WireNodeHandle handle)
handle
- The handle which wishes to open a connectionprotected void removeOpenSocketsIfNeeded()
protected boolean needToDisconnectSockets()
public void closeSocket(WireNodeHandle handle)
handle
- The handle which has been disconnected.public void update(WireNodeHandle handle)
handle
- The node handle which has activity.public void accept(java.nio.channels.SelectionKey key)
accept
in interface SelectionKeyHandler
key
- The key which is acceptable.public void read(java.nio.channels.SelectionKey key)
read
in interface SelectionKeyHandler
key
- The key which is readable.public void write(java.nio.channels.SelectionKey key)
write
in interface SelectionKeyHandler
key
- The key which is writable.public void connect(java.nio.channels.SelectionKey key)
connect
in interface SelectionKeyHandler
key
- The key which is connectable.public void wakeup()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |