Skip to main content

MessageBus

Struct MessageBus 

Source
pub struct MessageBus { /* private fields */ }
Expand description

Async message bus that decouples chat channels from the agent core

Channels push messages to the inbound queue, and the agent processes them and pushes responses to the outbound queue.

Implementations§

Source§

impl MessageBus

Source

pub fn new() -> Self

Create a new message bus

Source

pub fn publish_event( &self, channel: impl Into<String>, chat_id: impl Into<String>, event: AgentEvent, ) -> Result<()>

Publish an event to the broadcast channel

Source

pub fn subscribe_events(&self) -> Receiver<AgentBusEvent>

Subscribe to the event broadcast channel

Source

pub async fn take_inbound_receiver( &self, ) -> Option<UnboundedReceiver<InboundMessage>>

Take the inbound receiver (can only be called once)

Source

pub async fn take_outbound_receiver( &self, ) -> Option<UnboundedReceiver<OutboundMessage>>

Take the outbound receiver (can only be called once)

Source

pub fn publish_inbound(&self, msg: InboundMessage) -> Result<()>

Publish a message from a channel to the agent

Source

pub fn publish_outbound(&self, msg: OutboundMessage) -> Result<()>

Publish a response from the agent to channels

Source

pub async fn subscribe_outbound<F, Fut>( &self, channel: impl Into<String>, callback: F, )
where F: Fn(OutboundMessage) -> Fut + Send + Sync + 'static, Fut: Future<Output = ()> + Send + 'static,

Subscribe to outbound messages for a specific channel with a callback

Source

pub async fn dispatch_outbound_loop(&self)

Dispatch outbound messages to subscribed channels Run this as a background task

Source

pub async fn stop(&self)

Stop the dispatcher loop

Source

pub async fn is_running(&self) -> bool

Check if the bus is running

Trait Implementations§

Source§

impl Clone for MessageBus

Source§

fn clone(&self) -> MessageBus

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for MessageBus

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more