Example #1
0
        private async Task ReadLoopAsync(int bufferSize)
        {
            try
            {
                var trafficReader = new TcpDataReader(bufferSize);

                var trafficWriterTask = PublishDataToTrafficReaderAsync(trafficReader);


                while (TcpClient.Connected)
                {
                    try
                    {
                        var incomingDataPacket =
                            await TcpSerializer.DeserializeAsync(trafficReader, _cancellationToken.Token);
                        await HandleIncomingDataAsync(incomingDataPacket);
                    }
                    catch (Exception e)
                    {
                        Log.InvokeExceptionLog(this, e, false);
                        Log.InvokeInfoLog(this, "Exception on Deserializing or Handling Data in TCP Context Level. Disconnecting");
                        break;
                    }
                }

                await trafficWriterTask;
            }
            catch (Exception e)
            {
                Log.InvokeExceptionLog(this, e, true);
            }
            finally
            {
                Log.InvokeInfoLog(this, "Disconnected from ReadLoopAsync");
                Disconnect();
            }
        }