diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-20 09:22:02 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-09-01 23:47:19 -0700 |
| commit | 397b7e4bb942b7fe3bd6f1652fa31ccec3ecc48e (patch) | |
| tree | e8d8ef82522f21922d3c18fa1b09be9417dda226 /niri-ipc/src | |
| parent | 598b27f83c4d4dd72c5cfbd06ca60b12e2833429 (diff) | |
| download | niri-397b7e4bb942b7fe3bd6f1652fa31ccec3ecc48e.tar.gz niri-397b7e4bb942b7fe3bd6f1652fa31ccec3ecc48e.tar.bz2 niri-397b7e4bb942b7fe3bd6f1652fa31ccec3ecc48e.zip | |
ipc: Read only a single line on the client
Allow extensibility.
Diffstat (limited to 'niri-ipc/src')
| -rw-r--r-- | niri-ipc/src/socket.rs | 12 |
1 files changed, 7 insertions, 5 deletions
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<Reply> { 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) } } |
