org.mortbay.http
Class SocketChannelListener

java.lang.Object
  |
  +--org.mortbay.util.ThreadPool
        |
        +--org.mortbay.http.SocketChannelListener
All Implemented Interfaces:
HttpListener, LifeCycle, java.io.Serializable

public class SocketChannelListener
extends ThreadPool
implements HttpListener

Non blocking Listener.

Version:
$Id: SocketChannelListener.java,v 1.13 2002/12/14 11:32:03 gregwilkins Exp $
Author:
Greg Wilkins (gregw)
See Also:
Serialized Form

Nested Class Summary
 class SocketChannelListener.Connection
           
 
Nested classes inherited from class org.mortbay.util.ThreadPool
ThreadPool.PoolThread
 
Field Summary
 
Fields inherited from class org.mortbay.util.ThreadPool
__DAEMON
 
Fields inherited from interface org.mortbay.http.HttpListener
ATTRIBUTE
 
Constructor Summary
SocketChannelListener()
           
 
Method Summary
 void customizeRequest(HttpConnection connection, HttpRequest request)
          Customize request from socket.
 int getBufferReserve()
          Get the size of the header reserve area.
 int getBufferSize()
          Get the size of the buffers used by connections from this listener.
 int getConfidentialPort()
          Get the protocol port to use for confidential redirections.
 java.lang.String getConfidentialScheme()
          Get the protocol scheme to use for confidential redirections.
 java.lang.String getDefaultScheme()
          Get the default scheme for requests.
 java.lang.String getHost()
          Get the host or IP of the interface used by this listener.
 HttpServer getHttpServer()
          Get the HttpServer instance for this HttpListener.
 java.net.InetSocketAddress getInetSocketAddress()
           
 int getIntegralPort()
          Get the protocol port to use for integral redirections.
 java.lang.String getIntegralScheme()
          Get the protocol scheme to use for integral redirections.
 int getLingerTimeSecs()
           
 int getMaxReadTimeMs()
           
 int getPort()
          Get the port number of the listener.
 void handle(java.lang.Object job)
           
 boolean isConfidential(HttpConnection connection)
          Get the confidential status of a connection.
 boolean isIntegral(HttpConnection connection)
          Get the integral status of a connection.
 boolean isLowOnResources()
          Get the low on resources state of the listener.
 boolean isOutOfResources()
          Get the out of resources state of the listener.
 void persistConnection(HttpConnection connection)
          Persist the connection
 void setBufferReserve(int size)
           
 void setBufferSize(int size)
           
 void setConfidentialPort(int confidentialPort)
           
 void setConfidentialScheme(java.lang.String confidentialScheme)
           
 void setDefaultScheme(java.lang.String scheme)
           
 void setHost(java.lang.String host)
          Set the host or IP of the interface used by this listener.
 void setHttpServer(HttpServer server)
          Set the HttpServer instance for this HttpListener.
 void setInetSocketAddress(java.net.InetSocketAddress address)
           
 void setIntegralPort(int integralPort)
           
 void setIntegralScheme(java.lang.String integralScheme)
           
 void setLingerTimeSecs(int ls)
           
 void setMaxReadTimeMs(int ms)
          Deprecated. use maxIdleTime.
 void setPort(int port)
          Set the port number of the listener.
 void start()
          Start the LifeCycle.
 void stop()
          Stop the LifeCycle.
 java.lang.String toString()
           
 
Methods inherited from class org.mortbay.util.ThreadPool
getIdleThreads, getMaxIdleTimeMs, getMaxThreads, getMinThreads, getName, getPoolName, getThreads, isDaemon, isStarted, join, run, setDaemon, setMaxIdleTimeMs, setMaxStopTimeMs, setMaxThreads, setMinThreads, setName, setPoolName, shrink
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.mortbay.util.LifeCycle
isStarted
 

Constructor Detail

SocketChannelListener

public SocketChannelListener()
                      throws java.io.IOException
Method Detail

setHttpServer

public void setHttpServer(HttpServer server)
Description copied from interface: HttpListener
Set the HttpServer instance for this HttpListener. This method is called by the HttpServer.addListener method. It should not be called directly.

Specified by:
setHttpServer in interface HttpListener
Parameters:
server - The HttpServer instance this HttpListener has been added to.

getHttpServer

public HttpServer getHttpServer()
Description copied from interface: HttpListener
Get the HttpServer instance for this HttpListener.

Specified by:
getHttpServer in interface HttpListener
Returns:
The HttpServer instance this HttpListener has been added to, or null if the listener is not added to any HttpServer.

getBufferSize

public int getBufferSize()
Description copied from interface: HttpListener
Get the size of the buffers used by connections from this listener.

Specified by:
getBufferSize in interface HttpListener
Returns:
The default buffer size in bytes.

setBufferSize

public void setBufferSize(int size)

getBufferReserve

public int getBufferReserve()
Description copied from interface: HttpListener
Get the size of the header reserve area. Get the size of the header reserve area within the buffers used by connections from this listener. The header reserve is space reserved in the first buffer of a response to allow a HTTP header to be written in the same packet. The reserve should be large enough to avoid moving data to fit the header, but not too large as to waste memory.

Specified by:
getBufferReserve in interface HttpListener
Returns:
The default buffer reserve size in bytes.

setBufferReserve

public void setBufferReserve(int size)

setDefaultScheme

public void setDefaultScheme(java.lang.String scheme)

getDefaultScheme

public java.lang.String getDefaultScheme()
Description copied from interface: HttpListener
Get the default scheme for requests. If a request is received from a HttpConnection created by this listener, that does not include a scheme in it's request URL, then this method is used to determine the protocol scheme most likely used to connect to this listener.

Specified by:
getDefaultScheme in interface HttpListener
Returns:
The protocol scheme name (eg "http" or "https").

setHost

public void setHost(java.lang.String host)
             throws java.net.UnknownHostException
Description copied from interface: HttpListener
Set the host or IP of the interface used by this listener.

Specified by:
setHost in interface HttpListener
Parameters:
host - The hostname or IP address of the interface used by this listeners. If null or "0.0.0.0" then all available interfaces are used by this listener.
java.net.UnknownHostException

setPort

public void setPort(int port)
Description copied from interface: HttpListener
Set the port number of the listener.

Specified by:
setPort in interface HttpListener
Parameters:
port - The TCP/IP port number to be used by this listener.

getHost

public java.lang.String getHost()
Description copied from interface: HttpListener
Get the host or IP of the interface used by this listener.

Specified by:
getHost in interface HttpListener
Returns:
Host name

getPort

public int getPort()
Description copied from interface: HttpListener
Get the port number of the listener.

Specified by:
getPort in interface HttpListener
Returns:
port number

getInetSocketAddress

public java.net.InetSocketAddress getInetSocketAddress()
Returns:
The InetSocketAddress of the listener

setInetSocketAddress

public void setInetSocketAddress(java.net.InetSocketAddress address)
Parameters:
address - The InetSocketAddress of the listener

setMaxReadTimeMs

public void setMaxReadTimeMs(int ms)
Deprecated. use maxIdleTime.

Set Max Read Time.


getMaxReadTimeMs

public int getMaxReadTimeMs()
Returns:
milliseconds

setLingerTimeSecs

public void setLingerTimeSecs(int ls)

getLingerTimeSecs

public int getLingerTimeSecs()
Returns:
seconds.

start

public void start()
           throws java.lang.Exception
Description copied from interface: LifeCycle
Start the LifeCycle.

Specified by:
start in interface LifeCycle
Overrides:
start in class ThreadPool
Throws:
java.lang.Exception - An arbitrary exception may be thrown.

stop

public void stop()
          throws java.lang.InterruptedException
Description copied from interface: LifeCycle
Stop the LifeCycle. The LifeCycle may wait for current activities to complete normally, but it can be interrupted.

Specified by:
stop in interface LifeCycle
Overrides:
stop in class ThreadPool
Throws:
java.lang.InterruptedException - Stopping a lifecycle is rarely atomic and may be interrupted by another thread. If this happens InterruptedException is throw and the component will be in an indeterminant state and should probably be discarded.

handle

public void handle(java.lang.Object job)
            throws java.lang.InterruptedException
Overrides:
handle in class ThreadPool
java.lang.InterruptedException

customizeRequest

public void customizeRequest(HttpConnection connection,
                             HttpRequest request)
Customize request from socket.

Specified by:
customizeRequest in interface HttpListener
Parameters:
request -
connection - The connection the request was received on, which must be a HttpConnection created by this listener.

persistConnection

public void persistConnection(HttpConnection connection)
Persist the connection

Specified by:
persistConnection in interface HttpListener
Parameters:
connection - The perstent connection, which must be a HttpConnection created by this listener.

isLowOnResources

public boolean isLowOnResources()
Description copied from interface: HttpListener
Get the low on resources state of the listener. For most implementations, Threads are the resource reported on by this method.

Specified by:
isLowOnResources in interface HttpListener
Returns:
True if low on idle threads.

isOutOfResources

public boolean isOutOfResources()
Description copied from interface: HttpListener
Get the out of resources state of the listener. For most implementations, Threads are the resource reported on by this method.

Specified by:
isOutOfResources in interface HttpListener
Returns:
True if low on idle threads.

isIntegral

public boolean isIntegral(HttpConnection connection)
Description copied from interface: HttpListener
Get the integral status of a connection.

Specified by:
isIntegral in interface HttpListener
Parameters:
connection - The connection to test.
Returns:
True of the connection checks the integrity of the data. For most implementations this is true for https connections.

isConfidential

public boolean isConfidential(HttpConnection connection)
Description copied from interface: HttpListener
Get the confidential status of a connection.

Specified by:
isConfidential in interface HttpListener
Parameters:
connection - The connection to test.
Returns:
True of the connection checks the integrity of the data. For most implementations this is true for https connections.

getIntegralScheme

public java.lang.String getIntegralScheme()
Description copied from interface: HttpListener
Get the protocol scheme to use for integral redirections. If an INTEGRAL security constraint is not met for a request, the request is redirected to an integral port. This scheme return by this method is used for that redirection.

Specified by:
getIntegralScheme in interface HttpListener
Returns:
The integral scheme. For most implementations this is "https"

setIntegralScheme

public void setIntegralScheme(java.lang.String integralScheme)

getIntegralPort

public int getIntegralPort()
Description copied from interface: HttpListener
Get the protocol port to use for integral redirections. If an INTEGRAL security constraint is not met for a request, the request is redirected to an integral port. This port return by this method is used for that redirection.

Specified by:
getIntegralPort in interface HttpListener
Returns:
The integral port. For most implementations this is 443 for https

setIntegralPort

public void setIntegralPort(int integralPort)

getConfidentialScheme

public java.lang.String getConfidentialScheme()
Description copied from interface: HttpListener
Get the protocol scheme to use for confidential redirections. If an CONFIDENTIAL security constraint is not met for a request, the request is redirected to an confidential port. This scheme return by this method is used for that redirection.

Specified by:
getConfidentialScheme in interface HttpListener
Returns:
The confidential scheme. For most implementations this is "https"

setConfidentialScheme

public void setConfidentialScheme(java.lang.String confidentialScheme)

getConfidentialPort

public int getConfidentialPort()
Description copied from interface: HttpListener
Get the protocol port to use for confidential redirections. If an CONFIDENTIAL security constraint is not met for a request, the request is redirected to an confidential port. This port return by this method is used for that redirection.

Specified by:
getConfidentialPort in interface HttpListener
Returns:
The confidential port. For most implementations this is 443 for https

setConfidentialPort

public void setConfidentialPort(int confidentialPort)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object


Copyright ? 2000 Mortbay Consulting Pty. Ltd. All Rights Reserved.