|
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