Skip to content

Commit

Permalink
public API and lint
Browse files Browse the repository at this point in the history
  • Loading branch information
lmolkova committed Feb 22, 2024
1 parent 0b299b9 commit 2e04ba1
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ static OpenTelemetry.OpenTelemetryBuilderSdkExtensions.WithMetrics(this OpenTele
static OpenTelemetry.OpenTelemetryBuilderSdkExtensions.WithMetrics(this OpenTelemetry.IOpenTelemetryBuilder! builder, System.Action<OpenTelemetry.Metrics.MeterProviderBuilder!>! configure) -> OpenTelemetry.IOpenTelemetryBuilder!
static OpenTelemetry.OpenTelemetryBuilderSdkExtensions.WithTracing(this OpenTelemetry.IOpenTelemetryBuilder! builder) -> OpenTelemetry.IOpenTelemetryBuilder!
static OpenTelemetry.OpenTelemetryBuilderSdkExtensions.WithTracing(this OpenTelemetry.IOpenTelemetryBuilder! builder, System.Action<OpenTelemetry.Trace.TracerProviderBuilder!>! configure) -> OpenTelemetry.IOpenTelemetryBuilder!
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddSource(this OpenTelemetry.Trace.TracerProviderBuilder! tracerProviderBuilder, System.Predicate<System.Diagnostics.ActivitySource!>! sourcePredicate) -> OpenTelemetry.Trace.TracerProviderBuilder!
93 changes: 46 additions & 47 deletions src/OpenTelemetry/Trace/TracerProviderSdk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.ExceptionServices;
using System.Text;
using System.Text.RegularExpressions;
using Microsoft.Extensions.DependencyInjection;
Expand Down Expand Up @@ -248,52 +247,6 @@ internal TracerProviderSdk(
OpenTelemetrySdkEventSource.Log.TracerProviderSdkEvent("TracerProvider built successfully.");
}

private Func<ActivitySource, bool> GetPredicate(TracerProviderBuilderSdk state)
{
List<Predicate<ActivitySource>> predicates = new List<Predicate<ActivitySource>>();

// Sources can be empty. This happens when user
// is only interested in InstrumentationLibraries
// which do not depend on ActivitySources.
if (state.Sources.Any())
{
predicates.Add(this.GetNameFilter(state));
}

predicates.AddRange(state.SourceSelectionPredicates);

if (this.supportLegacyActivity)
{
predicates.Add((activitySource) => string.IsNullOrEmpty(activitySource.Name));
}

return (activitySource) =>
{
bool shouldListen = false;
for (int i = 0; i < predicates.Count && !shouldListen; i++)
{
shouldListen |= predicates[i](activitySource);
}

return shouldListen;
};
}

private Predicate<ActivitySource> GetNameFilter(TracerProviderBuilderSdk state)
{
Debug.Assert(state.Sources.Any(), "Should only be called when there are name-based source filters.");

// Validation of source name is already done in builder.
if (state.Sources.Any(s => WildcardHelper.ContainsWildcard(s)))
{
var regex = WildcardHelper.GetWildcardRegex(state.Sources);
return (activitySource) => regex.IsMatch(activitySource.Name);
}

var activitySources = new HashSet<string>(state.Sources, StringComparer.OrdinalIgnoreCase);
return (activitySource) => activitySources.Contains(activitySource.Name);
}

internal Resource Resource { get; }

internal List<object> Instrumentations => this.instrumentations;
Expand Down Expand Up @@ -470,6 +423,52 @@ private static ActivitySamplingResult PropagateOrIgnoreData(in ActivityContext p
: ActivitySamplingResult.None;
}

private Func<ActivitySource, bool> GetPredicate(TracerProviderBuilderSdk state)
{
List<Predicate<ActivitySource>> predicates = new List<Predicate<ActivitySource>>();

// Sources can be empty. This happens when user
// is only interested in InstrumentationLibraries
// which do not depend on ActivitySources.
if (state.Sources.Any())
{
predicates.Add(this.GetNamePredicate(state));
}

predicates.AddRange(state.SourceSelectionPredicates);

if (this.supportLegacyActivity)
{
predicates.Add((activitySource) => string.IsNullOrEmpty(activitySource.Name));
}

return (activitySource) =>
{
bool shouldListen = false;
for (int i = 0; i < predicates.Count && !shouldListen; i++)
{
shouldListen |= predicates[i](activitySource);
}

return shouldListen;
};
}

private Predicate<ActivitySource> GetNamePredicate(TracerProviderBuilderSdk state)
{
Debug.Assert(state.Sources.Any(), "Should only be called when there are name-based source predicates.");

// Validation of source name is already done in builder.
if (state.Sources.Any(s => WildcardHelper.ContainsWildcard(s)))
{
var regex = WildcardHelper.GetWildcardRegex(state.Sources);
return (activitySource) => regex.IsMatch(activitySource.Name);
}

var activitySources = new HashSet<string>(state.Sources, StringComparer.OrdinalIgnoreCase);
return (activitySource) => activitySources.Contains(activitySource.Name);
}

private void RunGetRequestedDataAlwaysOnSampler(Activity activity)
{
activity.IsAllDataRequested = true;
Expand Down

0 comments on commit 2e04ba1

Please sign in to comment.