-
-
Notifications
You must be signed in to change notification settings - Fork 394
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
Proto-layer endpoint/connection communication #1726
base: main
Are you sure you want to change the base?
Conversation
This was only needed to determine the base time for the next CID retirement timer, for which the marginal delay caused by fetching a new `Instant::now()` on demand is harmless.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mind writing a more detailed description of how this PR makes this more modular? I skimmed the commits but the new structure (or, how the structure changes) is still a bit hazy.
Groundwork for replacing generic message-passing with lighter event-representation-aware communication strategies.
Groundwork for direct connection -> driver wake-ups, and yields one less piece of state inside a monolithic mutex.
Groundwork for replacing generic message-passing with lighter event-representation-aware communication strategies.
9f6ece6
to
3e7c8fd
Compare
The main effect of this PR is to replace the requirement that quinn-proto users pass endpoint and connection events around themselves with the requirement that users trigger wakeups when events have occurred, with quinn-proto managing the actual message-passing internally. This is not necessarily more modular, but could be useful because it allows future work to replace naive message-passing with more specialized structures as in #1650. A more specialized communications structure could be lighter: an It's not obvious that the benefit here is significant as it stands. My real goal is to work towards fine-grained interior mutability in This is also a step towards resolving #1131, but the real substance of the hazard described there is in handling datagrams, which is unchanged, and could be addressed without this PR. This effort was ultimately exploratory, and I'm open to shelving it until it's more strongly motivated. |
Gives us freedom to adopt more specialized communication strategies (e.g. atomics or fine-grained locks) between endpoints and connections. These will need to be implemented at the proto layer, because optimal strategies will be sensitive to the specific data proto-private being communicated, e.g.
NeedIdentifiers
as an atomic counter.Simplified take on #1650, pushing cheeky data structures to future work.