multitouch 0.3.2

Raw macOS multitouch, gesture recognition, device monitoring, and Force Touch haptics
Documentation
use super::hub::Frame;
use crate::Contact;
use crate::Device;
use crate::queue::Queue;
use std::sync::Arc;
use std::sync::mpsc::RecvTimeoutError;
use std::time::Duration;

pub struct MonitorStream {
    pub(super) queue: Arc<Queue<Frame>>,
}

impl MonitorStream {
    pub fn recv(&self) -> Option<(Device, Vec<Contact>)> {
        self.queue.recv()
    }
    pub fn try_recv(&self) -> Option<(Device, Vec<Contact>)> {
        self.queue.try_recv()
    }
    pub fn recv_timeout(&self, timeout: Duration) -> Option<(Device, Vec<Contact>)> {
        self.queue.recv_timeout(timeout)
    }

    pub(crate) fn recv_deadline(&self, timeout: Duration) -> Result<Frame, RecvTimeoutError> {
        self.queue.recv_deadline(timeout)
    }
}

impl Iterator for MonitorStream {
    type Item = (Device, Vec<Contact>);
    fn next(&mut self) -> Option<Self::Item> {
        self.queue.recv()
    }
}