1 pub use self::pipe
::Awakener
;
3 /// Default awakener backed by a pipe
6 use {io, Ready, Poll, PollOpt, Token}
;
8 use std
::io
::{Read, Write}
;
12 * ===== Awakener =====
22 pub fn new() -> io
::Result
<Awakener
> {
23 let (rd
, wr
) = unix
::pipe()?
;
31 pub fn wakeup(&self) -> io
::Result
<()> {
32 match (&self.writer
).write(&[1]) {
35 if e
.kind() == io
::ErrorKind
::WouldBlock
{
44 pub fn cleanup(&self) {
45 let mut buf
= [0; 128];
48 // Consume data until all bytes are purged
49 match (&self.reader
).read(&mut buf
) {
56 fn reader(&self) -> &unix
::Io
{
61 impl Evented
for Awakener
{
62 fn register(&self, poll
: &Poll
, token
: Token
, interest
: Ready
, opts
: PollOpt
) -> io
::Result
<()> {
63 self.reader().register(poll
, token
, interest
, opts
)
66 fn reregister(&self, poll
: &Poll
, token
: Token
, interest
: Ready
, opts
: PollOpt
) -> io
::Result
<()> {
67 self.reader().reregister(poll
, token
, interest
, opts
)
70 fn deregister(&self, poll
: &Poll
) -> io
::Result
<()> {
71 self.reader().deregister(poll
)