public static Offset <ProtocolMessage> CreateProtocolMessage(FlatBufferBuilder builder, int id = 0, VectorOffset bodyOffset = default(VectorOffset)) { builder.StartObject(2); ProtocolMessage.AddBody(builder, bodyOffset); ProtocolMessage.AddId(builder, id); return(ProtocolMessage.EndProtocolMessage(builder)); }
static byte[] ToProtocolMessage(int id, byte[] body) { var fbb = new FlatBufferBuilder(body.Length + InitialBufferSize); var bodyPos = ProtocolMessage.CreateBodyVector(fbb, body); ProtocolMessage.StartProtocolMessage(fbb); ProtocolMessage.AddId(fbb, id); ProtocolMessage.AddBody(fbb, bodyPos); var msg = ProtocolMessage.EndProtocolMessage(fbb); ProtocolMessage.FinishProtocolMessageBuffer(fbb, msg); var buffer = fbb.DataBuffer; var bufferSize = buffer.Length - buffer.Position; var head = BitConverter.GetBytes(bufferSize); var bytes = new byte[head.Length + bufferSize]; Array.Copy(head, 0, bytes, 0, head.Length); Array.Copy(buffer.Data, buffer.Position, bytes, head.Length, bufferSize); return(bytes); }