protected final Buffer encodeHttpPacket(final FilterChainContext ctx,
final HttpHeader httpHeader, final HttpContent httpContent,
final boolean isContentAlreadyEncoded) {
final Connection connection = ctx.getConnection();
final MemoryManager memoryManager = ctx.getMemoryManager();
Buffer encodedBuffer = null;
if (!httpHeader.isCommitted()) {
if (!httpHeader.isRequest()) {
final HttpResponsePacket response = (HttpResponsePacket) httpHeader;
if (response.isAcknowledgement()) {
encodedBuffer = memoryManager.allocate(128);
encodedBuffer = encodeInitialLine(httpHeader,
encodedBuffer,
memoryManager);
encodedBuffer = put(memoryManager,
encodedBuffer,
CRLF_BYTES);
encodedBuffer = put(memoryManager,
encodedBuffer,
CRLF_BYTES);
onInitialLineEncoded(httpHeader, ctx);
encodedBuffer.trim();
encodedBuffer.allowBufferDispose(true);
HttpProbeNotifier.notifyHeaderSerialize(this, connection,
httpHeader, encodedBuffer);
response.acknowledged();
return encodedBuffer; // DO NOT MARK COMMITTED
}
}
setContentEncodingsOnSerializing(httpHeader);
setTransferEncodingOnSerializing(ctx,
httpHeader,
httpContent);
encodedBuffer = memoryManager.allocateAtLeast(2048);
encodedBuffer = encodeInitialLine(httpHeader, encodedBuffer, memoryManager);
encodedBuffer = put(memoryManager, encodedBuffer, CRLF_BYTES);
onInitialLineEncoded(httpHeader, ctx);