use serde::{Deserialize, Serialize};
pub use starweaver_core::AgentEvent;
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct EventBus {
events: Vec<AgentEvent>,
}
impl EventBus {
#[must_use]
pub fn new() -> Self {
Self::default()
}
pub fn publish(&mut self, event: AgentEvent) {
self.events.push(event);
}
#[must_use]
pub const fn len(&self) -> usize {
self.events.len()
}
#[must_use]
pub const fn is_empty(&self) -> bool {
self.events.is_empty()
}
#[must_use]
pub fn events(&self) -> &[AgentEvent] {
&self.events
}
pub fn drain(&mut self) -> Vec<AgentEvent> {
std::mem::take(&mut self.events)
}
}