public MultiplexingConnection(Stream stream, EndPoint localEndPoint, EndPoint remoteEndPoint, ILogger <MultiplexingConnection> logger) { _stream = stream ?? throw new ArgumentNullException(nameof(stream)); LocalEndPoint = localEndPoint ?? throw new ArgumentNullException(nameof(localEndPoint)); EndPoint = remoteEndPoint ?? throw new ArgumentNullException(nameof(remoteEndPoint)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); //allocate a buffer _receiveBuffer = new byte[1024 * 16]; _receiveBufferLength = 0; ConnectionId = ConnectionIdProvider.GetNextId(); Task.Run(ReceiveResponsesAsync); }
public MultiplexingConnection(Stream stream, EndPoint localEndPoint, EndPoint remoteEndPoint, ILogger <MultiplexingConnection> logger) { _stream = stream ?? throw new ArgumentNullException(nameof(stream)); LocalEndPoint = localEndPoint ?? throw new ArgumentNullException(nameof(localEndPoint)); EndPoint = remoteEndPoint ?? throw new ArgumentNullException(nameof(remoteEndPoint)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); ConnectionId = ConnectionIdProvider.GetNextId(); _endPointString = EndPoint.ToString() ?? DiagnosticsReportProvider.UnknownEndpointValue; _localEndPointString = LocalEndPoint.ToString() ?? DiagnosticsReportProvider.UnknownEndpointValue; _connectionIdString = ConnectionId.ToString(CultureInfo.InvariantCulture); _stopwatch = new Stopwatch(); _stopwatch.Start(); // We don't need the execution context to flow to the receive loop using (ExecutionContext.SuppressFlow()) { Task.Run(ReceiveResponsesAsync); } }