/// <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; } } }