hyprshell_core_lib/transfer/
send.rs

1use 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}