Пример #1
0
        /// <summary>
        /// Ons the packet received.
        /// </summary>
        /// <param name="packet">Packet.</param>
        void OnPacketReceived(Packet packet)
        {
            switch (packet.Command)
            {
            case CommandType.NewBlockAvailable:
            {
                source.OnBlockCreated(this, packet.Get <int>());
                break;
            }

            case CommandType.QueryBlockHash:
            {
                var index = packet.Get <int>();
                var hash  = source.GetBlockHash(index).Result;
                dataStream.Send(Packet.Create(CommandType.QueryBlockHashResult, hash));
                break;
            }

            case CommandType.QueryBlocks:
            {
                var index  = packet.Get <int>();
                var blocks = source.GetBlocks(index).Result;
                dataStream.Send(Packet.Create(CommandType.QueryBlocksResult, blocks));
                break;
            }

            case CommandType.QueryBlockHashResult:
            {
                var hash = packet.Get <string>();
                blockHashSource.SetResult(hash);
                break;
            }

            case CommandType.QueryBlocksResult:
            {
                var blocks = packet.Get <List <Block <TData> > >();
                blocksSource.SetResult(blocks);
                break;
            }
            }
        }