Class ClientHandler

java.lang.Object
org.apache.synapse.transport.nhttp.ClientHandler
All Implemented Interfaces:
org.apache.http.nio.NHttpClientEventHandler

public class ClientHandler extends Object implements org.apache.http.nio.NHttpClientEventHandler
The client connection handler. An instance of this class is used by each IOReactor, to process every connection. Hence this class should not store any data related to a single connection - as this is being shared.
  • Field Details

  • Constructor Details

    • ClientHandler

      public ClientHandler(ConnectionPool connpool, ClientConnFactory connFactory, ProxyConfig proxyConfig, org.apache.axis2.context.ConfigurationContext cfgCtx, org.apache.http.params.HttpParams params, NhttpMetricsCollector metrics) throws org.apache.axis2.AxisFault
      Create an instance of this client connection handler using the Axis2 configuration context and Http protocol parameters given
      Parameters:
      cfgCtx - the Axis2 configuration context
      params - the Http protocol parameters to adhere to
      metrics - statistics collection metrics
      Throws:
      org.apache.axis2.AxisFault
  • Method Details

    • requestReady

      public void requestReady(org.apache.http.nio.NHttpClientConnection conn) throws IOException, org.apache.http.HttpException
      Specified by:
      requestReady in interface org.apache.http.nio.NHttpClientEventHandler
      Throws:
      IOException
      org.apache.http.HttpException
    • submitRequest

      public void submitRequest(org.apache.http.nio.NHttpClientConnection conn, Axis2HttpRequest axis2Req) throws org.apache.http.ConnectionClosedException
      Submit a new request over an already established connection, which has been 'kept alive'
      Parameters:
      conn - the connection to use to send the request, which has been kept open
      axis2Req - the new request
      Throws:
      org.apache.http.ConnectionClosedException - if the connection is closed by the other party
    • connected

      public void connected(org.apache.http.nio.NHttpClientConnection conn, Object attachment)
      Invoked when the destination is connected
      Specified by:
      connected in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - the connection being processed
      attachment - the attachment set previously
    • closed

      public void closed(org.apache.http.nio.NHttpClientConnection conn)
      Handle connection close events
      Specified by:
      closed in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - HTTP connection to be closed
    • timeout

      public void timeout(org.apache.http.nio.NHttpClientConnection conn)
      Handle connection timeouts by shutting down the connections. These are established that have reached the SO_TIMEOUT of the socket
      Specified by:
      timeout in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - the connection being processed
    • exception

      public void exception(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.HttpException e)
      Handle Http protocol violations encountered while reading from underlying channels
      Parameters:
      conn - the connection being processed
      e - the exception encountered
    • exception

      public void exception(org.apache.http.nio.NHttpClientConnection conn, Exception ex)
      Handle IO errors while reading or writing to underlying channels
      Specified by:
      exception in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - the connection being processed
      ex - the exception encountered
    • endOfInput

      public void endOfInput(org.apache.http.nio.NHttpClientConnection conn) throws IOException
      Specified by:
      endOfInput in interface org.apache.http.nio.NHttpClientEventHandler
      Throws:
      IOException
    • markRequestCompletedWithError

      protected void markRequestCompletedWithError(Axis2HttpRequest axis2Request, int errorCode, String errorMessage, Exception exceptionToRaise)
      Mark request to send failed with error
      Parameters:
      axis2Request - the Axis2HttpRequest to be marked as completed with an error
      errorCode - the error code to raise
      errorMessage - the text for an error message to be returned to the MR on failure
      exceptionToRaise - an Exception to be returned to the MR on failure
    • inputReady

      public void inputReady(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.nio.ContentDecoder decoder)
      Process ready input (i.e. response from remote server)
      Specified by:
      inputReady in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - connection being processed
      decoder - the content decoder in use
    • outputReady

      public void outputReady(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.nio.ContentEncoder encoder)
      Process ready output (i.e. write request to remote server)
      Specified by:
      outputReady in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - the connection being processed
      encoder - the encoder in use
    • responseReceived

      public void responseReceived(org.apache.http.nio.NHttpClientConnection conn)
      Process a response received for the request sent out
      Specified by:
      responseReceived in interface org.apache.http.nio.NHttpClientEventHandler
      Parameters:
      conn - the connection being processed
    • execute

      public void execute(Runnable task)
    • getActiveCount

      public int getActiveCount()
    • getQueueSize

      public int getQueueSize()
    • stop

      public void stop()
    • setConnFactory

      public void setConnFactory(ClientConnFactory connFactory)
      Set the given Client Connection Factory.
      Parameters:
      connFactory - ClientConnectionFactory instance
    • resetConnectionPool

      public void resetConnectionPool(Set<RequestDescriptor> hostList)
      Shutdown the connections of the given host:port list. This will allow to create new connection at the next request happens.
      Parameters:
      hostList - Set of String which contains entries in hots:port format