|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.mina.core.filterchain.IoFilterAdapter
org.apache.mina.filter.executor.WriteRequestFilter
public class WriteRequestFilter
Attaches an IoEventQueueHandler
to an IoSession
's
WriteRequest
queue to provide accurate write queue status tracking.
The biggest difference from OrderedThreadPoolExecutor
and
UnorderedThreadPoolExecutor
is that IoEventQueueHandler.polled(Object, IoEvent)
is invoked when the write operation is completed by an IoProcessor
,
consequently providing the accurate tracking of the write request queue
status to the IoEventQueueHandler
.
Most common usage of this filter could be detecting an IoSession
which writes too fast which will cause OutOfMemoryError
soon:
session.getFilterChain().addLast( "writeThrottle", new WriteRequestFilter(new IoEventQueueThrottle()));
IoEventQueueHandler
implementation such as IoEventQueueThrottle
in the IoProcessor
thread. It's because an IoProcessor
thread is what processes the WriteRequest
s and notifies related
WriteFuture
s; the IoEventQueueHandler
implementation that
waits for the size of the write request queue to decrease will never wake
up. To use such an handler, you have to insert an ExecutorFilter
before this filter or call IoSession.write(Object)
method always
from a different thread.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface org.apache.mina.core.filterchain.IoFilter |
---|
IoFilter.NextFilter |
Constructor Summary | |
---|---|
WriteRequestFilter()
Creates a new instance with a new default IoEventQueueThrottle . |
|
WriteRequestFilter(IoEventQueueHandler queueHandler)
Creates a new instance with the specified IoEventQueueHandler . |
Method Summary | |
---|---|
void |
filterWrite(IoFilter.NextFilter nextFilter,
IoSession session,
WriteRequest writeRequest)
Filters IoSession.write(Object) method invocation. |
IoEventQueueHandler |
getQueueHandler()
Returns the IoEventQueueHandler which is attached to this
filter. |
Methods inherited from class org.apache.mina.core.filterchain.IoFilterAdapter |
---|
destroy, exceptionCaught, filterClose, init, messageReceived, messageSent, onPostAdd, onPostRemove, onPreAdd, onPreRemove, sessionClosed, sessionCreated, sessionIdle, sessionOpened, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public WriteRequestFilter()
IoEventQueueThrottle
.
public WriteRequestFilter(IoEventQueueHandler queueHandler)
IoEventQueueHandler
.
Method Detail |
---|
public IoEventQueueHandler getQueueHandler()
IoEventQueueHandler
which is attached to this
filter.
public void filterWrite(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws java.lang.Exception
IoFilterAdapter
IoSession.write(Object)
method invocation.
filterWrite
in interface IoFilter
filterWrite
in class IoFilterAdapter
java.lang.Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |