MainWindowViewModel.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. 
  2. using Command;
  3. using InABox.Core;
  4. using InABox.Rpc;
  5. namespace Receiver;
  6. public class MainWindowViewModel
  7. {
  8. public bool LightOn { get; set; }
  9. public string LightVisibility { get; set; }
  10. public string LightHex { get; set; }
  11. RpcServerPipeTransport Transport { get; set; }
  12. public MainWindowViewModel()
  13. {
  14. Transport = new RpcServerPipeTransport("SwitchTransport");
  15. Transport.AddHandler<MainWindowViewModel, SwitchCommand, SwitchParameters, SwitchResult>(new SwitchHandler(this));
  16. Transport.OnOpen += TransportOpen;
  17. Transport.OnClose += TransportClose;
  18. Transport.OnException += TransportException;
  19. Transport.BeforeMessage += TransportBeforeMessage;
  20. Transport.AfterMessage += TransportAfterMessage;
  21. Transport.Start();
  22. LightOn = true;
  23. LightHex = "#0000FF";
  24. if (LightOn == false) LightVisibility = "Hidden";
  25. else LightVisibility = "Visible";
  26. }
  27. private void TransportAfterMessage(IRpcTransport transport, RpcTransportMessageArgs e)
  28. {
  29. }
  30. private void TransportBeforeMessage(IRpcTransport transport, RpcTransportMessageArgs e)
  31. {
  32. }
  33. private void TransportException(IRpcTransport transport, RpcTransportExceptionArgs e)
  34. {
  35. }
  36. private void TransportClose(IRpcTransport transport, RpcTransportCloseArgs e)
  37. {
  38. }
  39. private void TransportOpen(IRpcTransport transport, RpcTransportOpenArgs e)
  40. {
  41. }
  42. }
  43. public class SwitchHandler : RpcCommandHandler<MainWindowViewModel, SwitchCommand, SwitchParameters, SwitchResult>
  44. {
  45. public SwitchHandler(MainWindowViewModel sender) : base(sender)
  46. {
  47. }
  48. protected override SwitchResult Execute(IRpcSession session, SwitchParameters parameters, Logger logger)
  49. {
  50. Sender.LightOn = parameters.Active;
  51. var result = new SwitchResult();
  52. result.LightOn = parameters.Active;
  53. return result;
  54. }
  55. }