context_servers.rs

 1use gpui::{actions, AppContext, Context, ViewContext};
 2use manager::ContextServerManager;
 3use workspace::Workspace;
 4
 5pub mod client;
 6pub mod manager;
 7pub mod protocol;
 8mod registry;
 9pub mod types;
10
11pub use registry::*;
12
13actions!(context_servers, [Restart]);
14
15/// The namespace for the context servers actions.
16const CONTEXT_SERVERS_NAMESPACE: &'static str = "context_servers";
17
18pub fn init(cx: &mut AppContext) {
19    log::info!("initializing context server client");
20    manager::init(cx);
21    ContextServerRegistry::register(cx);
22
23    cx.observe_new_views(
24        |workspace: &mut Workspace, _cx: &mut ViewContext<Workspace>| {
25            workspace.register_action(restart_servers);
26        },
27    )
28    .detach();
29}
30
31fn restart_servers(_workspace: &mut Workspace, _action: &Restart, cx: &mut ViewContext<Workspace>) {
32    let model = ContextServerManager::global(cx);
33    cx.update_model(&model, |manager, cx| {
34        for server in manager.servers() {
35            manager
36                .restart_server(&server.id, cx)
37                .detach_and_log_err(cx);
38        }
39    });
40}