}
private void fireEvent( NextFilter nextFilter, IoSession session,
EventType type, Object data )
{
final BlockingQueue unfetchedSessionBuffers = this.unfetchedSessionBuffers;
final Set allSessionBuffers = this.allSessionBuffers;
final Event event = new Event( type, nextFilter, data );
synchronized( unfetchedSessionBuffers )
{
final SessionBuffer buf = getSessionBuffer( session );
final Queue eventQueue = buf.eventQueue;
synchronized( buf )
{
eventQueue.push( event );
}
if( !allSessionBuffers.contains( buf ) )
{
allSessionBuffers.add( buf );
unfetchedSessionBuffers.push( buf );
}
}
}