Class NonBlockingTcpDatagramSocket

java.lang.Object
java.net.DatagramSocket
com.tangosol.net.TcpDatagramSocket
com.tangosol.net.NonBlockingTcpDatagramSocket
All Implemented Interfaces:
Closeable, AutoCloseable

public class NonBlockingTcpDatagramSocket extends TcpDatagramSocket
TCP based non-blocking datagram socket implementation. In order to provide a non-blocking API this implementation may drop packets if the underlying TCP transfer buffers are full.
Author:
mf 2009.12.16
  • Field Details

    • SPLIT

      public static final boolean SPLIT
      Flag indicating if split sockets should be used for TcpDatagram sockets. While this should ideally never be needed, testing on Linux has shown that under heavy packet loads the socket can appear to stall and refuse to accept or emit data. Worse still while the socket is in this state the NIC is transmitting ~300,000 packets/second, even when the process is paused CTRL+Z'd. This setting is conceptually similar to the "coherence.datagram.splitsocket" but only applies to TcpDatagram sockets. Additionally it does not require multiple listening ports, just multiple connections. As of 3.6.1 this value defaults to false. This became "safe" in 3.6.1 since this version began using multiple listening sockets, and avoids the case which would be likely to trigger the Linux stall issue.
  • Constructor Details

    • NonBlockingTcpDatagramSocket

      public NonBlockingTcpDatagramSocket() throws SocketException
      Create a new NonBlockingTcpDatagramSocket that with a wildcard address bound to an ephemeral port.
      Throws:
      SocketException - if any error happens during the bind, or if the port is unavailable
    • NonBlockingTcpDatagramSocket

      public NonBlockingTcpDatagramSocket(SocketAddress addr) throws SocketException
      Creates a new NonBlockingTcpDatagramSocket which will be bound to the specified address.
      Parameters:
      addr - the address to bind
      Throws:
      SocketException - if any error happens during the bind, or if the port is unavailable
    • NonBlockingTcpDatagramSocket

      public NonBlockingTcpDatagramSocket(int nPort) throws SocketException
      Creates a new NonBlockingTcpDatagramSocket using the wildcard address and the specified port number.

      The port number should be between 0 and 65535. Zero means that the system will pick an ephemeral port during the bind operation.

      Parameters:
      nPort - the port to bind to
      Throws:
      SocketException - if any error happens during the bind, or if the port is unavailable
    • NonBlockingTcpDatagramSocket

      public NonBlockingTcpDatagramSocket(int nPort, InetAddress addr) throws SocketException
      Creates a new NonBlockingTcpDatagramSocket using an address and a port number.

      If null is specified as the address assigned will be the wildcard address.

      The port number should be between 0 and 65535. Zero means that the system will pick an ephemeral port during the bind operation.

      Parameters:
      nPort - the port number
      addr - the IP address
      Throws:
      SocketException - if any error happens during the bind, or if the port is unavailable
    • NonBlockingTcpDatagramSocket

      public NonBlockingTcpDatagramSocket(com.oracle.coherence.common.net.SocketProvider provider) throws SocketException
      Creates a new NonBlockingTcpDatagramSocket using the provider.
      Parameters:
      provider - the provider to be used
      Throws:
      SocketException - if any error happens during the bind, or if the port is unavailable
    • NonBlockingTcpDatagramSocket

      protected NonBlockingTcpDatagramSocket(NonBlockingTcpDatagramSocket.Impl impl)
      Creates a new NonBlockingTcpDatagramSocket around an NonBlockingTcpDatagramSocket.Impl.
      Parameters:
      impl - a NonBlockingTcpDatagramSocket.Impl