aboutsummaryrefslogtreecommitdiff
path: root/karld/src
diff options
context:
space:
mode:
Diffstat (limited to 'karld/src')
-rw-r--r--karld/src/interface.rs7
-rw-r--r--karld/src/main.rs18
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;
}
};