Class ConnectionTable

java.lang.Object
org.jgroups.blocks.BasicConnectionTable
org.jgroups.blocks.ConnectionTable
All Implemented Interfaces:
Runnable

public class ConnectionTable extends BasicConnectionTable implements 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
  • Constructor Details

    • ConnectionTable

      public ConnectionTable(int srv_port) throws 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:
      Exception
    • ConnectionTable

      public ConnectionTable(InetAddress bind_addr, int srv_port) throws Exception
      Throws:
      Exception
    • ConnectionTable

      public ConnectionTable(int srv_port, long reaper_interval, long conn_expire_time) throws 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 listen
      reaper_interval - Number of milliseconds to wait for reaper between attepts to reap idle connections
      conn_expire_time - Number of milliseconds a connection can be idle (no traffic sent or received until it will be reaped
      Throws:
      Exception
    • ConnectionTable

      public ConnectionTable(BasicConnectionTable.Receiver r, InetAddress bind_addr, InetAddress external_addr, int srv_port, int max_port) throws Exception
      Throws:
      Exception
    • ConnectionTable

      public ConnectionTable(BasicConnectionTable.Receiver r, InetAddress bind_addr, InetAddress external_addr, int srv_port, int max_port, PortsManager pm) throws Exception
      Create a ConnectionTable
      Parameters:
      r - A reference to a receiver of all messages received by this class. Method receive() 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 invalid input: '<' srv_port then there is no limit.
      Throws:
      Exception
    • ConnectionTable

      public ConnectionTable(BasicConnectionTable.Receiver r, InetAddress bind_addr, InetAddress external_addr, int srv_port, int max_port, long reaper_interval, long conn_expire_time) throws Exception
      Throws:
      Exception
    • ConnectionTable

      public ConnectionTable(BasicConnectionTable.Receiver r, InetAddress bind_addr, InetAddress external_addr, int srv_port, int max_port, long reaper_interval, long conn_expire_time, PortsManager pm) throws 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 Receiver
      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 invalid input: '<' srv_port then there is no limit.
      reaper_interval - Number of milliseconds to wait for reaper between attepts to reap idle connections
      conn_expire_time - Number of milliseconds a connection can be idle (no traffic sent or received until it will be reaped
      Throws:
      Exception
  • Method Details

    • start

      public final void start() throws Exception
      Overrides:
      start in class BasicConnectionTable
      Throws:
      Exception
    • init

      protected void init() throws Exception
      Throws:
      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 interface Runnable
    • createServerSocket

      protected ServerSocket createServerSocket(int start_port, int end_port) throws Exception
      Finds first available port starting at start_port and returns server socket. Will not bind to port >end_port. Sets srv_port
      Throws:
      Exception