diff --git a/Cargo.toml b/Cargo.toml index 52c6708..3931ada 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ rust-version = "1.70" [dependencies] lockfree = "0.5.1" -mio = { version = "1.0.3", features = ["os-poll", "net"] } +mio = { version = "1.1.0", features = ["os-poll", "net"] } [dev-dependencies] serde ={ version = "1.0.219", features = ["derive"] } diff --git a/examples/echo_server.rs b/examples/echo_server.rs index a9ab68b..7f429c2 100644 --- a/examples/echo_server.rs +++ b/examples/echo_server.rs @@ -1,5 +1,6 @@ -use mill_io::{error::Result, event::Event, EventHandler, EventLoop, ObjectPool, PooledObject}; +use mill_io::{error::Result, EventHandler, EventLoop, ObjectPool, PooledObject}; use mio::{ + event::Event, net::{TcpListener, TcpStream}, Interest, Token, }; diff --git a/examples/file_watcher.rs b/examples/file_watcher.rs index a69b8ea..ff65cff 100644 --- a/examples/file_watcher.rs +++ b/examples/file_watcher.rs @@ -1,5 +1,5 @@ -use mill_io::{error::Result, event::Event, EventHandler, EventLoop}; -use mio::Token; +use mill_io::{error::Result, EventHandler, EventLoop}; +use mio::{event::Event, Token}; use std::{ collections::HashMap, env, diff --git a/examples/http_server.rs b/examples/http_server.rs index 2e21e27..03510b0 100644 --- a/examples/http_server.rs +++ b/examples/http_server.rs @@ -1,5 +1,6 @@ -use mill_io::{error::Result, event::Event, EventHandler, EventLoop, ObjectPool, PooledObject}; +use mill_io::{error::Result, EventHandler, EventLoop, ObjectPool, PooledObject}; use mio::{ + event::Event, net::{TcpListener, TcpStream}, Interest, Token, }; diff --git a/examples/jsonrpc-server.rs b/examples/jsonrpc-server.rs index a781c75..724596a 100644 --- a/examples/jsonrpc-server.rs +++ b/examples/jsonrpc-server.rs @@ -1,5 +1,5 @@ -use mill_io::{error::Result, event::Event, EventHandler, EventLoop, ObjectPool, PooledObject}; -use mio::{net::TcpListener, Interest, Token}; +use mill_io::{error::Result, EventHandler, EventLoop, ObjectPool, PooledObject}; +use mio::{event::Event, net::TcpListener, Interest, Token}; use serde::{Deserialize, Serialize}; use std::{ collections::HashMap, diff --git a/src/event.rs b/src/event.rs deleted file mode 100644 index c5c00d5..0000000 --- a/src/event.rs +++ /dev/null @@ -1,43 +0,0 @@ -use mio::{event::Event as MioEvent, Token}; -use std::fmt; - -/// Unified event struct that abstracts away platform differences by wrapping mio::event::Event as MioEvent -pub struct Event { - token: Token, - is_readable: bool, - is_writable: bool, -} - -impl fmt::Debug for Event { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - f.debug_struct("Event") - .field("token", &self.token) - .field("is_readable", &self.is_readable) - .field("is_writable", &self.is_writable) - .finish() - } -} - -impl Event { - pub fn token(&self) -> Token { - self.token - } - - pub fn is_readable(&self) -> bool { - self.is_readable - } - - pub fn is_writable(&self) -> bool { - self.is_writable - } -} - -impl From<&MioEvent> for Event { - fn from(event: &MioEvent) -> Self { - Self { - token: event.token(), - is_readable: event.is_readable(), - is_writable: event.is_writable(), - } - } -} diff --git a/src/handler.rs b/src/handler.rs index e757c53..20ea098 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -1,5 +1,4 @@ -use crate::event::Event; -use mio::Interest; +use mio::{event::Event, Interest}; pub trait EventHandler { fn handle_event(&self, event: &Event); diff --git a/src/lib.rs b/src/lib.rs index 59a1c43..f161e58 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,8 +31,8 @@ //! ## Quick Start //! //! ```rust,no_run -//! use mill_io::{EventLoop, EventHandler, event::Event}; -//! use mio::{net::TcpListener, Interest, Token}; +//! use mill_io::{EventLoop, EventHandler}; +//! use mio::{net::TcpListener, Interest, Token, event::Event}; //! use std::net::SocketAddr; //! //! struct EchoHandler; @@ -96,14 +96,13 @@ use mio::{Interest, Token}; pub mod error; -pub mod event; pub mod handler; pub mod object_pool; pub mod poll; pub mod reactor; pub mod thread_pool; -pub use event::Event; pub use handler::EventHandler; +pub use mio::event::Event; pub use object_pool::{ObjectPool, PooledObject}; use crate::{ @@ -147,8 +146,8 @@ pub mod prelude { /// Basic usage with default configuration: /// /// ```rust,no_run -/// use mill_io::{EventLoop, EventHandler, event::Event}; -/// use mio::{net::TcpListener, Interest, Token}; +/// use mill_io::{EventLoop, EventHandler}; +/// use mio::{net::TcpListener, Interest, Token, event::Event}; /// use std::net::SocketAddr; /// /// struct MyHandler; @@ -259,8 +258,8 @@ impl EventLoop { /// ## Example /// /// ```rust,no_run - /// use mill_io::{EventLoop, EventHandler,event::Event}; - /// use mio::{net::TcpListener, Interest, Token}; + /// use mill_io::{EventLoop, EventHandler}; + /// use mio::{net::TcpListener, Interest, Token, event::Event}; /// use std::net::SocketAddr; /// /// struct ConnectionHandler; @@ -318,8 +317,8 @@ impl EventLoop { /// ## Example /// /// ```rust,no_run - /// use mill_io::{EventLoop, EventHandler,event::Event}; - /// use mio::{net::TcpListener, Interest, Token}; + /// use mill_io::{EventLoop, EventHandler}; + /// use mio::{net::TcpListener, Interest, Token, event::Event}; /// use std::net::SocketAddr; /// /// struct Handler; diff --git a/src/poll.rs b/src/poll.rs index 3bf6a88..a603fb6 100644 --- a/src/poll.rs +++ b/src/poll.rs @@ -86,8 +86,7 @@ impl PollHandle { #[cfg(test)] mod tests { use super::*; - use crate::event::Event; - use mio::event::Source; + use mio::event::{Event, Source}; use mio::Events; use std::sync::atomic::{AtomicBool, Ordering}; use std::time::Duration; diff --git a/src/reactor.rs b/src/reactor.rs index fd6fb29..4fc4a5b 100644 --- a/src/reactor.rs +++ b/src/reactor.rs @@ -1,5 +1,5 @@ -use crate::{error::Result, event::Event, poll::PollHandle, thread_pool::ThreadPool}; -use mio::{event::Event as MioEvent, Events}; +use crate::{error::Result, poll::PollHandle, thread_pool::ThreadPool}; +use mio::{event::Event, Events}; use std::{ sync::{ atomic::{AtomicBool, Ordering}, @@ -65,12 +65,11 @@ impl Reactor { } } - pub fn dispatch_event(&self, event: MioEvent) -> Result<()> { + pub fn dispatch_event(&self, event: Event) -> Result<()> { let token = event.token(); let is_readable = event.is_readable(); let is_writable = event.is_writable(); - let unified_event: Event = Event::from(&event); let registry = self.poll_handle.get_registery(); self.pool.exec(move || { @@ -81,7 +80,7 @@ impl Reactor { if (interest.is_readable() && is_readable) || (interest.is_writable() && is_writable) { - handler.handle_event(&unified_event); + handler.handle_event(&event); } } })