public override void SessionIdle(INextFilter nextFilter, IoSession session, IdleStatus status)
 {
     if ((_eventTypes & IoEventType.SessionIdle) == IoEventType.SessionIdle)
     {
         IoFilterEvent ioe = new IoFilterEvent(nextFilter, IoEventType.SessionIdle, session, status);
         FireEvent(ioe);
     }
     else
     {
         base.SessionIdle(nextFilter, session, status);
     }
 }
 public override void SessionClosed(INextFilter nextFilter, IoSession session)
 {
     if ((_eventTypes & IoEventType.SessionClosed) == IoEventType.SessionClosed)
     {
         IoFilterEvent ioe = new IoFilterEvent(nextFilter, IoEventType.SessionClosed, session, null);
         FireEvent(ioe);
     }
     else
     {
         base.SessionClosed(nextFilter, session);
     }
 }
 public override void ExceptionCaught(INextFilter nextFilter, IoSession session, Exception cause)
 {
     if ((_eventTypes & IoEventType.ExceptionCaught) == IoEventType.ExceptionCaught)
     {
         IoFilterEvent ioe = new IoFilterEvent(nextFilter, IoEventType.ExceptionCaught, session, cause);
         FireEvent(ioe);
     }
     else
     {
         base.ExceptionCaught(nextFilter, session, cause);
     }
 }
 protected void FireEvent(IoFilterEvent ioe)
 {
     _executor.Execute(ioe);
 }
 public override void FilterClose(INextFilter nextFilter, IoSession session)
 {
     if ((_eventTypes & IoEventType.Close) == IoEventType.Close)
     {
         IoFilterEvent ioe = new IoFilterEvent(nextFilter, IoEventType.Close, session, null);
         FireEvent(ioe);
     }
     else
     {
         base.FilterClose(nextFilter, session);
     }
 }
 public override void FilterWrite(INextFilter nextFilter, IoSession session, IWriteRequest writeRequest)
 {
     if ((_eventTypes & IoEventType.Write) == IoEventType.Write)
     {
         IoFilterEvent ioe = new IoFilterEvent(nextFilter, IoEventType.Write, session, writeRequest);
         FireEvent(ioe);
     }
     else
     {
         base.FilterWrite(nextFilter, session, writeRequest);
     }
 }
 public override void MessageReceived(INextFilter nextFilter, IoSession session, Object message)
 {
     if ((_eventTypes & IoEventType.MessageReceived) == IoEventType.MessageReceived)
     {
         IoFilterEvent ioe = new IoFilterEvent(nextFilter, IoEventType.MessageReceived, session, message);
         FireEvent(ioe);
     }
     else
     {
         base.MessageReceived(nextFilter, session, message);
     }
 }