12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System;
- using InABox.Core;
- namespace InABox.Rpc
- {
- [Serializable]
- public 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}]";
- public RpcMessage()
- {
- Id = Guid.NewGuid();
- Command = "";
- Payload = Array.Empty<byte>();
- Error = RpcError.NONE;
- }
- public RpcMessage(Guid id, string command, byte[] payload)
- {
- 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;
- }
- }
- }
|