mirror of https://github.com/smol-rs/polling
Merge branch 'fix-detect-connection-fail' of github.com:irvingoujAtDevolution/polling into fix-detect-connection-fail
This commit is contained in:
commit
93dc77cf17
|
@ -1,7 +1,5 @@
|
|||
use std::io;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn main() -> io::Result<()> {
|
||||
fn main() -> std::io::Result<()> {
|
||||
use std::net;
|
||||
use std::{io::Write, time::Duration};
|
||||
|
||||
|
@ -85,8 +83,9 @@ fn main() -> io::Result<()> {
|
|||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
fn main() -> io::Result<()> {
|
||||
fn main() -> std::io::Result<()> {
|
||||
use polling::Event;
|
||||
use std::io;
|
||||
use std::{io::Write, time::Duration};
|
||||
|
||||
std::thread::spawn(|| {
|
||||
|
|
60
src/lib.rs
60
src/lib.rs
|
@ -403,52 +403,36 @@ impl Event {
|
|||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #[cfg(target_os = "linux")]
|
||||
/// fn main() -> io::Result<()> {
|
||||
/// use std::{io::Write, time::Duration};
|
||||
/// fn main() -> std::io::Result<()> {
|
||||
/// use std::net;
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// std::thread::spawn(|| {
|
||||
/// let listener = net::TcpListener::bind("0.0.0.0:8080").unwrap();
|
||||
/// println!("Listening on {}", listener.local_addr().unwrap());
|
||||
/// for stream in listener.incoming() {
|
||||
/// let mut stream = stream.unwrap();
|
||||
/// stream.write(b"Hello, world!\n").unwrap();
|
||||
/// }
|
||||
/// });
|
||||
/// std::thread::sleep(Duration::from_millis(100));
|
||||
/// let socket = socket2::Socket::new(socket2::Domain::IPV4, Type::STREAM, None)?;
|
||||
/// use polling::Event;
|
||||
/// use socket2::Type;
|
||||
/// let poller = polling::Poller::new()?;
|
||||
/// let bad_socket = socket2::Socket::new(socket2::Domain::IPV4, Type::STREAM, None)?;
|
||||
/// let addr = net::SocketAddr::new("127.0.0.1".parse().unwrap(), 12345);
|
||||
/// bad_socket.set_nonblocking(true)?;
|
||||
/// let mut events = polling::Events::new();
|
||||
///
|
||||
/// let _ = bad_socket.connect(&addr.into()).unwrap_err();
|
||||
///
|
||||
/// unsafe {
|
||||
/// poller.add(&socket, Event::new(0, true, true))?;
|
||||
/// poller.add(&bad_socket, Event::writable(0))?;
|
||||
/// }
|
||||
///
|
||||
/// socket.set_nonblocking(true)?;
|
||||
///
|
||||
/// let mut events = polling::Events::new();
|
||||
/// poller.wait(&mut events, Some(Duration::from_secs(3)))?;
|
||||
///
|
||||
/// let event = events.iter().next().expect("no event");
|
||||
///
|
||||
/// assert!(event.is_interrupt());
|
||||
///
|
||||
/// let addr = net::SocketAddr::new("127.0.0.1".parse().unwrap(), 8080);
|
||||
/// let err = socket.connect(&addr.into()).unwrap_err();
|
||||
///
|
||||
/// // EINPROGRESS
|
||||
/// assert_eq!(115, err.raw_os_error().expect("No OS error"));
|
||||
///
|
||||
/// poller.modify(&socket, Event::writable(0)).expect("modify failed");
|
||||
/// events.clear();
|
||||
/// poller.wait(&mut events, Some(Duration::from_secs(3)))?;
|
||||
///
|
||||
/// let event = events.iter().next().expect("no event");
|
||||
///
|
||||
/// assert!(event.writable);
|
||||
/// assert!(!event.is_interrupt());
|
||||
/// assert!(!event.is_err().unwrap());
|
||||
///
|
||||
/// println!("event: {:?}", event);
|
||||
/// println!("socket is now writable");
|
||||
/// let is_err = match event.is_err() {
|
||||
/// Some(is_err) => is_err,
|
||||
/// None => {
|
||||
/// println!("not supported in this platform");
|
||||
/// return Ok(());
|
||||
/// },
|
||||
/// };
|
||||
/// assert!(is_err);
|
||||
/// println!("bad socket is now in error state");
|
||||
///
|
||||
/// Ok(())
|
||||
/// }
|
||||
|
|
Loading…
Reference in New Issue