Class FilterChainContext
- java.lang.Object
-
- org.glassfish.grizzly.filterchain.FilterChainContext
-
- All Implemented Interfaces:
AttributeStorage
public class FilterChainContext extends Object implements AttributeStorage
FilterChain
Context
implementation.- Author:
- Alexey Stashok
- See Also:
Context
,FilterChain
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
FilterChainContext.CompletionListener
The interface, which represents a listener, which will be notified, onceFilterChainContext
processing is complete.static interface
FilterChainContext.CopyListener
The interface, which represents a listener, which will be notified, aftercopy()
is called.static class
FilterChainContext.Operation
static class
FilterChainContext.State
static class
FilterChainContext.TransportContext
-
Field Summary
Fields Modifier and Type Field Description protected FilterChainEvent
event
Context associated event, if EVENT operationstatic int
NO_FILTER_INDEX
protected CompletionHandler<FilterChainContext>
operationCompletionHandler
CompletionHandler
, which will be notified, when operation will be complete.
-
Constructor Summary
Constructors Constructor Description FilterChainContext()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addCompletionListener(FilterChainContext.CompletionListener listener)
Add theFilterChainContext.CompletionListener
, which will be notified, when thisFilterChainContext
processing will be completed.void
addCopyListener(FilterChainContext.CopyListener listener)
Add theFilterChainContext.CopyListener
, which will be notified, right after thiscopy()
is called.void
completeAndRecycle()
void
completeAndRelease()
FilterChainContext
copy()
static FilterChainContext
create(Connection connection)
static FilterChainContext
create(Connection connection, Closeable closeable)
void
fail(Throwable error)
void
flush(CompletionHandler completionHandler)
void
fork()
This method invocation suggests theFilterChain
to create a copy of thisFilterChainContext
and resume/fork its execution starting from the currentFilter
.void
fork(NextAction nextAction)
This method invocation suggests theFilterChain
to create a copy of thisFilterChainContext
and resume/fork its execution starting from the currentFilter
.Object
getAddress()
Get address, associated with the currentIOEvent
processing.Holder<?>
getAddressHolder()
AttributeHolder
getAttributes()
Get associatedAttributeHolder
.Closeable
getCloseable()
Get theCloseable
, associated with the current processing.Connection
getConnection()
Get theConnection
, associated with the current processing.int
getEndIdx()
FilterChain
getFilterChain()
GetFilterChain
, which runs theFilter
.int
getFilterIdx()
NextAction
getForkAction()
NextAction
getForkAction(NextAction nextAction)
Context
getInternalContext()
Get the general GrizzlyContext
this filter context wraps.NextAction
getInvokeAction()
<E> NextAction
getInvokeAction(E incompleteChunk, Appender<E> appender)
NextAction
getInvokeAction(Object unparsedChunk)
MemoryManager
getMemoryManager()
A simple alias forFilterChainContext.getConnection().getMemoryManager()
.<T> T
getMessage()
Get message object, associated with the current processing.NextAction
getRerunFilterAction()
GetNextAction
, which instructsFilterChain
to rerun the filter.protected Runnable
getRunnable()
int
getStartIdx()
NextAction
getStopAction()
GetNextAction
implementation, which instructsFilterChain
to stop executing phase.<E> NextAction
getStopAction(E incompleteChunk, Appender<E> appender)
GetNextAction
implementation, which instructsFilterChain
stop executing phase.NextAction
getStopAction(Object incompleteChunk)
GetNextAction
implementation, which instructsFilterChain
stop executing phase.NextAction
getSuspendAction()
GetNextAction
, which instructsFilterChain
to suspend filter chain execution.NextAction
getSuspendingStopAction()
Deprecated.usegetForkAction()
FilterChainContext.TransportContext
getTransportContext()
Get theTransportFilter
related context.int
nextFilterIdx()
void
notifyDownstream(FilterChainEvent event)
void
notifyDownstream(FilterChainEvent event, CompletionHandler<FilterChainContext> completionHandler)
void
notifyUpstream(FilterChainEvent event)
void
notifyUpstream(FilterChainEvent event, CompletionHandler<FilterChainContext> completionHandler)
int
previousFilterIdx()
ReadResult
read()
Performs a blocking read.boolean
removeCompletionListener(FilterChainContext.CompletionListener listener)
Remove theFilterChainContext.CompletionListener
.boolean
removeCopyListener(FilterChainContext.CopyListener listener)
Remove theFilterChainContext.CopyListener
.void
reset()
Release the context associated resources.void
resume()
Resume processing of the current taskvoid
resume(NextAction nextAction)
Resume the current FilterChain task processing by completing the currentFilter
(the Filter, which suspended the processing) with the passedNextAction
.void
resumeNext()
Resume processing of the current task starting from the Filter, which follows the Filter, which suspend the processing.void
setAddress(Object address)
Set address, associated with the currentIOEvent
processing.void
setAddressHolder(Holder<?> addressHolder)
Set address, associated with the currentIOEvent
processing.void
setEndIdx(int endIdx)
void
setFilterIdx(int index)
void
setMessage(Object message)
Set message object, associated with the current processing.void
setStartIdx(int startIdx)
FilterChainContext.State
state()
Get the current processing task state.Runnable
suspend()
Suspend processing of the current taskString
toString()
void
write(Object message)
void
write(Object message, boolean blocking)
void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler)
void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, boolean blocking)
void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, MessageCloner cloner)
void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, MessageCloner cloner, boolean blocking)
void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler)
Deprecated.void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler, boolean blocking)
Deprecated.void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler, MessageCloner cloner)
Deprecated.void
write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler, MessageCloner cloner, boolean blocking)
Deprecated.void
write(Object message, CompletionHandler<WriteResult> completionHandler)
void
write(Object message, CompletionHandler<WriteResult> completionHandler, boolean blocking)
-
-
-
Field Detail
-
NO_FILTER_INDEX
public static final int NO_FILTER_INDEX
- See Also:
- Constant Field Values
-
operationCompletionHandler
protected CompletionHandler<FilterChainContext> operationCompletionHandler
CompletionHandler
, which will be notified, when operation will be complete. For WRITE it means the data will be written on wire, for other operations - the last Filter has finished the processing.
-
event
protected FilterChainEvent event
Context associated event, if EVENT operation
-
-
Method Detail
-
create
public static FilterChainContext create(Connection connection)
-
create
public static FilterChainContext create(Connection connection, Closeable closeable)
-
suspend
public Runnable suspend()
Suspend processing of the current task
-
resume
public void resume()
Resume processing of the current task
-
resumeNext
public void resumeNext()
Resume processing of the current task starting from the Filter, which follows the Filter, which suspend the processing.
-
resume
public void resume(NextAction nextAction)
Resume the current FilterChain task processing by completing the currentFilter
(the Filter, which suspended the processing) with the passedNextAction
.- Parameters:
nextAction
- theNextAction
, based on whichFilterChain
will continue processing.
-
fork
public void fork()
This method invocation suggests theFilterChain
to create a copy of thisFilterChainContext
and resume/fork its execution starting from the currentFilter
.
-
fork
public void fork(NextAction nextAction)
This method invocation suggests theFilterChain
to create a copy of thisFilterChainContext
and resume/fork its execution starting from the currentFilter
. IfnextAction
parameter is not null - then its value is treated as a result of the currentFilter
execution on the forkedFilterChain
processing. So during the forkedFilterChain
processing the currentFilter
will not be invoked, but the processing will be continued as if the currentFilter
returnednextAction
as a result. For example if we callfork(ctx.getInvokeAction());
the forkedFilterChain
processing will start with the nextFilter
in chain.
-
state
public FilterChainContext.State state()
Get the current processing task state.- Returns:
- the current processing task state.
-
nextFilterIdx
public int nextFilterIdx()
-
previousFilterIdx
public int previousFilterIdx()
-
getFilterIdx
public int getFilterIdx()
-
setFilterIdx
public void setFilterIdx(int index)
-
getStartIdx
public int getStartIdx()
-
setStartIdx
public void setStartIdx(int startIdx)
-
getEndIdx
public int getEndIdx()
-
setEndIdx
public void setEndIdx(int endIdx)
-
getFilterChain
public FilterChain getFilterChain()
GetFilterChain
, which runs theFilter
.- Returns:
FilterChain
, which runs theFilter
.
-
getConnection
public Connection getConnection()
Get theConnection
, associated with the current processing.- Returns:
Connection
object, associated with the current processing.
-
getCloseable
public Closeable getCloseable()
Get theCloseable
, associated with the current processing. TheCloseable
object might be used to close/terminate an entity associated with theFilterChain
processing in response to an error occurred during the processing. If not customized theCloseable
object represents aConnection
associated with theFilterChain
processing.- Returns:
Closeable
object, associated with the current processing.
-
getMessage
public <T> T getMessage()
Get message object, associated with the current processing. UsuallyFilterChain
represents sequence of parser and processFilter
s. Each parser can change the message representation until it will come to processorFilter
.- Returns:
- message object, associated with the current processing.
-
setMessage
public void setMessage(Object message)
Set message object, associated with the current processing. UsuallyFilterChain
represents sequence of parser and processFilter
s. Each parser can change the message representation until it will come to processorFilter
.- Parameters:
message
- message object, associated with the current processing.
-
getAddressHolder
public Holder<?> getAddressHolder()
Get aHolder
, which contains address, associated with the currentIOEvent
processing. When we processIOEvent.READ
event - it represents sender address, or when processIOEvent.WRITE
- address of receiver.
-
setAddressHolder
public void setAddressHolder(Holder<?> addressHolder)
Set address, associated with the currentIOEvent
processing. When we processIOEvent.READ
event - it represents sender address, or when processIOEvent.WRITE
- address of receiver.
-
getAddress
public Object getAddress()
Get address, associated with the currentIOEvent
processing. When we processIOEvent.READ
event - it represents sender address, or when processIOEvent.WRITE
- address of receiver.- Returns:
- address, associated with the current
IOEvent
processing.
-
setAddress
public void setAddress(Object address)
Set address, associated with the currentIOEvent
processing. When we processIOEvent.READ
event - it represents sender address, or when processIOEvent.WRITE
- address of receiver.- Parameters:
address
- address, associated with the currentIOEvent
processing.
-
getRunnable
protected final Runnable getRunnable()
-
getTransportContext
public FilterChainContext.TransportContext getTransportContext()
Get theTransportFilter
related context.- Returns:
TransportFilter
.
-
getInternalContext
public final Context getInternalContext()
Get the general GrizzlyContext
this filter context wraps.- Returns:
- the general Grizzly
Context
this filter context wraps.
-
getInvokeAction
public NextAction getInvokeAction()
GetNextAction
implementation, which instructsFilterChain
to process nextFilter
in chain. Normally, after receiving this instruction fromFilter
,FilterChain
executes next filter.- Returns:
NextAction
implementation, which instructsFilterChain
to process nextFilter
in chain.
-
getInvokeAction
public NextAction getInvokeAction(Object unparsedChunk)
GetNextAction
implementation, which instructsFilterChain
to process nextFilter
in chain. Normally, after receiving this instruction fromFilter
,FilterChain
executes next filter.- Parameters:
unparsedChunk
- signals, that there is some unparsed data remaining in the source message, soFilterChain
could be rerun.- Returns:
NextAction
implementation, which instructsFilterChain
to process nextFilter
in chain.
-
getInvokeAction
public <E> NextAction getInvokeAction(E incompleteChunk, Appender<E> appender)
GetNextAction
implementation, which instructsFilterChain
to process nextFilter
in chain. Normally, after receiving this instruction fromFilter
,FilterChain
executes next filter.- Parameters:
incompleteChunk
- signals, that there is a data chunk remaining, which doesn't represent complete message. As more data becomes available but beforeFilterChain
calls the currentFilter
, it will check if theFilter
has any data stored after the last invocation. If a remainder is present it will append the new data to the stored one and pass the result as the FilterChainContext message.appender
- theAppender
, which knows how to append chunks of type<E>
.- Returns:
NextAction
implementation, which instructsFilterChain
to process nextFilter
in chain.- Throws:
IllegalArgumentException
- if appender isnull
and remainder's type is notBuffer
orAppendable
.
-
getStopAction
public NextAction getStopAction()
GetNextAction
implementation, which instructsFilterChain
to stop executing phase.- Returns:
NextAction
implementation, which instructsFilterChain
to stop executing phase.
-
getStopAction
public NextAction getStopAction(Object incompleteChunk)
GetNextAction
implementation, which instructsFilterChain
stop executing phase.- Parameters:
incompleteChunk
- signals, that there is a data chunk remaining, which doesn't represent complete message. As more data becomes available but beforeFilterChain
calls the currentFilter
, it will check if theFilter
has any data stored after the last invocation. If a remainder is present it will append the new data to the stored one and pass the result as the FilterChainContext message.- Returns:
NextAction
implementation, which instructsFilterChain
to stop executing phase.- Throws:
IllegalArgumentException
- if remainder's type is notBuffer
orAppendable
.
-
getStopAction
public <E> NextAction getStopAction(E incompleteChunk, Appender<E> appender)
GetNextAction
implementation, which instructsFilterChain
stop executing phase.- Parameters:
incompleteChunk
- signals, that there is a data chunk remaining, which doesn't represent complete message. As more data becomes available but beforeFilterChain
calls the currentFilter
, it will check if theFilter
has any data stored after the last invocation. If a remainder is present it will append the new data to the stored one and pass the result as the FilterChainContext message.appender
- theAppender
, which knows how to append chunks of type<E>
.- Returns:
NextAction
implementation, which instructsFilterChain
to stop executing phase.- Throws:
IllegalArgumentException
- if appender isnull
and remainder's type is notBuffer
orAppendable
.
-
getForkAction
public NextAction getForkAction()
- Returns:
NextAction
implementation, which suggests theFilterChain
to forget about the currentFilterChainContext
, create a copy of it and continue/forkFilterChain
processing using the copiedFilterChainContext
starting from the currentFilter
.
-
getForkAction
public NextAction getForkAction(NextAction nextAction)
- Returns:
NextAction
implementation, which suggests theFilterChain
to forget about the currentFilterChainContext
, create a copy of it and continue/forkFilterChain
processing using the copiedFilterChainContext
starting from the currentFilter
. IfnextAction
parameter is not null - then its value is treated as a result of the currentFilter
execution on the forkedFilterChain
processing. So during the forkedFilterChain
processing the currentFilter
will not be invoked, but the processing will be continued as if the currentFilter
returnednextAction
as a result. For example if we callfork(ctx.getInvokeAction());
the forkedFilterChain
processing will start with the nextFilter
in chain.
-
getSuspendingStopAction
@Deprecated public NextAction getSuspendingStopAction()
Deprecated.usegetForkAction()
- Returns:
NextAction
implementation, which instructs theFilterChain
to suspend the currentFilterChainContext
and invoke similar logic as instructed byStopAction
with a cleanFilterChainContext
.
-
getSuspendAction
public NextAction getSuspendAction()
GetNextAction
, which instructsFilterChain
to suspend filter chain execution.- Returns:
NextAction
, which instructsFilterChain
to suspend filter chain execution.
-
getRerunFilterAction
public NextAction getRerunFilterAction()
GetNextAction
, which instructsFilterChain
to rerun the filter.- Returns:
NextAction
, which instructsFilterChain
to rerun the filter.
-
read
public ReadResult read() throws IOException
Performs a blocking read.
- Returns:
- the result of the read operation.
- Throws:
IOException
- if an I/O error occurs.
-
write
public void write(Object message)
-
write
public void write(Object message, boolean blocking)
-
write
public void write(Object message, CompletionHandler<WriteResult> completionHandler)
-
write
public void write(Object message, CompletionHandler<WriteResult> completionHandler, boolean blocking)
-
write
public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler)
-
write
public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, boolean blocking)
-
write
@Deprecated public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler)
Deprecated.
-
write
@Deprecated public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler, boolean blocking)
Deprecated.
-
write
public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, MessageCloner cloner)
-
write
@Deprecated public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler, MessageCloner cloner)
Deprecated.
-
write
public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, MessageCloner cloner, boolean blocking)
-
write
@Deprecated public void write(Object address, Object message, CompletionHandler<WriteResult> completionHandler, PushBackHandler pushBackHandler, MessageCloner cloner, boolean blocking)
Deprecated.
-
flush
public void flush(CompletionHandler completionHandler)
-
notifyUpstream
public void notifyUpstream(FilterChainEvent event)
-
notifyUpstream
public void notifyUpstream(FilterChainEvent event, CompletionHandler<FilterChainContext> completionHandler)
-
notifyDownstream
public void notifyDownstream(FilterChainEvent event)
-
notifyDownstream
public void notifyDownstream(FilterChainEvent event, CompletionHandler<FilterChainContext> completionHandler)
-
fail
public void fail(Throwable error)
-
getAttributes
public AttributeHolder getAttributes()
Get associatedAttributeHolder
. Implementation may return null ifAttributeHolder
wasn't initialized yet.- Specified by:
getAttributes
in interfaceAttributeStorage
- Returns:
- associated
AttributeHolder
. Implementation may return null ifAttributeHolder
wasn't initialized yet.
-
addCompletionListener
public final void addCompletionListener(FilterChainContext.CompletionListener listener)
Add theFilterChainContext.CompletionListener
, which will be notified, when thisFilterChainContext
processing will be completed.- Parameters:
listener
- theFilterChainContext.CompletionListener
, which will be notified, when thisFilterChainContext
processing will be completed.
-
removeCompletionListener
public final boolean removeCompletionListener(FilterChainContext.CompletionListener listener)
Remove theFilterChainContext.CompletionListener
.- Parameters:
listener
- theFilterChainContext.CompletionListener
to be removed.- Returns:
- true, if the listener was removed from the list, or false, if the listener wasn't on the list.
-
addCopyListener
public final void addCopyListener(FilterChainContext.CopyListener listener)
Add theFilterChainContext.CopyListener
, which will be notified, right after thiscopy()
is called.- Parameters:
listener
- theFilterChainContext.CopyListener
, which will be notified, right after thiscopy()
is called.
-
removeCopyListener
public final boolean removeCopyListener(FilterChainContext.CopyListener listener)
Remove theFilterChainContext.CopyListener
.- Parameters:
listener
- theFilterChainContext.CopyListener
to be removed.- Returns:
- true, if the listener was removed from the list, or false, if the listener wasn't on the list.
-
getMemoryManager
public final MemoryManager getMemoryManager()
A simple alias for
FilterChainContext.getConnection().getMemoryManager()
.- Returns:
- the
MemoryManager
associated with theConnection
of thisFilterChainContext
.
-
copy
public FilterChainContext copy()
-
reset
public void reset()
Release the context associated resources.
-
completeAndRecycle
public void completeAndRecycle()
-
completeAndRelease
public void completeAndRelease()
-
-