org.simpleframework.http.core
Class ContainerSocketProcessor

java.lang.Object
  extended by 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.

Author:
Niall Gallagher

Constructor Summary
ContainerSocketProcessor(Container container)
          Constructor for the ContainerSocketProcessor object.
ContainerSocketProcessor(Container container, Allocator allocator)
          Constructor for the ContainerSocketProcessor object.
ContainerSocketProcessor(Container container, Allocator allocator, int count)
          Constructor for the ContainerSocketProcessor object.
ContainerSocketProcessor(Container container, Allocator allocator, int count, int select)
          Constructor for the ContainerSocketProcessor object.
ContainerSocketProcessor(Container container, int count)
          Constructor for the ContainerSocketProcessor object.
ContainerSocketProcessor(Container container, int count, int select)
          Constructor for the ContainerSocketProcessor object.
 
Method Summary
 void process(Socket socket)
          This is used to consume HTTP messages that arrive on the socket and dispatch them to the internal container.
 void stop()
          This method is used to stop the connector in such a way that it will not accept and process any further messages.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

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 Detail

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


Copyright © 2014. All Rights Reserved.