use tokio::net::UnixStream; use tokio::io::{AsyncWriteExt, AsyncReadExt}; use anyhow::Result; use super::Cli; use super::cli_error::NoxisCliError; async fn create_us_stream(cli: &Cli) -> Result { Ok(UnixStream::connect(&cli.socket).await.map_err(|er| NoxisCliError::NoxisDaemonMissing((&cli.socket).to_string(), er.to_string()))?) } pub async fn try_send(cli: Cli) -> Result<()> { // let stream = create_us_stream(&cli).await; let mut stream = create_us_stream(&cli).await?; let msg = serde_json::to_vec(&cli) .map_err(|_| NoxisCliError::ToStringCliParsingParsing)?; stream.write_all(&msg) .await .map_err(|_| NoxisCliError::CliPromptCanNotBeSent)?; let mut response = Vec::new(); stream.read_to_end(&mut response).await .map_err(|er| NoxisCliError::CliResponseReadError(er.to_string()))?; let response = String::from_utf8_lossy(&response); for line in response.lines() { println!("{}", line); } Ok(()) }