From 3241f5d57aed9e43a6493cccd65077fcdd1a1eaf Mon Sep 17 00:00:00 2001 From: Joshua Higgins Date: Sun, 23 Jun 2024 00:01:05 -0400 Subject: [PATCH] Fleshing out server --- server/src/server.rs | 30 +++++++++++++++++++++++++++++- server/src/types.rs | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/server/src/server.rs b/server/src/server.rs index 4e020bc..778f883 100644 --- a/server/src/server.rs +++ b/server/src/server.rs @@ -2,7 +2,7 @@ use std::net::SocketAddr; use futures::future; use futures::future::Ready; use tarpc::context::Context; -use crate::types::RealmChat; +use crate::types::{Message, RealmChat, Room, SuccessCode, User}; #[derive(Clone)] pub struct RealmChatServer(pub SocketAddr); @@ -11,4 +11,32 @@ impl RealmChat for RealmChatServer { fn test(self, context: Context, name: String) -> Ready { future::ready(format!("Hello, {name}!")) } + + fn send_message(self, context: Context, message: Message) -> Ready { + todo!() + } + + async fn get_message_from_guid(self, context: Context, guid: String) -> Message { + todo!() + } + + async fn get_rooms(self, context: Context) -> Vec { + todo!() + } + + async fn get_room(self, context: Context, roomid: String) -> Room { + todo!() + } + + async fn get_user(self, context: Context, userid: String) -> User { + todo!() + } + + async fn get_joined_users(self, context: Context) -> Vec { + todo!() + } + + async fn get_online_users(self, context: Context) -> Vec { + todo!() + } } \ No newline at end of file diff --git a/server/src/types.rs b/server/src/types.rs index 43d5197..c05cbf8 100644 --- a/server/src/types.rs +++ b/server/src/types.rs @@ -1,11 +1,30 @@ +use tarpc::serde::{Deserialize, Serialize}; + #[tarpc::service] pub trait RealmChat { async fn test(name: String) -> String; + async fn send_message(message: Message) -> SuccessCode; + + async fn get_message_from_guid(guid: String) -> Message; + async fn get_rooms() -> Vec; + async fn get_room(roomid: String) -> Room; + async fn get_user(userid: String) -> User; + async fn get_joined_users() -> Vec; + async fn get_online_users() -> Vec; } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum SuccessCode { + Success = 200, + Error = 400, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct Message { pub guid: String, + pub timestamp: u64, + pub user: User, + pub room: Room, pub text: Option, pub attachments: Option>, pub reply_to_guid: Option, @@ -13,7 +32,20 @@ pub struct Message { pub redact: bool, } -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct User { + pub userid: String, + pub name: String, + //TODO +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Room { + pub roomid: String, + //TODO +} + +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct Attachment { pub guid: String, //TODO