fix(broker): route all wakes through sqlite, remove transient ping buffer
This commit is contained in:
parent
bd0e4d1012
commit
fac326aa35
9 changed files with 84 additions and 215 deletions
|
|
@ -185,11 +185,7 @@ pub(crate) async fn dispatch_shared(
|
|||
}
|
||||
hive_sh4re::Request::Status => handle_status(coord, agent),
|
||||
hive_sh4re::Request::OperatorMsg { body } => handle_operator_msg(coord, agent, body),
|
||||
hive_sh4re::Request::Wake {
|
||||
from,
|
||||
body,
|
||||
transient,
|
||||
} => handle_wake(coord, agent, from, body, *transient),
|
||||
hive_sh4re::Request::Wake { from, body } => handle_wake(coord, agent, from, body),
|
||||
hive_sh4re::Request::Recent { limit } => handle_recent(coord, agent, *limit),
|
||||
hive_sh4re::Request::Ask {
|
||||
question,
|
||||
|
|
@ -311,33 +307,25 @@ async fn handle_recv(
|
|||
}
|
||||
}
|
||||
|
||||
/// `Wake` — inject a wake into `agent`'s own inbox. Transient wakes
|
||||
/// fire the broadcast channel only (no sqlite row, no redelivery on
|
||||
/// restart — used by bash-task completions); durable wakes persist
|
||||
/// through the broker like any other message.
|
||||
/// `Wake` — inject a wake into `agent`'s own inbox. Persisted through
|
||||
/// the sqlite broker like any other message so the agent can ack it
|
||||
/// via `AckUntil` and it appears in message history for post-mortem.
|
||||
fn handle_wake(
|
||||
coord: &Arc<Coordinator>,
|
||||
agent: &str,
|
||||
from: &str,
|
||||
body: &str,
|
||||
transient: bool,
|
||||
) -> hive_sh4re::Response {
|
||||
let broker = &coord.broker;
|
||||
if transient {
|
||||
broker.ping(agent, from, body);
|
||||
hive_sh4re::Response::Ok
|
||||
} else {
|
||||
match broker.send(&Message {
|
||||
from: from.to_owned(),
|
||||
to: agent.to_owned(),
|
||||
body: body.to_owned(),
|
||||
in_reply_to: None,
|
||||
}) {
|
||||
Ok(()) => hive_sh4re::Response::Ok,
|
||||
Err(e) => hive_sh4re::Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
match coord.broker.send(&Message {
|
||||
from: from.to_owned(),
|
||||
to: agent.to_owned(),
|
||||
body: body.to_owned(),
|
||||
in_reply_to: None,
|
||||
}) {
|
||||
Ok(()) => hive_sh4re::Response::Ok,
|
||||
Err(e) => hive_sh4re::Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue