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);
}
}