Class DefaultIoFilterChain
java.lang.Object
org.apache.mina.core.filterchain.DefaultIoFilterChain
- All Implemented Interfaces:
IoFilterChain
- Direct Known Subclasses:
VmPipeFilterChain
A default implementation of
IoFilterChain that provides
all operations for developers who want to implement their own
transport layer once used with AbstractIoSession.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate final classprivate classprivate static classNested classes/interfaces inherited from interface IoFilterChain
IoFilterChain.Entry -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DefaultIoFilterChain.EntryImplThe chain headprivate static final org.slf4j.LoggerThe logger for this classprivate final Map<String, IoFilterChain.Entry> The mapping between the filters and their associated nameprivate final AbstractIoSessionThe associated sessionstatic final AttributeKeyprivate final DefaultIoFilterChain.EntryImplThe chain tail -
Constructor Summary
ConstructorsConstructorDescriptionDefaultIoFilterChain(AbstractIoSession session) Create a new default chain, associated with a session. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds the specified filter with the specified name just after the filter whose name isbaseNamein this chain.voidAdds the specified filter with the specified name just before the filter whose name isbaseNamein this chain.voidAdds the specified filter with the specified name at the beginning of this chain.voidAdds the specified filter with the specified name at the end of this chain.private voidcallNextExceptionCaught(IoFilterChain.Entry entry, IoSession session, Throwable cause) private voidcallNextFilterEvent(IoFilterChain.Entry entry, IoSession session, FilterEvent event) private voidcallNextInputClosed(IoFilterChain.Entry entry, IoSession session) private voidcallNextMessageReceived(IoFilterChain.Entry entry, IoSession session, Object message) private voidcallNextMessageSent(IoFilterChain.Entry entry, IoSession session, WriteRequest writeRequest) private voidcallNextSessionClosed(IoFilterChain.Entry entry, IoSession session) private voidcallNextSessionCreated(IoFilterChain.Entry entry, IoSession session) private voidcallNextSessionIdle(IoFilterChain.Entry entry, IoSession session, IdleStatus status) private voidcallNextSessionOpened(IoFilterChain.Entry entry, IoSession session) private voidcallPreviousFilterClose(IoFilterChain.Entry entry, IoSession session) private voidcallPreviousFilterWrite(IoFilterChain.Entry entry, IoSession session, WriteRequest writeRequest) private voidcheckAddable(String name) Checks the specified filter name is already taken and throws an exception if already taken.private DefaultIoFilterChain.EntryImplcheckOldName(String baseName) Throws an exception when the specified filter name is not registered in this chain.voidclear()Removes all filters added to this chain.booleanbooleanbooleanprivate voidprivate voidvoidfireEvent(FilterEvent event) Fires aIoHandler.event(IoSession, FilterEvent)event.voidfireExceptionCaught(Throwable cause) Fires aIoHandler.exceptionCaught(IoSession, Throwable)event.voidFires aIoSession.closeNow()or aIoSession.closeOnFlush()event.voidfireFilterWrite(WriteRequest writeRequest) Fires aIoSession.write(Object)event.voidFires aIoHandler.inputClosed(IoSession)event.voidfireMessageReceived(Object message) Fires aIoHandler.messageReceived(IoSession, Object)event.voidfireMessageSent(WriteRequest request) Fires aIoHandler.messageSent(IoSession, Object)event.voidFires aIoHandler.sessionClosed(IoSession)event.voidFires aIoHandler.sessionCreated(IoSession)event.voidfireSessionIdle(IdleStatus status) Fires aIoHandler.sessionIdle(IoSession, IdleStatus)event.voidFires aIoHandler.sessionOpened(IoSession)event.Returns theIoFilterwith the specifiedfilterTypein this chain.Returns theIoFilterwith the specifiednamein this chain.getAll()Returns theIoFilterChain.Entrywith the specifiedfilterTypein this chain.Returns theIoFilterChain.Entrywith the specifiednamein this chain.Returns theIoFilterChain.Entrywith the specifiedfilterin this chain.getNextFilter(Class<? extends IoFilter> filterType) Returns theIoFilter.NextFilterof the specifiedfilterTypein this chain.getNextFilter(String name) getNextFilter(IoFilter filter) Returns theIoFilter.NextFilterof the specifiedIoFilterin this chain.private voidregister(DefaultIoFilterChain.EntryImpl prevEntry, String name, IoFilter filter) Register the newly added filter, inserting it between the previous and the next filter in the filter's chain.Replace the filter of the specified type with the specified new filter.Removes the filter with the specified name from this chain.voidReplace the filter with the specified name with the specified new filter.Replace the filter of the specified type with the specified new filter.Replace the filter with the specified name with the specified new filter.voidReplace the filter with the specified name with the specified new filter.toString()
-
Field Details
-
SESSION_CREATED_FUTURE
A session attribute that stores anIoFuturerelated with theIoSession.DefaultIoFilterChainclears this attribute and notifies the future whenfireSessionCreated()orfireExceptionCaught(Throwable)is invoked. -
session
The associated session -
name2entry
The mapping between the filters and their associated name -
head
The chain head -
tail
The chain tail -
LOGGER
private static final org.slf4j.Logger LOGGERThe logger for this class
-
-
Constructor Details
-
DefaultIoFilterChain
Create a new default chain, associated with a session. It will only contain a HeadFilter and a TailFilter.- Parameters:
session- The session associated with the created filter chain
-
-
Method Details
-
getSession
- Specified by:
getSessionin interfaceIoFilterChain- Returns:
- the parent
IoSessionof this chain.
-
getEntry
Returns theIoFilterChain.Entrywith the specifiednamein this chain.- Specified by:
getEntryin interfaceIoFilterChain- Parameters:
name- The filter's name we are looking for- Returns:
nullif there's no such name in this chain
-
getEntry
Returns theIoFilterChain.Entrywith the specifiedfilterin this chain.- Specified by:
getEntryin interfaceIoFilterChain- Parameters:
filter- The Filter we are looking for- Returns:
nullif there's no such filter in this chain
-
getEntry
Returns theIoFilterChain.Entrywith the specifiedfilterTypein this chain. If there's more than one filter with the specified type, the first match will be chosen.- Specified by:
getEntryin interfaceIoFilterChain- Parameters:
filterType- The filter class we are looking for- Returns:
nullif there's no such name in this chain
-
get
Returns theIoFilterwith the specifiednamein this chain.- Specified by:
getin interfaceIoFilterChain- Parameters:
name- the filter's name- Returns:
nullif there's no such name in this chain
-
get
Returns theIoFilterwith the specifiedfilterTypein this chain. If there's more than one filter with the specified type, the first match will be chosen.- Specified by:
getin interfaceIoFilterChain- Parameters:
filterType- The filter class- Returns:
nullif there's no such name in this chain
-
getNextFilter
- Specified by:
getNextFilterin interfaceIoFilterChain- Parameters:
name- The filter's name we want the next filter- Returns:
nullif there's no such name in this chain
-
getNextFilter
Returns theIoFilter.NextFilterof the specifiedIoFilterin this chain.- Specified by:
getNextFilterin interfaceIoFilterChain- Parameters:
filter- The filter for which we want the next filter- Returns:
nullif there's no such name in this chain
-
getNextFilter
Returns theIoFilter.NextFilterof the specifiedfilterTypein this chain. If there's more than one filter with the specified type, the first match will be chosen.- Specified by:
getNextFilterin interfaceIoFilterChain- Parameters:
filterType- The Filter class for which we want the next filter- Returns:
nullif there's no such name in this chain
-
addFirst
Adds the specified filter with the specified name at the beginning of this chain.- Specified by:
addFirstin interfaceIoFilterChain- Parameters:
name- The filter's namefilter- The filter to add
-
addLast
Adds the specified filter with the specified name at the end of this chain.- Specified by:
addLastin interfaceIoFilterChain- Parameters:
name- The filter's namefilter- The filter to add
-
addBefore
Adds the specified filter with the specified name just before the filter whose name isbaseNamein this chain.- Specified by:
addBeforein interfaceIoFilterChain- Parameters:
baseName- The targeted Filter's namename- The filter's namefilter- The filter to add
-
addAfter
Adds the specified filter with the specified name just after the filter whose name isbaseNamein this chain.- Specified by:
addAfterin interfaceIoFilterChain- Parameters:
baseName- The targeted Filter's namename- The filter's namefilter- The filter to add
-
remove
Removes the filter with the specified name from this chain.- Specified by:
removein interfaceIoFilterChain- Parameters:
name- The name of the filter to remove- Returns:
- The removed filter
-
remove
Replace the filter with the specified name with the specified new filter.- Specified by:
removein interfaceIoFilterChain- Parameters:
filter- The filter to remove
-
remove
Replace the filter of the specified type with the specified new filter. If there's more than one filter with the specified type, the first match will be replaced.- Specified by:
removein interfaceIoFilterChain- Parameters:
filterType- The filter class to remove- Returns:
- The removed filter
-
replace
Replace the filter with the specified name with the specified new filter.- Specified by:
replacein interfaceIoFilterChain- Parameters:
name- The name of the filter we want to replacenewFilter- The new filter- Returns:
- the old filter
-
replace
Replace the filter with the specified name with the specified new filter.- Specified by:
replacein interfaceIoFilterChain- Parameters:
oldFilter- The filter we want to replacenewFilter- The new filter
-
replace
Replace the filter of the specified type with the specified new filter. If there's more than one filter with the specified type, the first match will be replaced.- Specified by:
replacein interfaceIoFilterChain- Parameters:
oldFilterType- The filter class we want to replacenewFilter- The new filter- Returns:
- The replaced IoFilter
-
clear
Removes all filters added to this chain.- Specified by:
clearin interfaceIoFilterChain- Throws:
Exception- If we weren't able to clear the filters
-
register
Register the newly added filter, inserting it between the previous and the next filter in the filter's chain. We also call the preAdd and postAdd methods. -
deregister
-
deregister0
-
checkOldName
Throws an exception when the specified filter name is not registered in this chain.- Returns:
- An filter entry with the specified name.
-
checkAddable
Checks the specified filter name is already taken and throws an exception if already taken. -
fireSessionCreated
public void fireSessionCreated()Fires aIoHandler.sessionCreated(IoSession)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireSessionCreatedin interfaceIoFilterChain
-
callNextSessionCreated
-
fireSessionOpened
public void fireSessionOpened()Fires aIoHandler.sessionOpened(IoSession)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireSessionOpenedin interfaceIoFilterChain
-
fireEvent
Fires aIoHandler.event(IoSession, FilterEvent)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireEventin interfaceIoFilterChain- Parameters:
event- The specific event being fired
-
callNextSessionOpened
-
fireSessionClosed
public void fireSessionClosed()Fires aIoHandler.sessionClosed(IoSession)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireSessionClosedin interfaceIoFilterChain
-
callNextSessionClosed
-
fireSessionIdle
Fires aIoHandler.sessionIdle(IoSession, IdleStatus)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireSessionIdlein interfaceIoFilterChain- Parameters:
status- The current status to propagate
-
callNextSessionIdle
-
fireMessageReceived
Fires aIoHandler.messageReceived(IoSession, Object)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireMessageReceivedin interfaceIoFilterChain- Parameters:
message- The received message
-
callNextMessageReceived
-
fireMessageSent
Fires aIoHandler.messageSent(IoSession, Object)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireMessageSentin interfaceIoFilterChain- Parameters:
request- The sent request
-
callNextMessageSent
private void callNextMessageSent(IoFilterChain.Entry entry, IoSession session, WriteRequest writeRequest) -
fireExceptionCaught
Fires aIoHandler.exceptionCaught(IoSession, Throwable)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireExceptionCaughtin interfaceIoFilterChain- Parameters:
cause- The exception cause
-
callNextExceptionCaught
-
fireInputClosed
public void fireInputClosed()Fires aIoHandler.inputClosed(IoSession)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireInputClosedin interfaceIoFilterChain
-
callNextInputClosed
-
fireFilterWrite
Fires aIoSession.write(Object)event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireFilterWritein interfaceIoFilterChain- Parameters:
writeRequest- The message to write
-
callPreviousFilterWrite
private void callPreviousFilterWrite(IoFilterChain.Entry entry, IoSession session, WriteRequest writeRequest) -
fireFilterClose
public void fireFilterClose()Fires aIoSession.closeNow()or aIoSession.closeOnFlush()event. Most users don't need to call this method at all. Please use this method only when you implement a new transport or fire a virtual event.- Specified by:
fireFilterClosein interfaceIoFilterChain
-
callPreviousFilterClose
-
callNextFilterEvent
-
getAll
- Specified by:
getAllin interfaceIoFilterChain- Returns:
- The list of all
IoFilterChain.Entrys this chain contains.
-
getAllReversed
- Specified by:
getAllReversedin interfaceIoFilterChain- Returns:
- The reversed list of all
IoFilterChain.Entrys this chain contains.
-
contains
- Specified by:
containsin interfaceIoFilterChain- Parameters:
name- The filter's name we are looking for- Returns:
trueif this chain contains anIoFilterwith the specifiedname.
-
contains
- Specified by:
containsin interfaceIoFilterChain- Parameters:
filter- The filter we are looking for- Returns:
trueif this chain contains the specifiedfilter.
-
contains
- Specified by:
containsin interfaceIoFilterChain- Parameters:
filterType- The filter's class we are looking for- Returns:
trueif this chain contains anIoFilterof the specifiedfilterType.
-
toString
-