public Packet ReadPacket() { var buffer = packetsComposer.GetBuffer(); while (!isAlive && !IsAlive) { Connect().GetAwaiter().GetResult(); } var read = tcpClient.GetStream().Read(buffer, 0, buffer.Length); if (read == 0 && !IsAlive) { commandRaiser.RaiseCommand(new DisconnectPayload("Connection closed")).GetAwaiter().GetResult(); throw new OperationCanceledException(); } return(packetsComposer.GetPacket(buffer)); }
public async Task <IPacket> Receive() { var buffer = await packetsComposer.GetBuffer(); while (!isConnected && !IsConnected) { await Connect().ConfigureAwait(false); } await tcpClient.GetStream().ReadAsync(buffer, 0, buffer.Length).ConfigureAwait(false); return(await packetsComposer.GetPacket(buffer).ConfigureAwait(false)); }