hyprshell_core_lib/transfer/
send.rs1use crate::get_daemon_socket_path_buff;
2use anyhow::Context;
3use std::io::{BufRead, BufReader, Write};
4use std::os::unix::net::UnixStream;
5use tracing::{debug, trace};
6
7pub fn send_raw_to_socket(data: &str) -> anyhow::Result<()> {
8 let path = get_daemon_socket_path_buff();
9 debug!("Sending data to socket: {data}");
10 trace!("Socket path: {}", path.display());
11 let mut stream = UnixStream::connect(&path)
12 .with_context(|| format!("Can't connect to daemon socket {}", path.display()))?;
13 trace!("Socket connected, sending data");
14 stream
15 .write_all(data.as_bytes())
16 .and_then(|()| stream.write_all(b"\0"))
17 .context("Can't send data to socket")?;
18 trace!("Data sent");
19 let mut reader = BufReader::new(stream);
20 let mut buffer = vec![];
21 reader
22 .read_until(b'\0', &mut buffer)
23 .context("Can't read data from socket")?;
24 let ret = String::from_utf8(buffer).context("Failed to convert buffer")?;
25 debug!("Received data from socket: {ret}");
26 Ok(())
27}