Decouple WASIp2 sockets from WasiFd #131449
Merged
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.
This is a follow up to #129638, decoupling WASIp2's socket implementation from WASIp1's
WasiFd
as discussed with @alexcrichton.Quite a few trait implementations in
std::os::fd
rely on the fact that there is an additional layer of abstraction betweenSocket
andOwnedFd
. I thus had to add a thinWasiSocket
wrapper struct that just "forwards" toOwnedFd
. Alternatively, I could have added a lot of conditional compilation tostd::os::fd
, which feels even worse.Since
WasiFd::sock_accept
is no longer accessible fromTcpListener
and since WASIp2 has proper support for accepting sockets throughSocket::accept
, thestd::os::wasi::net
module has been removed from WASIp2, which only contains a singleTcpListenerExt
trait with asock_accept
method as well as an implementation forTcpListener
. Let me know if this is an acceptable solution.