hive-c0re: in-memory broker + per-agent sockets + coordinator state

This commit is contained in:
müde 2026-05-14 21:42:51 +02:00
parent 4545c08908
commit d79b5a39a1
6 changed files with 220 additions and 9 deletions

30
hive-c0re/src/broker.rs Normal file
View file

@ -0,0 +1,30 @@
//! In-memory message broker. Phase 3 replaces this with a sqlite-backed store.
use std::collections::{HashMap, VecDeque};
use std::sync::Mutex;
use hive_sh4re::Message;
#[derive(Default)]
pub struct Broker {
queues: Mutex<HashMap<String, VecDeque<Message>>>,
}
impl Broker {
pub fn new() -> Self {
Self::default()
}
pub fn send(&self, message: Message) {
let mut queues = self.queues.lock().unwrap();
queues
.entry(message.to.clone())
.or_default()
.push_back(message);
}
pub fn recv(&self, recipient: &str) -> Option<Message> {
let mut queues = self.queues.lock().unwrap();
queues.get_mut(recipient).and_then(|q| q.pop_front())
}
}