Skip to content
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

Multiple improvements to the exchange and transport layers #147

Merged
merged 22 commits into from
Apr 24, 2024

Conversation

ivmarkov
Copy link
Contributor

@kedars @andreilitvin

This is a very large PR indeed so I would assume it will take a while to comprehend.

Some of the design decisions in the PR might be subject to debate, or at the very least - they might need explanations, clarifications and feedback.

Therefore, I've created an informal RFC of sorts which I uploaded to HackMD: https://hackmd.io/@ivmarkov/SyHoBnpA6
(It is also checked-in in GitHub as part of this PR)

Please look at the doc, as it tries to summarize the main deficiencies of the existing transport layer that this PR is addressing, as well as how it tries to address those. Commenting in the doc should be enabled as long as you sign in to HackMD. Let me know if commenting does not work for you.

(BTW: I'm also fine with chopping the PR into smaller chunks, as long as we find a way to do it, as the changes are highly inter-related.)

@ivmarkov ivmarkov requested review from kedars and andy31415 March 24, 2024 14:25
@ivmarkov ivmarkov requested a review from andy31415 April 15, 2024 06:08
ivmarkov added 21 commits April 24, 2024 05:20
Bugfixing in subscriptions

Mdns shares buffers with the main transport

Complete subscription logic (incl change notification)

Bugfixing

Bugfixing

Best effort for Google controller subscriptions to stay alive

Re-publish the mDNS broadcast when an entry is removed too

Google controller expects revoke commissioning to be supported

Eagerly close subscriptions that don't report anything

Cleanup in transport mgr

Restore the correct subscription id

Simplify transport mgr

Tests typecheck

Minor renames

Docu

Docu

Docu, clippy

fix the tests

Handle session close

Fix buffer sizes for subscriptions

Report responer memory

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (WIP)

Buffers for IM; more flexible Exchange; renames in Exchange

Address several bugs

Matter header for Notification

Address several bugs

Unit tests work

Address several bugs

Small updates to the RFC

Small updates to the RFC

Make IM compatible with unit tests

Enable operation over reliable protocols

Support for large buffers (TCP)

Unify the synchronization primitives

Try to reduce a bit the consumed memory

Reduce the change delta

Update RFC

Extra comments

Fix the build

WIP - RFC

Address several bugs

Fix lifetime issues with subscriptions notifications

Updates to the RFC
@ivmarkov ivmarkov merged commit 7d128ac into project-chip:main Apr 24, 2024
12 checks passed
ivmarkov added a commit to ivmarkov/rs-matter that referenced this pull request May 13, 2024
…hip#147)

* Multiple improvements to the exchange and transport layers

Bugfixing in subscriptions

Mdns shares buffers with the main transport

Complete subscription logic (incl change notification)

Bugfixing

Bugfixing

Best effort for Google controller subscriptions to stay alive

Re-publish the mDNS broadcast when an entry is removed too

Google controller expects revoke commissioning to be supported

Eagerly close subscriptions that don't report anything

Cleanup in transport mgr

Restore the correct subscription id

Simplify transport mgr

Tests typecheck

Minor renames

Docu

Docu

Docu, clippy

fix the tests

Handle session close

Fix buffer sizes for subscriptions

Report responer memory

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (work in progress)

RFC (WIP)

Buffers for IM; more flexible Exchange; renames in Exchange

Address several bugs

Matter header for Notification

Address several bugs

Unit tests work

Address several bugs

Small updates to the RFC

Small updates to the RFC

Make IM compatible with unit tests

Enable operation over reliable protocols

Support for large buffers (TCP)

Unify the synchronization primitives

Try to reduce a bit the consumed memory

Reduce the change delta

Update RFC

Extra comments

Fix the build

WIP - RFC

Address several bugs

Fix lifetime issues with subscriptions notifications

Updates to the RFC

* Document the handler API

* Clarify a commented out line

* Document the await optimization

* Remove a level of indentation

* Leave a TODO that trhe subscription notification logic is incomplete

* Add a warning for an unanticipated opcode

* Skip the doctest

* Change semantics the of recv and recv_fetch to return the last fetched message, if there is any

* Address feedback from code review

* std::net not necessary as it is now just re-exporting core::net

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Address feedback from code review

* Incorporate changes to the RFC from HackMD
@ivmarkov ivmarkov deleted the next branch May 14, 2024 04:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants