From: Ian Jackson Date: Sun, 25 Jul 2021 22:42:50 +0000 (+0100) Subject: client: wip X-Git-Tag: hippotat/1.0.0~440 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=3bd0bbbf7dd8cf65ced7b2ef20faea63810f238b;p=hippotat.git client: wip Signed-off-by: Ian Jackson --- diff --git a/src/bin/client.rs b/src/bin/client.rs index 2c5d0ce..f01bb6f 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -17,6 +17,33 @@ async fn run_client(ic: InstanceConfig, hclient: Arc>) { debug!("{}: config: {:?}", &ic, &ic); + let mut ipif = tokio::process::Command::new("sh") + .args(&["-c", &ic.ipif]) + .stdin (process::Stdio::piped()) + .stdout(process::Stdio::piped()) + .stderr(process::Stdio::piped()) + .kill_on_drop(true) + .spawn().context("spawn ipif")?; + + let stderr = ipif.stderr.take().unwrap(); + let ic_name = ic.to_string(); + let _ = task::spawn(async move { + let mut stderr = tokio::io::BufReader::new(stderr).lines(); + while let Some(l) = stderr.next_line().await? { + error!("{}: ipif stderr: {}", &ic_name, l.trim_end()); + } + Ok::<_,io::Error>(()) + }); + + let stream_for_tx = ipif.stdout.take().unwrap(); + let stream_for_rx = ipif.stdin .take().unwrap(); +// let txbuf = VecDeque::new(); +/* + async { + loop { + select! { + rx = stream_for_rx + */ throw!(anyhow!("arrgh")); } diff --git a/src/prelude.rs b/src/prelude.rs index 40847fa..b1d7938 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -27,6 +27,7 @@ pub use itertools::{iproduct, Itertools}; pub use lazy_regex::{regex_is_match, regex_replace_all}; pub use log::{debug, info, error}; pub use structopt::StructOpt; +pub use tokio::io::AsyncBufReadExt; pub use tokio::task; pub use tokio::time::Duration; pub use void::{self, Void, ResultVoidExt, ResultVoidErrExt};