org.exolab.core.mipc
Class MultiplexConnectionServer

java.lang.Object
  extended by java.lang.Thread
      extended by org.exolab.core.mipc.MultiplexConnectionServer
All Implemented Interfaces:
java.lang.Runnable, MultiplexConnectionServerIfc

public class MultiplexConnectionServer
extends java.lang.Thread
implements MultiplexConnectionServerIfc

Create a listener socket and wait for requests to come in. When a MultiplexConnection is made, a client is notified so that it can initialize channels on the freshly minted MultiplexConnection. This class derives from Thread and is meant to be spawned off as a separate Thread. The design for the Multiplexed streaming borrows concepts from the book "Java Network Programming : A Complete Guide to Networking, Streams, and Distributed Computing", by Merlin Hughes, Michael Shoffner, Derek Hamner

Version:
$Revision: 1.5 $
Author:
Art Whitten
See Also:
MultiplexConnection, ConnectionNotifierIfc

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
MultiplexConnectionServer(java.net.InetAddress address, int port, ConnectionNotifierIfc notifier)
          Creates a new MultiplexConnectionServer that sets up a listener port and adds a notifier to call with all new connections.
MultiplexConnectionServer(int port, ConnectionNotifierIfc notifier)
          Creates a new MultiplexConnectionServer that sets up a listener port and adds a notifier to call with all new connections.
 
Method Summary
 java.lang.String getHost()
          Return the machines address.
 int getPort()
          Return the port number this server is listening on.
 void run()
          Start the service running.
 void shutdownAll()
          Shutdown all active connections, including the server connection.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MultiplexConnectionServer

public MultiplexConnectionServer(int port,
                                 ConnectionNotifierIfc notifier)
                          throws java.io.IOException
Creates a new MultiplexConnectionServer that sets up a listener port and adds a notifier to call with all new connections.

Parameters:
port - the port to connect on
notifier - the client to handle the call when a new connection is made
Throws:
java.io.IOException

MultiplexConnectionServer

public MultiplexConnectionServer(java.net.InetAddress address,
                                 int port,
                                 ConnectionNotifierIfc notifier)
                          throws java.io.IOException
Creates a new MultiplexConnectionServer that sets up a listener port and adds a notifier to call with all new connections.

Parameters:
address - the local IP address to bind to. May be null.
port - the port to connect on
notifier - the client to handle the call when a new connection is made
Throws:
java.io.IOException
Method Detail

run

public void run()
Start the service running. This call never returns until the service is shutdown. When a connection is made, a new MultiplexConnection is created and spawned off as a separate thread. The new threads are created in the ThreadGroup _connections so that we can keep track of the active threads.

Specified by:
run in interface java.lang.Runnable
Specified by:
run in interface MultiplexConnectionServerIfc
Overrides:
run in class java.lang.Thread

shutdownAll

public void shutdownAll()
                 throws java.io.IOException
Shutdown all active connections, including the server connection.

Specified by:
shutdownAll in interface MultiplexConnectionServerIfc
Throws:
java.io.IOException - If the service reports an error during shutdown.

getPort

public int getPort()
Return the port number this server is listening on.

Specified by:
getPort in interface MultiplexConnectionServerIfc
Returns:
the port number the server is using.

getHost

public java.lang.String getHost()
Return the machines address.

Specified by:
getHost in interface MultiplexConnectionServerIfc
Returns:
the machines IP address.


Copyright © 1999-2012 The Exolab Group. All Rights Reserved.