let mut req_num: ReqNum = 0;
let tx_stream = ipif.stdout.take().unwrap();
- let rx_stream = ipif.stdin .take().unwrap();
+ let mut rx_stream = ipif.stdin .take().unwrap();
let mut tx_stream = tokio::io::BufReader::new(tx_stream).split(SLIP_END);
let mut packets: VecDeque<Box<[u8]>> = default();
async {
loop {
select! {
+ y = rx_stream.write_all_buf(&mut rx_queue),
+ if ! rx_queue.is_empty() =>
+ {
+ let () = y.context("write rx data to ipif")?;
+ },
+
data = tx_stream.next_segment(),
if packets.is_empty() =>
{
}, |e| error!("{} #{}: rx discarding: {}", &ic, req_num, e));
dbg!(&rx_queue);
- // xxx do writing with
- // tokio::io::AsyncWriteExt::write_all_buf
}
}
}
pub use log::{trace, debug, info, warn, error};
pub use structopt::StructOpt;
pub use thiserror::Error;
-pub use tokio::io::AsyncBufReadExt;
+pub use tokio::io::{AsyncBufReadExt, AsyncWriteExt};
pub use tokio::pin;
pub use tokio::select;
pub use tokio::task;