|
Rice Pastry API | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectrice.selector.SelectionKeyHandler
rice.pastry.socket.SocketCollectionManager
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.
| Nested Class Summary | |
protected class |
SocketCollectionManager.DeadChecker
DESCRIBE THE CLASS |
protected class |
SocketCollectionManager.MessageRetry
Internal class which represents a message which is currently delayed, waiting for an open socket. |
protected class |
SocketCollectionManager.SocketAccepter
Internal class which reads the greeting message off of a newly-accepted socket. |
protected class |
SocketCollectionManager.SourceRouteManager
Private class which is tasked with maintaining a source route which goes through this node. |
| Field Summary | |
java.util.LinkedList |
appSockets
DESCRIBE THE FIELD |
long |
BACKOFF_INITIAL
DESCRIBE THE FIELD |
int |
BACKOFF_LIMIT
DESCRIBE THE FIELD |
protected static byte[] |
HEADER_DIRECT
DESCRIBE THE FIELD |
static int |
HEADER_SIZE
DESCRIBE THE FIELD |
protected static byte[] |
HEADER_SOURCE_ROUTE
DESCRIBE THE FIELD |
protected Logger |
logger
DESCRIBE THE FIELD |
int |
MAX_OPEN_SOCKETS
DESCRIBE THE FIELD |
int |
MAX_OPEN_SOURCE_ROUTES
DESCRIBE THE FIELD |
int |
NUM_PING_TRIES
DESCRIBE THE FIELD |
protected static byte[] |
PASTRY_MAGIC_NUMBER
DESCRIBE THE FIELD |
int |
PING_DELAY
DESCRIBE THE FIELD |
float |
PING_JITTER
DESCRIBE THE FIELD |
protected RandomSource |
random
DESCRIBE THE FIELD |
int |
SOCKET_BUFFER_SIZE
DESCRIBE THE FIELD |
java.util.Hashtable |
sockets
DESCRIBE THE FIELD |
static int |
TOTAL_HEADER_SIZE
DESCRIBE THE FIELD |
int |
WRITE_WAIT_TIME
DESCRIBE THE FIELD |
| Constructor Summary | |
SocketCollectionManager(SocketPastryNode node,
SocketSourceRouteManager manager,
EpochInetSocketAddress bindAddress,
EpochInetSocketAddress proxyAddress,
RandomSource random)
Constructs a new SocketManager. |
|
| Method Summary | |
void |
accept(java.nio.channels.SelectionKey key)
Specified by the SelectionKeyHandler interface. |
protected void |
appSocketClosed(rice.pastry.socket.SocketAppSocket sas)
Method which is designed to be called *ONCE THE SOCKET HAS BEEN CLOSED*. |
protected void |
appSocketOpened(rice.pastry.socket.SocketAppSocket sas)
DESCRIBE THE METHOD |
void |
bootstrap(SourceRoute path,
Message message)
Method which sends bootstraps a node by sending message across the wire, using a fake IP address in the header so that the local node is not marked alive, and then closes the connection. |
protected void |
checkLiveness(SourceRoute path)
Initiates a liveness test on the given address, if the remote node does not respond, it is declared dead. |
protected void |
closeOneSocket()
TODO: Add also checking the top of the AppSocketQueue |
protected void |
closeSocket(SourceRoute path)
Method which cloeses a socket to a given remote node handle, and updates the bookkeeping to keep track of this closing. |
void |
connect(SourceRoute path,
int appId,
AppSocketReceiver receiver,
int timeout)
Method which sends a message across the wire. |
void |
declaredDead(EpochInetSocketAddress address)
Method which should be called when a remote node is declared dead. |
void |
destroy()
Makes this node resign from the network. |
int |
getNumSockets()
Gets the NumSockets attribute of the SocketCollectionManager object |
int |
getNumSourceRoutes()
Gets the NumSourceRoutes attribute of the SocketCollectionManager object |
PingManager |
getPingManager()
Method which returns the internal PingManager |
protected SourceRoute |
getSocketToClose()
Internal method which returns the next socket to be closed |
boolean |
isOpen(SourceRoute route)
Returns whether or not a socket is currently open to the given route |
protected void |
openAppSocket(SourceRoute path,
int appId,
AppSocketReceiver connector,
int timeout)
Method which opens a socket to a given remote node handle, and updates the bookkeeping to keep track of this socket |
protected void |
openSocket(SourceRoute path,
boolean bootstrap)
Method which opens a socket to a given remote node handle, and updates the bookkeeping to keep track of this socket |
void |
ping(SourceRoute route)
Method which suggests a ping to the remote node. |
void |
send(SourceRoute path,
SocketBuffer message,
SocketSourceRouteManager.AddressManager am)
Method which sends a message across the wire. |
protected boolean |
sendInternal(SourceRoute path,
SocketBuffer message)
Method which sends a message across the wire. |
protected void |
socketClosed(SourceRoute path,
rice.pastry.socket.SocketManager manager)
Method which is designed to be called *ONCE THE SOCKET HAS BEEN CLOSED*. |
protected void |
socketOpened(SourceRoute path,
rice.pastry.socket.SocketManager manager)
Method which is designed to be called by node handles when they wish to open a socket to their remote node. |
protected void |
socketUpdated(SourceRoute path)
Method which is designed to be called whenever a node has network activity. |
protected void |
sourceRouteClosed(SocketCollectionManager.SourceRouteManager manager)
Method which is designed to be called *ONCE THE SOURCE ROUTE MANAGER HAS BEEN CLOSED*. |
protected void |
sourceRouteOpened(SocketCollectionManager.SourceRouteManager manager)
Method which is designed to be called when a new source route manager is created. |
protected void |
sourceRouteUpdated(SocketCollectionManager.SourceRouteManager manager)
Method which is designed to be called whenever a source route has network activity. |
void |
stall()
Internal testing method which simulates a stall. |
| Methods inherited from class rice.selector.SelectionKeyHandler |
connect, modifyKey, read, write |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public final int MAX_OPEN_SOCKETS
public final int MAX_OPEN_SOURCE_ROUTES
public final int SOCKET_BUFFER_SIZE
public final int PING_DELAY
public final float PING_JITTER
public final int NUM_PING_TRIES
public final int WRITE_WAIT_TIME
public final long BACKOFF_INITIAL
public final int BACKOFF_LIMIT
public java.util.Hashtable sockets
public java.util.LinkedList appSockets
protected Logger logger
protected RandomSource random
protected static byte[] HEADER_DIRECT
protected static byte[] HEADER_SOURCE_ROUTE
public static int HEADER_SIZE
protected static byte[] PASTRY_MAGIC_NUMBER
public static int TOTAL_HEADER_SIZE
| Constructor Detail |
public SocketCollectionManager(SocketPastryNode node,
SocketSourceRouteManager manager,
EpochInetSocketAddress bindAddress,
EpochInetSocketAddress proxyAddress,
RandomSource random)
throws java.io.IOException
node - The pastry node this manager is servingmanager - DESCRIBE THE PARAMETERbindAddress - DESCRIBE THE PARAMETERproxyAddress - DESCRIBE THE PARAMETERrandom - DESCRIBE THE PARAMETER
java.io.IOException - DESCRIBE THE EXCEPTION| Method Detail |
public boolean isOpen(SourceRoute route)
route - The route
protected SourceRoute getSocketToClose()
public int getNumSourceRoutes()
public int getNumSockets()
public PingManager getPingManager()
public void bootstrap(SourceRoute path,
Message message)
throws java.io.IOException
message - The message to sendpath - DESCRIBE THE PARAMETER
java.io.IOException - DESCRIBE THE EXCEPTION
public void send(SourceRoute path,
SocketBuffer message,
SocketSourceRouteManager.AddressManager am)
message - The message to sendpath - DESCRIBE THE PARAMETERam - DESCRIBE THE PARAMETER
public void connect(SourceRoute path,
int appId,
AppSocketReceiver receiver,
int timeout)
path - DESCRIBE THE PARAMETERappId - DESCRIBE THE PARAMETERreceiver - DESCRIBE THE PARAMETERtimeout - DESCRIBE THE PARAMETERpublic void ping(SourceRoute route)
route - The route to useprotected void checkLiveness(SourceRoute path)
path - DESCRIBE THE PARAMETERpublic void declaredDead(EpochInetSocketAddress address)
address - The address which was declared dead
protected boolean sendInternal(SourceRoute path,
SocketBuffer message)
message - The message to sendpath - The path to send the message along
public void accept(java.nio.channels.SelectionKey key)
accept in class SelectionKeyHandlerkey - The key which is acceptable.
protected void openSocket(SourceRoute path,
boolean bootstrap)
path - DESCRIBE THE PARAMETERbootstrap - DESCRIBE THE PARAMETER
protected void openAppSocket(SourceRoute path,
int appId,
AppSocketReceiver connector,
int timeout)
path - DESCRIBE THE PARAMETERappId - DESCRIBE THE PARAMETERconnector - DESCRIBE THE PARAMETERtimeout - DESCRIBE THE PARAMETERprotected void closeSocket(SourceRoute path)
path - DESCRIBE THE PARAMETER
protected void socketOpened(SourceRoute path,
rice.pastry.socket.SocketManager manager)
manager - The manager for the remote addresspath - DESCRIBE THE PARAMETERprotected void appSocketOpened(rice.pastry.socket.SocketAppSocket sas)
sas - DESCRIBE THE PARAMETERprotected void closeOneSocket()
protected void socketClosed(SourceRoute path,
rice.pastry.socket.SocketManager manager)
manager - The manager for the remote addresspath - DESCRIBE THE PARAMETERprotected void appSocketClosed(rice.pastry.socket.SocketAppSocket sas)
sas - DESCRIBE THE PARAMETERprotected void socketUpdated(SourceRoute path)
path - DESCRIBE THE PARAMETERprotected void sourceRouteOpened(SocketCollectionManager.SourceRouteManager manager)
manager - The manager for the remote addressprotected void sourceRouteClosed(SocketCollectionManager.SourceRouteManager manager)
manager - The manager for the remote addressprotected void sourceRouteUpdated(SocketCollectionManager.SourceRouteManager manager)
manager - The manager with activity
public void destroy()
throws java.io.IOException
java.io.IOException - DESCRIBE THE EXCEPTIONpublic void stall()
|
Rice Pastry API | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||