public class KeepAliveFilter extends IoFilterAdapter
IoFilter
that sends a keep-alive request on
sessionIdle event with IdleStatus.READER_IDLE
and sends
back the response for the keep-alive request.
IoSessionConfig.setIdleTime(IdleStatus, int)
IdleStatus.READER_IDLE
automatically. Changing the idleTime
property for IdleStatus.READER_IDLE
will lead this filter to a
unexpected behavior.
KeepAliveMessageFactory
KeepAliveMessageFactory
, which determines a received or sent
message is a keep-alive message or not and creates a new keep-alive
message:
Name | Description | Implementation |
---|---|---|
Active | You want a keep-alive request is sent when the reader is idle.
Once the request is sent, the response for the request should be
received within keepAliveRequestTimeout seconds. Otherwise,
the specified KeepAlivePolicy will be enforced. If a keep-alive
request is received, its response also should be sent back. |
Both KeepAliveMessageFactory.getRequest(IoSession) and
KeepAliveMessageFactory.getResponse(IoSession, Object) must
return a non-null. |
Semi-active | You want a keep-alive request to be sent when the reader is idle. However, you don't really care if the response is received or not. If a keep-alive request is received, its response should also be sent back. | Both KeepAliveMessageFactory.getRequest(IoSession) and
KeepAliveMessageFactory.getResponse(IoSession, Object) must
return a non-null, and the policy property
should be set to KeepAlivePolicy.OFF or KeepAlivePolicy.LOG .
|
Passive | You don't want to send a keep-alive request by yourself, but the response should be sent back if a keep-alive request is received. | KeepAliveMessageFactory.getRequest(IoSession) must return
null and KeepAliveMessageFactory.getResponse(IoSession, Object)
must return a non-null. |
Deaf Speaker | You want a keep-alive request to be sent when the reader is idle, but you don't want to send any response back. | KeepAliveMessageFactory.getRequest(IoSession) must return
a non-null and
KeepAliveMessageFactory.getResponse(IoSession, Object) must
return null. |
Silent Listener | You don't want to send a keep-alive request by yourself nor send any response back. | Both KeepAliveMessageFactory.getRequest(IoSession) and
KeepAliveMessageFactory.getResponse(IoSession, Object) must
return null. |
KeepAliveMessageFactory.isRequest(IoSession, Object)
and
KeepAliveMessageFactory.isResponse(IoSession, Object)
properly
whatever case you chose.
KeepAlivePolicy
.
The default policy is KeepAlivePolicy.CLOSE
. Setting the policy
to KeepAlivePolicy.OFF
stops this filter from waiting for response
messages and therefore disables keepAliveRequestTimeout property.IoFilter.NextFilter
Constructor and Description |
---|
KeepAliveFilter(KeepAliveMessageFactory messageFactory)
Creates a new instance with the default
KeepAlivePolicy and
the default timeout values (policy =
KeepAlivePolicy.CLOSE , keepAliveRequestInterval = 60
and keepAliveRequestTimeout = 30). |
KeepAliveFilter(KeepAliveMessageFactory messageFactory,
KeepAlivePolicy policy)
Creates a new instance with the default timeout values
(keepAliveRequestInterval = 60 and
keepAliveRequestTimeout = 30).
|
KeepAliveFilter(KeepAliveMessageFactory messageFactory,
KeepAlivePolicy policy,
int keepAliveRequestInterval,
int keepAliveRequestTimeout)
Creates a new instance.
|
Modifier and Type | Method and Description |
---|---|
int |
getKeepAliveRequestInterval() |
int |
getKeepAliveRequestTimeout() |
KeepAliveMessageFactory |
getMessageFactory() |
KeepAlivePolicy |
getPolicy() |
void |
messageReceived(IoFilter.NextFilter nextFilter,
IoSession session,
java.lang.Object message)
Filters
IoHandler.messageReceived(IoSession,Object)
event. |
void |
messageSent(IoFilter.NextFilter nextFilter,
IoSession session,
WriteRequest writeRequest)
Filters
IoHandler.messageSent(IoSession,Object)
event. |
void |
onPostAdd(IoFilterChain parent,
java.lang.String name,
IoFilter.NextFilter nextFilter)
Invoked after this filter is added to the specified parent.
|
void |
onPostRemove(IoFilterChain parent,
java.lang.String name,
IoFilter.NextFilter nextFilter)
Invoked after this filter is removed from the specified parent.
|
void |
onPreAdd(IoFilterChain parent,
java.lang.String name,
IoFilter.NextFilter nextFilter)
Invoked before this filter is added to the specified parent.
|
void |
sessionIdle(IoFilter.NextFilter nextFilter,
IoSession session,
IdleStatus status)
Filters
IoHandler.sessionIdle(IoSession,IdleStatus)
event. |
void |
setKeepAliveRequestInterval(int keepAliveRequestInterval) |
void |
setKeepAliveRequestTimeout(int keepAliveRequestTimeout) |
void |
setPolicy(KeepAlivePolicy policy) |
destroy, exceptionCaught, filterClose, filterSetTrafficMask, filterWrite, init, onPreRemove, sessionClosed, sessionCreated, sessionOpened
public KeepAliveFilter(KeepAliveMessageFactory messageFactory)
KeepAlivePolicy
and
the default timeout values (policy =
KeepAlivePolicy.CLOSE
, keepAliveRequestInterval = 60
and keepAliveRequestTimeout = 30).public KeepAliveFilter(KeepAliveMessageFactory messageFactory, KeepAlivePolicy policy)
public KeepAliveFilter(KeepAliveMessageFactory messageFactory, KeepAlivePolicy policy, int keepAliveRequestInterval, int keepAliveRequestTimeout)
public KeepAlivePolicy getPolicy()
public void setPolicy(KeepAlivePolicy policy)
public int getKeepAliveRequestInterval()
public void setKeepAliveRequestInterval(int keepAliveRequestInterval)
public int getKeepAliveRequestTimeout()
public void setKeepAliveRequestTimeout(int keepAliveRequestTimeout)
public KeepAliveMessageFactory getMessageFactory()
public void onPreAdd(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
IoFilter
IoFilter.init()
is invoked.onPreAdd
in interface IoFilter
onPreAdd
in class IoFilterAdapter
parent
- the parent who called this methodname
- the name assigned to this filternextFilter
- the IoFilter.NextFilter
for this filter. You can reuse
this object until this filter is removed from the chain.java.lang.Exception
public void onPostAdd(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
IoFilter
IoFilter.init()
is invoked.onPostAdd
in interface IoFilter
onPostAdd
in class IoFilterAdapter
parent
- the parent who called this methodname
- the name assigned to this filternextFilter
- the IoFilter.NextFilter
for this filter. You can reuse
this object until this filter is removed from the chain.java.lang.Exception
public void onPostRemove(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
IoFilter
IoFilter.destroy()
is invoked.onPostRemove
in interface IoFilter
onPostRemove
in class IoFilterAdapter
parent
- the parent who called this methodname
- the name assigned to this filternextFilter
- the IoFilter.NextFilter
for this filter. You can reuse
this object until this filter is removed from the chain.java.lang.Exception
public void messageReceived(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Object message) throws java.lang.Exception
IoFilter
IoHandler.messageReceived(IoSession,Object)
event.messageReceived
in interface IoFilter
messageReceived
in class IoFilterAdapter
java.lang.Exception
public void messageSent(IoFilter.NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws java.lang.Exception
IoFilter
IoHandler.messageSent(IoSession,Object)
event.messageSent
in interface IoFilter
messageSent
in class IoFilterAdapter
java.lang.Exception
public void sessionIdle(IoFilter.NextFilter nextFilter, IoSession session, IdleStatus status) throws java.lang.Exception
IoFilter
IoHandler.sessionIdle(IoSession,IdleStatus)
event.sessionIdle
in interface IoFilter
sessionIdle
in class IoFilterAdapter
java.lang.Exception
Copyright © 2004-2019 Apache MINA Project. All Rights Reserved.