## org.jgroups.blocks
Class ConnectionTableNIO

    java.lang.Object
      org.jgroups.blocks.BasicConnectionTable
          org.jgroups.blocks.ConnectionTableNIO

All Implemented Interfaces:
  java.lang.Runnable

    public class ConnectionTableNIO

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, Scott Marlow, Alex Fu

Nested Class Summary
`static class` `ConnectionTableNIO.MyFuture`
`static class` `ConnectionTableNIO.SelectorWriteHandler`
`static class` `ConnectionTableNIO.WriteRequest`

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, socket_factory`

Constructor Summary
`ConnectionTableNIO(BasicConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port)`
`ConnectionTableNIO(BasicConnectionTable.Receiver r, java.net.InetAddress bind_addr, java.net.InetAddress external_addr, int srv_port, int max_port, boolean doStart)`
`ConnectionTableNIO(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)`
`ConnectionTableNIO(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, boolean doStart)`
`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.
`long` `getProcessorKeepAliveTime()`
`int` `getProcessorMaxThreads()`
`int` `getProcessorMinThreads()`
`int` `getProcessorQueueSize()`
`int` `getProcessorThreads()`
`int` `getReaderThreads()`
`int` `getWriterThreads()`
`protected void` `init()`
`void` `run()` Acceptor thread.
`protected void` `runRequest(Address addr, java.nio.ByteBuffer buf)`
`void` `setProcessorKeepAliveTime(long m_processor_keepAliveTime)`
`void` `setProcessorMaxThreads(int m_processor_maxThreads)`
`void` `setProcessorMinThreads(int m_processor_minThreads)`
`void` `setProcessorQueueSize(int m_processor_queueSize)`
`void` `setProcessorThreads(int m_processor_threads)`
`void` `setReaderThreads(int m_reader_threads)`
`void` `setWriterThreads(int m_writer_threads)`
`void` `start()`
`void` `stop()` Closes all open sockets, the server socket and all threads waiting for incoming messages

Methods inherited from class org.jgroups.blocks.BasicConnectionTable

`addConnectionListener, getLinger, getLocalAddress, getNumberOfConnectionCreations, getNumConnections, getPeerAddressReadTimeout, getReceiveBufferSize, getSendBufferSize, getSendQueueSize, getSocketConnectionTimeout, getSocketFactory, getTcpNodelay, getThreadFactory, getUseSendQueues, receive, removeConnection, removeConnectionListener, retainAll, send, setLinger, setPeerAddressReadTimeout, setReceiveBufferSize, setReceiver, setSendBufferSize, setSendQueueSize, setSocketConnectionTimeout, setSocketFactory, setTcpNodelay, setThreadFactory, setUseSendQueues, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

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(BasicConnectionTable.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(BasicConnectionTable.Receiver r,
                              java.net.InetAddress bind_addr,
                              java.net.InetAddress external_addr,
                              int srv_port,
                              int max_port,
                              boolean doStart)
                       throws java.lang.Exception

Throws:
  `java.lang.Exception`

### ConnectionTableNIO

    public ConnectionTableNIO(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

Parameters:
  `r` -
  `bind_addr` -
  `external_addr` -
  `srv_port` -
  `max_port` -
  `reaper_interval` -
  `conn_expire_time` -
Throws:
  `java.lang.Exception`

### ConnectionTableNIO

    public ConnectionTableNIO(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,
                              boolean doStart)
                       throws java.lang.Exception

Throws:
  `java.lang.Exception`

Method Detail

### getReaderThreads

    public int getReaderThreads()

### setReaderThreads

    public void setReaderThreads(int m_reader_threads)

### getWriterThreads

    public int getWriterThreads()

### setWriterThreads

    public void setWriterThreads(int m_writer_threads)

### getProcessorThreads

    public int getProcessorThreads()

### setProcessorThreads

    public void setProcessorThreads(int m_processor_threads)

### getProcessorMinThreads

    public int getProcessorMinThreads()

### setProcessorMinThreads

    public void setProcessorMinThreads(int m_processor_minThreads)

### getProcessorMaxThreads

    public int getProcessorMaxThreads()

### setProcessorMaxThreads

    public void setProcessorMaxThreads(int m_processor_maxThreads)

### getProcessorQueueSize

    public int getProcessorQueueSize()

### setProcessorQueueSize

    public void setProcessorQueueSize(int m_processor_queueSize)

### getProcessorKeepAliveTime

    public long getProcessorKeepAliveTime()

### setProcessorKeepAliveTime

    public void setProcessorKeepAliveTime(long m_processor_keepAliveTime)

### start

    public final void start()
                     throws java.lang.Exception

  Overrides:
    `start` in class `BasicConnectionTable`
  Throws:
    `java.lang.Exception`

### init

    protected void init()
                 throws java.lang.Exception

  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 `BasicConnectionTable`

### run

    public void run()

  Acceptor thread. Continuously accept new connections and assign readhandler/writehandler to them.

  Specified by:
    `run` in interface `java.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. Sets srv_port

  Throws:
    `java.lang.Exception`

### runRequest

    protected void runRequest(Address addr,
                              java.nio.ByteBuffer buf)
                       throws java.lang.InterruptedException

  Throws:
    `java.lang.InterruptedException`

Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.