pub fn serve<R, W, H, M>(input: R, output: W, handle: H) -> Result<usize, Error>Expand description
Serve until the input ends, answering every message through handle. Returns the
number of messages answered.
use majordomus_cli::mcp::stdio;
use serde_json::json;
let input = b"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"ping\"}\nnot json\n\n";
let mut out = Vec::new();
let n = stdio::serve(&input[..], &mut out, |m| Some(json!({ "jsonrpc": "2.0", "id": m["id"], "result": {} }))).unwrap();
let lines: Vec<&str> = std::str::from_utf8(&out).unwrap().lines().collect();
assert_eq!(n, 2, "one answer, one parse error");
assert!(lines[0].contains("\"result\""));
assert!(lines[1].contains("-32700"));