File size: 983 Bytes
17f328f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //! Read-only connection state; observing a server must not start it.
use std::collections::HashMap;
use codex_protocol::mcp::McpServerConnectionStatus;
use super::McpConnectionSet;
impl McpConnectionSet {
pub(crate) async fn connection_statuses(&self) -> HashMap<String, McpServerConnectionStatus> {
use McpServerConnectionStatus as Status;
let mut statuses = self
.disabled_servers
.iter()
.map(|name| (name.clone(), Status::Disabled))
.collect::<HashMap<_, _>>();
for (name, view) in &self.servers {
let connection = &view.connection;
let client = &connection.client;
let status = if connection.startup_is_dormant() && !client.cancel_token.is_cancelled() {
Status::NotStarted
} else {
client.connection_status().await
};
statuses.insert(name.clone(), status);
}
statuses
}
}
|