public async Task <ReadPacketState> ReadPacketAsync()
        {
            try
            {
                if (_transport == null)
                {
                    int magic = await NetworkUtils.ReadNetworkOrderInt32Async(_xor_stream);

                    switch (magic)
                    {
                    case NetworkUtils.BINARY_MAGIC:
                        _transport = new BinaryNetworkTransport(_xor_stream, _buffered);
                        break;

                    case NetworkUtils.TEXT_MAGIC:
                        _transport = new TextNetworkTransport(_xor_stream);
                        break;

                    default:
                        throw new ArgumentException(String.Format("Invalid magic received {0:X}", magic));
                    }
                }

                return(new ReadPacketState(this, await _transport.ReadPacketAsync(), null));
            }
            catch (Exception ex)
            {
                return(new ReadPacketState(this, null, ex));
            }
        }
Exemplo n.º 2
0
 public override async Task <ProtocolPacket> ReadPacket()
 {
     return(await _transport.ReadPacketAsync());
 }