RPCMessage.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using InABox.Core;
  2. namespace InABox.IPC
  3. {
  4. [Serializable]
  5. public class RPCMessage : ISerializeBinary
  6. {
  7. public Guid ID { get; set; }
  8. public String Command { get; set; }
  9. public string Payload { get; set; }
  10. public RPCError Error { get; set; }
  11. public RPCMessage()
  12. {
  13. ID = Guid.NewGuid();
  14. Command = "";
  15. Payload = "";
  16. Error = RPCError.NONE;
  17. }
  18. public RPCMessage(Guid id, String command, String payload, RPCError error = RPCError.NONE)
  19. {
  20. ID = id;
  21. Command = command;
  22. Payload = payload;
  23. Error = error;
  24. }
  25. public void SerializeBinary(CoreBinaryWriter writer)
  26. {
  27. writer.Write(ID);
  28. writer.Write(Command);
  29. writer.Write(Payload);
  30. writer.Write(Error.ToString());
  31. }
  32. public void DeserializeBinary(CoreBinaryReader reader)
  33. {
  34. ID = reader.ReadGuid();
  35. Command = reader.ReadString();
  36. Payload = reader.ReadString();
  37. if (Enum.TryParse<RPCError>(reader.ReadString(), out var error))
  38. Error = error;
  39. }
  40. }
  41. }