Skip to content

Commit d6ef64d

Browse files
committed
polish code
1 parent 860268e commit d6ef64d

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed

monoio/src/buf/vec_wrapper.rs

+24-7
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ impl<'t, T: IoBufMut> From<&'t mut T> for IoVecMeta {
244244
}
245245
}
246246

247-
#[cfg(unix)]
248247
#[cfg(test)]
249248
mod tests {
250249
use super::*;
@@ -256,9 +255,18 @@ mod tests {
256255
let meta = read_vec_meta(&iovec);
257256
assert_eq!(meta.len(), 60);
258257
assert_eq!(meta.data.len(), 3);
259-
assert_eq!(meta.data[0].iov_len, 10);
260-
assert_eq!(meta.data[1].iov_len, 20);
261-
assert_eq!(meta.data[2].iov_len, 30);
258+
#[cfg(unix)]
259+
{
260+
assert_eq!(meta.data[0].iov_len, 10);
261+
assert_eq!(meta.data[1].iov_len, 20);
262+
assert_eq!(meta.data[2].iov_len, 30);
263+
}
264+
#[cfg(windows)]
265+
{
266+
assert_eq!(meta.data[0].len, 10);
267+
assert_eq!(meta.data[1].len, 20);
268+
assert_eq!(meta.data[2].len, 30);
269+
}
262270
}
263271

264272
#[test]
@@ -267,8 +275,17 @@ mod tests {
267275
let meta = write_vec_meta(&mut iovec);
268276
assert_eq!(meta.len(), 60);
269277
assert_eq!(meta.data.len(), 3);
270-
assert_eq!(meta.data[0].iov_len, 10);
271-
assert_eq!(meta.data[1].iov_len, 20);
272-
assert_eq!(meta.data[2].iov_len, 30);
278+
#[cfg(unix)]
279+
{
280+
assert_eq!(meta.data[0].iov_len, 10);
281+
assert_eq!(meta.data[1].iov_len, 20);
282+
assert_eq!(meta.data[2].iov_len, 30);
283+
}
284+
#[cfg(windows)]
285+
{
286+
assert_eq!(meta.data[0].len, 10);
287+
assert_eq!(meta.data[1].len, 20);
288+
assert_eq!(meta.data[2].len, 30);
289+
}
273290
}
274291
}

monoio/src/driver/op/read.rs

+11-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use {
99
std::ffi::c_void,
1010
windows_sys::Win32::{
1111
Foundation::TRUE,
12-
Networking::WinSock::{WSAGetLastError, WSARecv},
12+
Networking::WinSock::{WSAGetLastError, WSARecv, WSAESHUTDOWN},
1313
Storage::FileSystem::{ReadFile, SetFilePointer, FILE_CURRENT, INVALID_SET_FILE_POINTER},
1414
},
1515
};
@@ -186,23 +186,28 @@ impl<T: IoVecBufMut> OpAble for ReadVec<T> {
186186

187187
#[cfg(all(any(feature = "legacy", feature = "poll-io"), windows))]
188188
fn legacy_call(&mut self) -> io::Result<u32> {
189-
let mut bytes_received = 0;
189+
let mut nread = 0;
190+
let mut flags = 0;
190191
let ret = unsafe {
191192
WSARecv(
192193
self.fd.raw_socket() as _,
193194
self.buf_vec.write_wsabuf_ptr(),
194195
self.buf_vec.write_wsabuf_len().min(u32::MAX as usize) as _,
195-
&mut bytes_received,
196-
&mut 0,
196+
&mut nread,
197+
&mut flags,
197198
std::ptr::null_mut(),
198199
None,
199200
)
200201
};
201202
match ret {
202-
0 => Ok(bytes_received),
203+
0 => Ok(nread),
203204
_ => {
204205
let error = unsafe { WSAGetLastError() };
205-
Err(io::Error::from_raw_os_error(error))
206+
if error == WSAESHUTDOWN {
207+
Ok(0)
208+
} else {
209+
Err(io::Error::from_raw_os_error(error))
210+
}
206211
}
207212
}
208213
}

0 commit comments

Comments
 (0)