| use crate::sys::pipe::{anon_pipe, Pipes}; |
| use crate::{thread, time}; |
| |
| /// Test the synchronous fallback for overlapped I/O. |
| #[test] |
| fn overlapped_handle_fallback() { |
| // Create some pipes. `ours` will be asynchronous. |
| let Pipes { ours, theirs } = anon_pipe(true, false).unwrap(); |
| |
| let async_readable = ours.into_handle(); |
| let sync_writeable = theirs.into_handle(); |
| |
| thread::scope(|_| { |
| thread::sleep(time::Duration::from_millis(100)); |
| sync_writeable.write(b"hello world!").unwrap(); |
| }); |
| |
| // The pipe buffer starts empty so reading won't complete synchronously unless |
| // our fallback path works. |
| let mut buffer = [0u8; 1024]; |
| async_readable.read(&mut buffer).unwrap(); |
| } |