1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use super::BufStream; use bytes::BytesMut; use futures::{Async, Poll}; use tokio_fs::File; use tokio_io::AsyncRead; use std::io; impl BufStream for File { type Item = io::Cursor<BytesMut>; type Error = io::Error; fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> { let mut v = BytesMut::new(); let len = try_ready!(self.read_buf(&mut v)); if len == 0 { Ok(Async::Ready(None)) } else { Ok(Async::Ready(Some(io::Cursor::new(v)))) } } }