I have a schema:
namespace ExampleApp.Assets.Communications;
table FlatServerToClientMessage {
messageid:string;
imagebytes:[ubyte];
}
root_type FlatServerToClientMessage;
and for clarity, here is ServerToClientMessage.cs
:
public class ServerToClientMessage : EventArgs
{
public Guid MessageId { get; set; }
public byte[] ImageBytes { get; set; }
}
I am trying to send, via TCP my ServerToClientMessage
. This works fine when I use JSON, so it is not a problem somewhere else.
I have a FlatSerialize
extension method which is supposed to serialize ServerToClientMessage
and return a byte array. However, my buffer.Data
is always empty... it is just full of zeros. My ServerToClientMessage
does have data - it does have both a MessageId and ImageBytes.
Here is the serialize extension:
public static byte[] FlatSerialize(this ServerToClientMessage message) {
var builder = new FlatBufferBuilder(1);
//Create an ID
var MessageId = builder.CreateString(message.MessageId.ToString());
//Start the vector...
//Loop over each byte and add it - my god, is there not a better way?
FlatServerToClientMessage.StartImagebytesVector(builder, message.ImageBytes.Length);
foreach(var imageByte in message.ImageBytes) {
builder.AddByte(imageByte);
}
var imagebytes = builder.EndVector();
//Start the FlatServerToClientMessage and add the MessageId and imagebytes
FlatServerToClientMessage.StartFlatServerToClientMessage(builder);
FlatServerToClientMessage.AddMessageid(builder, MessageId);
FlatServerToClientMessage.AddImagebytes(builder, imagebytes);
//End the FlatServerToClientMessage and finish it...
var flatMessage = FlatServerToClientMessage.EndFlatServerToClientMessage(builder);
FlatServerToClientMessage.FinishFlatServerToClientMessageBuffer(builder, flatMessage);
var buffer = builder.DataBuffer;
return buffer.Data;
}
Does anyone have any idea why my buffer.Data
is just filled with zeros?