using System; using System.Diagnostics; namespace StellaOps.Provcache; public static partial class ProvcacheTelemetry { /// /// Start a cache lookup activity. /// /// The VeriKey being looked up. /// The activity or null if tracing is not enabled. public static Activity? StartGetActivity(string veriKey) { var activity = ActivitySource.StartActivity("provcache.get", ActivityKind.Internal); if (activity is null) return null; activity.SetTag("provcache.verikey", TruncateVeriKey(veriKey)); return activity; } /// /// Start a cache store activity. /// /// The VeriKey being stored. /// The trust score of the entry. /// The activity or null if tracing is not enabled. public static Activity? StartSetActivity(string veriKey, int trustScore) { var activity = ActivitySource.StartActivity("provcache.set", ActivityKind.Internal); if (activity is null) return null; activity.SetTag("provcache.verikey", TruncateVeriKey(veriKey)); activity.SetTag("provcache.trust_score", trustScore); return activity; } /// /// Start an invalidation activity. /// /// The type of invalidation (verikey, policy_hash, signer_set_hash, feed_epoch). /// The target value for invalidation. /// The activity or null if tracing is not enabled. public static Activity? StartInvalidateActivity(string invalidationType, string? targetValue) { var activity = ActivitySource.StartActivity("provcache.invalidate", ActivityKind.Internal); if (activity is null) return null; activity.SetTag("provcache.invalidation_type", invalidationType); if (!string.IsNullOrWhiteSpace(targetValue)) { activity.SetTag("provcache.target", TruncateVeriKey(targetValue)); } return activity; } /// /// Start a write-behind flush activity. /// /// Number of entries in the batch. /// The activity or null if tracing is not enabled. public static Activity? StartWriteBehindFlushActivity(int batchSize) { var activity = ActivitySource.StartActivity("provcache.writebehind.flush", ActivityKind.Internal); if (activity is null) return null; activity.SetTag("provcache.batch_size", batchSize); return activity; } /// /// Start a VeriKey construction activity. /// /// The activity or null if tracing is not enabled. public static Activity? StartVeriKeyBuildActivity() { return ActivitySource.StartActivity("provcache.verikey.build", ActivityKind.Internal); } /// /// Start a DecisionDigest construction activity. /// /// The activity or null if tracing is not enabled. public static Activity? StartDecisionDigestBuildActivity() { return ActivitySource.StartActivity("provcache.digest.build", ActivityKind.Internal); } }