using Command; using InABox.Core; using InABox.Rpc; namespace Receiver; public class MainWindowViewModel { public bool LightOn { get; set; } public string LightVisibility { get; set; } public string LightHex { get; set; } RpcServerPipeTransport Transport { get; set; } public MainWindowViewModel() { Transport = new RpcServerPipeTransport("SwitchTransport"); Transport.AddHandler(new SwitchHandler(this)); Transport.OnOpen += TransportOpen; Transport.OnClose += TransportClose; Transport.OnException += TransportException; Transport.BeforeMessage += TransportBeforeMessage; Transport.AfterMessage += TransportAfterMessage; Transport.Start(); LightOn = true; LightHex = "#0000FF"; if (LightOn == false) LightVisibility = "Hidden"; else LightVisibility = "Visible"; } private void TransportAfterMessage(IRpcTransport transport, RpcTransportMessageArgs e) { } private void TransportBeforeMessage(IRpcTransport transport, RpcTransportMessageArgs e) { } private void TransportException(IRpcTransport transport, RpcTransportExceptionArgs e) { } private void TransportClose(IRpcTransport transport, RpcTransportCloseArgs e) { } private void TransportOpen(IRpcTransport transport, RpcTransportOpenArgs e) { } } public class SwitchHandler : RpcCommandHandler { public SwitchHandler(MainWindowViewModel sender) : base(sender) { } protected override SwitchResult Execute(IRpcSession session, SwitchParameters parameters, Logger logger) { Sender.LightOn = parameters.Active; var result = new SwitchResult(); result.LightOn = parameters.Active; return result; } }