diff options
Diffstat (limited to 'karld/src')
-rw-r--r-- | karld/src/interface.rs | 7 | ||||
-rw-r--r-- | karld/src/main.rs | 18 |
2 files changed, 17 insertions, 8 deletions
diff --git a/karld/src/interface.rs b/karld/src/interface.rs index 127c0db..750f307 100644 --- a/karld/src/interface.rs +++ b/karld/src/interface.rs @@ -1,5 +1,5 @@ use crate::handle_packet; -use karlcommon::{socket_path, version, ClientboundPacket, ServerboundPacket}; +use karlcommon::{socket_path, version, ClientboundPacket, ProtoError, ServerboundPacket}; use log::{debug, error, info, warn}; use std::io; use std::io::{BufRead, BufReader, ErrorKind, Write}; @@ -61,7 +61,10 @@ fn handle_connection(id: u32, mut stream: UnixStream) -> io::Result<()> { Err(err) => { warn!("client error: {:?}", &err); responder - .send(ClientboundPacket::Error(format!("{}", &err))) + .send(ClientboundPacket::Error(ProtoError::FormatError(format!( + "{}", + &err + )))) .map_err(|_| io::Error::from(ErrorKind::InvalidInput))? } } diff --git a/karld/src/main.rs b/karld/src/main.rs index 1bc5798..0983554 100644 --- a/karld/src/main.rs +++ b/karld/src/main.rs @@ -5,7 +5,9 @@ use chrono::NaiveDateTime; use condition::ConditionFind; use crossbeam_channel::Sender; use interface::network_loop; -use karlcommon::{ClientboundPacket, Condition, Instance, Property, ServerboundPacket, Task}; +use karlcommon::{ + ClientboundPacket, Condition, Instance, Property, ProtoError, ServerboundPacket, Task, +}; use log::{debug, info}; use std::{collections::HashMap, sync::RwLock}; @@ -16,8 +18,8 @@ fn main() { 0, Task { id: 0, - name: "blub".to_string(), - description: "blob".to_string(), + name: "Mittagessen im Februar".to_string(), + description: None, tags: vec![], priority: 69.0, completed: None, @@ -46,6 +48,9 @@ lazy_static::lazy_static! { pub fn handle_packet(client: u32, packet: ServerboundPacket, responder: Sender<ClientboundPacket>) { match packet { + ServerboundPacket::Sync => { + let _ = responder.send(ClientboundPacket::Sync); + } ServerboundPacket::ListTasks => { let _ = responder.send(ClientboundPacket::TaskList( TASKS.read().unwrap().values().map(|e| e.clone()).collect(), @@ -55,7 +60,9 @@ pub fn handle_packet(client: u32, packet: ServerboundPacket, responder: Sender<C TASKS.write().unwrap().insert(t.id, t); } ServerboundPacket::RemoveTask(i) => { - TASKS.write().unwrap().remove(&i); + if TASKS.write().unwrap().remove(&i).is_none() { + let _ = responder.send(ClientboundPacket::Error(ProtoError::UnknownTask)); + } } ServerboundPacket::Handshake { version } => { debug!("{client}: version {version}"); @@ -64,8 +71,7 @@ pub fn handle_packet(client: u32, packet: ServerboundPacket, responder: Sender<C let t = match TASKS.read().unwrap().get(&task).cloned() { Some(t) => t, None => { - let _ = - responder.send(ClientboundPacket::Error("task does not exist".to_string())); + let _ = responder.send(ClientboundPacket::Error(ProtoError::UnknownTask)); return; } }; |