|
1 | 1 | use std::io; |
| 2 | +#[cfg(all(unix, any(feature = "legacy", feature = "poll-io")))] |
| 3 | +use std::os::unix::prelude::AsRawFd; |
2 | 4 |
|
3 | 5 | #[cfg(all(target_os = "linux", feature = "iouring"))] |
4 | 6 | use io_uring::{opcode, types}; |
5 | 7 | #[cfg(all(windows, any(feature = "legacy", feature = "poll-io")))] |
6 | 8 | use windows_sys::Win32::{ |
7 | 9 | Foundation::TRUE, |
8 | | - Networking::WinSock::{WSAGetLastError, WSASend, SOCKET_ERROR}, |
| 10 | + Networking::WinSock::WSASend, |
9 | 11 | Storage::FileSystem::{SetFilePointer, WriteFile, FILE_CURRENT, INVALID_SET_FILE_POINTER}, |
10 | 12 | }; |
11 | | -#[cfg(all(unix, any(feature = "legacy", feature = "poll-io")))] |
12 | | -use {crate::syscall_u32, std::os::unix::prelude::AsRawFd}; |
13 | 13 |
|
14 | 14 | use super::{super::shared_fd::SharedFd, Op, OpAble}; |
15 | 15 | #[cfg(any(feature = "legacy", feature = "poll-io"))] |
16 | 16 | use crate::driver::ready::Direction; |
17 | 17 | use crate::{ |
18 | 18 | buf::{IoBuf, IoVecBuf}, |
19 | | - BufResult, |
| 19 | + syscall_u32, BufResult, |
20 | 20 | }; |
21 | 21 |
|
22 | 22 | pub(crate) struct Write<T> { |
@@ -176,25 +176,15 @@ impl<T: IoVecBuf> OpAble for WriteVec<T> { |
176 | 176 | #[cfg(all(any(feature = "legacy", feature = "poll-io"), windows))] |
177 | 177 | fn legacy_call(&mut self) -> io::Result<u32> { |
178 | 178 | let mut bytes_sent = 0; |
179 | | - let ret = unsafe { |
180 | | - WSASend( |
181 | | - self.fd.raw_socket() as _, |
182 | | - self.buf_vec.read_wsabuf_ptr(), |
183 | | - self.buf_vec.read_wsabuf_len() as _, |
184 | | - &mut bytes_sent, |
185 | | - 0, |
186 | | - std::ptr::null_mut(), |
187 | | - None, |
188 | | - ) |
189 | | - }; |
190 | | - match ret { |
191 | | - 0 => return Err(std::io::ErrorKind::WouldBlock.into()), |
192 | | - SOCKET_ERROR => { |
193 | | - let error = unsafe { WSAGetLastError() }; |
194 | | - return Err(std::io::Error::from_raw_os_error(error)); |
195 | | - } |
196 | | - _ => (), |
197 | | - } |
198 | | - Ok(bytes_sent) |
| 179 | + syscall_u32!(WSASend( |
| 180 | + self.fd.raw_socket() as _, |
| 181 | + self.buf_vec.read_wsabuf_ptr(), |
| 182 | + self.buf_vec.read_wsabuf_len() as _, |
| 183 | + &mut bytes_sent, |
| 184 | + 0, |
| 185 | + std::ptr::null_mut(), |
| 186 | + None, |
| 187 | + )) |
| 188 | + .map(|_| bytes_sent) |
199 | 189 | } |
200 | 190 | } |
0 commit comments