From 5bb535385b63a719ee794e80b1f8e65bb8e60eb6 Mon Sep 17 00:00:00 2001 From: alemidev Date: Sun, 28 Aug 2022 23:36:46 +0200 Subject: [PATCH] feat: added events struct there's also quite some commented out code. I first approached the problem in a OOP way, but that's not the right way for rust. Keeping that code just to remember my vision. --- src/server/events.rs | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/server/events.rs diff --git a/src/server/events.rs b/src/server/events.rs new file mode 100644 index 0000000..23e7d12 --- /dev/null +++ b/src/server/events.rs @@ -0,0 +1,89 @@ +use crate::actor::state::{User, UserCursor}; + +#[derive(Debug, Clone)] +pub enum Event { + UserJoin { user: User }, + UserLeave { name: String }, + Cursor { user: String, cursor: UserCursor }, + BufferNew { path: String }, + BufferDelete { path: String }, +} + +// pub type Event = Box; +// +// pub trait EventInterface { +// fn class(&self) -> EventClass; +// fn unwrap(e: Event) -> Option where Self: Sized; +// +// fn wrap(self) -> Event { +// Box::new(self) +// } +// } +// +// +// // User joining workspace +// +// pub struct UserJoinEvent { +// user: User, +// } +// +// impl EventInterface for UserJoinEvent { +// fn class(&self) -> EventClass { EventClass::UserJoin } +// fn unwrap(e: Event) -> Option where Self: Sized { +// if matches!(e.class(), EventClass::UserJoin) { +// return Some(*e); +// } +// None +// } +// } +// +// +// // User leaving workspace +// +// pub struct UserLeaveEvent { +// name: String, +// } +// +// impl EventInterface for UserLeaveEvent { +// fn class(&self) -> EventClass { EventClass::UserLeave } +// } +// +// +// // Cursor movement +// +// pub struct CursorEvent { +// user: String, +// cursor: UserCursor, +// } +// +// impl EventInterface for CursorEvent { +// fn class(&self) -> EventClass { EventClass::Cursor } +// } +// +// impl CursorEvent { +// pub fn new(user:String, cursor: UserCursor) -> Self { +// CursorEvent { user, cursor } +// } +// } +// +// +// // Buffer added +// +// pub struct BufferNewEvent { +// path: String, +// } +// +// impl EventInterface for BufferNewEvent { +// fn class(&self) -> EventClass { EventClass::BufferNew } +// } +// +// +// // Buffer deleted +// +// pub struct BufferDeleteEvent { +// path: String, +// } +// +// impl EventInterface for BufferDeleteEvent { +// fn class(&self) -> EventClass { EventClass::BufferDelete } +// }