Package org.jgroups.blocks
Class ConnectionTable
- java.lang.Object
-
- org.jgroups.blocks.BasicConnectionTable
-
- org.jgroups.blocks.ConnectionTable
-
- All Implemented Interfaces:
java.lang.Runnable
public class ConnectionTable extends BasicConnectionTable 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
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.jgroups.blocks.BasicConnectionTable
BasicConnectionTable.ConnectionListener, BasicConnectionTable.Receiver
-
-
Field Summary
-
Fields inherited from class org.jgroups.blocks.BasicConnectionTable
log, pm
-
-
Constructor Summary
Constructors Constructor Description ConnectionTable(int srv_port)
Regular ConnectionTable without expiration of idle connectionsConnectionTable(int srv_port, long reaper_interval, long conn_expire_time)
ConnectionTable including a connection reaper.ConnectionTable(java.net.InetAddress bind_addr, int srv_port)
ConnectionTable(BasicConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port)
ConnectionTable(BasicConnectionTable.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)
ConnectionTable(BasicConnectionTable.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, PortsManager pm)
ConnectionTable including a connection reaper.ConnectionTable(BasicConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port, PortsManager pm)
Create a ConnectionTable
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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
start()
-
Methods inherited from class org.jgroups.blocks.BasicConnectionTable
addConnectionListener, getLinger, getLocalAddress, getNumberOfConnectionCreations, getNumConnections, getPeerAddressReadTimeout, getReceiveBufferSize, getSendBufferSize, getSendQueueSize, getSocketConnectionTimeout, getTcpNodelay, getThreadFactory, getUseSendQueues, receive, removeConnection, removeConnectionListener, retainAll, send, setLinger, setPeerAddressReadTimeout, setReceiveBufferSize, setReceiver, setSendBufferSize, setSendQueueSize, setSocketConnectionTimeout, setTcpNodelay, setThreadFactory, setUseSendQueues, stop, toString
-
-
-
-
Constructor Detail
-
ConnectionTable
public ConnectionTable(int srv_port) throws java.lang.Exception
Regular ConnectionTable without expiration of idle connections- Parameters:
srv_port
- The port on which the server will listen. If this port is reserved, the next free port will be taken (incrementing srv_port).- Throws:
java.lang.Exception
-
ConnectionTable
public ConnectionTable(java.net.InetAddress bind_addr, int srv_port) throws java.lang.Exception
- Throws:
java.lang.Exception
-
ConnectionTable
public ConnectionTable(int srv_port, long reaper_interval, long conn_expire_time) throws java.lang.Exception
ConnectionTable including a connection reaper. Connections that have been idle for more than conn_expire_time milliseconds will be closed and removed from the connection table. On next access they will be re-created.- Parameters:
srv_port
- The port on which the server will listenreaper_interval
- Number of milliseconds to wait for reaper between attepts to reap idle connectionsconn_expire_time
- Number of milliseconds a connection can be idle (no traffic sent or received until it will be reaped- Throws:
java.lang.Exception
-
ConnectionTable
public ConnectionTable(BasicConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port) throws java.lang.Exception
- Throws:
java.lang.Exception
-
ConnectionTable
public ConnectionTable(BasicConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port, PortsManager pm) throws java.lang.Exception
Create a ConnectionTable- Parameters:
r
- A reference to a receiver of all messages received by this class. Methodreceive()
will be called.bind_addr
- The host name or IP address of the interface to which the server socket will bind. This is interesting only in multi-homed systems. If bind_addr is null, the server socket will bind to the first available interface (e.g. /dev/hme0 on Solaris or /dev/eth0 on Linux systems).external_addr
- The address which will be broadcast to the group (the externally visible address which this host should be contacted on). If external_addr is null, it will default to the same address that the server socket is bound to.srv_port
- The port to which the server socket will bind to. If this port is reserved, the next free port will be taken (incrementing srv_port).max_port
- The largest port number that the server socket will be bound to. If max_port < srv_port then there is no limit.- Throws:
java.lang.Exception
-
ConnectionTable
public ConnectionTable(BasicConnectionTable.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
- Throws:
java.lang.Exception
-
ConnectionTable
public ConnectionTable(BasicConnectionTable.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, PortsManager pm) throws java.lang.Exception
ConnectionTable including a connection reaper. Connections that have been idle for more than conn_expire_time milliseconds will be closed and removed from the connection table. On next access they will be re-created.- Parameters:
r
- The Receiverbind_addr
- The host name or IP address of the interface to which the server socket will bind. This is interesting only in multi-homed systems. If bind_addr is null, the server socket will bind to the first available interface (e.g. /dev/hme0 on Solaris or /dev/eth0 on Linux systems).external_addr
- The address which will be broadcast to the group (the externally visible address which this host should be contacted on). If external_addr is null, it will default to the same address that the server socket is bound to.srv_port
- The port to which the server socket will bind to. If this port is reserved, the next free port will be taken (incrementing srv_port).max_port
- The largest port number that the server socket will be bound to. If max_port < srv_port then there is no limit.reaper_interval
- Number of milliseconds to wait for reaper between attepts to reap idle connectionsconn_expire_time
- Number of milliseconds a connection can be idle (no traffic sent or received until it will be reaped- Throws:
java.lang.Exception
-
-
Method Detail
-
start
public final void start() throws java.lang.Exception
- Overrides:
start
in classBasicConnectionTable
- Throws:
java.lang.Exception
-
init
protected void init() throws java.lang.Exception
- Throws:
java.lang.Exception
-
run
public void run()
Acceptor thread. Continuously accept new connections. Create a new thread for each new connection and put it in conns. When the thread should stop, it is interrupted by the thread creator.- Specified by:
run
in interfacejava.lang.Runnable
-
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. Will not bind to port >end_port. Sets srv_port- Throws:
java.lang.Exception
-
-