More work

This commit is contained in:
Carl Lerche
2017-03-10 13:53:44 -08:00
parent e2871d92fa
commit 841796f59a
4 changed files with 104 additions and 50 deletions

View File

@@ -1,15 +1,26 @@
use ConnectionError;
use frame::Frame;
use futures::*;
use bytes::BytesMut;
use tokio_io::AsyncWrite;
use std::io;
use futures::*;
use bytes::{BytesMut, Buf};
use std::io::{self, Write};
pub struct FramedRead<T> {
inner: T,
}
impl<T> FramedRead<T>
where T: Stream<Item = BytesMut, Error = io::Error>,
T: AsyncWrite,
{
pub fn new(inner: T) -> FramedRead<T> {
FramedRead { inner: inner }
}
}
impl<T> Stream for FramedRead<T>
where T: Stream<Item = BytesMut, Error = io::Error>,
{
@@ -41,3 +52,22 @@ impl<T: Sink> Sink for FramedRead<T> {
}
}
impl<T: io::Write> io::Write for FramedRead<T> {
fn write(&mut self, src: &[u8]) -> io::Result<usize> {
self.inner.write(src)
}
fn flush(&mut self) -> io::Result<()> {
self.inner.flush()
}
}
impl<T: AsyncWrite> AsyncWrite for FramedRead<T> {
fn shutdown(&mut self) -> Poll<(), io::Error> {
self.inner.shutdown()
}
fn write_buf<B: Buf>(&mut self, buf: &mut B) -> Poll<usize, io::Error> {
self.inner.write_buf(buf)
}
}