diff options
Diffstat (limited to 'karlcommon/src/protocol.rs')
-rw-r--r-- | karlcommon/src/protocol.rs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/karlcommon/src/protocol.rs b/karlcommon/src/protocol.rs index 55dda06..e5bb9f0 100644 --- a/karlcommon/src/protocol.rs +++ b/karlcommon/src/protocol.rs @@ -1,3 +1,4 @@ +use std::ops::Range; use serde::{Deserialize, Serialize}; @@ -6,14 +7,22 @@ use serde::{Deserialize, Serialize}; pub enum ClientboundPacket { Handshake { version: String }, Error(String), - DownloadResponse(Vec<Task>), + TaskList(Vec<Task>), + InstanceList(Vec<Instance>), } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(tag = "type", content = "data", rename_all = "snake_case")] pub enum ServerboundPacket { - Handshake { version: String }, - Download, + Handshake { + version: String, + }, + ListTasks, + ListInstances { + task: u64, + range: Range<Option<i64>>, + limit: usize, + }, UpdateTask(Task), RemoveTask(u64), } @@ -27,14 +36,20 @@ pub struct Task { pub tags: Vec<String>, pub priority: f64, - pub completed: Option<u64>, - pub scheduled: Option<u64>, + pub completed: Option<i64>, + pub scheduled: Option<i64>, pub occurence: Option<Condition>, pub deadline: Option<Condition>, } #[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Instance { + pub of: u64, + pub at: Range<Option<i64>>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum Condition { From(Box<Condition>), |