From df31b14b3736a1e71dd8c08297f84e3fba228e39 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 6 Jun 2022 22:29:14 +0200 Subject: a --- src/lib.rs | 2 ++ src/main.rs | 27 +++++++++++++++++++++++++++ src/occurence.rs | 25 +++++++++++++++++++++++++ src/protocol.rs | 30 ++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+) create mode 100644 src/lib.rs create mode 100644 src/main.rs create mode 100644 src/occurence.rs create mode 100644 src/protocol.rs (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..0d96cad --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,2 @@ +pub mod protocol; +pub mod occurence; \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..a26a1dd --- /dev/null +++ b/src/main.rs @@ -0,0 +1,27 @@ + +use std::io::{BufRead, BufReader}; +use std::os::unix::net::{UnixListener, UnixStream}; +use std::thread; + +fn handle_client(stream: UnixStream) { + let stream = BufReader::new(stream); + for line in stream.lines() { + println!("{}", line.unwrap()); + } +} + +fn main() { + let listener = UnixListener::bind("/run/user/1000/calendar").unwrap(); + + for stream in listener.incoming() { + match stream { + Ok(stream) => { + thread::spawn(|| handle_client(stream)); + } + Err(err) => { + println!("Error: {}", err); + break; + } + } + } +} diff --git a/src/occurence.rs b/src/occurence.rs new file mode 100644 index 0000000..104438a --- /dev/null +++ b/src/occurence.rs @@ -0,0 +1,25 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Serialize, Deserialize)] +pub enum Condition { + And(Vec), + Or(Vec), + From(Box), + To(Box), + + Year(Range), + Monthofyear(Range), + Weekofmonth(Range), + Dayofyear(Range), + Dayofmonth(Range), + Dayofweek(Range), + + Hour(Range), + Minute(Range), + Second(Range), + + Unix(Range), +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Range(u64, u64); diff --git a/src/protocol.rs b/src/protocol.rs new file mode 100644 index 0000000..fdd84d4 --- /dev/null +++ b/src/protocol.rs @@ -0,0 +1,30 @@ +use serde::{Deserialize, Serialize}; + +use crate::occurence::Condition; + +#[derive(Debug, Serialize, Deserialize)] +pub enum ClientboundPacket { + Handshake { version: String }, + DownloadResponse(Vec), +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum ServerboundPacket { + Download, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Task { + name: String, + description: String, + + tags: Vec, + priority: f64, + + completed: u64, + scheduled: u64, + + occurence: Option, + deadline: Option, +} + -- cgit v1.2.3-70-g09d2