au.com.terabit.jproactor
Class TCPAsynchChannel

java.lang.Object
  extended by au.com.terabit.jproactor.AsynchChannel
      extended by au.com.terabit.jproactor.TCPAsynchChannel

public final class TCPAsynchChannel
extends AsynchChannel

The TCPAsynchChannel is an intermidiate interface that serves as mediator between Demultiplexor and AsynchHandler

All implemented protocols should be based on this interface.

Version:
$Revision$ $Date$
Author:
Yevgeny Libman
See Also:
IOOperation

Nested Class Summary
 
Nested classes/interfaces inherited from class au.com.terabit.jproactor.AsynchChannel
AsynchChannel.State
 
Field Summary
 
Fields inherited from class au.com.terabit.jproactor.AsynchChannel
m_channelState, m_lock, m_readInfo, m_readQue, m_writeInfo, m_writeQue
 
Constructor Summary
TCPAsynchChannel(Demultiplexor m, java.nio.channels.SelectableChannel sc)
          Creates TCPAsynchChannel instance given specified Demultiplexor, AsynchHandler and SelectableChannel instances.
 
Method Summary
protected  AsynchChannel finishAccept(OpAccept op)
           
protected  boolean finishConnect(OpConnect op)
           
protected  int finishRead(OpRead op)
           
protected  int finishWrite(OpWrite op)
          Writes data into associated channel, when channel is ready for non-blocking write.
protected  void startAccept(OpAccept op)
           
 boolean startClose()
           
protected  void startConnect(OpConnect op)
           
protected  void startRead(OpRead op)
           
 void startTimer(OpTimer op)
          Schedules timeout action to be called back on the associated AsynchHandler instance.
protected  void startWrite(OpWrite op)
           
 
Methods inherited from class au.com.terabit.jproactor.AsynchChannel
accept, checkForClose, close, connect, dispatchCompletions, enqueueOperation, executeListAndAdd, executeListAndDispatch, executeOp, executeOpAndAdd, getChannelHandler, isClosed, isCloseFinished, isCloseStarted, isConnected, isOpened, read_n, read, schedulerTimer, setChannelHandler, setClosing, setConnected, write_n, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TCPAsynchChannel

public TCPAsynchChannel(Demultiplexor m,
                        java.nio.channels.SelectableChannel sc)
Creates TCPAsynchChannel instance given specified Demultiplexor, AsynchHandler and SelectableChannel instances.

Parameters:
m - Demultiplexor instance this m_asynchChannel works with
p - AsynchHandler protocol instance
sc - SelectableChannel instance this m_asynchChannel operates on
Method Detail

finishRead

protected int finishRead(OpRead op)
                  throws java.lang.Exception
Specified by:
finishRead in class AsynchChannel
Returns:
> 0 number bytes read 0 not finished yet < 0 errors or end of data
Throws:
java.lang.Exception

finishWrite

protected int finishWrite(OpWrite op)
                   throws java.lang.Exception
Writes data into associated channel, when channel is ready for non-blocking write.

Specified by:
finishWrite in class AsynchChannel
Returns:
> 0 number bytes written 0 not finished yet < 0 errors or peer closed
Throws:
java.lang.Exception
See Also:
IOOperation.execute()

finishAccept

protected AsynchChannel finishAccept(OpAccept op)
                              throws java.lang.Exception
Specified by:
finishAccept in class AsynchChannel
Returns:
new accepted AsynchChannel null not finished yet
Throws:
java.lang.Exception

finishConnect

protected boolean finishConnect(OpConnect op)
                         throws java.lang.Exception
Specified by:
finishConnect in class AsynchChannel
Returns:
true if connect finished false if not may be to fix: 1 finished OK, 0 not finished yet -1 finished with errors
Throws:
java.lang.Exception

startClose

public boolean startClose()
Specified by:
startClose in class AsynchChannel

startRead

protected void startRead(OpRead op)
                  throws java.lang.Exception
Specified by:
startRead in class AsynchChannel
Throws:
java.lang.Exception

startWrite

protected void startWrite(OpWrite op)
                   throws java.lang.Exception
Specified by:
startWrite in class AsynchChannel
Throws:
java.lang.Exception

startAccept

protected void startAccept(OpAccept op)
                    throws java.lang.Exception
Specified by:
startAccept in class AsynchChannel
Throws:
java.lang.Exception

startConnect

protected void startConnect(OpConnect op)
                     throws java.lang.Exception
Specified by:
startConnect in class AsynchChannel
Throws:
java.lang.Exception

startTimer

public void startTimer(OpTimer op)
Schedules timeout action to be called back on the associated AsynchHandler instance.

Note: while IO operations will be delivered to the handler in a serialized way, timer notifications might be delivered concurrently.

Specified by:
startTimer in class AsynchChannel
Parameters:
delay - delay in milliseconds before timeout action is to be executed.