use {
super::Message,
crate::errors::NetError,
std::{
io::BufReader,
os::unix::net::UnixStream,
},
};
pub struct Client {
path: String,
}
impl Client {
pub fn new(socket_name: &str) -> Self {
Self {
path: super::socket_file_path(socket_name),
}
}
pub fn send(
&self,
message: &Message,
) -> Result<(), NetError> {
debug!("try connecting {:?}", &self.path);
let mut stream = UnixStream::connect(&self.path)?;
message.write(&mut stream)?;
if let Message::GetRoot = message {
let mut br = BufReader::new(&stream);
match Message::read(&mut br) {
Ok(answer) => {
debug!("got an answer: {:?}", &answer);
if let Message::Root(root) = answer {
println!("{root}");
}
}
Err(e) => {
warn!("got no answer but error {:?}", e);
}
}
}
Ok(())
}
}