rice.pastry.wire
Class SocketManager
- public class SocketManager
- implements rice.pastry.wire.SelectionKeyHandler
- 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.
- Version:
- $Id: SocketManager.java,v 1.8 2002/09/13 03:23:56 amislove Exp $
- Author:
- Alan Mislove
SocketManager
public SocketManager(rice.pastry.wire.WirePastryNode node,
int port,
java.nio.channels.Selector selector)
- Constructs a new SocketManager.
- Parameters:
node
- The pastry node this manager is serving
port
- The port number which this manager is listening on
selector
- The Selector this manager should register with
openSocket
public void openSocket(rice.pastry.wire.WireNodeHandle handle)
- Method which is designed to be called by node handles when they wish to open a socket to their remote node. This method will determine if another node handle needs to disconnect, and will disconnect the ejected node handle if necessary.
- Parameters:
handle
- The handle which wishes to open a connection
closeSocket
public void closeSocket(rice.pastry.wire.WireNodeHandle handle)
- Method which is designed to be called by node handles which have been disconnected by the remote node (i.e. they received a DisconnectMessage).
- Parameters:
handle
- The handle which has been disconnected.
update
public void update(rice.pastry.wire.WireNodeHandle handle)
- Method which is designed to be called whenever a node has network activity. This is used to determine which nodes should be disconnected, should it be necessary (implementation of a LRU stack).
- Parameters:
handle
- The node handle which has activity.
accept
public void accept(java.nio.channels.SelectionKey key)
- Specified by the SelectionKeyHandler interface. Is called whenever a key has become acceptable, representing an incoming connection. This method will accept the connection, and attach a SocketConnector in order to read the greeting off of the channel. Once the greeting has been read, the connector will hand the channel off to the appropriate node handle.
- Parameters:
key
- The key which is acceptable.
read
public void read(java.nio.channels.SelectionKey key)
- Specified by the SelectionKeyHandler interface - is called whenever a key has data available. The appropriate SocketConnecter is informed, and is told to read the data.
- Parameters:
key
- The key which is readable.
write
public void write(java.nio.channels.SelectionKey key)
- Specified by the SelectionKeyHandler interface - should NEVER be called!
- Parameters:
key
- The key which is writable.
connect
public void connect(java.nio.channels.SelectionKey key)
- Specified by the SelectionKeyHandler interface - should NEVER be called!
- Parameters:
key
- The key which is connectable.
wakeup
public void wakeup()
- Specified by the SelectionKeyHandler interface - does nothing.