diff --git a/src/serve_session.rs b/src/serve_session.rs index eee32144..a26b8184 100644 --- a/src/serve_session.rs +++ b/src/serve_session.rs @@ -1,4 +1,7 @@ -use std::collections::HashSet; +use std::{ + collections::HashSet, + sync::{Mutex, MutexGuard}, +}; use crate::{ imfs::new::{Imfs, ImfsFetcher}, @@ -12,7 +15,7 @@ use crate::{ pub struct ServeSession { root_project: Option, session_id: SessionId, - tree: RojoTree, + tree: Mutex, message_queue: MessageQueue<()>, // TODO: Real message type imfs: Imfs, } @@ -25,14 +28,14 @@ impl ServeSession { ServeSession { session_id, root_project, - tree, + tree: Mutex::new(tree), message_queue, imfs, } } - pub fn tree(&self) -> &RojoTree { - &self.tree + pub fn tree(&self) -> MutexGuard<'_, RojoTree> { + self.tree.lock().unwrap() } pub fn imfs(&self) -> &Imfs { diff --git a/src/web/api.rs b/src/web/api.rs index 4bb6eedd..4bd676b9 100644 --- a/src/web/api.rs +++ b/src/web/api.rs @@ -13,8 +13,8 @@ use crate::{ serve_session::ServeSession, web::{ interface::{ - Instance, NotFoundError, ReadResponse, ServerInfoResponse, SubscribeResponse, - PROTOCOL_VERSION, SERVER_VERSION, + Instance, NotFoundError, ReadResponse, ServerInfoResponse, PROTOCOL_VERSION, + SERVER_VERSION, }, util::{json, json_ok}, },