| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 
							- using System;
 
- using System.IO;
 
- using InABox.Core;
 
- namespace InABox.Rpc
 
- {
 
-     [Serializable]
 
-     public partial class RpcMessage : ISerializeBinary, ICoreFormattable
 
-     {
 
-         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) : 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;
 
-         }
 
-         
 
-         public void Write(BinaryWriter writer)
 
-         {
 
-             writer.Write(Id);
 
-             writer.Write(Command);
 
-             writer.Write(Payload.Length);
 
-             writer.Write(Payload);
 
-             writer.Write((Int32)Error);
 
-         }
 
-         public void Read(BinaryReader reader)
 
-         {
 
-             Id = reader.ReadGuid();
 
-             Command = reader.ReadString();
 
-             var _length = reader.ReadInt32();
 
-             Payload = reader.ReadBytes(_length);
 
-             Error = (RpcError)reader.ReadInt32();
 
-         }
 
-     }
 
- }
 
 
  |