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 and Description
`SocketConnection(Container container)` Constructor for the `SocketConnection` object.
`SocketConnection(Server server)` Constructor for the `SocketConnection` object.

### Method Summary

Methods
`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.io.Closeable`
Specified by:
  `close` in interface `java.lang.AutoCloseable`
Throws:
  `java.io.IOException` - thrown if there is a problem closing