Create UdpSocket method that exposes async_io
#5416
Closed
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.
Motivation
We're building a PTP library and need to be able to read timestamp information from received UDP packet. This is not possible with Tokio's APIs directly of course, so we have to make the specific syscall ourselves.
We're making our PTP stack async, so receiving a packet has to be async as well.
All async udp functions that need to send or receive use the private internal
async_io
function from theRegistration
. This isn't available to use from the outside while the polling version of this API is public (namedtry_io
).Solution
I made a new method just like the existing
try_io
that allows access to the inner API.With this we can plug in our own syscall that can read the socket together with the options so a timestamp is returned.