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
Constructor Detail

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

Method Detail

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.