starweaver_context/
event.rs1use serde::{Deserialize, Serialize};
4
5pub use starweaver_core::AgentEvent;
6
7#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
9pub struct EventBus {
10 events: Vec<AgentEvent>,
11}
12
13impl EventBus {
14 #[must_use]
16 pub fn new() -> Self {
17 Self::default()
18 }
19
20 pub fn publish(&mut self, event: AgentEvent) {
22 self.events.push(event);
23 }
24
25 #[must_use]
27 pub const fn len(&self) -> usize {
28 self.events.len()
29 }
30
31 #[must_use]
33 pub const fn is_empty(&self) -> bool {
34 self.events.is_empty()
35 }
36
37 #[must_use]
39 pub fn events(&self) -> &[AgentEvent] {
40 &self.events
41 }
42
43 pub fn drain(&mut self) -> Vec<AgentEvent> {
45 std::mem::take(&mut self.events)
46 }
47}