manager: add optional agent param to reminder RPCs
CountPendingReminders and ReminderRollup were hardcoded to MANAGER_AGENT. Both now take agent: Option<String> — None keeps the current behavior (manager's own), Some(name) returns that agent's reminder stats. The broker functions already take an agent name, so this is a thin wire-protocol change. Callers (web UI stats page, post-turn counts) pass None. Closes #122
This commit is contained in:
parent
01cbd5e7cc
commit
1f52746bd9
4 changed files with 19 additions and 7 deletions
|
|
@ -343,7 +343,7 @@ async fn fetch_manager_post_turn_counts(socket: &Path) -> (Option<u64>, Option<u
|
|||
};
|
||||
let reminders = match client::request::<_, ManagerResponse>(
|
||||
socket,
|
||||
&ManagerRequest::CountPendingReminders,
|
||||
&ManagerRequest::CountPendingReminders { agent: None },
|
||||
)
|
||||
.await
|
||||
{
|
||||
|
|
|
|||
|
|
@ -529,6 +529,8 @@ async fn fetch_reminder_stats(socket: &std::path::Path, flavor: Flavor, window_s
|
|||
socket,
|
||||
&hive_sh4re::ManagerRequest::ReminderRollup {
|
||||
since_secs: window_secs,
|
||||
// Manager's own stats page — its own reminders.
|
||||
agent: None,
|
||||
},
|
||||
)
|
||||
.await
|
||||
|
|
|
|||
|
|
@ -409,16 +409,18 @@ async fn dispatch(req: &ManagerRequest, coord: &Arc<Coordinator>) -> ManagerResp
|
|||
},
|
||||
}
|
||||
}
|
||||
ManagerRequest::CountPendingReminders => {
|
||||
match coord.broker.count_pending_reminders_for(MANAGER_AGENT) {
|
||||
ManagerRequest::CountPendingReminders { agent } => {
|
||||
let target = agent.as_deref().unwrap_or(MANAGER_AGENT);
|
||||
match coord.broker.count_pending_reminders_for(target) {
|
||||
Ok(count) => ManagerResponse::PendingRemindersCount { count },
|
||||
Err(e) => ManagerResponse::Err {
|
||||
message: format!("{e:#}"),
|
||||
},
|
||||
}
|
||||
}
|
||||
ManagerRequest::ReminderRollup { since_secs } => {
|
||||
match coord.broker.reminder_rollup_for(MANAGER_AGENT, *since_secs) {
|
||||
ManagerRequest::ReminderRollup { since_secs, agent } => {
|
||||
let target = agent.as_deref().unwrap_or(MANAGER_AGENT);
|
||||
match coord.broker.reminder_rollup_for(target, *since_secs) {
|
||||
Ok(stats) => ManagerResponse::ReminderRollup(stats),
|
||||
Err(e) => ManagerResponse::Err {
|
||||
message: format!("{e:#}"),
|
||||
|
|
|
|||
|
|
@ -804,9 +804,13 @@ pub enum ManagerRequest {
|
|||
#[serde(default)]
|
||||
agent: Option<String>,
|
||||
},
|
||||
/// Count of the manager's own pending reminders. Mirror of
|
||||
/// Count of pending reminders. `agent` selects whose: `None` =
|
||||
/// the manager's own, `Some("<name>")` = that agent's. Mirror of
|
||||
/// `AgentRequest::CountPendingReminders` on the manager surface.
|
||||
CountPendingReminders,
|
||||
CountPendingReminders {
|
||||
#[serde(default)]
|
||||
agent: Option<String>,
|
||||
},
|
||||
/// Reminder statistics: counts of scheduled, delivered, and pending
|
||||
/// reminders (manager-flavour). Mirror of `AgentRequest::ReminderRollup`.
|
||||
ReminderRollup {
|
||||
|
|
@ -814,6 +818,10 @@ pub enum ManagerRequest {
|
|||
/// Pass 0 to include all reminders.
|
||||
#[serde(default)]
|
||||
since_secs: u64,
|
||||
/// Whose reminders to roll up: `None` = the manager's own,
|
||||
/// `Some("<name>")` = that agent's.
|
||||
#[serde(default)]
|
||||
agent: Option<String>,
|
||||
},
|
||||
/// Manager-flavour self-introspection. Same wire shape as
|
||||
/// `AgentRequest::Whoami`, but `role` is always `"manager"`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue