Program Listing for File exemplar_data.h

Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/opentelemetry-cpp/checkouts/latest/sdk/include/opentelemetry/sdk/metrics/data/exemplar_data.h)

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <memory>

#include "opentelemetry/common/timestamp.h"
#include "opentelemetry/sdk/common/attribute_utils.h"
#include "opentelemetry/sdk/metrics/data/metric_data.h"
#include "opentelemetry/trace/span_context.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace metrics
{
using MetricAttributes = opentelemetry::sdk::common::OrderedAttributeMap;
class ExemplarData
{
public:
  static ExemplarData Create(std::shared_ptr<trace::SpanContext> context,
                             const opentelemetry::common::SystemTimestamp &timestamp,
                             const PointDataAttributes &point_data_attr)
  {
    return ExemplarData(context, timestamp, point_data_attr);
  }

  MetricAttributes GetFilteredAttributes() { return MetricAttributes{}; }

  opentelemetry::common::SystemTimestamp GetEpochNanos() { return timestamp_; }

  const trace::SpanContext &GetSpanContext() const noexcept { return context_; }

  static PointType CreateSumPointData(ValueType value)
  {
    SumPointData sum_point_data{};
    sum_point_data.value_ = value;
    return sum_point_data;
  }

  static PointType CreateLastValuePointData(ValueType value)
  {
    LastValuePointData last_value_point_data{};
    last_value_point_data.value_              = value;
    last_value_point_data.is_lastvalue_valid_ = true;
    last_value_point_data.sample_ts_          = opentelemetry::common::SystemTimestamp{};
    return last_value_point_data;
  }

  static PointType CreateDropPointData() { return DropPointData{}; }

private:
  ExemplarData(std::shared_ptr<trace::SpanContext> context,
               opentelemetry::common::SystemTimestamp timestamp,
               const PointDataAttributes &point_data_attr)
      : context_(*context.get()), timestamp_(timestamp), point_data_attr_(point_data_attr)
  {}

  trace::SpanContext context_;
  opentelemetry::common::SystemTimestamp timestamp_;
  PointDataAttributes point_data_attr_;
};

}  // namespace metrics
}  // namespace sdk
OPENTELEMETRY_END_NAMESPACE