#![allow(
clippy::todo,
clippy::unimplemented,
clippy::panic,
clippy::unwrap_used,
clippy::expect_used,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
clippy::doc_markdown,
clippy::needless_pass_by_value,
clippy::too_many_arguments,
clippy::unused_async,
clippy::diverging_sub_expression,
clippy::no_effect_underscore_binding,
clippy::let_unit_value,
clippy::used_underscore_binding,
clippy::let_underscore_untyped,
clippy::struct_field_names,
clippy::manual_let_else,
clippy::map_unwrap_or,
clippy::redundant_pub_crate,
dead_code,
unreachable_code,
unused_assignments,
unused_mut,
unused_imports,
unused_variables
)]
use std::process::Stdio;
use arcp::error::ARCPError;
use arcp::transport::stdio::StdioTransport;
use arcp::transport::MemoryTransport;
use arcp::ARCPClient;
use serde_json::json;
use tokio::process::Command;
type Client = ARCPClient<MemoryTransport>;
async fn spawn_child() -> Result<StdioTransport, std::io::Error> {
let mut child = Command::new("./arcp-server")
.arg("--serve-stdio")
.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::inherit())
.spawn()?;
let stdin = child.stdin.take().expect("piped stdin");
let stdout = child.stdout.take().expect("piped stdout");
todo!()
}
async fn run_echo(_client: &Client) -> Result<serde_json::Value, ARCPError> {
todo!()
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client: Client = todo!();
let job_id: String = todo!();
println!("accepted: job_id={job_id}");
let result = run_echo(&client).await?;
println!("result: {result}");
println!("done");
Ok(())
}