int attempted = getBuffer().remaining() + dataPaddingBytes + (dataPaddingBytes > 0 ? 1 : 0); final int fcWindow = grabFlowControlBytes(attempted); if (fcWindow == 0 && getBuffer().hasRemaining()) { return new SendFrameHeader(getBuffer().remaining(), null); if(getBuffer().remaining() >= fcWindow) { } else if (getBuffer().remaining() == dataPaddingBytes ){ dataPaddingBytes = fcWindow - getBuffer().remaining() - 1; final boolean finalFrame = isFinalFrameQueued() && fcWindow >= (getBuffer().remaining() + (dataPaddingBytes > 0 ? dataPaddingBytes + 1 : 0)); PooledByteBuffer firstHeaderBuffer = getChannel().getBufferPool().allocate(); PooledByteBuffer[] allHeaderBuffers = null; firstBuffer.put(1, (byte) ((headerFrameLength >> 8) & 0xFF)); firstBuffer.put(2, (byte) (headerFrameLength & 0xFF)); firstBuffer.put(4, (byte) ((isFinalFrameQueued() && !getBuffer().hasRemaining() && frameType == Http2Channel.FRAME_TYPE_HEADERS && trailers == null ? Http2Channel.HEADERS_FLAG_END_STREAM : 0) | (result == HpackEncoder.State.COMPLETE ? Http2Channel.HEADERS_FLAG_END_HEADERS : 0 ) | (paddingBytes > 0 ? Http2Channel.HEADERS_FLAG_PADDED : 0))); //flags ByteBuffer currentBuffer = firstBuffer; if (getBuffer().remaining() > 0) { if (fcWindow > 0) { remainingInBuffer = getBuffer().remaining() - toSend; getBuffer().limit(getBuffer().position() + toSend); remainingInBuffer = getBuffer().remaining();
int attempted = getBuffer().remaining() + dataPaddingBytes + (dataPaddingBytes > 0 ? 1 : 0); final int fcWindow = grabFlowControlBytes(attempted); if (fcWindow == 0 && getBuffer().hasRemaining()) { return new SendFrameHeader(getBuffer().remaining(), null); if(getBuffer().remaining() >= fcWindow) { } else if (getBuffer().remaining() == dataPaddingBytes ){ dataPaddingBytes = fcWindow - getBuffer().remaining() - 1; final boolean finalFrame = isFinalFrameQueued() && fcWindow >= (getBuffer().remaining() + (dataPaddingBytes > 0 ? dataPaddingBytes + 1 : 0)); PooledByteBuffer firstHeaderBuffer = getChannel().getBufferPool().allocate(); PooledByteBuffer[] allHeaderBuffers = null; firstBuffer.put(1, (byte) ((headerFrameLength >> 8) & 0xFF)); firstBuffer.put(2, (byte) (headerFrameLength & 0xFF)); firstBuffer.put(4, (byte) ((isFinalFrameQueued() && !getBuffer().hasRemaining() && frameType == Http2Channel.FRAME_TYPE_HEADERS && trailers == null ? Http2Channel.HEADERS_FLAG_END_STREAM : 0) | (result == HpackEncoder.State.COMPLETE ? Http2Channel.HEADERS_FLAG_END_HEADERS : 0 ) | (paddingBytes > 0 ? Http2Channel.HEADERS_FLAG_PADDED : 0))); //flags ByteBuffer currentBuffer = firstBuffer; if (getBuffer().remaining() > 0) { if (fcWindow > 0) { remainingInBuffer = getBuffer().remaining() - toSend; getBuffer().limit(getBuffer().position() + toSend); remainingInBuffer = getBuffer().remaining();
int attempted = getBuffer().remaining() + dataPaddingBytes + (dataPaddingBytes > 0 ? 1 : 0); final int fcWindow = grabFlowControlBytes(attempted); if (fcWindow == 0 && getBuffer().hasRemaining()) { return new SendFrameHeader(getBuffer().remaining(), null); if(getBuffer().remaining() >= fcWindow) { } else if (getBuffer().remaining() == dataPaddingBytes ){ dataPaddingBytes = fcWindow - getBuffer().remaining() - 1; final boolean finalFrame = isFinalFrameQueued() && fcWindow >= (getBuffer().remaining() + (dataPaddingBytes > 0 ? dataPaddingBytes + 1 : 0)); PooledByteBuffer firstHeaderBuffer = getChannel().getBufferPool().allocate(); PooledByteBuffer[] allHeaderBuffers = null; firstBuffer.put(1, (byte) ((headerFrameLength >> 8) & 0xFF)); firstBuffer.put(2, (byte) (headerFrameLength & 0xFF)); firstBuffer.put(4, (byte) ((isFinalFrameQueued() && !getBuffer().hasRemaining() && frameType == Http2Channel.FRAME_TYPE_HEADERS && trailers == null ? Http2Channel.HEADERS_FLAG_END_STREAM : 0) | (result == HpackEncoder.State.COMPLETE ? Http2Channel.HEADERS_FLAG_END_HEADERS : 0 ) | (paddingBytes > 0 ? Http2Channel.HEADERS_FLAG_PADDED : 0))); //flags ByteBuffer currentBuffer = firstBuffer; if (getBuffer().remaining() > 0) { if (fcWindow > 0) { remainingInBuffer = getBuffer().remaining() - toSend; getBuffer().limit(getBuffer().position() + toSend); remainingInBuffer = getBuffer().remaining();