diff --git a/crates/workspace-server/src/runtime_subscription.rs b/crates/workspace-server/src/runtime_subscription.rs index 94002e5f..69b178ee 100644 --- a/crates/workspace-server/src/runtime_subscription.rs +++ b/crates/workspace-server/src/runtime_subscription.rs @@ -200,6 +200,18 @@ impl RuntimeSubscriptionBroker { } } + pub fn runtime_ids(&self) -> Vec { + let mut runtime_ids = self + .registrations + .read() + .expect("broker registry poisoned") + .keys() + .cloned() + .collect::>(); + runtime_ids.sort(); + runtime_ids + } + pub fn status(&self, runtime_id: &str) -> Option { let status = self .registrations diff --git a/crates/workspace-server/src/runtime_subscription_tests.rs b/crates/workspace-server/src/runtime_subscription_tests.rs index 78a53ab0..48a2287e 100644 --- a/crates/workspace-server/src/runtime_subscription_tests.rs +++ b/crates/workspace-server/src/runtime_subscription_tests.rs @@ -283,6 +283,7 @@ async fn embedded_runtime_uses_in_process_subscription_source() { let worker = runtime.list_workers().unwrap().remove(0); let broker = RuntimeSubscriptionBroker::new("local"); broker.register_embedded_runtime("embedded-worker-runtime", runtime.clone()); + assert_eq!(broker.runtime_ids(), vec!["embedded-worker-runtime"]); let mut subscription = broker .subscribe( "embedded-worker-runtime",