feat(adminui): IFleetDiagnosticsClient skeleton (Akka round-trip tracked as F17)
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
using Akka.Actor;
|
||||||
|
using ZB.MOM.WW.OtOpcUa.Commons.Interfaces;
|
||||||
|
using ZB.MOM.WW.OtOpcUa.Commons.Types;
|
||||||
|
|
||||||
|
namespace ZB.MOM.WW.OtOpcUa.AdminUI.Clients;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <see cref="IFleetDiagnosticsClient"/> that targets a named node's <c>DriverHostActor</c> over
|
||||||
|
/// Akka cluster <see cref="ActorSelection"/>.
|
||||||
|
///
|
||||||
|
/// The actual <c>GetDiagnosticsRequest</c>/<c>NodeDiagnosticsSnapshot</c> round-trip on the
|
||||||
|
/// driver side is staged for follow-up F17 (depends on DriverHostActor exposing the request
|
||||||
|
/// handler; right now it only handles DispatchDeployment). For now the client returns an empty
|
||||||
|
/// snapshot so the UI can render a "no data yet" state.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class FleetDiagnosticsClient : IFleetDiagnosticsClient
|
||||||
|
{
|
||||||
|
private readonly ActorSystem _system;
|
||||||
|
|
||||||
|
public FleetDiagnosticsClient(ActorSystem system)
|
||||||
|
{
|
||||||
|
_system = system;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<NodeDiagnosticsSnapshot> GetDiagnosticsAsync(NodeId nodeId, CancellationToken ct)
|
||||||
|
{
|
||||||
|
// F17: ActorSelection at $"akka.tcp://{system}@{nodeId.Value}:4053/user/driver-host"
|
||||||
|
// → Ask<NodeDiagnosticsSnapshot>(new GetDiagnostics(), timeout).
|
||||||
|
var snapshot = new NodeDiagnosticsSnapshot(
|
||||||
|
nodeId,
|
||||||
|
CurrentRevision: null,
|
||||||
|
Drivers: Array.Empty<DriverInstanceDiagnostics>(),
|
||||||
|
AsOfUtc: DateTime.UtcNow);
|
||||||
|
return Task.FromResult(snapshot);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user