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

Trait Implementations

impl AsRawFd for Watch
[src]

fn as_raw_fd(&self) -> RawFd

Derived Implementations

impl Ord for Watch
[src]

fn cmp(&self, __arg_0: &Watch) -> Ordering

impl PartialOrd for Watch
[src]

fn partial_cmp(&self, __arg_0: &Watch) -> Option<Ordering>

fn lt(&self, __arg_0: &Watch) -> bool

fn le(&self, __arg_0: &Watch) -> bool

fn gt(&self, __arg_0: &Watch) -> bool

fn ge(&self, __arg_0: &Watch) -> bool

impl Eq for Watch
[src]

impl PartialEq for Watch
[src]

fn eq(&self, __arg_0: &Watch) -> bool

fn ne(&self, __arg_0: &Watch) -> bool

impl Debug for Watch
[src]

fn fmt(&self, __arg_0: &mut Formatter) -> Result

impl Copy for Watch
[src]

impl Clone for Watch
[src]

fn clone(&self) -> Watch

fn clone_from(&mut self, source: &Self)
1.0.0