pub struct ChannelReporter { /* private fields */ }Expand description
Reporter adapter that forwards events over a channel.
Use this when you need expensive or async event processing without blocking the agent loop. The receiving end can live on a dedicated thread or async task.
§Example
use agentkit_reporting::ChannelReporter;
let (reporter, rx) = ChannelReporter::pair();
// Spawn a consumer on another thread.
std::thread::spawn(move || {
while let Ok(event) = rx.recv() {
println!("{event:?}");
}
});
// `reporter` implements `LoopObserver` — hand it to the agent loop.Implementations§
Source§impl ChannelReporter
impl ChannelReporter
Sourcepub fn new(sender: Sender<AgentEvent>) -> Self
pub fn new(sender: Sender<AgentEvent>) -> Self
Creates a ChannelReporter from an existing sender.
Sourcepub fn pair() -> (Self, Receiver<AgentEvent>)
pub fn pair() -> (Self, Receiver<AgentEvent>)
Creates a ChannelReporter together with the receiving end of the
channel.
Trait Implementations§
Source§impl FallibleObserver for ChannelReporter
impl FallibleObserver for ChannelReporter
Source§fn try_handle_event(&self, event: &AgentEvent) -> Result<(), ReportError>
fn try_handle_event(&self, event: &AgentEvent) -> Result<(), ReportError>
Process an event, returning an error if something goes wrong.
Implementations store mutable state behind interior mutability so the
wrapper can be shared as
Arc<dyn LoopObserver>.Source§impl LoopObserver for ChannelReporter
impl LoopObserver for ChannelReporter
Source§fn handle_event(&self, event: AgentEvent)
fn handle_event(&self, event: AgentEvent)
Called synchronously for every
AgentEvent emitted by the loop driver.
Observers store mutable state behind interior mutability (Mutex,
atomics, channels) so the driver can share an Arc<dyn LoopObserver>
across reusable Agent starts.Auto Trait Implementations§
impl !Freeze for ChannelReporter
impl RefUnwindSafe for ChannelReporter
impl Send for ChannelReporter
impl Sync for ChannelReporter
impl Unpin for ChannelReporter
impl UnsafeUnpin for ChannelReporter
impl UnwindSafe for ChannelReporter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more