feat(protocol): add shared MID exchange registry - #57
Open
atc722 wants to merge 1 commit into
Open
Conversation
This file contains hidden or 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
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.
Context
Thank you for clarifying the ownership and landing sequence in #56.
This is the standalone shared MID-registry slice agreed there. Both #36 and
#54 need to correlate tokenless CoAP control messages with pending requests.
Landing that lifecycle once avoids carrying separate read-side and write-side
MID registries before those PRs are rebased.
What changes
preserving the existing token-indexed response dispatch.
that is still owned by a live exchange.
MID-correlated control message.
retransmitting that MID and waits for the token-correlated separate response
under the existing overall deadline.
container, so clearing a stale Block2 response cannot discard the ACK state.
SessionError.or RST.
SessionClosedErrorfromboth
close()and reader-thread teardown.already passed its entry check from registering after the drain.
Scope
This PR intentionally does not include:
changes; or
The existing Block2 duplicate, SZX, ETag, and accumulation semantics remain
unchanged. Moving acknowledgement state outside the response container also
addresses #36 review point 2 without bringing the rest of that PR into this
change.
Validation
python -m pytest -q: 320 passed in a clean Python 3.13 environmentgit diff --checkAfter this lands, I will rebase #36 and address its remaining review points,
then let @mbillow know that #54 is ready to rebase.
Refs #56