requestSize += LENGTH_PLACEHOLDER.length + 1;
channelBuffer = useDirectBuffers ?
ChannelBuffers.directBuffer(requestSize) :
ChannelBuffers.buffer(requestSize);
}
ChannelBufferOutputStream outputStream =
new ChannelBufferOutputStream(channelBuffer);
outputStream.write(LENGTH_PLACEHOLDER);
outputStream.writeByte(writableRequest.getType().ordinal());
try {
writableRequest.write(outputStream);
} catch (IndexOutOfBoundsException e) {
LOG.error("encode: Most likely the size of request was not properly " +
"specified - see getSerializedSize() in " +
writableRequest.getType().getRequestClass());
throw new IllegalStateException(e);
}
outputStream.flush();
outputStream.close();
// Set the correct size at the end
ChannelBuffer encodedBuffer = outputStream.buffer();
encodedBuffer.setInt(0, encodedBuffer.writerIndex() - 4);
if (LOG.isDebugEnabled()) {
LOG.debug("encode: Client " + writableRequest.getClientId() + ", " +
"requestId " + writableRequest.getRequestId() +
", size = " + encodedBuffer.writerIndex() + ", " +