Program Listing for File filter.h
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/opentelemetry-cpp/checkouts/v1.8.1/sdk/include/opentelemetry/sdk/metrics/exemplar/filter.h
)
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
#pragma once
#include "opentelemetry/context/context.h"
#include "opentelemetry/sdk/common/attribute_utils.h"
OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace metrics
{
using MetricAttributes = opentelemetry::sdk::common::OrderedAttributeMap;
class ExemplarFilter
{
public:
// Returns whether or not a reservoir should attempt to filter a measurement.
virtual bool ShouldSampleMeasurement(int64_t value,
const MetricAttributes &attributes,
const opentelemetry::context::Context &context) noexcept = 0;
// Returns whether or not a reservoir should attempt to filter a measurement.
virtual bool ShouldSampleMeasurement(double value,
const MetricAttributes &attributes,
const opentelemetry::context::Context &context) noexcept = 0;
virtual ~ExemplarFilter() = default;
static std::shared_ptr<ExemplarFilter> GetNeverSampleFilter() noexcept;
static std::shared_ptr<ExemplarFilter> GetAlwaysSampleFilter() noexcept;
static std::shared_ptr<ExemplarFilter> GetWithTraceSampleFilter() noexcept;
};
} // namespace metrics
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE