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;
        }
示例#2
0
 /// <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);
 }