diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriver.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriver.cs index c1ab307c..c6f2ab5f 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriver.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriver.cs @@ -49,11 +49,11 @@ public sealed class GalaxyDriver private IGalaxyHierarchySource? _hierarchySource; private GalaxyRepositoryClient? _ownedRepositoryClient; - // PR 4.2 — IGalaxyDataReader is the test seam for IReadable. PR 4.4 supplies the - // production implementation that wraps GalaxyMxSession's SubscribeBulk + StreamEvents - // pump; until then ReadAsync throws NotSupportedException when the reader is null - // (legacy-host backend handles reads in production via DriverNodeManager's - // capability-routing). + // IGalaxyDataReader is the test seam for IReadable. Production ReadAsync calls + // ReadViaSubscribeOnceAsync (SubscribeBulk + first-event wait + Unsubscribe) through + // the live GalaxyMxSession built by InitializeAsync; no legacy-host backend exists. + // When a test injects a reader via the internal ctor, that injected reader is used + // instead so capability flow can be exercised without a real gRPC round-trip. private IGalaxyDataReader? _dataReader; // PR 4.3 — IGalaxyDataWriter is the test seam for IWritable. Production wraps @@ -90,9 +90,10 @@ public sealed class GalaxyDriver // handles are added/removed (Driver.Galaxy-006 fix: HashSet.First() is unstable). private readonly List _alarmSubscriptions = new(); - // PR 4.W — production runtime owned by InitializeAsync. The driver builds these - // when it opens a real gw session; tests bypass them by injecting seams via the - // internal ctor. + // Production runtime owned by InitializeAsync (BuildProductionRuntimeAsync). The + // driver builds these when it opens a real gw session; tests bypass them by + // injecting seams via the internal ctor, which leaves both fields null and skips + // BuildProductionRuntimeAsync entirely. private GalaxyMxSession? _ownedMxSession; private MxGatewayClient? _ownedMxClient; @@ -666,9 +667,10 @@ public sealed class GalaxyDriver ObjectDisposedException.ThrowIf(_disposed, this); ArgumentNullException.ThrowIfNull(builder); - // PR 4.3 — capture SecurityClassification per attribute. PR 4.W — also refresh - // the per-platform probe watcher's membership after discovery so newly-added - // $WinPlatform / $AppEngine objects start advising their ScanState attribute. + // Wrap the builder with a SecurityCapturingBuilder so each discovered attribute's + // SecurityClassification is recorded in _securityByFullRef for write-time routing. + // After discovery, SyncPlatformsAsync refreshes the probe watcher's membership so + // newly added $WinPlatform / $AppEngine objects start advising their ScanState attribute. var capturingBuilder = new SecurityCapturingBuilder(builder, _securityByFullRef); var source = _hierarchySource ??= BuildDefaultHierarchySource(); var discoverer = new GalaxyDiscoverer(source); diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs index 328aae88..3a2cbd50 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/GalaxyDriverFactoryExtensions.cs @@ -14,10 +14,9 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy; /// into live instances. /// /// -/// The driver-type name "GalaxyMxGateway" is intentionally distinct from the -/// legacy proxy's "Galaxy" so both factories can be registered simultaneously -/// during parity testing (Phase 5). PR 4.W will add a server-side Galaxy:Backend -/// switch that materialises a Galaxy DriverInstance under one or the other type name. +/// "GalaxyMxGateway" is the sole Galaxy driver-type name. The legacy +/// "Galaxy" proxy type (retired in PR 7.2) no longer exists; there is no +/// server-side backend switch — every Galaxy DriverInstance row uses this type name. /// public static class GalaxyDriverFactoryExtensions { diff --git a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Health/HostStatusAggregator.cs b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Health/HostStatusAggregator.cs index a606f908..01f8cc3f 100644 --- a/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Health/HostStatusAggregator.cs +++ b/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Galaxy/Health/HostStatusAggregator.cs @@ -18,7 +18,8 @@ namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Health; /// () both feed this aggregator; the /// consumes from /// IHostConnectivityProbe.GetHostStatuses() and re-raises -/// as the driver-level event (wired in PR 4.W). +/// as the driver-level event (v1's +/// GalaxyProxyDriver.OnHostConnectivityUpdate equivalent). /// public sealed class HostStatusAggregator {