예제 #1
0
        public RollbackableStream(Stream tcpStream, TcpSettings tcpSettings)
        {
            Validation.RequireValidTcpSettings(tcpSettings);

            _original = tcpStream
                        ?? throw new ArgumentNullException(nameof(tcpStream));

            // Allocate read-ahead buffer:
            // It should be large enough, at least equal to the TCP read buffer,
            // otherwise rollback calls will fail.
            _readAheadBuffer = new BinaryStack(tcpSettings.ReadWriteBufferSize);
        }
 public HttpChunkedResponseEncoder(
     Stream target,
     TcpSettings tcpSettings,
     HttpSettings httpSettings)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     Validation.RequireValidHttpSettings(httpSettings);
     _buffer       = new MemoryStream(httpSettings.MaxBodyChunkSize);
     _maxChunkSize = httpSettings.MaxBodyChunkSize;
     _target       = target ?? throw new ArgumentNullException(nameof(target));
     _tcpSettings  = tcpSettings;
 }
예제 #3
0
 public HttpRequest(
     Stream requestStream,
     TcpSettings tcpSettings,
     IHttpRequestBodyFactory requestBodyFactory)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     _requestStream = new RollbackableStream(
         requestStream ?? throw new ArgumentNullException(nameof(requestStream)),
         tcpSettings);
     _tcpSettings        = tcpSettings;
     _requestBodyFactory = requestBodyFactory
                           ?? throw new ArgumentNullException(nameof(requestBodyFactory));
 }
예제 #4
0
 public HttpChunkedRequestBody(
     RollbackableStream requestStream,
     HttpRequestHeader header,
     TcpSettings tcpSettings)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     _requestStream = requestStream
                      ?? throw new ArgumentNullException(nameof(requestStream));
     _header = header
               ?? throw new ArgumentNullException(nameof(header));
     _readBuffer    = new byte[tcpSettings.ReadWriteBufferSize];
     _trailerReader = new HttpChunkedTrailerReader(
         _requestStream,
         tcpSettings.ReadWriteBufferSize);
 }
예제 #5
0
 public HttpResponse(
     IHttpRequest request,
     Stream rawResponseStream,
     TcpSettings tcpSettings,
     HttpSettings httpSettings)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     _request           = request;
     _rawResponseStream = rawResponseStream
                          ?? throw new ArgumentNullException(nameof(rawResponseStream));
     _tcpSettings       = tcpSettings;
     _header            = new HttpResponseHeader();
     _header.StatusCode = 200;
     _body = new HttpResponseBody(_rawResponseStream,
                                  tcpSettings, httpSettings, this);
 }
예제 #6
0
 public TcpClientHandler(
     ISslService sslService,
     ITcpSessionFactory tcpSessionFactory,
     IWatchDog tcpWatchDog,
     TcpSettings tcpSettings)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     _sslService = sslService
                   ?? throw new ArgumentNullException(nameof(sslService));
     _tcpSessionFactory = tcpSessionFactory
                          ?? throw new ArgumentNullException(nameof(tcpSessionFactory));
     _tcpWatchDog = tcpWatchDog
                    ?? throw new ArgumentNullException(nameof(tcpWatchDog));
     _tcpWatchDog.MaxSessionDuration = tcpSettings.IdleTimeout;
     _tcpSettings = tcpSettings;
 }
예제 #7
0
 internal HttpResponseBody(
     Stream rawResponseStream,
     TcpSettings tcpSettings,
     HttpSettings httpSettings,
     IHttpResponse response,
     ILogger logger)
 {
     Validation.RequireValidHttpSettings(httpSettings);
     Validation.RequireValidTcpSettings(tcpSettings);
     _tcpSettings = tcpSettings;
     _logger      = logger
                    ?? throw new ArgumentNullException(nameof(logger));
     _rawResponseStream = rawResponseStream
                          ?? throw new ArgumentNullException(nameof(rawResponseStream));
     _response = response
                 ?? throw new ArgumentNullException(nameof(response));
     _httpSettings    = httpSettings;
     _buffer          = new MemoryStream(httpSettings.MaxBodyChunkSize);
     _buffer.Position = 0;
 }
예제 #8
0
 public HttpSession(
     Stream connection,
     TcpSettings tcpSettings,
     IContent content,
     IContentSettingsReadOnly contentSettings,
     IHttpKeepAliveService keepAliveService,
     IHttpRequestInternal request,
     IHttpResponseInternal response)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     _tcpSettings = tcpSettings;
     _connection  = connection
                    ?? throw new ArgumentNullException(nameof(connection));
     _content = content
                ?? throw new ArgumentNullException(nameof(content));
     _contentSettings = contentSettings
                        ?? throw new ArgumentNullException(nameof(contentSettings));
     _keepAliveService = keepAliveService
                         ?? throw new ArgumentNullException(nameof(keepAliveService));
     _request = request
                ?? throw new ArgumentNullException(nameof(request));
     _response = response
                 ?? throw new ArgumentNullException(nameof(response));
 }
예제 #9
0
 public void SetTcpSettings(TcpSettings tcpSettings)
 {
     Validation.RequireValidTcpSettings(tcpSettings);
     _tcpSettings = tcpSettings;
 }