feat(CUB-55): add SendStatusUpdate method to AgentStatusHub
This commit is contained in:
@@ -37,6 +37,33 @@ public class AgentStatusHub : Hub<IAgentStatusClient>
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Broadcasts an agent status update to all connected clients.
|
||||
///
|
||||
/// <para>
|
||||
/// Any connected client (or server-side caller) can invoke this method
|
||||
/// to push a status update to every subscriber. The DTO is converted to
|
||||
/// an <see cref="AgentStatusUpdate"/> record and relayed through the
|
||||
/// <see cref="IAgentStatusClient.AgentStatusChanged"/> callback.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
/// <param name="update">The agent status update DTO to broadcast.</param>
|
||||
public async Task SendStatusUpdate(AgentStatusUpdateDto update)
|
||||
{
|
||||
_logger.LogInformation(
|
||||
"Broadcasting status update for agent {AgentId}: {Status}",
|
||||
update.AgentId, update.Status);
|
||||
|
||||
var agentUpdate = update.ToUpdate();
|
||||
|
||||
// Broadcast to all connected clients
|
||||
await Clients.All.AgentStatusChanged(agentUpdate);
|
||||
|
||||
// Also push to the specific agent's group
|
||||
var agentGroup = AgentGroupName(update.AgentId);
|
||||
await Clients.Group(agentGroup).AgentStatusChanged(agentUpdate);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the calling connection to the fleet group.
|
||||
/// Once joined, the client will receive all agent status changes
|
||||
|
||||
Reference in New Issue
Block a user