Struct dbus::Watch
[−]
[src]
pub struct Watch { // some fields omitted }
A file descriptor to watch for incoming events (for async I/O).
Example
extern crate libc; extern crate dbus; fn main() { use dbus::{Connection, BusType, WatchEvent}; let c = Connection::get_private(BusType::Session).unwrap(); // Get a list of fds to poll for let mut fds: Vec<_> = c.watch_fds().iter().map(|w| w.to_pollfd()).collect(); // Poll them with a 1 s timeout let r = unsafe { libc::poll(fds.as_mut_ptr(), fds.len() as libc::c_ulong, 1000) }; assert!(r >= 0); // And handle incoming events for pfd in fds.iter().filter(|pfd| pfd.revents != 0) { for item in c.watch_handle(pfd.fd, WatchEvent::from_revents(pfd.revents)) { // Handle item println!("Received ConnectionItem: {:?}", item); } } }
Methods
impl Watch
[src]
fn fd(&self) -> RawFd
Get the RawFd this Watch is for
fn readable(&self) -> bool
Add POLLIN to events to listen for
fn writable(&self) -> bool
Add POLLOUT to events to listen for
fn to_pollfd(&self) -> pollfd
Returns the current watch as a libc::pollfd, to use with libc::poll