protected PipeWebSocketTransport( System.Net.WebSockets.WebSocket webSocket, IEnvelopeSerializer envelopeSerializer, ITraceWriter traceWriter = null, WebSocketMessageType webSocketMessageType = WebSocketMessageType.Text, bool closeGracefully = true, int pauseWriterThreshold = EnvelopePipe.DEFAULT_PAUSE_WRITER_THRESHOLD, MemoryPool <byte> memoryPool = null) { WebSocket = webSocket ?? throw new ArgumentNullException(nameof(webSocket)); _webSocketMessageType = webSocketMessageType; _closeGracefully = closeGracefully; _closeSemaphore = new SemaphoreSlim(1); _envelopePipe = new EnvelopePipe(ReceiveFromPipeAsync, SendToPipeAsync, envelopeSerializer, traceWriter, pauseWriterThreshold, memoryPool); _closeStatus = WebSocketCloseStatus.NormalClosure; _closeStatusDescription = string.Empty; }
/// <summary> /// Initializes a new instance of the <see cref="TcpTransport"/> class. /// </summary> /// <param name="tcpClient">The TCP client.</param> /// <param name="envelopeSerializer">The envelope serializer.</param> /// <param name="serverCertificate">The server certificate.</param> /// <param name="clientCertificate">The client certificate.</param> /// <param name="hostName">Name of the host.</param> /// <param name="pauseWriterThreshold">Number of buffered bytes in the pipe which can lead the write task to pause.</param> /// <param name="memoryPool">The memory pool instance which allow the pipe to reuse buffers.</param> /// <param name="traceWriter">The trace writer.</param> /// <param name="serverCertificateValidationCallback">The server certificate validation callback.</param> /// <param name="clientCertificateValidationCallback">The client certificate validation callback.</param> /// <exception cref="System.ArgumentNullException"> /// tcpClient /// or /// envelopeSerializer /// </exception> private PipeTcpTransport( ITcpClient tcpClient, IEnvelopeSerializer envelopeSerializer, X509Certificate2 serverCertificate, X509Certificate2 clientCertificate, string hostName, int pauseWriterThreshold, MemoryPool <byte> memoryPool, ITraceWriter traceWriter, RemoteCertificateValidationCallback serverCertificateValidationCallback, RemoteCertificateValidationCallback clientCertificateValidationCallback) { _tcpClient = tcpClient ?? throw new ArgumentNullException(nameof(tcpClient)); _serverCertificate = serverCertificate; _clientCertificate = clientCertificate; _hostName = hostName; _serverCertificateValidationCallback = serverCertificateValidationCallback ?? ValidateServerCertificate; _clientCertificateValidationCallback = clientCertificateValidationCallback ?? ValidateClientCertificate; _envelopePipe = new EnvelopePipe(ReceiveFromPipeAsync, SendToPipeAsync, envelopeSerializer, traceWriter, pauseWriterThreshold, memoryPool); _readSynchronizationQueue = new BufferBlock <object>(); _optionsSemaphore = new SemaphoreSlim(1); }