docs(xmldoc): fill missing XML docs + strip tracking-ID comments across src
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped

Adds <summary>/<param>/<returns>/<inheritdoc> where missing and removes
project bookkeeping IDs (task/tracking refs) from shipped code comments,
so the docs read cleanly and CommentChecker is quiet except for known
false positives (PLC/protocol terms, event/IEqualityComparer inheritdoc).
Doc/comment-only; no logic changed; solution builds clean.
This commit is contained in:
Joseph Doherty
2026-07-07 12:38:39 -04:00
parent 384dbd7d36
commit 9cad9ed0fc
375 changed files with 1899 additions and 2493 deletions
@@ -25,6 +25,7 @@ public sealed class AlertSignalRBridge : ReceiveActor
/// </summary>
/// <param name="hub">The SignalR hub context to send alerts to.</param>
/// <param name="broadcaster">In-process fan-out read directly by the Blazor Server Alerts page.</param>
/// <returns>The Akka <see cref="Akka.Actor.Props"/> for creating this actor.</returns>
public static Props Props(IHubContext<AlertHub> hub, IInProcessBroadcaster<AlarmTransitionEvent> broadcaster) =>
Akka.Actor.Props.Create(() => new AlertSignalRBridge(hub, broadcaster));
@@ -28,6 +28,8 @@ public sealed class DriverStatusHub : Hub
/// the current snapshot from the in-memory store so the client renders state without
/// waiting for the next change event.
/// </summary>
/// <param name="driverInstanceId">Identifier of the driver instance to join.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
public async Task JoinDriver(string driverInstanceId)
{
var groupName = GroupName(driverInstanceId);
@@ -40,5 +42,7 @@ public sealed class DriverStatusHub : Hub
}
/// <summary>Builds the SignalR group name for a given driver instance.</summary>
/// <param name="driverInstanceId">Identifier of the driver instance.</param>
/// <returns>The SignalR group name for the driver instance.</returns>
public static string GroupName(string driverInstanceId) => $"driver:{driverInstanceId}";
}
@@ -24,6 +24,7 @@ public sealed class DriverStatusSignalRBridge : ReceiveActor
/// <summary>Creates actor props for a <see cref="DriverStatusSignalRBridge"/>.</summary>
/// <param name="hub">The SignalR hub context for pushing snapshots to grouped clients.</param>
/// <param name="store">Snapshot store updated before each SignalR push.</param>
/// <returns>An Akka.NET <see cref="Props"/> instance for spawning the bridge actor.</returns>
public static Props Props(IHubContext<DriverStatusHub> hub, IDriverStatusSnapshotStore store) =>
Akka.Actor.Props.Create(() => new DriverStatusSignalRBridge(hub, store));
@@ -10,6 +10,7 @@ public static class HubRouteBuilderExtensions
/// Maps all OtOpcUa Admin UI SignalR hubs to their configured endpoints.
/// </summary>
/// <param name="app">The endpoint route builder to register hubs on.</param>
/// <returns>The same endpoint route builder, for chaining.</returns>
public static IEndpointRouteBuilder MapOtOpcUaHubs(this IEndpointRouteBuilder app)
{
app.MapHub<FleetStatusHub>(FleetStatusHub.Endpoint);
@@ -24,6 +24,7 @@ public static class HubServiceCollectionExtensions
/// </list>
/// </summary>
/// <param name="services">The service collection.</param>
/// <returns>The same service collection, for chaining.</returns>
public static IServiceCollection AddOtOpcUaDriverStatusServices(this IServiceCollection services)
{
services.AddSingleton<IDriverStatusSnapshotStore, InMemoryDriverStatusSnapshotStore>();
@@ -46,6 +47,7 @@ public static class HubServiceCollectionExtensions
/// </code>
/// </summary>
/// <param name="builder">The Akka configuration builder.</param>
/// <returns>The same builder, for chaining.</returns>
public static AkkaConfigurationBuilder WithOtOpcUaSignalRBridges(this AkkaConfigurationBuilder builder)
{
builder.WithActors((system, registry, resolver) =>
@@ -11,10 +11,18 @@ namespace ZB.MOM.WW.OtOpcUa.AdminUI.Hubs;
/// </summary>
public interface IDriverStatusSnapshotStore
{
/// <summary>Stores or replaces the last-known health snapshot for a driver instance.</summary>
/// <param name="snapshot">The driver health snapshot to store.</param>
void Upsert(DriverHealthChanged snapshot);
/// <summary>Attempts to retrieve the last-known health snapshot for a driver instance.</summary>
/// <param name="driverInstanceId">The driver instance's stable logical ID.</param>
/// <param name="snapshot">The stored snapshot, if found.</param>
/// <returns><see langword="true"/> if a snapshot was found; otherwise <see langword="false"/>.</returns>
bool TryGet(string driverInstanceId, out DriverHealthChanged snapshot);
/// <summary>Returns a point-in-time snapshot of every driver instance's last-known health.</summary>
/// <returns>A read-only collection of the last-known health snapshot for each driver instance.</returns>
IReadOnlyCollection<DriverHealthChanged> GetAll();
/// <summary>
@@ -25,6 +25,7 @@ public interface IInProcessBroadcaster<T>
event Action<T>? Received;
/// <summary>Fan the item out to all current <see cref="Received"/> subscribers.</summary>
/// <param name="item">The item to publish to subscribers.</param>
void Publish(T item);
/// <summary>
@@ -21,6 +21,7 @@ public sealed class ScriptLogSignalRBridge : ReceiveActor
/// <summary>Creates a Props instance for the ScriptLogSignalRBridge.</summary>
/// <param name="hub">The SignalR hub context for sending messages to clients.</param>
/// <param name="broadcaster">In-process fan-out read directly by the Blazor Server Script log page.</param>
/// <returns>A configured <see cref="Akka.Actor.Props"/> for creating the actor.</returns>
public static Props Props(IHubContext<ScriptLogHub> hub, IInProcessBroadcaster<ScriptLogEntry> broadcaster) =>
Akka.Actor.Props.Create(() => new ScriptLogSignalRBridge(hub, broadcaster));