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
15pub fn init(cx: &mut AppContext) {
16    log::info!("initializing context server client");
17    manager::init(cx);
18    ContextServerRegistry::register(cx);
19
20    cx.observe_new_views(
21        |workspace: &mut Workspace, _cx: &mut ViewContext<Workspace>| {
22            workspace.register_action(restart_servers);
23        },
24    )
25    .detach();
26}
27
28fn restart_servers(_workspace: &mut Workspace, _action: &Restart, cx: &mut ViewContext<Workspace>) {
29    let model = ContextServerManager::global(cx);
30    cx.update_model(&model, |manager, cx| {
31        for server in manager.servers() {
32            manager
33                .restart_server(&server.id, cx)
34                .detach_and_log_err(cx);
35        }
36    });
37}