aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 0282ec7..e9e5e0e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,7 @@
-use std::io::Write;
+use std::error;
+use std::io::{Read,Write};
use std::os::unix::net::{UnixStream,UnixListener};
+use std::str;
use std::sync::{Arc,Mutex};
use std::thread::{sleep,spawn};
use std::time::{Duration,Instant,SystemTime};
@@ -37,6 +39,8 @@ struct State {
asof: SystemTime,
}
+type Result<T> = std::result::Result<T, Box<dyn error::Error>>;
+
fn init_state() -> State {
let asof = SystemTime::now();
return State {
@@ -49,9 +53,11 @@ fn update_state(state: &mut State) {
state.asof = asof;
}
-fn get_state(sockfile: String) -> std::io::Result<State> {
- let mut socket = UnixStream::connect(sockfile);
- Ok(init_state())
+fn get_state(sockfile: String) -> Result<State> {
+ let mut socket = UnixStream::connect(sockfile)?;
+ let mut buf = vec![];
+ socket.read_to_end(&mut buf)?;
+ Ok(serde_json::from_str::<State>(str::from_utf8(&buf)?)?)
}
fn main() {