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}