String MESSAGE_NAME = AISProtobuf.AkibanInformationSchema.getDescriptor().getFullName();
int requiredSize = getBufferSize();
int serializedSize = requiredSize - 4; // Added by requiredBufferSize
int bufferSize = buffer.limit() - buffer.position();
if(bufferSize < requiredSize) {
throw new ProtobufWriteException(MESSAGE_NAME, "Required size exceeds buffer size");
}
buffer.putInt(serializedSize);
int bufferPos = buffer.position();
bufferSize = buffer.limit() - bufferPos;
CodedOutputStream codedOutput = CodedOutputStream.newInstance(buffer.array(), bufferPos, bufferSize);
try {
pbAIS.writeTo(codedOutput);
// Successfully written, update backing buffer info
buffer.position(bufferPos + serializedSize);
} catch(IOException e) {
// CodedOutputStream really only throws OutOfSpace exception, but declares IOE
throw new ProtobufWriteException(MESSAGE_NAME, e.getMessage());
}
}