use std::os::unix::io::{RawFd, AsRawFd};
use std::io::{Error, Result};
use std::mem;
use libc;
#[derive(Debug)]
pub struct Timer {
#[doc(hidden)]
pub fd: RawFd,
#[doc(hidden)]
pub interval: bool
}
impl Timer {
pub fn arm(&self) -> Result<()> {
let buf: u64 = 0;
unsafe {
let ptr: *mut libc::c_void = mem::transmute(&buf);
if libc::read(self.fd, ptr, 8) < 0 {
return Err(Error::last_os_error());
}
Ok(())
}
}
}
impl Drop for Timer {
fn drop(&mut self) {
unsafe {
libc::close(self.fd);
}
}
}
impl AsRawFd for Timer {
fn as_raw_fd(&self) -> RawFd {
self.fd
}
}