From 8cd7d990e009e7da6b8f9031966838127a6434a2 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Mon, 4 Jun 2018 23:10:42 -0700 Subject: [PATCH] Iterative progress * Cleaned up MessageSession code a little bit, it's still pretty suboptimal * Added stub `tests` folder * Renamed rojo_core to librojo --- server/Cargo.toml | 2 +- server/src/bin.rs | 8 ++++---- server/src/message_session.rs | 8 ++++++-- server/src/web.rs | 16 +++++----------- server/tests/web.rs | 5 +++++ 5 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 server/tests/web.rs diff --git a/server/Cargo.toml b/server/Cargo.toml index 8fd78bdd..05bc6d60 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT" repository = "https://github.com/LPGhatguy/rojo" [lib] -name = "rojo_core" +name = "librojo" path = "src/lib.rs" [[bin]] diff --git a/server/src/bin.rs b/server/src/bin.rs index 56173733..bf20429e 100644 --- a/server/src/bin.rs +++ b/server/src/bin.rs @@ -1,11 +1,11 @@ #[macro_use] extern crate clap; -extern crate rojo_core; +extern crate librojo; use std::path::{Path, PathBuf}; use std::process; -use rojo_core::pathext::canonicalish; +use librojo::pathext::canonicalish; fn main() { let matches = clap_app!(rojo => @@ -32,7 +32,7 @@ fn main() { let project_path = Path::new(sub_matches.value_of("PATH").unwrap_or(".")); let full_path = canonicalish(project_path); - rojo_core::commands::init(&full_path); + librojo::commands::init(&full_path); }, ("serve", sub_matches) => { let sub_matches = sub_matches.unwrap(); @@ -55,7 +55,7 @@ fn main() { } }; - rojo_core::commands::serve(&project_path, port); + librojo::commands::serve(&project_path, port); }, _ => { eprintln!("Please specify a subcommand!"); diff --git a/server/src/message_session.rs b/server/src/message_session.rs index 7dd1ccb4..c2b311d5 100644 --- a/server/src/message_session.rs +++ b/server/src/message_session.rs @@ -26,14 +26,14 @@ impl MessageSession { } pub fn push_messages(&self, new_messages: &[Message]) { + let message_listeners = self.message_listeners.lock().unwrap(); + { let mut messages = self.messages.write().unwrap(); messages.extend_from_slice(new_messages); } { - let message_listeners = self.message_listeners.lock().unwrap(); - for listener in message_listeners.values() { listener.send(()).unwrap(); } @@ -57,4 +57,8 @@ impl MessageSession { message_listeners.remove(&id); } } + + pub fn get_message_cursor(&self) -> i32 { + self.messages.read().unwrap().len() as i32 - 1 + } } diff --git a/server/src/web.rs b/server/src/web.rs index 7db6c742..0596e35c 100644 --- a/server/src/web.rs +++ b/server/src/web.rs @@ -52,14 +52,14 @@ struct SubscribeResponse<'a> { messages: &'a [Message], } -struct Server { +pub struct Server { config: WebConfig, server_version: &'static str, server_id: String, } impl Server { - fn new(config: WebConfig) -> Server { + pub fn new(config: WebConfig) -> Server { Server { server_version: env!("CARGO_PKG_VERSION"), server_id: config.server_id.to_string(), @@ -67,7 +67,7 @@ impl Server { } } - fn handle_request(&self, request: &Request) -> Response { + pub fn handle_request(&self, request: &Request) -> Response { router!(request, (GET) (/) => { Response::text("Rojo up and running!") @@ -145,10 +145,7 @@ impl Server { (GET) (/api/read_all) => { let rbx_session = self.config.rbx_session.read().unwrap(); - let message_cursor = { - let messages = self.config.message_session.messages.read().unwrap(); - messages.len() as i32 - 1 - }; + let message_cursor = self.config.message_session.get_message_cursor(); Response::json(&ReadAllResponse { server_id: &self.server_id, @@ -165,10 +162,7 @@ impl Server { let rbx_session = self.config.rbx_session.read().unwrap(); - let message_cursor = { - let messages = self.config.message_session.messages.read().unwrap(); - messages.len() as i32 - 1 - }; + let message_cursor = self.config.message_session.get_message_cursor(); let mut instances = HashMap::new(); diff --git a/server/tests/web.rs b/server/tests/web.rs new file mode 100644 index 00000000..a6f8cd29 --- /dev/null +++ b/server/tests/web.rs @@ -0,0 +1,5 @@ +extern crate librojo; + +fn main() { + println!("Hello, world!"); +} \ No newline at end of file