public final class NextAction extends Object
Tube.processRequest(Packet)
or
Tube.processResponse(Packet)
returns.
To allow reuse of this object, this class is mutable.
Modifier and Type | Field and Description |
---|---|
(package private) static int |
ABORT_RESPONSE |
(package private) static int |
INVOKE |
(package private) static int |
INVOKE_AND_FORGET |
(package private) static int |
INVOKE_ASYNC |
(package private) int |
kind |
(package private) Tube |
next |
(package private) Runnable |
onExitRunnable |
(package private) Packet |
packet |
(package private) static int |
RETURN |
(package private) static int |
SUSPEND |
(package private) static int |
THROW |
(package private) static int |
THROW_ABORT_RESPONSE |
(package private) Throwable |
throwable
Really either
RuntimeException or Error . |
Constructor and Description |
---|
NextAction() |
Modifier and Type | Method and Description |
---|---|
void |
abortResponse(Packet response)
Indicates that the next action is to abort the processResponse chain
because of some non-exception condition.
|
String |
getKindString()
Returns
kind in a human readable string, to assist debugging. |
Tube |
getNext()
Returns the next tube
|
Packet |
getPacket()
Returns the last Packet
|
Throwable |
getThrowable()
Returns the Throwable generated by the last Tube
|
void |
invoke(Tube next,
Packet p)
Indicates that the next action should be to
invoke the next tube's
Tube.processRequest(Packet) ,
then later invoke the current tube's Tube.processResponse(Packet)
with the response packet. |
void |
invokeAndForget(Tube next,
Packet p)
Indicates that the next action should be to
invoke the next tube's
Tube.processRequest(Packet) ,
but the current tube doesn't want to receive the response packet to
its Tube.processResponse(Packet) . |
void |
invokeAsync(Tube next,
Packet p)
Indicates that the next action is to invoke the next tube in the
tubeline async from the thread that started the tubeline.
|
void |
returnWith(Packet response)
Indicates that the next action is to flip the processing direction
and starts response processing.
|
void |
setNext(Tube next)
Sets the next tube
|
void |
suspend()
Indicates that the fiber should be suspended.
|
void |
suspend(Runnable onExitRunnable)
Indicates that the fiber should be suspended.
|
void |
suspend(Tube next)
Indicates that the fiber should be suspended.
|
void |
suspend(Tube next,
Runnable onExitRunnable)
Indicates that the fiber should be suspended.
|
void |
throwException(Throwable t)
Indicates that the next action is to flip the processing direction
and starts exception processing.
|
void |
throwExceptionAbortResponse(Throwable t)
Indicates that the next action is to abort the processResponse chain
because of an exception.
|
String |
toString()
Dumps the contents to assist debugging.
|
int kind
Tube next
Packet packet
Throwable throwable
RuntimeException
or Error
.Runnable onExitRunnable
static final int INVOKE
static final int INVOKE_AND_FORGET
static final int RETURN
static final int THROW
static final int SUSPEND
static final int THROW_ABORT_RESPONSE
static final int ABORT_RESPONSE
static final int INVOKE_ASYNC
public void invoke(Tube next, Packet p)
Tube.processRequest(Packet)
,
then later invoke the current tube's Tube.processResponse(Packet)
with the response packet.public void invokeAndForget(Tube next, Packet p)
Tube.processRequest(Packet)
,
but the current tube doesn't want to receive the response packet to
its Tube.processResponse(Packet)
.public void returnWith(Packet response)
public void throwException(Throwable t)
t
- Either RuntimeException
or Error
, but defined to
take Throwable
because Tube.processException(Throwable)
takes Throwable
.public void throwExceptionAbortResponse(Throwable t)
t
- Either RuntimeException
or Error
public void abortResponse(Packet response)
response
- The response that is being abortedpublic void invokeAsync(Tube next, Packet p)
next
- The next tube in the tubelinep
- The request to pass to the next tubepublic void suspend()
resumed
, return the response processing.public void suspend(Runnable onExitRunnable)
Thread
exits the fiber's control loop, the onExitRunnable will be invoked. This Runnable
may call Fiber.resume(Packet)
; however it is still guaranteed that the current
Thread will return control, therefore, further processing will be handled on a Thread
from the Executor
. For synchronous cases, the Thread invoking this fiber cannot return
until fiber processing is complete; therefore, the guarantee is only that the onExitRunnable
will be invoked prior to completing the suspension.public void suspend(Tube next)
resumed
, resume with the
Tube.processRequest(Packet)
on the given next tube.public void suspend(Tube next, Runnable onExitRunnable)
Thread
exits the fiber's control loop, the onExitRunnable will be invoked. This Runnable
may call Fiber.resume(Packet)
; however it is still guaranteed that the current
fiber will return control, therefore, further processing will be handled on a Thread
from the Executor
. For synchronous cases, the Thread invoking this fiber cannot return
until fiber processing is complete; therefore, the guarantee is only that the onExitRunnable
will be invoked prior to completing the suspension.
Once resumed
, resume with the
Tube.processRequest(Packet)
on the given next tube.
public Tube getNext()
public void setNext(Tube next)
next
- Next tubepublic Packet getPacket()
public Throwable getThrowable()
public String toString()
Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.