public override void HandleMessage(INetPacketStream packet) { var responseJson = packet.Read <string>(); var response = InkAction.Deserialize(responseJson); if (response != null && response.InkActionType == InkAction.InkActionTypes.Ready) { // ready! } }
public override async Task Draw(EInkCanvas canvas) { var packet = new NetPacket(); var inkAction = new InkAction(canvas); // draws packet.Write(inkAction.Serialize()); _client.Send(packet); await Task.Yield(); }
public override void HandleMessage(INetPacketStream packet) { var jsonValue = packet.Read <string>(); try { var value = InkAction.Deserialize(jsonValue); Console.WriteLine($"[{this.Id}] Processing action " + value.InkActionType.ToString()); HandleMessageAsync(value).Wait(); } catch (Exception ex) { Console.WriteLine("Deserialization exception: " + ex.ToString()); } }
private async Task HandleMessageAsync(InkAction value) { try { switch (value.InkActionType) { case InkAction.InkActionTypes.Reset: await InkHostServer.ActiveDevice.Reset(); break; case InkAction.InkActionTypes.Init: await InkHostServer.ActiveDevice.Init(); break; case InkAction.InkActionTypes.Draw: var canvas = EInkCanvas.ImportJson(value.CanvasJson); Console.WriteLine($"[{this.Id}] Drawing {canvas.AvailableInkColors.Length} colors to {canvas.Width}x{canvas.Height} canvas."); Console.WriteLine($"... {canvas.Width}x{canvas.Height}"); Console.WriteLine($"... Colors: {string.Join(", ", canvas.AvailableInkColors.Select(c => c.Name))}"); await InkHostServer.ActiveDevice.Draw(canvas); break; case InkAction.InkActionTypes.Clear: await InkHostServer.ActiveDevice.Clear(); break; } Console.WriteLine($"[{this.Id}] Action complete."); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }