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 { // we wait for the answer 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(()) } }