Package org.simpleframework.transport.connect

## Class SocketConnection

- java.lang.Object
- - org.simpleframework.transport.connect.SocketConnection

- All Implemented Interfaces:
    `java.io.Closeable`, `java.lang.AutoCloseable`, `Connection`

      public class SocketConnection
      extends java.lang.Object
      implements Connection

  The `SocketConnection`is used to manage connections from a server socket. In order to achieve this it spawns a task to listen for incoming connect requests. When a TCP connection request arrives it hands off the `SocketChannel` to the `Server` which processes the request.

  This handles connections from a `ServerSocketChannel` object so that features such as SSL can be used by a server that uses this package. The background acceptor process will terminate if the connection is closed.

  Author:
    Niall Gallagher
  See Also:
    `Server`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SocketConnection​(Container container)` | Constructor for the `SocketConnection` object.
    `SocketConnection​(Server server)` | Constructor for the `SocketConnection` object.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `close()` | This is used to close the connection and the server socket used to accept connections.
    `java.net.SocketAddress` | `connect​(java.net.SocketAddress address)` | This creates a new background task that will listen to the specified `ServerAddress` for incoming TCP connect requests.
    `java.net.SocketAddress` | `connect​(java.net.SocketAddress address, javax.net.ssl.SSLContext context)` | This creates a new background task that will listen to the specified `ServerAddress` for incoming TCP connect requests.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SocketConnection

          public SocketConnection​(Server server)
                           throws java.io.IOException

      Constructor for the `SocketConnection` object. This will create a new connection that accepts incoming connections and hands these connections as `Pipeline` objects to the specified processor. This in turn will deliver request and response objects to the internal container.
      Parameters:
        `server` - this is the processor that receives requests
      Throws:
        `java.io.IOException`

    - #### SocketConnection

          public SocketConnection​(Container container)
                           throws java.io.IOException

      Constructor for the `SocketConnection` object. This will create a new connection that accepts incoming connections and hands these connections as `Pipeline` objects to the specified processor. This in turn will deliver request and response objects to the internal container.
      Parameters:
        `container` - this is the container that receives requests
      Throws:
        `java.io.IOException`

  - ### Method Detail

    - #### connect

          public java.net.SocketAddress connect​(java.net.SocketAddress address)
                                         throws java.io.IOException

      This creates a new background task that will listen to the specified `ServerAddress` for incoming TCP connect requests. When an connection is accepted it is handed to the internal `Server` implementation as a pipeline. The background task is a non daemon task to ensure the server is kept active, to terminate the connection this can be closed.
      Specified by:
        `connect` in interface `Connection`
      Parameters:
        `address` - this is the address used to accept connections
      Returns:
        this returns the actual local address that is used
      Throws:
        `java.io.IOException`

    - #### connect

          public java.net.SocketAddress connect​(java.net.SocketAddress address,
                                                javax.net.ssl.SSLContext context)
                                         throws java.io.IOException

      This creates a new background task that will listen to the specified `ServerAddress` for incoming TCP connect requests. When an connection is accepted it is handed to the internal `Server` implementation as a pipeline. The background task is a non daemon task to ensure the server is kept active, to terminate the connection this can be closed.
      Specified by:
        `connect` in interface `Connection`
      Parameters:
        `address` - this is the address used to accept connections
        `context` - this is used for secure SSL connections
      Returns:
        this returns the actual local address that is used
      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      This is used to close the connection and the server socket used to accept connections. This will perform a close of all connected server sockets that have been created from using the `connect` method. The connection can be reused after the existing server sockets have been closed.
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Specified by:
        `close` in interface `java.io.Closeable`
      Throws:
        `java.io.IOException` - thrown if there is a problem closing