|
2 | 2 |
|
3 | 3 | use libc::{c_int, c_void, size_t}; |
4 | 4 |
|
5 | | -use super::fd::WasiFd; |
6 | 5 | use crate::ffi::CStr; |
7 | 6 | use crate::io::{self, BorrowedBuf, BorrowedCursor, IoSlice, IoSliceMut}; |
8 | 7 | use crate::net::{Shutdown, SocketAddr}; |
9 | | -use crate::os::wasi::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd}; |
| 8 | +use crate::os::wasi::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd}; |
10 | 9 | use crate::sys::unsupported; |
11 | | -use crate::sys_common::net::{TcpListener, getsockopt, setsockopt, sockaddr_to_addr}; |
| 10 | +use crate::sys_common::net::{getsockopt, setsockopt, sockaddr_to_addr}; |
12 | 11 | use crate::sys_common::{AsInner, FromInner, IntoInner}; |
13 | 12 | use crate::time::{Duration, Instant}; |
14 | 13 | use crate::{cmp, mem, str}; |
@@ -71,7 +70,9 @@ pub fn cvt_gai(err: c_int) -> io::Result<()> { |
71 | 70 |
|
72 | 71 | pub fn init() {} |
73 | 72 |
|
74 | | -pub struct Socket(WasiFd); |
| 73 | +pub struct WasiSocket(OwnedFd); |
| 74 | + |
| 75 | +pub struct Socket(WasiSocket); |
75 | 76 |
|
76 | 77 | impl Socket { |
77 | 78 | pub fn new(addr: &SocketAddr, ty: c_int) -> io::Result<Socket> { |
@@ -327,53 +328,90 @@ impl Socket { |
327 | 328 | } |
328 | 329 | } |
329 | 330 |
|
330 | | -impl AsInner<WasiFd> for Socket { |
| 331 | +impl AsInner<OwnedFd> for WasiSocket { |
331 | 332 | #[inline] |
332 | | - fn as_inner(&self) -> &WasiFd { |
| 333 | + fn as_inner(&self) -> &OwnedFd { |
333 | 334 | &self.0 |
334 | 335 | } |
335 | 336 | } |
336 | 337 |
|
337 | | -impl IntoInner<WasiFd> for Socket { |
338 | | - fn into_inner(self) -> WasiFd { |
| 338 | +impl IntoInner<OwnedFd> for WasiSocket { |
| 339 | + fn into_inner(self) -> OwnedFd { |
339 | 340 | self.0 |
340 | 341 | } |
341 | 342 | } |
342 | 343 |
|
343 | | -impl FromInner<WasiFd> for Socket { |
344 | | - fn from_inner(inner: WasiFd) -> Socket { |
345 | | - Socket(inner) |
| 344 | +impl FromInner<OwnedFd> for WasiSocket { |
| 345 | + fn from_inner(owned_fd: OwnedFd) -> Self { |
| 346 | + Self(owned_fd) |
346 | 347 | } |
347 | 348 | } |
348 | 349 |
|
349 | | -impl AsFd for Socket { |
| 350 | +impl AsFd for WasiSocket { |
350 | 351 | fn as_fd(&self) -> BorrowedFd<'_> { |
351 | 352 | self.0.as_fd() |
352 | 353 | } |
353 | 354 | } |
354 | 355 |
|
355 | | -impl AsRawFd for Socket { |
| 356 | +impl AsRawFd for WasiSocket { |
356 | 357 | #[inline] |
357 | 358 | fn as_raw_fd(&self) -> RawFd { |
358 | 359 | self.0.as_raw_fd() |
359 | 360 | } |
360 | 361 | } |
361 | 362 |
|
362 | | -impl IntoRawFd for Socket { |
| 363 | +impl IntoRawFd for WasiSocket { |
363 | 364 | fn into_raw_fd(self) -> RawFd { |
364 | 365 | self.0.into_raw_fd() |
365 | 366 | } |
366 | 367 | } |
367 | 368 |
|
368 | | -impl FromRawFd for Socket { |
| 369 | +impl FromRawFd for WasiSocket { |
369 | 370 | unsafe fn from_raw_fd(raw_fd: RawFd) -> Self { |
370 | 371 | unsafe { Self(FromRawFd::from_raw_fd(raw_fd)) } |
371 | 372 | } |
372 | 373 | } |
373 | 374 |
|
374 | | -impl AsInner<Socket> for TcpListener { |
| 375 | +impl AsInner<WasiSocket> for Socket { |
| 376 | + #[inline] |
| 377 | + fn as_inner(&self) -> &WasiSocket { |
| 378 | + &self.0 |
| 379 | + } |
| 380 | +} |
| 381 | + |
| 382 | +impl IntoInner<WasiSocket> for Socket { |
| 383 | + fn into_inner(self) -> WasiSocket { |
| 384 | + self.0 |
| 385 | + } |
| 386 | +} |
| 387 | + |
| 388 | +impl FromInner<WasiSocket> for Socket { |
| 389 | + fn from_inner(sock: WasiSocket) -> Socket { |
| 390 | + Socket(sock) |
| 391 | + } |
| 392 | +} |
| 393 | + |
| 394 | +impl AsFd for Socket { |
| 395 | + fn as_fd(&self) -> BorrowedFd<'_> { |
| 396 | + self.0.as_fd() |
| 397 | + } |
| 398 | +} |
| 399 | + |
| 400 | +impl AsRawFd for Socket { |
375 | 401 | #[inline] |
376 | | - fn as_inner(&self) -> &Socket { |
377 | | - &self.socket() |
| 402 | + fn as_raw_fd(&self) -> RawFd { |
| 403 | + self.0.as_raw_fd() |
| 404 | + } |
| 405 | +} |
| 406 | + |
| 407 | +impl IntoRawFd for Socket { |
| 408 | + fn into_raw_fd(self) -> RawFd { |
| 409 | + self.0.into_raw_fd() |
| 410 | + } |
| 411 | +} |
| 412 | + |
| 413 | +impl FromRawFd for Socket { |
| 414 | + unsafe fn from_raw_fd(raw_fd: RawFd) -> Self { |
| 415 | + unsafe { Self(FromRawFd::from_raw_fd(raw_fd)) } |
378 | 416 | } |
379 | 417 | } |
0 commit comments