restructuring error code
This commit is contained in:
parent
391bb0ea2f
commit
e183405d5a
29
src/lib.rs
29
src/lib.rs
@ -1,11 +1,9 @@
|
|||||||
#![warn(clippy::all, rust_2018_idioms)]
|
|
||||||
|
|
||||||
mod types;
|
mod types;
|
||||||
mod i3msg;
|
mod i3msg;
|
||||||
|
|
||||||
use std::os::unix::net::UnixStream;
|
use std::os::unix::net::UnixStream;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
use std::io::{Result, Error, ErrorKind};
|
use std::io::Result;
|
||||||
|
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
use i3msg::I3msg;
|
use i3msg::I3msg;
|
||||||
@ -61,10 +59,7 @@ impl Sway {
|
|||||||
|
|
||||||
/// Subscribe the IPC connection to the event listed in the payload
|
/// Subscribe the IPC connection to the event listed in the payload
|
||||||
pub fn subscribe(&mut self, events: Vec<&str>) -> Result<Success> {
|
pub fn subscribe(&mut self, events: Vec<&str>) -> Result<Success> {
|
||||||
let events = match self.parse_events(events) {
|
let events = self.parse_events(events)?;
|
||||||
Ok(events) => events,
|
|
||||||
Err(e) => return Err(e),
|
|
||||||
};
|
|
||||||
self.run(&events, IPC_SUBSCRIBE)
|
self.run(&events, IPC_SUBSCRIBE)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,32 +127,22 @@ impl Sway {
|
|||||||
where
|
where
|
||||||
T: DeserializeOwned,
|
T: DeserializeOwned,
|
||||||
{
|
{
|
||||||
let buffer = match I3msg::new(payload, payload_type).construct_packet() {
|
let buffer = I3msg::new(payload, payload_type).construct_packet()?;
|
||||||
Ok(buffer) => buffer,
|
self.stream.write_all(&buffer.as_slice())?;
|
||||||
Err(e) => return Err(e),
|
|
||||||
};
|
|
||||||
|
|
||||||
match self.stream.write_all(&buffer.as_slice()) {
|
|
||||||
Ok(_) => {},
|
|
||||||
Err(e) => return Err(e),
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut buffer = [0; 25000];
|
let mut buffer = [0; 25000];
|
||||||
let n = match self.stream.read(&mut buffer) {
|
let n = self.stream.read(&mut buffer)?;
|
||||||
Ok(n) => n,
|
|
||||||
Err(e) => return Err(e),
|
|
||||||
};
|
|
||||||
|
|
||||||
match serde_json::from_slice::<T>(&buffer[14..n]) {
|
match serde_json::from_slice::<T>(&buffer[14..n]) {
|
||||||
Ok(result) => return Ok(result),
|
Ok(result) => return Ok(result),
|
||||||
Err(e) => return Err(Error::new(ErrorKind::Other, e.to_string())),
|
Err(e) => return Err(e.into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_events(&mut self, events: Vec<&str>) -> Result<String> {
|
fn parse_events(&mut self, events: Vec<&str>) -> Result<String> {
|
||||||
match serde_json::to_string(&events) {
|
match serde_json::to_string(&events) {
|
||||||
Ok(json) => Ok(json),
|
Ok(json) => Ok(json),
|
||||||
Err(e) => return Err(Error::new(ErrorKind::Other, e.to_string())),
|
Err(e) => return Err(e.into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user