示例#1
0
        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!
            }
        }
示例#2
0
        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();
        }
示例#3
0
        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());
            }
        }
示例#4
0
        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());
            }
        }