public void decode( ByteBuffer socketBuffer )
	{
		if ( !socketBuffer.hasRemaining() || flushandclosestate )
			return;
		
		if ( DEBUG )
			System.out.println( "process(" + socketBuffer.remaining() + "): {" + ( socketBuffer.remaining() > 1000 ? "too big to display" : new String( socketBuffer.array(), socketBuffer.position(), socketBuffer.remaining() ) ) + "}" );
		
		if ( readystate == READYSTATE.OPEN )
		{
			decodeFrames( socketBuffer );
		}
		else
		{
			if ( decodeHandshake( socketBuffer ) )
			{
				decodeFrames( socketBuffer );
			}
		}
		assert ( isClosing() || isFlushAndClose() || !socketBuffer.hasRemaining() );
	}