org.mortbay.p2psockets.util
Class P2PThreadedServer

java.lang.Object
  extended byThreadedServer
      extended byorg.mortbay.p2psockets.util.P2PThreadedServer

public class P2PThreadedServer
extends ThreadedServer

Threaded socket server modified for JXTA. This class listens at a socket and gives the connections received to a pool of Threads

The regular P2PThreadedServer is abstract; however, we have modified P2PThreadedServer to not be abstract so that an instance of it can be aggregated by P2PSocketListener. -- bkn3@columbia.edu

The properties THREADED_SERVER_MIN_THREADS and THREADED_SERVER_MAX_THREADS can be set to control the number of threads created.

Version:
$Id: P2PThreadedServer.java,v 1.2 2004/03/10 02:08:20 BradNeuberg Exp $
Author:
Greg Wilkins
See Also:
Serialized Form

Constructor Summary
P2PThreadedServer(java.net.InetAddress address, int port, P2PSocketListener socketListener)
          Construct for specific address and port.
P2PThreadedServer(int port, P2PSocketListener socketListener)
          Construct for specific port.
P2PThreadedServer(P2PSocketListener socketListener)
           
P2PThreadedServer(java.lang.String host, int port, P2PSocketListener socketListener)
          Construct for specific address and port.
 
Method Summary
protected  java.net.Socket acceptSocket(java.net.ServerSocket serverSocket, int timeout)
          Accept socket connection.
 java.lang.String getHost()
           
 java.net.InetAddress getInetAddress()
           
 InetAddrPort getInetAddrPort()
           
 int getLingerTimeSecs()
           
 int getMaxReadTimeMs()
           
 int getPort()
           
 java.net.ServerSocket getServerSocket()
           
 void handle(java.lang.Object job)
          Handle Job.
protected  void handleConnection(java.io.InputStream in, java.io.OutputStream out)
          Handle new connection.
protected  void handleConnection(java.net.Socket connection)
          Handle new connection.
protected  java.net.ServerSocket newServerSocket(InetAddrPort address, int acceptQueueSize)
          New server socket.
 void open()
          Open the server socket.
 void setHost(java.lang.String host)
           
 void setInetAddress(java.net.InetAddress addr)
           
 void setInetAddrPort(InetAddrPort address)
          Set the server InetAddress and port.
 void setLingerTimeSecs(int ls)
           
 void setMaxReadTimeMs(int ms)
          Deprecated. maxIdleTime is used instead.
 void setPort(int port)
           
 void start()
           
 void stop()
           
protected  void stopJob(java.lang.Thread thread, java.lang.Object job)
          Kill a job.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

P2PThreadedServer

public P2PThreadedServer(P2PSocketListener socketListener)

P2PThreadedServer

public P2PThreadedServer(int port,
                         P2PSocketListener socketListener)
Construct for specific port.


P2PThreadedServer

public P2PThreadedServer(java.net.InetAddress address,
                         int port,
                         P2PSocketListener socketListener)
Construct for specific address and port.


P2PThreadedServer

public P2PThreadedServer(java.lang.String host,
                         int port,
                         P2PSocketListener socketListener)
                  throws java.net.UnknownHostException
Construct for specific address and port.

Method Detail

getServerSocket

public java.net.ServerSocket getServerSocket()
Returns:
The ServerSocket

setInetAddrPort

public void setInetAddrPort(InetAddrPort address)
Set the server InetAddress and port.

Parameters:
address - The Address to listen on, or 0.0.0.0:port for all interfaces.

getInetAddrPort

public InetAddrPort getInetAddrPort()
Returns:
IP Address and port in a new Instance of InetAddrPort.

setHost

public void setHost(java.lang.String host)
             throws java.net.UnknownHostException
Parameters:
host -
Throws:
java.net.UnknownHostException

getHost

public java.lang.String getHost()
Returns:
Host name

setInetAddress

public void setInetAddress(java.net.InetAddress addr)
Parameters:
addr -

getInetAddress

public java.net.InetAddress getInetAddress()
Returns:
IP Address

setPort

public void setPort(int port)
Parameters:
port -

getPort

public int getPort()
Returns:
port number

setMaxReadTimeMs

public void setMaxReadTimeMs(int ms)
Deprecated. maxIdleTime is used instead.

Set Max Read Time.


getMaxReadTimeMs

public int getMaxReadTimeMs()
Returns:
milliseconds

setLingerTimeSecs

public void setLingerTimeSecs(int ls)
Parameters:
ls - seconds to linger or -1 to disable linger.

getLingerTimeSecs

public int getLingerTimeSecs()
Returns:
seconds.

handleConnection

protected void handleConnection(java.io.InputStream in,
                                java.io.OutputStream out)
Handle new connection. This method should be overridden by the derived class to implement the required handling. It is called by a thread created for it and does not need to return until it has finished it's task


handleConnection

protected void handleConnection(java.net.Socket connection)
                         throws java.io.IOException
Handle new connection. If access is required to the actual socket, override this method instead of handleConnection(InputStream in,OutputStream out). The default implementation of this just calls handleConnection(InputStream in,OutputStream out).

Throws:
java.io.IOException

handle

public void handle(java.lang.Object job)
Handle Job. Implementation of ThreadPool.handle(), calls handleConnection.

Parameters:
job - A Connection.

newServerSocket

protected java.net.ServerSocket newServerSocket(InetAddrPort address,
                                                int acceptQueueSize)
                                         throws java.io.IOException
New server socket. Creates a new servers socket. May be overriden by derived class to create specialist serversockets (eg SSL).

Parameters:
address - Address and port
acceptQueueSize - Accept queue size
Returns:
The new ServerSocket
Throws:
java.io.IOException

acceptSocket

protected java.net.Socket acceptSocket(java.net.ServerSocket serverSocket,
                                       int timeout)
Accept socket connection. May be overriden by derived class to create specialist serversockets (eg SSL).

Parameters:
serverSocket -
timeout - The time to wait for a connection. Normally passed the ThreadPool maxIdleTime.
Returns:
Accepted Socket

open

public void open()
          throws java.io.IOException
Open the server socket. This method can be called to open the server socket in advance of starting the listener. This can be used to test if the port is available.

Throws:
java.io.IOException - if an error occurs

start

public void start()
           throws java.lang.Exception
Throws:
java.lang.Exception

stop

public void stop()
          throws java.lang.InterruptedException
Throws:
java.lang.InterruptedException

stopJob

protected void stopJob(java.lang.Thread thread,
                       java.lang.Object job)
Kill a job. This method closes IDLE and socket associated with a job

Parameters:
thread -
job -

toString

public java.lang.String toString()