Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: always_off
class AlwaysOffSamplerConfiguration : public SamplerConfiguration
{
public:
void Accept(SamplerConfigurationVisitor *visitor) const override
{
visitor->VisitAlwaysOff(this);
}
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: always_on
class AlwaysOnSamplerConfiguration : public SamplerConfiguration
{
public:
void Accept(SamplerConfigurationVisitor *visitor) const override { visitor->VisitAlwaysOn(this); }
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <memory>
#include <string>

#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: jaeger_remote
class JaegerRemoteSamplerConfiguration : public SamplerConfiguration
{
public:
void Accept(SamplerConfigurationVisitor *visitor) const override
{
visitor->VisitJaegerRemote(this);
}

std::string endpoint;
std::size_t interval{0};
std::unique_ptr<SamplerConfiguration> initial_sampler;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include <memory>

#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: parent_based
class ParentBasedSamplerConfiguration : public SamplerConfiguration
{
public:
void Accept(SamplerConfigurationVisitor *visitor) const override
{
visitor->VisitParentBased(this);
}

std::unique_ptr<SamplerConfiguration> root;
std::unique_ptr<SamplerConfiguration> remote_parent_sampled;
std::unique_ptr<SamplerConfiguration> remote_parent_not_sampled;
std::unique_ptr<SamplerConfiguration> local_parent_sampled;
std::unique_ptr<SamplerConfiguration> local_parent_not_sampled;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

class SamplerConfigurationVisitor;

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: Sampler
class SamplerConfiguration
{
public:
SamplerConfiguration() = default;
SamplerConfiguration(SamplerConfiguration &&) = default;
SamplerConfiguration(const SamplerConfiguration &) = default;
SamplerConfiguration &operator=(SamplerConfiguration &&) = default;
SamplerConfiguration &operator=(const SamplerConfiguration &other) = default;
virtual ~SamplerConfiguration() = default;

virtual void Accept(SamplerConfigurationVisitor *visitor) const = 0;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

class AlwaysOffSamplerConfiguration;
class AlwaysOnSamplerConfiguration;
class JaegerRemoteSamplerConfiguration;
class ParentBasedSamplerConfiguration;
class TraceIdRatioBasedSamplerConfiguration;
class ExtensionSamplerConfiguration;

class SamplerConfigurationVisitor
{
public:
SamplerConfigurationVisitor() = default;
SamplerConfigurationVisitor(SamplerConfigurationVisitor &&) = default;
SamplerConfigurationVisitor(const SamplerConfigurationVisitor &) = default;
SamplerConfigurationVisitor &operator=(SamplerConfigurationVisitor &&) = default;
SamplerConfigurationVisitor &operator=(const SamplerConfigurationVisitor &other) = default;
virtual ~SamplerConfigurationVisitor() = default;

virtual void VisitAlwaysOff(const AlwaysOffSamplerConfiguration *model) = 0;
virtual void VisitAlwaysOn(const AlwaysOnSamplerConfiguration *model) = 0;
virtual void VisitJaegerRemote(const JaegerRemoteSamplerConfiguration *model) = 0;
virtual void VisitParentBased(const ParentBasedSamplerConfiguration *model) = 0;
virtual void VisitTraceIdRatioBased(const TraceIdRatioBasedSamplerConfiguration *model) = 0;
virtual void VisitExtension(const ExtensionSamplerConfiguration *model) = 0;
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/sdk/configuration/sampler_configuration.h"
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace sdk
{
namespace configuration
{

// YAML-SCHEMA: schema/tracer_provider.json
// YAML-NODE: trace_id_ratio_based
class TraceIdRatioBasedSamplerConfiguration : public SamplerConfiguration
{
public:
void Accept(SamplerConfigurationVisitor *visitor) const override
{
visitor->VisitTraceIdRatioBased(this);
}

double ratio{0.0};
};

} // namespace configuration
} // namespace sdk
OPENTELEMETRY_END_NAMESPACE
Loading