diff --git a/server/src/message_queue.rs b/server/src/message_queue.rs index 7c8280f6..94203b90 100644 --- a/server/src/message_queue.rs +++ b/server/src/message_queue.rs @@ -27,6 +27,9 @@ pub enum Message { InstancesRemoved { ids: Vec, }, + InstancesUpdated { + ids: Vec, + }, } #[derive(Default)] diff --git a/server/src/rbx_session.rs b/server/src/rbx_session.rs index 13925d48..00f32ac6 100644 --- a/server/src/rbx_session.rs +++ b/server/src/rbx_session.rs @@ -40,26 +40,36 @@ impl RbxSession { } } + fn path_created_or_updated(&mut self, path: &Path) { + if let Some(instance_id) = self.path_id_tree.get(path) { + // TODO: Replace instance with ID `instance_id` with new instance + } + + // TODO: Crawl up path to find first node represented in the tree or a + // sync point root. That path immediately before we find an existing + // node should be read into the tree. + } + pub fn path_created(&mut self, path: &Path) { info!("Path created: {}", path.display()); - self.path_updated(path); + self.path_created_or_updated(path); } pub fn path_updated(&mut self, path: &Path) { info!("Path updated: {}", path.display()); - let imfs = self.imfs.lock().unwrap(); + { + let imfs = self.imfs.lock().unwrap(); - // If the path doesn't exist or it's a directory, we don't care if it - // updated - let file = match imfs.get(path) { - Some(ImfsItem::Directory(_)) | None => return, - Some(ImfsItem::File(file)) => file, - }; + // If the path doesn't exist or it's a directory, we don't care if it + // updated + match imfs.get(path) { + Some(ImfsItem::Directory(_)) | None => return, + Some(ImfsItem::File(_)) => {}, + } + } - // TODO: Crawl up path to find first node represented in the tree or a - // sync point root. That path immediately before we find an existing - // node should be read into the tree. + self.path_created_or_updated(path); } pub fn path_removed(&mut self, path: &Path) {