using ZB.MOM.WW.MxGateway.Contracts.Proto.Galaxy; using ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Runtime; namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Browse; /// /// PR 6.1 — Decorator that emits one span /// per GetHierarchy RPC. galaxy.object_count on the span lets ops /// correlate slow Discover passes with Galaxy size without instrumenting the /// discoverer's translation step. /// internal sealed class TracedGalaxyHierarchySource(IGalaxyHierarchySource inner, string clientName) : IGalaxyHierarchySource { /// public async Task> GetHierarchyAsync(CancellationToken cancellationToken) { using var activity = GalaxyTelemetry.ActivitySource.StartActivity("galaxy.get_hierarchy"); activity?.SetTag("galaxy.client", clientName); try { var hierarchy = await inner.GetHierarchyAsync(cancellationToken).ConfigureAwait(false); activity?.SetTag("galaxy.object_count", hierarchy.Count); return hierarchy; } catch (Exception ex) { activity.RecordError(ex); throw; } } }