org.apache.mina.common.support

Class AbstractIoFilterChain

Implemented Interfaces:
IoFilterChain
Known Direct Subclasses:
VmPipeFilterChain

public abstract class AbstractIoFilterChain
extends java.lang.Object
implements IoFilterChain

An abstract implementation of IoFilterChain that provides common operations for developers to implement their own transport layer.

The only method a developer should implement is doWrite(IoSession,IoFilter.WriteRequest). This method is invoked when filter chain is evaluated for IoFilter.filterWrite(IoFilter.NextFilter,IoSession,IoFilter.WriteRequest) and finally to be written out.

Field Summary

static String
CONNECT_FUTURE
A session attribute that stores a ConnectFuture related with the IoSession.

Constructor Summary

AbstractIoFilterChain(IoSession session)

Method Summary

void
addAfter(String baseName, String name, IoFilter filter)
Adds the specified filter with the specified name just after the filter whose name is baseName in this chain.
void
addBefore(String baseName, String name, IoFilter filter)
Adds the specified filter with the specified name just before the filter whose name is baseName in this chain.
void
addFirst(String name, IoFilter filter)
Adds the specified filter with the specified name at the beginning of this chain.
void
addLast(String name, IoFilter filter)
Adds the specified filter with the specified name at the end of this chain.
void
clear()
Removes all filters added to this chain.
boolean
contains(IoFilter> filterType)
Returns true if this chain contains an IoFilter of the specified filterType.
boolean
contains(String name)
Returns true if this chain contains an IoFilter with the specified name.
boolean
contains(IoFilter filter)
Returns true if this chain contains the specified filter.
protected abstract void
doClose(IoSession session)
protected abstract void
doWrite(IoSession session, IoFilter.WriteRequest writeRequest)
protected void
finalize()
void
fireExceptionCaught(IoSession session, Throwable cause)
Fires a IoHandler.exceptionCaught(IoSession,Throwable) event.
void
fireFilterClose(IoSession session)
Fires a IoSession.close() event.
void
fireFilterWrite(IoSession session, IoFilter.WriteRequest writeRequest)
Fires a IoSession.write(Object) event.
void
fireMessageReceived(IoSession session, Object message)
Fires a IoFilterChain.fireMessageReceived(IoSession,Object) event.
void
fireMessageSent(IoSession session, IoFilter.WriteRequest request)
Fires a IoHandler.sessionOpened(IoSession) event.
void
fireSessionClosed(IoSession session)
Fires a IoHandler.sessionClosed(IoSession) event.
void
fireSessionCreated(IoSession session)
Fires a IoHandler.sessionCreated(IoSession) event.
void
fireSessionIdle(IoSession session, IdleStatus status)
Fires a IoHandler.sessionIdle(IoSession,IdleStatus) event.
void
fireSessionOpened(IoSession session)
Fires a IoHandler.sessionOpened(IoSession) event.
IoFilter
get(String name)
Returns the IoFilter with the specified name in this chain.
List
getAll()
Returns the list of all IoFilterChain.Entrys this chain contains.
List
getAllReversed()
Returns the reversed list of all IoFilterChain.Entrys this chain contains.
Entry
getEntry(String name)
Returns the IoFilterChain.Entry with the specified name in this chain.
IoFilter.NextFilter
getNextFilter(String name)
Returns the IoFilter.NextFilter of the IoFilter with the specified name in this chain.
IoSession
getSession()
Returns the parent IoSession of this chain.
IoFilter
remove(String name)
Removes the filter with the specified name from this chain.
String
toString()

Field Details

CONNECT_FUTURE

public static final String CONNECT_FUTURE

Constructor Details

AbstractIoFilterChain

protected AbstractIoFilterChain(IoSession session)

Method Details

addAfter

public void addAfter(String baseName,
                     String name,
                     IoFilter filter)
Adds the specified filter with the specified name just after the filter whose name is baseName in this chain.
Specified by:
addAfter in interface IoFilterChain

addBefore

public void addBefore(String baseName,
                      String name,
                      IoFilter filter)
Adds the specified filter with the specified name just before the filter whose name is baseName in this chain.
Specified by:
addBefore in interface IoFilterChain

addFirst

public void addFirst(String name,
                     IoFilter filter)
Adds the specified filter with the specified name at the beginning of this chain.
Specified by:
addFirst in interface IoFilterChain

addLast

public void addLast(String name,
                    IoFilter filter)
Adds the specified filter with the specified name at the end of this chain.
Specified by:
addLast in interface IoFilterChain

clear

public void clear()
            throws Exception
Removes all filters added to this chain.
Specified by:
clear in interface IoFilterChain

contains

public boolean contains(IoFilter> filterType)
Specified by:
contains in interface IoFilterChain

contains

public boolean contains(String name)
Specified by:
contains in interface IoFilterChain

contains

public boolean contains(IoFilter filter)
Returns true if this chain contains the specified filter.
Specified by:
contains in interface IoFilterChain

doClose

protected abstract void doClose(IoSession session)
            throws Exception

doWrite

protected abstract void doWrite(IoSession session,
                                IoFilter.WriteRequest writeRequest)
            throws Exception

finalize

protected void finalize()
            throws Throwable

fireExceptionCaught

public void fireExceptionCaught(IoSession session,
                                Throwable cause)
Fires a IoHandler.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:
fireExceptionCaught in interface IoFilterChain

fireFilterClose

public void fireFilterClose(IoSession session)
Fires a IoSession.close() 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:
fireFilterClose in interface IoFilterChain

fireFilterWrite

public void fireFilterWrite(IoSession session,
                            IoFilter.WriteRequest writeRequest)
Fires a IoSession.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:
fireFilterWrite in interface IoFilterChain

fireMessageReceived

public void fireMessageReceived(IoSession session,
                                Object message)
Fires a IoFilterChain.fireMessageReceived(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:
fireMessageReceived in interface IoFilterChain

fireMessageSent

public void fireMessageSent(IoSession session,
                            IoFilter.WriteRequest request)
Fires a IoHandler.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:
fireMessageSent in interface IoFilterChain

fireSessionClosed

public void fireSessionClosed(IoSession session)
Fires a IoHandler.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:
fireSessionClosed in interface IoFilterChain

fireSessionCreated

public void fireSessionCreated(IoSession session)
Fires a IoHandler.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:
fireSessionCreated in interface IoFilterChain

fireSessionIdle

public void fireSessionIdle(IoSession session,
                            IdleStatus status)
Fires a IoHandler.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:
fireSessionIdle in interface IoFilterChain

fireSessionOpened

public void fireSessionOpened(IoSession session)
Fires a IoHandler.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:
fireSessionOpened in interface IoFilterChain

get

public IoFilter get(String name)
Returns the IoFilter with the specified name in this chain.
Specified by:
get in interface IoFilterChain
Returns:
null if there's no such name in this chain

getAll

public List getAll()
Specified by:
getAll in interface IoFilterChain

getAllReversed

public List getAllReversed()
Specified by:
getAllReversed in interface IoFilterChain

getEntry

public Entry getEntry(String name)
Returns the IoFilterChain.Entry with the specified name in this chain.
Specified by:
getEntry in interface IoFilterChain
Returns:
null if there's no such name in this chain

getNextFilter

public IoFilter.NextFilter getNextFilter(String name)
Returns the IoFilter.NextFilter of the IoFilter with the specified name in this chain.
Specified by:
getNextFilter in interface IoFilterChain
Returns:
null if there's no such name in this chain

getSession

public IoSession getSession()
Returns the parent IoSession of this chain.
Specified by:
getSession in interface IoFilterChain
Returns:
IoSession

remove

public IoFilter remove(String name)
Removes the filter with the specified name from this chain.
Specified by:
remove in interface IoFilterChain

toString

public String toString()