org.jgroups.blocks
Class ConnectionTableNIO

java.lang.Object
  extended byorg.jgroups.blocks.ConnectionTable
      extended byorg.jgroups.blocks.ConnectionTableNIO
All Implemented Interfaces:
java.lang.Runnable

public class ConnectionTableNIO
extends ConnectionTable
implements java.lang.Runnable

Manages incoming and outgoing TCP connections. For each outgoing message to destination P, if there is not yet a connection for P, one will be created. Subsequent outgoing messages will use this connection. For incoming messages, one server socket is created at startup. For each new incoming client connecting, a new thread from a thread pool is allocated and listens for incoming messages until the socket is closed by the peer.
Sockets/threads with no activity will be killed after some time.

Incoming messages from any of the sockets can be received by setting the message listener.

Author:
Bela Ban, Scott Marlow, Alex Fu

Nested Class Summary
static class ConnectionTableNIO.SelectorWriteHandler
           
static class ConnectionTableNIO.WriteRequest
           
 
Nested classes inherited from class org.jgroups.blocks.ConnectionTable
ConnectionTable.ConnectionListener, ConnectionTable.Receiver
 
Field Summary
protected static org.apache.commons.logging.Log LOG
           
 
Fields inherited from class org.jgroups.blocks.ConnectionTable
log
 
Constructor Summary
ConnectionTableNIO(ConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port)
           
ConnectionTableNIO(ConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port, long reaper_interval, long conn_expire_time)
           
ConnectionTableNIO(int srv_port)
           
ConnectionTableNIO(int srv_port, long reaper_interval, long conn_expire_time)
           
 
Method Summary
protected  java.net.ServerSocket createServerSocket(int start_port, int end_port)
          Finds first available port starting at start_port and returns server socket.
protected  void init()
           
 void run()
          Acceptor thread.
 void stop()
          Closes all open sockets, the server socket and all threads waiting for incoming messages
 
Methods inherited from class org.jgroups.blocks.ConnectionTable
addConnectionListener, getLocalAddress, getNumConnections, getReceiveBufferSize, getSendBufferSize, getSocketConnectionTimeout, getUseSendQueues, receive, remove, removeConnectionListener, send, setReceiveBufferSize, setReceiver, setSendBufferSize, setSocketConnectionTimeout, setUseSendQueues, start, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOG

protected static final org.apache.commons.logging.Log LOG
Constructor Detail

ConnectionTableNIO

public ConnectionTableNIO(int srv_port)
                   throws java.lang.Exception
Parameters:
srv_port -
Throws:
java.lang.Exception

ConnectionTableNIO

public ConnectionTableNIO(int srv_port,
                          long reaper_interval,
                          long conn_expire_time)
                   throws java.lang.Exception
Parameters:
srv_port -
reaper_interval -
conn_expire_time -
Throws:
java.lang.Exception

ConnectionTableNIO

public ConnectionTableNIO(ConnectionTable.Receiver r,
                          java.net.InetAddress bind_addr,
                          java.net.InetAddress external_addr,
                          int srv_port,
                          int max_port)
                   throws java.lang.Exception
Parameters:
r -
bind_addr -
external_addr -
srv_port -
max_port -
Throws:
java.lang.Exception

ConnectionTableNIO

public ConnectionTableNIO(ConnectionTable.Receiver r,
                          java.net.InetAddress bind_addr,
                          java.net.InetAddress external_addr,
                          int srv_port,
                          int max_port,
                          long reaper_interval,
                          long conn_expire_time)
                   throws java.lang.Exception
Parameters:
r -
bind_addr -
external_addr -
srv_port -
max_port -
reaper_interval -
conn_expire_time -
Throws:
java.lang.Exception
Method Detail

init

protected void init()
             throws java.lang.Exception
Overrides:
init in class ConnectionTable
Throws:
java.lang.Exception

stop

public void stop()
Closes all open sockets, the server socket and all threads waiting for incoming messages

Overrides:
stop in class ConnectionTable

run

public void run()
Acceptor thread. Continuously accept new connections and assign readhandler/writehandler to them.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class ConnectionTable

createServerSocket

protected java.net.ServerSocket createServerSocket(int start_port,
                                                   int end_port)
                                            throws java.lang.Exception
Finds first available port starting at start_port and returns server socket. Sets srv_port

Overrides:
createServerSocket in class ConnectionTable
Throws:
java.lang.Exception


Copyright ? 1998-2005 Bela Ban. All Rights Reserved.