mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-03-27 23:20:54 +03:00
major update: - remove threading overhead by resorting to an event driven design with mio as a backend for epoll - Clients can now have an arbitrary amount of ip adresses and lan-mouse will automatically choose the correct one - -> seemless switching between ethernet and wifi - cli frontend + frontend adapter for future frontends
56 lines
1.0 KiB
Rust
56 lines
1.0 KiB
Rust
use std::vec::Drain;
|
|
|
|
use mio::{Token, Registry};
|
|
use mio::event::Source;
|
|
use std::io::Result;
|
|
|
|
use crate::producer::EventProducer;
|
|
|
|
use crate::{client::{ClientHandle, ClientEvent}, event::Event};
|
|
|
|
pub struct X11Producer {
|
|
pending_events: Vec<(ClientHandle, Event)>,
|
|
}
|
|
|
|
impl X11Producer {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
pending_events: vec![],
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Source for X11Producer {
|
|
fn register(
|
|
&mut self,
|
|
_registry: &Registry,
|
|
_token: Token,
|
|
_interests: mio::Interest,
|
|
) -> Result<()> {
|
|
Ok(())
|
|
}
|
|
|
|
fn reregister(
|
|
&mut self,
|
|
_registry: &Registry,
|
|
_token: Token,
|
|
_interests: mio::Interest,
|
|
) -> Result<()> {
|
|
Ok(())
|
|
}
|
|
|
|
fn deregister(&mut self, _registry: &Registry) -> Result<()> {
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
impl EventProducer for X11Producer {
|
|
fn notify(&mut self, _: ClientEvent) { }
|
|
|
|
fn read_events(&mut self) -> Drain<(ClientHandle, Event)> {
|
|
self.pending_events.drain(..)
|
|
}
|
|
|
|
fn release(&mut self) {}
|
|
}
|