mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-11 17:11:28 +03:00
Cleanup (#9)
* support for cmdline args and better error handling * make config.toml optional * more unwraps removed
This commit is contained in:
committed by
GitHub
parent
225ef818a2
commit
a1100cc8b2
@@ -171,8 +171,7 @@ enum VirtualInput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl VirtualInput {
|
impl VirtualInput {
|
||||||
/// main loop handling udp packets
|
fn consume_event(&self, event: Event) -> Result<(),()> {
|
||||||
fn consume_event(&self, event: Event) -> std::io::Result<()> {
|
|
||||||
match event {
|
match event {
|
||||||
Event::Pointer(e) => match e {
|
Event::Pointer(e) => match e {
|
||||||
PointerEvent::Motion {
|
PointerEvent::Motion {
|
||||||
@@ -196,7 +195,7 @@ impl VirtualInput {
|
|||||||
button,
|
button,
|
||||||
state,
|
state,
|
||||||
} => {
|
} => {
|
||||||
let state: ButtonState = state.try_into().unwrap();
|
let state: ButtonState = state.try_into()?;
|
||||||
match self {
|
match self {
|
||||||
VirtualInput::Wlroots {
|
VirtualInput::Wlroots {
|
||||||
pointer,
|
pointer,
|
||||||
@@ -211,7 +210,7 @@ impl VirtualInput {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
PointerEvent::Axis { time, axis, value } => {
|
PointerEvent::Axis { time, axis, value } => {
|
||||||
let axis: Axis = (axis as u32).try_into().unwrap();
|
let axis: Axis = (axis as u32).try_into()?;
|
||||||
match self {
|
match self {
|
||||||
VirtualInput::Wlroots {
|
VirtualInput::Wlroots {
|
||||||
pointer,
|
pointer,
|
||||||
|
|||||||
28
src/event.rs
28
src/event.rs
@@ -211,7 +211,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
match event_type {
|
match event_type {
|
||||||
PointerEventType::MOTION => {
|
PointerEventType::MOTION => {
|
||||||
let time = match data.get(2..6) {
|
let time = match data.get(2..6) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 2".into(),
|
msg: "Expected 4 Bytes at index 2".into(),
|
||||||
@@ -219,7 +219,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let relative_x = match data.get(6..14) {
|
let relative_x = match data.get(6..14) {
|
||||||
Some(d) => f64::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => f64::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 8 Bytes at index 6".into(),
|
msg: "Expected 8 Bytes at index 6".into(),
|
||||||
@@ -227,7 +227,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let relative_y = match data.get(14..22) {
|
let relative_y = match data.get(14..22) {
|
||||||
Some(d) => f64::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => f64::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 8 Bytes at index 14".into(),
|
msg: "Expected 8 Bytes at index 14".into(),
|
||||||
@@ -242,7 +242,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
PointerEventType::BUTTON => {
|
PointerEventType::BUTTON => {
|
||||||
let time = match data.get(2..6) {
|
let time = match data.get(2..6) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 2".into(),
|
msg: "Expected 4 Bytes at index 2".into(),
|
||||||
@@ -250,7 +250,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let button = match data.get(6..10) {
|
let button = match data.get(6..10) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 10".into(),
|
msg: "Expected 4 Bytes at index 10".into(),
|
||||||
@@ -258,7 +258,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let state = match data.get(10..14) {
|
let state = match data.get(10..14) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 14".into(),
|
msg: "Expected 4 Bytes at index 14".into(),
|
||||||
@@ -273,7 +273,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
PointerEventType::AXIS => {
|
PointerEventType::AXIS => {
|
||||||
let time = match data.get(2..6) {
|
let time = match data.get(2..6) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 2".into(),
|
msg: "Expected 4 Bytes at index 2".into(),
|
||||||
@@ -289,7 +289,7 @@ impl TryFrom<Vec<u8>> for PointerEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let value = match data.get(7..15) {
|
let value = match data.get(7..15) {
|
||||||
Some(d) => f64::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => f64::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 8 Bytes at index 7".into(),
|
msg: "Expected 8 Bytes at index 7".into(),
|
||||||
@@ -354,7 +354,7 @@ impl TryFrom<Vec<u8>> for KeyboardEvent {
|
|||||||
match event_type {
|
match event_type {
|
||||||
KeyboardEventType::KEY => {
|
KeyboardEventType::KEY => {
|
||||||
let time = match data.get(2..6) {
|
let time = match data.get(2..6) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 6".into(),
|
msg: "Expected 4 Bytes at index 6".into(),
|
||||||
@@ -362,7 +362,7 @@ impl TryFrom<Vec<u8>> for KeyboardEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let key = match data.get(6..10) {
|
let key = match data.get(6..10) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 10".into(),
|
msg: "Expected 4 Bytes at index 10".into(),
|
||||||
@@ -381,7 +381,7 @@ impl TryFrom<Vec<u8>> for KeyboardEvent {
|
|||||||
}
|
}
|
||||||
KeyboardEventType::MODIFIERS => {
|
KeyboardEventType::MODIFIERS => {
|
||||||
let mods_depressed = match data.get(2..6) {
|
let mods_depressed = match data.get(2..6) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 6".into(),
|
msg: "Expected 4 Bytes at index 6".into(),
|
||||||
@@ -389,7 +389,7 @@ impl TryFrom<Vec<u8>> for KeyboardEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let mods_latched = match data.get(6..10) {
|
let mods_latched = match data.get(6..10) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 10".into(),
|
msg: "Expected 4 Bytes at index 10".into(),
|
||||||
@@ -397,7 +397,7 @@ impl TryFrom<Vec<u8>> for KeyboardEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let mods_locked = match data.get(10..14) {
|
let mods_locked = match data.get(10..14) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 14".into(),
|
msg: "Expected 4 Bytes at index 14".into(),
|
||||||
@@ -405,7 +405,7 @@ impl TryFrom<Vec<u8>> for KeyboardEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let group = match data.get(14..18) {
|
let group = match data.get(14..18) {
|
||||||
Some(d) => u32::from_be_bytes(d.try_into().unwrap()),
|
Some(d) => u32::from_be_bytes(d.try_into()?),
|
||||||
None => {
|
None => {
|
||||||
return Err(Box::new(ProtocolError {
|
return Err(Box::new(ProtocolError {
|
||||||
msg: "Expected 4 Bytes at index 18".into(),
|
msg: "Expected 4 Bytes at index 18".into(),
|
||||||
|
|||||||
@@ -35,27 +35,28 @@ pub struct Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Server {
|
impl Server {
|
||||||
fn handle_request(&self, mut stream: TcpStream) {
|
fn handle_request(&self, mut stream: TcpStream) -> Result<(), Box<dyn Error>> {
|
||||||
let mut buf = [0u8; 4];
|
let mut buf = [0u8; 4];
|
||||||
stream.read_exact(&mut buf).unwrap();
|
stream.read_exact(&mut buf)?;
|
||||||
match Request::try_from(buf) {
|
match Request::try_from(buf) {
|
||||||
Ok(Request::KeyMap) => {
|
Ok(Request::KeyMap) => {
|
||||||
let data = self.data.read().unwrap();
|
let data = self.data.read().unwrap();
|
||||||
let buf = data.get(&Request::KeyMap);
|
let buf = data.get(&Request::KeyMap);
|
||||||
match buf {
|
match buf {
|
||||||
None => {
|
None => {
|
||||||
stream.write(&0u32.to_ne_bytes()).unwrap();
|
stream.write(&0u32.to_ne_bytes())?;
|
||||||
}
|
}
|
||||||
Some(buf) => {
|
Some(buf) => {
|
||||||
stream.write(&buf[..].len().to_ne_bytes()).unwrap();
|
stream.write(&buf[..].len().to_ne_bytes())?;
|
||||||
stream.write(&buf[..]).unwrap();
|
stream.write(&buf[..])?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stream.flush().unwrap();
|
stream.flush()?;
|
||||||
}
|
}
|
||||||
Ok(Request::Connect) => todo!(),
|
Ok(Request::Connect) => todo!(),
|
||||||
Err(msg) => eprintln!("{}", msg),
|
Err(msg) => eprintln!("{}", msg),
|
||||||
}
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn listen(port: u16) -> Result<(Server, JoinHandle<()>), Box<dyn Error>> {
|
pub fn listen(port: u16) -> Result<(Server, JoinHandle<()>), Box<dyn Error>> {
|
||||||
@@ -70,7 +71,9 @@ impl Server {
|
|||||||
for stream in listen_socket.incoming() {
|
for stream in listen_socket.incoming() {
|
||||||
match stream {
|
match stream {
|
||||||
Ok(stream) => {
|
Ok(stream) => {
|
||||||
server.handle_request(stream);
|
if let Err(e) = server.handle_request(stream) {
|
||||||
|
eprintln!("{}", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("{}", e);
|
eprintln!("{}", e);
|
||||||
|
|||||||
Reference in New Issue
Block a user