@Override
	public void finalWrite(ChannelEvent event)
	{
		if( !writeQueue.isEmpty() )
		{
			writeQueue.offer(event);
			return;
		}

		boolean result = false;
		try
		{
			result = handleOutgoingEvent(event);
		}
		catch(Exception e)
		{
			event.getFuture().onException(e);
			return;
		}

		if( !result && isWritable() )
		{
			writeQueue.offer(event);
			if( dispatcher != null )
				dispatcher.setInterestOps(this, dispatcher.getInterestOps(this)
						| SelectionKey.OP_WRITE);
		}

		if( result )
			event.getFuture().onSuccess();
	}