public Http3RequestStream(Http3InMemory testBase, Http3Connection connection, TestStreamContext testStreamContext, Http3RequestHeaderHandler headerHandler) : base(testStreamContext) { TestBase = testBase; Connection = connection; _streamId = testStreamContext.StreamId; _testStreamContext = testStreamContext; this._headerHandler = headerHandler; }
internal ValueTask <Http3RequestStream> CreateRequestStream(Http3RequestHeaderHandler headerHandler = null) { if (!_streamContextPool.TryDequeue(out var testStreamContext)) { testStreamContext = new TestStreamContext(canRead: true, canWrite: true, this); } testStreamContext.Initialize(GetStreamId(0x00)); var stream = new Http3RequestStream(this, Connection, testStreamContext, headerHandler ?? new Http3RequestHeaderHandler()); _runningStreams[stream.StreamId] = stream; MultiplexedConnectionContext.ToServerAcceptQueue.Writer.TryWrite(stream.StreamContext); return(new ValueTask <Http3RequestStream>(stream)); }
private Http3RequestStream CreateRequestStreamCore(Http3RequestHeaderHandler headerHandler) { var requestStreamId = GetStreamId(0x00); if (!_streamContextPool.TryDequeue(out var testStreamContext)) { testStreamContext = new TestStreamContext(canRead: true, canWrite: true, this); } else { Logger.LogDebug($"Reusing context for request stream {requestStreamId}."); } testStreamContext.Initialize(requestStreamId); return(new Http3RequestStream(this, Connection, testStreamContext, headerHandler ?? new Http3RequestHeaderHandler())); }
public virtual void GlobalSetup() { _headerHandler = new Http3RequestHeaderHandler(); _requestHeadersEnumerator = new Http3HeadersEnumerator(); _httpFrame = new Http3FrameWithPayload(); _httpRequestHeaders = new HttpRequestHeaders(); _httpRequestHeaders[InternalHeaderNames.Method] = new StringValues("GET"); _httpRequestHeaders[InternalHeaderNames.Path] = new StringValues("/"); _httpRequestHeaders[InternalHeaderNames.Scheme] = new StringValues("http"); _httpRequestHeaders[InternalHeaderNames.Authority] = new StringValues("localhost:80"); var serviceContext = TestContextFactory.CreateServiceContext( serverOptions: new KestrelServerOptions(), dateHeaderValueManager: new DateHeaderValueManager(), systemClock: new MockSystemClock()); serviceContext.DateHeaderValueManager.OnHeartbeat(default);
internal async ValueTask <Http3RequestStream> CreateRequestStream(Http3HeadersEnumerator headers, Http3RequestHeaderHandler headerHandler = null, bool endStream = false, TaskCompletionSource tsc = null) { var stream = CreateRequestStreamCore(headerHandler); if (tsc is not null) { stream.StartStreamDisposeTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); } await stream.SendHeadersAsync(headers, endStream); _runningStreams[stream.StreamId] = stream; MultiplexedConnectionContext.ToServerAcceptQueue.Writer.TryWrite(stream.StreamContext); return(stream); }