Package org.apache.mina.common
Interface IoFilter
-
- All Known Implementing Classes:
BlacklistFilter,ExecutorFilter,IoFilterAdapter,LoggingFilter,ProtocolCodecFilter,ReferenceCountingIoFilter,StreamWriteFilter
public interface IoFilterA filter which interceptsIoHandlerevents like Servlet filters. Filters can be used for these purposes:- Event logging,
- Performance measurement,
- Authorization,
- Overload control,
- Message transformation (e.g. encryption and decryption, ...),
- and many more.
Please NEVER implement your filters to wrap
IoSessions. Users can cache the reference to the session, which might malfunction if any filters are added or removed later.The Life Cycle
IoFilters are activated only when they are insideIoFilterChain.When you add an
IoFilterto anIoFilterChain:init()is invoked byReferenceCountingIoFilterif the filter is added at the first time.onPreAdd(IoFilterChain, String, NextFilter)is invoked to notify that the filter will be added to the chain.- The filter is added to the chain, and all events and I/O requests pass through the filter from now.
onPostAdd(IoFilterChain, String, NextFilter)is invoked to notify that the filter is added to the chain.- The filter is removed from the chain if
onPostAdd(IoFilterChain, String, org.apache.mina.common.IoFilter.NextFilter)threw an exception.destroy()is also invoked byReferenceCountingIoFilterif the filter is the last filter which was added toIoFilterChains.
When you remove an
IoFilterfrom anIoFilterChain:onPreRemove(IoFilterChain, String, NextFilter)is invoked to notify that the filter will be removed from the chain.- The filter is removed from the chain, and any events and I/O requests don't pass through the filter from now.
onPostRemove(IoFilterChain, String, NextFilter)is invoked to notify that the filter is removed from the chain.destroy()is invoked byReferenceCountingIoFilterif the removed filter was the last one.
- See Also:
IoFilterAdapter
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interfaceIoFilter.NextFilterRepresents the nextIoFilterinIoFilterChain.static classIoFilter.WriteRequestRepresents write request fired byIoSession.write(Object).
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voiddestroy()Invoked byReferenceCountingIoFilterwhen this filter is not used by anyIoFilterChainanymore, so you can destroy shared resources.voidexceptionCaught(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Throwable cause)FiltersIoHandler.exceptionCaught(IoSession,Throwable)event.voidfilterClose(IoFilter.NextFilter nextFilter, IoSession session)FiltersIoSession.close()method invocation.voidfilterWrite(IoFilter.NextFilter nextFilter, IoSession session, IoFilter.WriteRequest writeRequest)FiltersIoSession.write(Object)method invocation.voidinit()Invoked byReferenceCountingIoFilterwhen this filter is added to aIoFilterChainat the first time, so you can initialize shared resources.voidmessageReceived(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Object message)FiltersIoHandler.messageReceived(IoSession,Object)event.voidmessageSent(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Object message)FiltersIoHandler.messageSent(IoSession,Object)event.voidonPostAdd(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter)Invoked after this filter is added to the specified parent.voidonPostRemove(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter)Invoked after this filter is removed from the specified parent.voidonPreAdd(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter)Invoked before this filter is added to the specified parent.voidonPreRemove(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter)Invoked before this filter is removed from the specified parent.voidsessionClosed(IoFilter.NextFilter nextFilter, IoSession session)FiltersIoHandler.sessionClosed(IoSession)event.voidsessionCreated(IoFilter.NextFilter nextFilter, IoSession session)FiltersIoHandler.sessionCreated(IoSession)event.voidsessionIdle(IoFilter.NextFilter nextFilter, IoSession session, IdleStatus status)FiltersIoHandler.sessionIdle(IoSession,IdleStatus)event.voidsessionOpened(IoFilter.NextFilter nextFilter, IoSession session)FiltersIoHandler.sessionOpened(IoSession)event.
-
-
-
Method Detail
-
init
void init() throws java.lang.Exception
Invoked byReferenceCountingIoFilterwhen this filter is added to aIoFilterChainat the first time, so you can initialize shared resources. Please note that this method is never called if you don't wrap a filter withReferenceCountingIoFilter.- Throws:
java.lang.Exception
-
destroy
void destroy() throws java.lang.ExceptionInvoked byReferenceCountingIoFilterwhen this filter is not used by anyIoFilterChainanymore, so you can destroy shared resources. Please note that this method is never called if you don't wrap a filter withReferenceCountingIoFilter.- Throws:
java.lang.Exception
-
onPreAdd
void onPreAdd(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
Invoked before this filter is added to the specified parent. Please note that this method can be invoked more than once if this filter is added to more than one parents. This method is not invoked beforeinit()is invoked.- Parameters:
parent- the parent who called this methodname- the name assigned to this filternextFilter- theIoFilter.NextFilterfor this filter. You can reuse this object until this filter is removed from the chain.- Throws:
java.lang.Exception
-
onPostAdd
void onPostAdd(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
Invoked after this filter is added to the specified parent. Please note that this method can be invoked more than once if this filter is added to more than one parents. This method is not invoked beforeinit()is invoked.- Parameters:
parent- the parent who called this methodname- the name assigned to this filternextFilter- theIoFilter.NextFilterfor this filter. You can reuse this object until this filter is removed from the chain.- Throws:
java.lang.Exception
-
onPreRemove
void onPreRemove(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
Invoked before this filter is removed from the specified parent. Please note that this method can be invoked more than once if this filter is removed from more than one parents. This method is always invoked beforedestroy()is invoked.- Parameters:
parent- the parent who called this methodname- the name assigned to this filternextFilter- theIoFilter.NextFilterfor this filter. You can reuse this object until this filter is removed from the chain.- Throws:
java.lang.Exception
-
onPostRemove
void onPostRemove(IoFilterChain parent, java.lang.String name, IoFilter.NextFilter nextFilter) throws java.lang.Exception
Invoked after this filter is removed from the specified parent. Please note that this method can be invoked more than once if this filter is removed from more than one parents. This method is always invoked beforedestroy()is invoked.- Parameters:
parent- the parent who called this methodname- the name assigned to this filternextFilter- theIoFilter.NextFilterfor this filter. You can reuse this object until this filter is removed from the chain.- Throws:
java.lang.Exception
-
sessionCreated
void sessionCreated(IoFilter.NextFilter nextFilter, IoSession session) throws java.lang.Exception
FiltersIoHandler.sessionCreated(IoSession)event.- Throws:
java.lang.Exception
-
sessionOpened
void sessionOpened(IoFilter.NextFilter nextFilter, IoSession session) throws java.lang.Exception
FiltersIoHandler.sessionOpened(IoSession)event.- Throws:
java.lang.Exception
-
sessionClosed
void sessionClosed(IoFilter.NextFilter nextFilter, IoSession session) throws java.lang.Exception
FiltersIoHandler.sessionClosed(IoSession)event.- Throws:
java.lang.Exception
-
sessionIdle
void sessionIdle(IoFilter.NextFilter nextFilter, IoSession session, IdleStatus status) throws java.lang.Exception
FiltersIoHandler.sessionIdle(IoSession,IdleStatus)event.- Throws:
java.lang.Exception
-
exceptionCaught
void exceptionCaught(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Throwable cause) throws java.lang.Exception
FiltersIoHandler.exceptionCaught(IoSession,Throwable)event.- Throws:
java.lang.Exception
-
messageReceived
void messageReceived(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Object message) throws java.lang.Exception
FiltersIoHandler.messageReceived(IoSession,Object)event.- Throws:
java.lang.Exception
-
messageSent
void messageSent(IoFilter.NextFilter nextFilter, IoSession session, java.lang.Object message) throws java.lang.Exception
FiltersIoHandler.messageSent(IoSession,Object)event.- Throws:
java.lang.Exception
-
filterClose
void filterClose(IoFilter.NextFilter nextFilter, IoSession session) throws java.lang.Exception
FiltersIoSession.close()method invocation.- Throws:
java.lang.Exception
-
filterWrite
void filterWrite(IoFilter.NextFilter nextFilter, IoSession session, IoFilter.WriteRequest writeRequest) throws java.lang.Exception
FiltersIoSession.write(Object)method invocation.- Throws:
java.lang.Exception
-
-