@@ -132,6 +132,7 @@ use tokio::sync::{
132132use tracing:: {
133133 debug,
134134 error,
135+ info,
135136 warn,
136137} ;
137138use 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
273275impl 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