blob: 6642195f150b7d1f25dbc6a0c438abbc1d75790f [file] [log] [blame]
use mio::*;
use mio::fuchsia::EventedHandle;
use zircon::{self, AsHandleRef};
use std::time::Duration;
const MS: u64 = 1_000;
#[test]
pub fn test_fuchsia_channel() {
let poll = Poll::new().unwrap();
let mut event_buffer = Events::with_capacity(1);
let event_buffer = &mut event_buffer;
let (channel0, channel1) = zircon::Channel::create().unwrap();
let channel1_evented = unsafe { EventedHandle::new(channel1.raw_handle()) };
poll.register(&channel1_evented, Token(1), Ready::readable(), PollOpt::edge()).unwrap();
poll.poll(event_buffer, Some(Duration::from_millis(MS))).unwrap();
assert_eq!(event_buffer.len(), 0);
channel0.write(&[1, 2, 3], &mut vec![]).unwrap();
poll.poll(event_buffer, Some(Duration::from_millis(MS))).unwrap();
let event = event_buffer.get(0).unwrap();
assert_eq!(event.token(), Token(1));
assert!(event.readiness().is_readable());
poll.deregister(&channel1_evented).unwrap();
}