Esempio n. 1
0
        internal HttpClientStream(HttpClientConnection connection, HttpRequest request, HttpResponseStreamHandler responseHandler)
            : base(connection)
        {
            responseHandler.Validate();

            this.request           = request;
            this.requestBodyStream = new CrtStreamWrapper(request.BodyStream);

            this.responseHandler = responseHandler;

            // Wrap the native callbacks to bind this stream to them as the first argument
            onIncomingHeaders = (responseCode, block, headers, headerCount) =>
            {
                if (ResponseStatusCode == 0)
                {
                    ResponseStatusCode = responseCode;
                }
                responseHandler.OnIncomingHeaders(this, block, headers);
            };

            onIncomingHeaderBlockDone = (block) =>
            {
                responseHandler.OnIncomingHeadersDone(this, block);
            };

            onIncomingBody = (byte[] data, ulong size) =>
            {
                responseHandler.OnIncomingBody(this, data);
            };

            onStreamComplete = (errorCode) =>
            {
                responseHandler.OnStreamComplete(this, errorCode);
            };

            NativeHandle = API.make_new(
                connection.NativeHandle.DangerousGetHandle(),
                request.Method,
                request.Uri,
                request.Headers,
                (UInt32)(request.Headers?.Length ?? 0),
                requestBodyStream.Delegates,
                onIncomingHeaders,
                onIncomingHeaderBlockDone,
                onIncomingBody,
                onStreamComplete);
        }
Esempio n. 2
0
 internal void OnConnectionShutdown(HttpClientConnection sender, int errorCode)
 {
     ConnectionShutdown?.Invoke(sender, new ConnectionShutdownEventArgs(errorCode));
 }
Esempio n. 3
0
 internal void OnConnectionSetup(HttpClientConnection sender, int errorCode)
 {
     ConnectionSetup?.Invoke(sender, new ConnectionSetupEventArgs(errorCode));
 }
Esempio n. 4
0
 public HttpStream(HttpClientConnection connection)
 {
     this.Connection = connection;
 }