kevinherron
09/15/2023, 1:39 AM// Length placeholder...
int lengthStartIndex = buffer.writerIndex();
buffer.writeShort(0);
buffer.writeInt((int) packet.getSessionHandle());
buffer.writeInt(packet.getStatus().getStatus());
buffer.writeLong(packet.getSenderContext());
buffer.writeInt(0);
int dataStartIndex = buffer.writerIndex();
if (packet.getCommand() != null) {
encodeCommand(packet.getCommand(), buffer);
}
// Go back and update the length.
int bytesWritten = buffer.writerIndex() - dataStartIndex;
buffer.markWriterIndex();
buffer.writerIndex(lengthStartIndex);
buffer.writeShort(bytesWritten);
buffer.resetWriterIndex();
kevinherron
09/15/2023, 1:41 AMFilipp Zhinkin
09/15/2023, 8:00 AMkevinherron
09/15/2023, 1:11 PMobject Serializer {
fun encode(command: Command, sink: Sink) { TODO() }
fun decode(source: Source): Command { TODO() }
}
kevinherron
09/15/2023, 1:17 PMBuffer().apply {
encodeCommand(CommandCode.NOP, this)
sink.writeLong(size) // encoded command length
sink.write(this, size) // encoded command data
}
kevinherron
09/15/2023, 1:19 PMEdoardo Luppi
09/22/2023, 10:08 AMval serializableBuffer = Buffer()
val outputStream = BufferOutputStream(serializableBuffer, transcoder)
serializable.serialize(outputStream)
val packet = Buffer()
if (serializable.autosize()) {
packet.writeInt(serializableBuffer.size.toInt())
}
packet.transferFrom(serializableBuffer)