context_servers.rs

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