Class SocketConnection

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

    public class SocketConnection
    extends java.lang.Object
    implements Connection
    The SocketConnectionis 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 SocketProcessor 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.

    See Also:
    SocketProcessor
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean closed
      This is used to determine if the connection has been closed.
      private SocketListenerManager manager
      This is used to maintain the active connection end points.
      private SocketProcessor processor
      The processor is used to process connected HTTP pipelines.
    • 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
    • Field Detail

      • manager

        private SocketListenerManager manager
        This is used to maintain the active connection end points.
      • processor

        private SocketProcessor processor
        The processor is used to process connected HTTP pipelines.
      • closed

        private boolean closed
        This is used to determine if the connection has been closed.
    • Constructor Detail

      • SocketConnection

        public SocketConnection​(SocketProcessor processor)
                         throws java.io.IOException
        Constructor for the SocketConnection object. This will create a new connection that accepts incoming connections and hands these connections as Socket objects to the specified connector. This in turn will deliver request and response objects to the internal container.
        Parameters:
        processor - this is the connector that receives requests
        Throws:
        java.io.IOException
      • SocketConnection

        public SocketConnection​(SocketProcessor processor,
                                TraceAnalyzer analyzer)
                         throws java.io.IOException
        Constructor for the SocketConnection object. This will create a new connection that accepts incoming connections and hands these connections as Socket objects to the specified processor. This in turn will deliver request and response objects to the internal container.
        Parameters:
        processor - this is the connector that receives requests
        analyzer - this is used to create a trace for the socket
        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 socket connector.
        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 socket connector.
        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