protected class CommandReceiver.CommandHandler extends Handler
CommandReceiver.protocol(java.net.Socket), the actual
command handling is done with a seperate class that is an extension to
Thread. It is constructed with the socket connected to the client and
a reference to the calling class. A threadgroup and a name for this
handler should also be specified. Note that changes in the handlers
name and running priority using the apropriate Thread methods
must occur prior to starting the command handler.
This thread wraps the superclass's generic I/O-Streams into BufferedReader/Writers, first to allow buffering and second to allow character stream reading (remeber our protocol is based on ascii strings).
| Modifier and Type | Class and Description |
|---|---|
private class |
CommandReceiver.CommandHandler.OneCommandCycle
A class that deals with the completion of one command cycle.
|
Thread.State, Thread.UncaughtExceptionHandler| Modifier and Type | Field and Description |
|---|---|
private List |
active
A list of all active commands.
|
private BufferedReader |
buffIn
The buffered reader wrapped around the socket's input stream.
|
private BufferedWriter |
buffOut
The print writer wrapped around the socket's output stream.
|
private boolean |
cancel
Becomes true if the protocol should be terminated.
|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY| Modifier | Constructor and Description |
|---|---|
protected |
CommandHandler(ErrorProcessing spawn,
Socket client,
ThreadGroup group,
String name)
Constructs a new command-handling thread.
|
| Modifier and Type | Method and Description |
|---|---|
void |
cancel()
Indicates that the protocol submission should be terminated.
|
void |
init()
Wrapps buffered readers/writers around the generic socket streams.
|
protected void |
runProtocol()
The main method of the command receiver protocol.
|
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, yieldprivate BufferedReader buffIn
private BufferedWriter buffOut
private boolean cancel
private List active
protected CommandHandler(ErrorProcessing spawn, Socket client, ThreadGroup group, String name)
Handler.spawn - A reference to the spawning receiver server.client - The client-connection socket.group - The thread group this command handler should run in.name - The name of the handler thread.public void init()
protected void runProtocol()
CommandEvent.
Then,
it sends back acknowledge objects as
appropriate counting down the acknowledge number from the initial
number returned by CommandReceiver.getAcknowledgeNumber(stella.CommandEvent). As long as
calls to the CommandReceiver.processCommand(stella.CommandEvent, int) returns true the
acknowledge number is reduced until 1
is reached and a final done event
is sent. If a call to CommandReceiver.processCommand(stella.CommandEvent, int) returns false
this acknowledge chaining is broken: The error event is fetched with
CommandReceiver.getLastError(), sent back to the error listeners, and the
command caster is notified with a final, successful, done
event (Note that unsuccessful done events are spared for
unexpected errors
that have no individual error handling procedure).runProtocol in class Handlerpublic void cancel()