-
Notifications
You must be signed in to change notification settings - Fork 1.1k
net: refactor to simplify lifetimes/generics. #3329
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
Merged
Merged
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
Dirbaio
added a commit
to smoltcp-rs/smoltcp
that referenced
this pull request
Sep 11, 2024
Instead of eagerly sending the join/leave packet when the user calls join/leave, we update internal state and send the packet when the interface is polled. Advantages: - If the device is exhausted, the packet gets sent later instead of just failing and returning an error to the user. - Makes the API consistent with everything else in smoltcp: operations only update internal state, poll is what sends/receives packets. - Enables wrappers to offer simpler APIs with less generics. See embassy-rs/embassy#3329 for an example, which is my original motivation.
Dirbaio
added a commit
to smoltcp-rs/smoltcp
that referenced
this pull request
Sep 12, 2024
Instead of eagerly sending the join/leave packet when the user calls join/leave, we update internal state and send the packet when the interface is polled. Advantages: - If the device is exhausted, the packet gets sent later instead of just failing and returning an error to the user. - Makes the API consistent with everything else in smoltcp: operations only update internal state, poll is what sends/receives packets. - Enables wrappers to offer simpler APIs with less generics. See embassy-rs/embassy#3329 for an example, which is my original motivation.
8f0bb04
to
115afdc
Compare
seems it improves perf a bit, too:
|
bender run |
lulf
approved these changes
Sep 16, 2024
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.
Changes look great!
bender run |
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.
Refactor embassy-net api. Advantages:
Runner
struct.run()
requires&mut self
, this prevents the user from doing weird stuff like callingrun()
in two tasks concurrently.'static
litetime anymore. This means you can now dynamically create/teardown the network stack as many times as you want. If you run everything in a single task withjoin
you don't need StaticCell at all.Stack
and the sockets are all covariant over the lifetime now. This helps a bit with avoiding hairy lifetime errors.