add ack_until: bulk-ack inbox messages by id + surface msg ids in wake prompts and recv (closes #2125)
This commit is contained in:
parent
b191858366
commit
34374fd10a
8 changed files with 221 additions and 16 deletions
|
|
@ -237,6 +237,7 @@ pub(crate) async fn dispatch_shared(
|
|||
}
|
||||
hive_sh4re::Request::CreateRepo { repo } => handle_create_repo(agent, repo).await,
|
||||
hive_sh4re::Request::AckTurn => handle_ack_turn(coord, agent),
|
||||
hive_sh4re::Request::AckUntil { up_to } => handle_ack_until(coord, agent, *up_to),
|
||||
hive_sh4re::Request::RequeueInflight => handle_requeue_inflight(coord, agent),
|
||||
hive_sh4re::Request::GracefulStopComplete => {
|
||||
// Harness drained + is exiting: clear the fence so the
|
||||
|
|
@ -483,6 +484,17 @@ fn handle_ack_turn(coord: &Arc<Coordinator>, agent: &str) -> hive_sh4re::Respons
|
|||
}
|
||||
}
|
||||
|
||||
/// `AckUntil` — bulk-ack every message addressed to `agent` with row
|
||||
/// id `<= up_to` (the agent-side backlog-triage escape hatch).
|
||||
fn handle_ack_until(coord: &Arc<Coordinator>, agent: &str, up_to: i64) -> hive_sh4re::Response {
|
||||
match coord.broker.ack_until(agent, up_to) {
|
||||
Ok(count) => hive_sh4re::Response::Acked { count },
|
||||
Err(e) => hive_sh4re::Response::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/// `RequeueInflight` — resurface `agent`'s unacked in-flight messages
|
||||
/// (crash recovery on harness boot).
|
||||
fn handle_requeue_inflight(coord: &Arc<Coordinator>, agent: &str) -> hive_sh4re::Response {
|
||||
|
|
|
|||
Loading…
Reference in a new issue