Package org.simpleframework.transport
Class Phase
- java.lang.Object
-
- org.simpleframework.transport.Phase
-
- All Implemented Interfaces:
java.lang.Runnable,Operation
- Direct Known Subclasses:
Handshake.Committer,Handshake.Consumer,Handshake.Producer
abstract class Phase extends java.lang.Object implements Operation
ThePhaseobject represents an asynchronous phase within the negotiation. This is typically used to either schedule an asynchronous read or write when it can not be performed directly. It ensures that the negotiation does not block the thread so that execution can be optimized of high concurrency.- See Also:
Handshake
-
-
Field Summary
Fields Modifier and Type Field Description protected ReactorreactorThis is the reactor that is used to schedule execution.protected intrequireThis is the required operation for the task to complete.protected NegotiationstateThis is the negotiation that this task will operate on.protected TracetraceThis is the trace used to monitor the handshake socket.
-
Constructor Summary
Constructors Constructor Description Phase(Negotiation state, Reactor reactor, Trace trace, int require)Constructor for thePhaseobject.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcancel()This is used to cancel the operation if it has timed out.protected voidexecute()This is used to execute the task.java.nio.channels.SelectableChannelgetChannel()This is theSelectableChannelwhich is used to determine if the operation should be executed.TracegetTrace()This is used to acquire the trace object that is associated with the operation.protected booleanready()This method is used to determine if the task is ready.voidrun()This is used to execute the task.
-
-
-
Field Detail
-
state
protected final Negotiation state
This is the negotiation that this task will operate on.
-
reactor
protected final Reactor reactor
This is the reactor that is used to schedule execution.
-
trace
protected final Trace trace
This is the trace used to monitor the handshake socket.
-
require
protected final int require
This is the required operation for the task to complete.
-
-
Constructor Detail
-
Phase
public Phase(Negotiation state, Reactor reactor, Trace trace, int require)
Constructor for thePhaseobject. This is used to create an operation that performs some phase of a negotiation. It allows the negotiation to schedule the read and write operations asynchronously.- Parameters:
state- this is the negotiation this task works onreactor- this is the reactor used to schedule the tasktrace- the trace that is used to monitor the handshakerequire- this is the required operation for the task
-
-
Method Detail
-
getTrace
public Trace getTrace()
This is used to acquire the trace object that is associated with the operation. A trace object is used to collection details on what operations are being performed. For instance it may contain information relating to I/O events or errors.
-
getChannel
public java.nio.channels.SelectableChannel getChannel()
This is theSelectableChannelwhich is used to determine if the operation should be executed. If the channel is ready for a given I/O event it can be run. For instance if the operation is used to perform some form of read operation it can be executed when ready to read data from the channel.- Specified by:
getChannelin interfaceOperation- Returns:
- this returns the channel used to govern execution
-
run
public void run()
This is used to execute the task. It is up to the specific task implementation to decide what to do when executed. If the task needs to read or write data then it can attempt to perform the read or write, if it incomplete the it can be scheduled for execution with the reactor.- Specified by:
runin interfacejava.lang.Runnable
-
cancel
public void cancel()
This is used to cancel the operation if it has timed out. This is typically invoked when it has been waiting in a selector for an extended duration of time without any active operations on it. In such a case the reactor must purge the operation to free the memory and open channels associated with the operation.
-
execute
protected void execute() throws java.io.IOExceptionThis is used to execute the task. It is up to the specific task implementation to decide what to do when executed. If the task needs to read or write data then it can attempt to perform the read or write, if it incomplete the it can be scheduled for execution with the reactor.- Throws:
java.io.IOException
-
ready
protected boolean ready() throws java.io.IOExceptionThis method is used to determine if the task is ready. This is executed when the select operation is signaled. When this is true the the task completes. If not then this will schedule the task again for the specified select operation.- Returns:
- this returns true when the task has completed
- Throws:
java.io.IOException
-
-