Class QuicServerConnector

All Implemented Interfaces:
Closeable, AutoCloseable, Connector, NetworkConnector, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, Graceful, LifeCycle
Direct Known Subclasses:
HTTP3ServerConnector

public class QuicServerConnector extends AbstractNetworkConnector

A server side network connector that uses a DatagramChannel to listen on a network port for QUIC traffic.

This connector uses ConnectionFactorys to configure the protocols to support. The protocol is negotiated during the connection establishment by QuicSession, and for each QUIC stream managed by a QuicSession a ConnectionFactory is used to create a Connection for the correspondent QuicStreamEndPoint.

See Also:
  • Constructor Details

  • Method Details

    • getQuicConfiguration

      public QuicConfiguration getQuicConfiguration()
    • getLocalPort

      public int getLocalPort()
      Specified by:
      getLocalPort in interface NetworkConnector
      Overrides:
      getLocalPort in class AbstractNetworkConnector
      Returns:
      The actual port the connector is listening on, or -1 if it has not been opened, or -2 if it has been closed.
    • getInputBufferSize

      public int getInputBufferSize()
    • setInputBufferSize

      public void setInputBufferSize(int inputBufferSize)
    • getOutputBufferSize

      public int getOutputBufferSize()
    • setOutputBufferSize

      public void setOutputBufferSize(int outputBufferSize)
    • isUseInputDirectByteBuffers

      public boolean isUseInputDirectByteBuffers()
    • setUseInputDirectByteBuffers

      public void setUseInputDirectByteBuffers(boolean useInputDirectByteBuffers)
    • isUseOutputDirectByteBuffers

      public boolean isUseOutputDirectByteBuffers()
    • setUseOutputDirectByteBuffers

      public void setUseOutputDirectByteBuffers(boolean useOutputDirectByteBuffers)
    • isOpen

      public boolean isOpen()
      Description copied from interface: NetworkConnector
      A Connector may be opened and not started (to reserve a port) or closed and running (to allow graceful shutdown of existing connections)
      Returns:
      True if the connector is Open.
    • doStart

      protected void doStart() throws Exception
      Description copied from class: ContainerLifeCycle
      Starts the managed lifecycle beans in the order they were added.
      Overrides:
      doStart in class AbstractNetworkConnector
      Throws:
      AbstractLifeCycle.StopException - If thrown, the lifecycle will immediately be stopped.
      Exception - If there was a problem starting. Will cause a transition to FAILED state
    • open

      public void open() throws IOException
      Description copied from interface: NetworkConnector

      Performs the activities needed to open the network communication (for example, to start accepting incoming network connections).

      Specified by:
      open in interface NetworkConnector
      Overrides:
      open in class AbstractNetworkConnector
      Throws:
      IOException - if this connector cannot be opened
      See Also:
    • openDatagramChannel

      protected DatagramChannel openDatagramChannel() throws IOException
      Throws:
      IOException
    • setIdleTimeout

      public void setIdleTimeout(long idleTimeout)
      Description copied from class: AbstractConnector

      Sets the maximum Idle time for a connection, which roughly translates to the Socket.setSoTimeout(int) call, although with NIO implementations other mechanisms may be used to implement the timeout.

      The max idle time is applied:

      • When waiting for a new message to be received on a connection
      • When waiting for a new message to be sent on a connection

      This value is interpreted as the maximum time between some progress being made on the connection. So if a single byte is read or written, then the timeout is reset.

      Overrides:
      setIdleTimeout in class AbstractConnector
      Parameters:
      idleTimeout - the idle timeout
    • doStop

      protected void doStop() throws Exception
      Description copied from class: ContainerLifeCycle
      Stops the managed lifecycle beans in the reverse order they were added.
      Overrides:
      doStop in class AbstractNetworkConnector
      Throws:
      Exception - If there was a problem stopping. Will cause a transition to FAILED state
    • shutdown

      public CompletableFuture<Void> shutdown()
      Description copied from interface: Graceful
      Shutdown the component. When this method returns, the component should not accept any new load.
      Specified by:
      shutdown in interface Graceful
      Overrides:
      shutdown in class AbstractNetworkConnector
      Returns:
      A future that is completed once all load on the component is completed
    • getTransport

      public Object getTransport()
      Returns:
      the underlying socket, channel, buffer etc. for the connector.
    • accept

      protected void accept(int acceptorID)
      Specified by:
      accept in class AbstractConnector