From 397b7e4bb942b7fe3bd6f1652fa31ccec3ecc48e Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Thu, 20 Jun 2024 09:22:02 +0300 Subject: ipc: Read only a single line on the client Allow extensibility. --- niri-ipc/src/socket.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'niri-ipc/src/socket.rs') diff --git a/niri-ipc/src/socket.rs b/niri-ipc/src/socket.rs index 67b9625c..3964f000 100644 --- a/niri-ipc/src/socket.rs +++ b/niri-ipc/src/socket.rs @@ -1,7 +1,7 @@ //! Helper for blocking communication over the niri socket. use std::env; -use std::io::{self, Read, Write}; +use std::io::{self, BufRead, BufReader, Write}; use std::net::Shutdown; use std::os::unix::net::UnixStream; use std::path::Path; @@ -50,14 +50,16 @@ impl Socket { pub fn send(self, request: Request) -> io::Result { let Self { mut stream } = self; - let mut buf = serde_json::to_vec(&request).unwrap(); - stream.write_all(&buf)?; + let mut buf = serde_json::to_string(&request).unwrap(); + stream.write_all(buf.as_bytes())?; stream.shutdown(Shutdown::Write)?; + let mut reader = BufReader::new(stream); + buf.clear(); - stream.read_to_end(&mut buf)?; + reader.read_line(&mut buf)?; - let reply = serde_json::from_slice(&buf)?; + let reply = serde_json::from_str(&buf)?; Ok(reply) } } -- cgit