Skip to content

add MessageBroadcaster abstraction with filtering and metadata#93

Open
anaslimem wants to merge 1 commit intoagentclientprotocol:mainfrom
anaslimem:refactor-broadcast-abstraction
Open

add MessageBroadcaster abstraction with filtering and metadata#93
anaslimem wants to merge 1 commit intoagentclientprotocol:mainfrom
anaslimem:refactor-broadcast-abstraction

Conversation

@anaslimem
Copy link
Copy Markdown
Contributor

Summary

Added MessageBroadcaster as a cleaner abstraction for broadcasting RPC messages, replacing the raw StreamSender that was previously passed directly to the IO handler.

Changes

  • New MessageBroadcaster - A proper abstraction layer with built-in filtering support
  • New MessageFilter - Allows excluding specific methods or directions from broadcasts
  • New StreamMessageMetadata - Adds timestamp to each message (time since connection started)
  • Method tracking in responses - Responses now include the method name they belong to

Example Usage

// Filter out noisy methods
let filter = MessageFilter::new()
    .exclude_method("internal/debug")
    .exclude_direction(StreamMessageDirection::Incoming);

// When receiving messages, they now have timestamps
while let Ok(msg) = receiver.recv().await {
    println!("Method: {:?}, Latency: {:?}", 
        msg.message.method(), 
        msg.metadata.timestamp
    );
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant