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.restart_server(&server.id, cx).detach();
34 }
35 });
36}