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}