webmetro/src/commands/mod.rs

28 lines
679 B
Rust
Raw Normal View History

use std::io::stdin;
2018-04-12 04:14:16 +00:00
use bytes::{
Buf,
IntoBuf
};
use futures::prelude::*;
2018-09-21 00:58:51 +00:00
use tokio_io::io::AllowStdIo;
use tokio_codec::{
BytesCodec,
FramedRead
2018-04-12 04:14:16 +00:00
};
use webmetro::error::WebmetroError;
2018-04-12 04:14:16 +00:00
pub mod dump;
2018-04-12 06:03:46 +00:00
pub mod filter;
2018-04-11 05:39:28 +00:00
pub mod relay;
2018-04-15 05:43:23 +00:00
pub mod send;
2018-04-12 04:14:16 +00:00
/// An adapter that makes chunks of bytes from stdin available as a Stream;
/// is NOT actually async, and just uses blocking read. Don't use more than
/// one at once, who knows who gets which bytes.
pub fn stdin_stream() -> impl Stream<Item = impl Buf, Error = WebmetroError> {
FramedRead::new(AllowStdIo::new(stdin()), BytesCodec::new())
.map(|bytes| bytes.into_buf())
.map_err(WebmetroError::from)
2018-04-12 04:14:16 +00:00
}