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); }
internal void OnConnectionShutdown(HttpClientConnection sender, int errorCode) { ConnectionShutdown?.Invoke(sender, new ConnectionShutdownEventArgs(errorCode)); }
internal void OnConnectionSetup(HttpClientConnection sender, int errorCode) { ConnectionSetup?.Invoke(sender, new ConnectionSetupEventArgs(errorCode)); }
public HttpStream(HttpClientConnection connection) { this.Connection = connection; }