Program Listing for File multi_recordable.h

Return to documentation for file (/tmp/B.puc0r6hi/BUILD/opentelemetry-cpp-1.27.0-build/opentelemetry-cpp-1.27.0/sdk/include/opentelemetry/sdk/logs/multi_recordable.h)

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

#pragma once

#include <stdint.h>
#include <cstddef>
#include <memory>
#include <unordered_map>

#include "opentelemetry/common/attribute_value.h"
#include "opentelemetry/common/macros.h"
#include "opentelemetry/common/timestamp.h"
#include "opentelemetry/logs/log_record.h"
#include "opentelemetry/nostd/string_view.h"
#include "opentelemetry/sdk/logs/processor.h"
#include "opentelemetry/sdk/logs/recordable.h"
#include "opentelemetry/sdk/resource/resource.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace logs
{
class MultiRecordable final : public Recordable
{
  static std::size_t MakeKey(
      const opentelemetry::sdk::logs::LogRecordProcessor &processor) noexcept;

public:
  void AddRecordable(const LogRecordProcessor &processor,
                     std::unique_ptr<Recordable> recordable) noexcept;

  const std::unique_ptr<Recordable> &GetRecordable(
      const LogRecordProcessor &processor) const noexcept;

  std::unique_ptr<Recordable> ReleaseRecordable(const LogRecordProcessor &processor) noexcept;

  void SetTimestamp(opentelemetry::common::SystemTimestamp timestamp) noexcept override;

  void SetObservedTimestamp(opentelemetry::common::SystemTimestamp timestamp) noexcept override;

  void SetSeverity(opentelemetry::logs::Severity severity) noexcept override;

  void SetBody(const opentelemetry::common::AttributeValue &message) noexcept override;

  void SetEventId(int64_t id, nostd::string_view name) noexcept override;

  void SetTraceId(const opentelemetry::trace::TraceId &trace_id) noexcept override;

  void SetSpanId(const opentelemetry::trace::SpanId &span_id) noexcept override;

  void SetTraceFlags(const opentelemetry::trace::TraceFlags &trace_flags) noexcept override;

  void SetAttribute(nostd::string_view key,
                    const opentelemetry::common::AttributeValue &value) noexcept override;

  void SetResource(const opentelemetry::sdk::resource::Resource &resource) noexcept override;

  void SetInstrumentationScope(const opentelemetry::sdk::instrumentationscope::InstrumentationScope
                                   &instrumentation_scope) noexcept override;

private:
  std::unordered_map<std::size_t, std::unique_ptr<Recordable>> recordables_;
};
}  // namespace logs
}  // namespace sdk

OPENTELEMETRY_END_NAMESPACE