Skip to content

Commit 3abcf30

Browse files
committed
uses event buffer for mcp events
1 parent 88a9627 commit 3abcf30

File tree

1 file changed

+11
-8
lines changed
  • crates/agent/src/agent/mcp

1 file changed

+11
-8
lines changed

crates/agent/src/agent/mcp/mod.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ use tokio::sync::{
132132
use tracing::{
133133
debug,
134134
error,
135+
info,
135136
warn,
136137
};
137138
use types::Prompt;
@@ -268,6 +269,7 @@ pub struct McpManager {
268269

269270
initializing_servers: HashMap<String, McpServerActorHandle>,
270271
servers: HashMap<String, McpServerActorHandle>,
272+
event_buf: Vec<McpServerActorEvent>,
271273
}
272274

273275
impl McpManager {
@@ -283,6 +285,7 @@ impl McpManager {
283285
cred_path,
284286
initializing_servers: HashMap::new(),
285287
servers: HashMap::new(),
288+
event_buf: Vec::<McpServerActorEvent>::new(),
286289
}
287290
}
288291

@@ -305,6 +308,10 @@ impl McpManager {
305308

306309
async fn main_loop(mut self, mcp_main_loop_to_handle_server_event_tx: broadcast::Sender<McpServerActorEvent>) {
307310
loop {
311+
self.event_buf
312+
.drain(..)
313+
.for_each(|evt| _ = mcp_main_loop_to_handle_server_event_tx.send(evt));
314+
308315
tokio::select! {
309316
req = self.request_rx.recv() => {
310317
let Some(req) = req else {
@@ -316,7 +323,7 @@ impl McpManager {
316323
},
317324
res = self.server_event_rx.recv() => {
318325
if let Some(evt) = res {
319-
self.handle_mcp_actor_event(evt, &mcp_main_loop_to_handle_server_event_tx);
326+
self.handle_mcp_actor_event(evt);
320327
}
321328
}
322329
}
@@ -364,11 +371,7 @@ impl McpManager {
364371
}
365372
}
366373

367-
fn handle_mcp_actor_event(
368-
&mut self,
369-
evt: McpServerActorEvent,
370-
mcp_main_loop_to_handle_server_event_tx: &broadcast::Sender<McpServerActorEvent>,
371-
) {
374+
fn handle_mcp_actor_event(&mut self, evt: McpServerActorEvent) {
372375
// TODO: keep a record of all the different server events received in this layer?
373376
match &evt {
374377
McpServerActorEvent::Initialized {
@@ -390,10 +393,10 @@ impl McpManager {
390393
self.initializing_servers.remove(server_name);
391394
},
392395
McpServerActorEvent::OauthRequest { server_name, oauth_url } => {
393-
tracing::info!(?server_name, ?oauth_url, "received oauth request");
396+
info!(?server_name, ?oauth_url, "received oauth request");
394397
},
395398
}
396-
let _ = mcp_main_loop_to_handle_server_event_tx.send(evt);
399+
self.event_buf.push(evt);
397400
}
398401
}
399402

0 commit comments

Comments
 (0)