-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor H2 #286
Merged
Merged
Refactor H2 #286
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mtrudel
force-pushed
the
refactor_http2
branch
6 times, most recently
from
January 8, 2024 20:58
d28019a
to
186c94b
Compare
mtrudel
force-pushed
the
refactor_http2
branch
from
January 13, 2024 19:49
6ba885f
to
d27d690
Compare
Merged
mtrudel
force-pushed
the
refactor_http2
branch
from
January 15, 2024 22:09
d27d690
to
aab9a79
Compare
mtrudel
force-pushed
the
refactor_http2
branch
from
January 16, 2024 15:53
aab9a79
to
78fc8bf
Compare
mtrudel
force-pushed
the
refactor_http2
branch
3 times, most recently
from
January 23, 2024 01:41
6c8196b
to
30537fc
Compare
mtrudel
added
the
benchmark
Assign this to a PR to have the benchmark CI suite run
label
Jan 23, 2024
mtrudel
force-pushed
the
refactor_http2
branch
4 times, most recently
from
January 26, 2024 16:45
f83883f
to
67e3b34
Compare
This is ready for review; short of huge issues raised on review, I'm planning to merge this on or near 31 Jan so I can get moving on subsequent workups. This is a big workup, and is likely best considered as a complete rewrite rather than piecemeal changes. The ONLY scope here is HTTP/2; nothing else has been changed here. A provisional CHANGELOG:
|
mtrudel
force-pushed
the
refactor_http2
branch
4 times, most recently
from
January 27, 2024 16:00
3b34925
to
8a5ab3f
Compare
mtrudel
force-pushed
the
refactor_http2
branch
from
February 3, 2024 16:45
bf98749
to
f8aa819
Compare
mtrudel
force-pushed
the
refactor_http2
branch
2 times, most recently
from
February 8, 2024 19:21
59f5390
to
589f7a0
Compare
…o take http1 Define HTTPTransport behaviour to model the two transport implementations
mtrudel
force-pushed
the
refactor_http2
branch
from
February 9, 2024 01:32
589f7a0
to
f2d2cc7
Compare
Merged
mtrudel
added a commit
that referenced
this pull request
Feb 16, 2024
mtrudel
added a commit
that referenced
this pull request
Feb 16, 2024
mtrudel
added a commit
that referenced
this pull request
Mar 14, 2024
mtrudel
added a commit
that referenced
this pull request
Mar 14, 2024
mtrudel
added a commit
that referenced
this pull request
Mar 14, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a long-term working branch to handle a fairly major refactor of the H2 code. Goals:
Move all stream-specific logic into the stream process itself. All stream state transitions, error handling, and request validation should take place on the stream process so as to block the connection process as little as possible
Reduce the scope of the connection process to encompass only connection-level concerns (pings, continuation frame validation, etc), sending and receiving bare frames the stream processes, and managing a list of the processes that are handling active streams on the connection. It essentially becomes a switchboard with the client on the one side and the stream processes on the other
Split the stream into transport concerns and HTTP semantic concerns. Put the transport concerns (roughly, RFC9113 concerns) into
Bandit.HTTP2.Stream
, and HTTP semantic concerns (roughly, RFC9110 concerns) intoBandit.HTTP2.Adapter
. This provides a foundation for two workups that will come in future PRs:Bandit.HTTP1.Adapter
). At this point, the two adapters should be identical (or at least close to it), and we can factor them together into a single implementation. This will prevent having to implement all HTTP semantic concerns separately in both stacks.