Package org.jgroups.blocks.cs
Class NioServer
java.lang.Object
org.jgroups.blocks.cs.BaseServer
org.jgroups.blocks.cs.NioBaseServer
org.jgroups.blocks.cs.NioServer
- All Implemented Interfaces:
Closeable,AutoCloseable,ConnectionListener
Server for sending and receiving messages via NIO channels. Uses only a single thread to accept, connect, write and
read to/from connections.
Note that writes can get dropped, e.g. in the case where we have a previous write pending and a new write is invoked. This is typically not an issue as JGroups retransmits messages, but might become one when using NioServer standalone, i.e. outside JGroups.
- Since:
- 3.6.5
-
Nested Class Summary
Nested classes/interfaces inherited from class org.jgroups.blocks.cs.NioBaseServer
NioBaseServer.AcceptorNested classes/interfaces inherited from class org.jgroups.blocks.cs.BaseServer
BaseServer.Reaper -
Field Summary
FieldsFields inherited from class org.jgroups.blocks.cs.NioBaseServer
acceptor, copy_on_partial_write, max_send_buffers, num_selects, reader_idle_time, reg_lock, registration, selectorFields inherited from class org.jgroups.blocks.cs.BaseServer
client_bind_addr, client_bind_port, conn_expire_time, conn_listeners, conns, defer_client_binding, factory, linger, local_addr, lock, log, log_details, max_length, OK, reaper, reaperInterval, receiver, recv_buf_size, running, send_buf_size, sock_conn_timeout, socket_factory, tcp_nodelay, time_service, use_acks, use_peer_connections -
Constructor Summary
ConstructorsConstructorDescriptionNioServer(InetAddress bind_addr, int port) Creates an instance ofNioServerthat opens a server channel and listens for connections.NioServer(ThreadFactory thread_factory, SocketFactory socket_factory, InetAddress bind_addr, int srv_port, int end_port, InetAddress external_addr, int external_port, int recv_buf_size) NioServer(ThreadFactory thread_factory, SocketFactory socket_factory, InetAddress bind_addr, int srv_port, int end_port, InetAddress external_addr, int external_port, int recv_buf_size, String service_name) Creates an instance ofNioServerthat opens a server channel and listens for connections. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected voidhandleAccept(SelectionKey key) voidstart()Starts accepting connections.voidstop()Stops listening for connections and handling traffic.Methods inherited from class org.jgroups.blocks.cs.NioBaseServer
acceptorRunning, copyOnPartialWrite, copyOnPartialWrite, createConnection, maxSendBuffers, maxSendBuffers, numPartialWrites, numSelects, printBuffers, readerIdleTime, readerIdleTime, register, selectorOpenMethods inherited from class org.jgroups.blocks.cs.BaseServer
addConnection, addConnectionListener, clearConnections, clientBindAddress, clientBindAddress, clientBindPort, clientBindPort, close, closeConnection, closeConnection, closeConnection, closeConnection, connected, connectionClosed, connectionEstablished, connectionEstablishedTo, connExpireTime, connExpireTimeout, deferClientBinding, deferClientBinding, explanation, flush, flushAll, forAllConnections, getConnection, getConnection, getMaxLength, getNumConnections, getNumOpenConnections, hasConnection, linger, linger, localAddress, localAddress, log, log, logDetails, logDetails, notifyConnectionClosed, notifyConnectionEstablished, printConnections, reaperInterval, reaperInterval, receive, receive, receive, receiveBufferSize, receiveBufferSize, receiver, receiver, removeConnectionIfPresent, removeConnectionListener, replaceConnection, retainAll, running, send, send, sendBufferSize, sendBufferSize, sendToAll, sendToAll, setMaxLength, socketConnectionTimeout, socketConnectionTimeout, socketFactory, socketFactory, tcpNodelay, tcpNodelay, timeService, timeService, toString, toString, useAcks, useAcks, usePeerConnections, usePeerConnections, validateArgs
-
Field Details
-
channel
-
-
Constructor Details
-
NioServer
Creates an instance ofNioServerthat opens a server channel and listens for connections. Needs to be started next.- Parameters:
bind_addr- The local address to bind to. If null, the address will be picked by the OSport- The local port to bind to- Throws:
Exception- Thrown if the creation failed
-
NioServer
public NioServer(ThreadFactory thread_factory, SocketFactory socket_factory, InetAddress bind_addr, int srv_port, int end_port, InetAddress external_addr, int external_port, int recv_buf_size) throws Exception - Throws:
Exception
-
NioServer
public NioServer(ThreadFactory thread_factory, SocketFactory socket_factory, InetAddress bind_addr, int srv_port, int end_port, InetAddress external_addr, int external_port, int recv_buf_size, String service_name) throws Exception Creates an instance ofNioServerthat opens a server channel and listens for connections. Needs to be started next.- Parameters:
thread_factory- The thread factory used to create new threadssocket_factory- The socket factory used to create socket channelsbind_addr- The local address to bind to. If null, the address will be picked by the OSsrv_port- The local port to bind to If 0, the port will be picked by the OS.end_port- If srv_port is taken, the next port is tried, until end_port has been reached, in which case an exception will be thrown. If srv_port == end_port, only 1 port will be tried.external_addr- The external address in case of NAT. Ignored if null.external_port- The external port on the NA. If 0, srv_port is used.recv_buf_size- The size of the initial TCP receive window (in bytes)service_name- The name of the service- Throws:
Exception- Thrown if the creation failed
-
-
Method Details
-
getChannel
-
handleAccept
- Overrides:
handleAcceptin classNioBaseServer- Throws:
Exception
-
start
Description copied from class:BaseServerStarts accepting connections. Typically, socket handler or selectors thread are started here.- Overrides:
startin classBaseServer- Throws:
Exception
-
stop
public void stop()Description copied from class:BaseServerStops listening for connections and handling traffic. Typically, socket handler or selector threads are stopped, and server sockets or channels are closed.- Overrides:
stopin classBaseServer
-
acceptorDone
protected void acceptorDone()- Overrides:
acceptorDonein classNioBaseServer
-