Rollup merge of #131449 - nickrum:wasip2-net-decouple-fd, r=alexcrichton · qinheping/verify-rust-std@49220cd (original) (raw)

`@@ -2,13 +2,12 @@

`

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:🥅:{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:🥅:{TcpListener, getsockopt, setsockopt, sockaddr_to_addr};

`

``

10

`+

use crate::sys_common:🥅:{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 {

`

`@@ -327,53 +328,90 @@ impl Socket {

`

327

328

`}

`

328

329

`}

`

329

330

``

330

``

`-

impl AsInner for Socket {

`

``

331

`+

impl AsInner 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 for Socket {

`

338

``

`-

fn into_inner(self) -> WasiFd {

`

``

338

`+

impl IntoInner for WasiSocket {

`

``

339

`+

fn into_inner(self) -> OwnedFd {

`

339

340

`self.0

`

340

341

`}

`

341

342

`}

`

342

343

``

343

``

`-

impl FromInner for Socket {

`

344

``

`-

fn from_inner(inner: WasiFd) -> Socket {

`

345

``

`-

Socket(inner)

`

``

344

`+

impl FromInner 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 for TcpListener {

`

``

375

`+

impl AsInner for Socket {

`

``

376

`+

#[inline]

`

``

377

`+

fn as_inner(&self) -> &WasiSocket {

`

``

378

`+

&self.0

`

``

379

`+

}

`

``

380

`+

}

`

``

381

+

``

382

`+

impl IntoInner for Socket {

`

``

383

`+

fn into_inner(self) -> WasiSocket {

`

``

384

`+

self.0

`

``

385

`+

}

`

``

386

`+

}

`

``

387

+

``

388

`+

impl FromInner 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

`}

`