1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- using System;
- using InABox.Core;
- using MessagePack;
- using MemoryPack;
- namespace InABox.Rpc
- {
- [Serializable]
- [MessagePackObject(keyAsPropertyName: true)]
- [MemoryPackable]
- public partial class RpcMessage : ISerializeBinary
- {
- public Guid Id { get; set; }
- public String Command { get; set; }
- public byte[] Payload { get; set; }
- public RpcError Error { get; set; }
- public override string ToString() => $"{Command} [{Error}]";
- [MemoryPackConstructor]
- public RpcMessage()
- {
- Id = Guid.NewGuid();
- Command = "";
- Payload = Array.Empty<byte>();
- Error = RpcError.NONE;
- }
-
-
- public RpcMessage(Guid id, string command, byte[] payload) : this()
- {
- Id = id;
- Command = command;
- Payload = payload;
- Error = RpcError.NONE;
- }
- public void SerializeBinary(CoreBinaryWriter writer)
- {
- writer.Write(Id);
- writer.Write(Command);
- writer.WriteBinaryValue(Payload);
- writer.Write(Error.ToString());
- }
- public void DeserializeBinary(CoreBinaryReader reader)
- {
- Id = reader.ReadGuid();
- Command = reader.ReadString();
- Payload = reader.ReadBinaryValue<byte[]>();
- if (Enum.TryParse<RpcError>(reader.ReadString(), out var error))
- Error = error;
- }
- }
- }
|