Less expensive stream multiplexing. To implement direct stream multiplexing (with an incomplete public API) to break up delivery and allow testing.
Modifications:
Factor out common inbound stream multiplexer functionality from HTTP2StreamMultiplexer into CommonInboundStreamMultiplexer (first commit).
Direct stream multiplexing is implemented as InlineStreamMultiplexer. It implements both the HTTP2InboundStreamMultiplexer and HTTP2OutboundStreamMultiplexer protocols.
We expose NIOHTTP2Handler.StreamMultiplexer as a public view over the new multiplexer to allow stream creation.
Adds various propagate... functions to relay signals such as read complete to the child channels held by the inline stream multiplexer.
Adds a stub for HTTP2StreamDelegate which will be completed in an upcoming PR. It will be responsible for surfacing stream open/close information.
Adds conveniences to NIOHTTP2Handler for setting up a handler using the inline multiplexer
Duplicate existing tests and modify to use the inline stream multiplexer where appropriate. SimpleClientServerFramePayloadStreamTests.swift and HTTP2FramePayloadStreamMultiplexerTests.swift were copied and modified
Result:
Default behavior should be unchanged at this time.
Motivation:
Less expensive stream multiplexing. To implement direct stream multiplexing (with an incomplete public API) to break up delivery and allow testing.
Modifications:
HTTP2StreamMultiplexer
intoCommonInboundStreamMultiplexer
(first commit).InlineStreamMultiplexer
. It implements both theHTTP2InboundStreamMultiplexer
andHTTP2OutboundStreamMultiplexer
protocols.NIOHTTP2Handler.StreamMultiplexer
as apublic
view over the new multiplexer to allow stream creation.propagate...
functions to relay signals such as read complete to the child channels held by the inline stream multiplexer.HTTP2StreamDelegate
which will be completed in an upcoming PR. It will be responsible for surfacing stream open/close information.NIOHTTP2Handler
for setting up a handler using the inline multiplexerSimpleClientServerFramePayloadStreamTests.swift
andHTTP2FramePayloadStreamMultiplexerTests.swift
were copied and modifiedResult:
Default behavior should be unchanged at this time.