| | | 1 | | using AsiBackbone.Core.Emissions; |
| | | 2 | | |
| | | 3 | | namespace AsiBackbone.OpenTelemetry; |
| | | 4 | | |
| | | 5 | | /// <summary> |
| | | 6 | | /// Maps provider-neutral governance emission categories and provider statuses to stable OpenTelemetry event names. |
| | | 7 | | /// </summary> |
| | | 8 | | internal static class OpenTelemetryGovernanceEventNameMapper |
| | | 9 | | { |
| | 2 | 10 | | private static readonly Dictionary<GovernanceEmissionEventType, string> EventNames = |
| | 2 | 11 | | new() |
| | 2 | 12 | | { |
| | 2 | 13 | | [GovernanceEmissionEventType.Decision] = OpenTelemetryGovernanceInstrumentation.DecisionEvaluatedEventName, |
| | 2 | 14 | | [GovernanceEmissionEventType.Acknowledgment] = OpenTelemetryGovernanceInstrumentation.AcknowledgmentRecorded |
| | 2 | 15 | | [GovernanceEmissionEventType.CapabilityToken] = OpenTelemetryGovernanceInstrumentation.CapabilityTokenIssued |
| | 2 | 16 | | [GovernanceEmissionEventType.Gateway] = OpenTelemetryGovernanceInstrumentation.GatewayCompletedEventName, |
| | 2 | 17 | | [GovernanceEmissionEventType.AuditResidue] = OpenTelemetryGovernanceInstrumentation.AuditResidueCreatedEvent |
| | 2 | 18 | | [GovernanceEmissionEventType.AuditLifecycle] = OpenTelemetryGovernanceInstrumentation.LifecycleRecordedEvent |
| | 2 | 19 | | [GovernanceEmissionEventType.Outbox] = OpenTelemetryGovernanceInstrumentation.OutboxUpdatedEventName |
| | 2 | 20 | | }; |
| | | 21 | | |
| | 2 | 22 | | private static readonly string[] FailureStatusMarkers = ["fail", "dead", "retry"]; |
| | | 23 | | |
| | | 24 | | internal static string GetEventName( |
| | | 25 | | GovernanceEmissionEventType eventType, |
| | | 26 | | string? emitterStatus) |
| | | 27 | | { |
| | 66 | 28 | | return eventType is GovernanceEmissionEventType.ProviderEmission |
| | 66 | 29 | | ? IsFailureStatus(emitterStatus) |
| | 66 | 30 | | ? OpenTelemetryGovernanceInstrumentation.EmissionFailedEventName |
| | 66 | 31 | | : OpenTelemetryGovernanceInstrumentation.EmissionDeliveredEventName |
| | 66 | 32 | | : EventNames.TryGetValue(eventType, out string? eventName) |
| | 66 | 33 | | ? eventName |
| | 66 | 34 | | : OpenTelemetryGovernanceInstrumentation.GenericGovernanceEventName; |
| | | 35 | | } |
| | | 36 | | |
| | | 37 | | private static bool IsFailureStatus(string? status) |
| | | 38 | | { |
| | 32 | 39 | | return status is not null |
| | 100 | 40 | | && FailureStatusMarkers.Any(marker => status.Contains(marker, StringComparison.OrdinalIgnoreCase)); |
| | | 41 | | } |
| | | 42 | | } |