Class ContainerSocketProcessor

java.lang.Object
org.simpleframework.http.core.ContainerSocketProcessor
All Implemented Interfaces:
SocketProcessor

public class ContainerSocketProcessor extends Object implements SocketProcessor
The ContainerSocketProcessor object is a connector that dispatch requests from a connected pipeline. SSL connections and plain connections can be processed by this implementation. It collects data from the connected pipelines and constructs the requests and responses used to dispatch to the container.

In order to process the requests this uses two thread pools. One is used to collect data from the pipelines and create the requests. The other is used to service those requests. Such an architecture ensures that the serving thread does not have to deal with I/O operations. All data is consumed before it is serviced.

  • Field Details

    • processor

      private final TransportProcessor processor
      This is the transporter used to process the connections.
    • adapter

      private final SocketProcessor adapter
      This is used to deliver pipelines to the container.
  • Constructor Details

    • ContainerSocketProcessor

      public ContainerSocketProcessor(Container container) throws IOException
      Constructor for the ContainerSocketProcessor object. The connector created will collect HTTP requests from the pipelines provided and dispatch those requests to the provided container.
      Parameters:
      container - this is the container used to service requests
      Throws:
      IOException
    • ContainerSocketProcessor

      public ContainerSocketProcessor(Container container, int count) throws IOException
      Constructor for the ContainerSocketProcessor object. The connector created will collect HTTP requests from the pipelines provided and dispatch those requests to the provided container.
      Parameters:
      container - this is the container used to service requests
      count - this is the number of threads used for each pool
      Throws:
      IOException
    • ContainerSocketProcessor

      public ContainerSocketProcessor(Container container, int count, int select) throws IOException
      Constructor for the ContainerSocketProcessor object. The connector created will collect HTTP requests from the pipelines provided and dispatch those requests to the provided container.
      Parameters:
      container - this is the container used to service requests
      count - this is the number of threads used for each pool
      select - this is the number of selector threads to use
      Throws:
      IOException
    • ContainerSocketProcessor

      public ContainerSocketProcessor(Container container, Allocator allocator) throws IOException
      Constructor for the ContainerSocketProcessor object. The connector created will collect HTTP requests from the pipelines provided and dispatch those requests to the provided container.
      Parameters:
      container - this is the container used to service requests
      allocator - this is the allocator used to create buffers
      Throws:
      IOException
    • ContainerSocketProcessor

      public ContainerSocketProcessor(Container container, Allocator allocator, int count) throws IOException
      Constructor for the ContainerSocketProcessor object. The connector created will collect HTTP requests from the pipelines provided and dispatch those requests to the provided container.
      Parameters:
      container - this is the container used to service requests
      allocator - this is the allocator used to create buffers
      count - this is the number of threads used for each pool
      Throws:
      IOException
    • ContainerSocketProcessor

      public ContainerSocketProcessor(Container container, Allocator allocator, int count, int select) throws IOException
      Constructor for the ContainerSocketProcessor object. The connector created will collect HTTP requests from the pipelines provided and dispatch those requests to the provided container.
      Parameters:
      container - this is the container used to service requests
      allocator - this is the allocator used to create buffers
      count - this is the number of threads used for each pool
      select - this is the number of selector threads to use
      Throws:
      IOException
  • Method Details

    • process

      public void process(Socket socket) throws IOException
      This is used to consume HTTP messages that arrive on the socket and dispatch them to the internal container. Depending on whether the socket contains an SSLEngine an SSL handshake may be performed before any HTTP messages are consumed. This can be called from multiple threads and does not block.
      Specified by:
      process in interface SocketProcessor
      Parameters:
      socket - this is the connected HTTP pipeline to process
      Throws:
      IOException
    • stop

      public void stop() throws IOException
      This method is used to stop the connector in such a way that it will not accept and process any further messages. If there are resources to clean up they may be cleaned up asynchronously so that this method can return without blocking.
      Specified by:
      stop in interface SocketProcessor
      Throws:
      IOException