Skip to content

Commit 82bddef

Browse files
authored
[CONFIGURATION] File configuration - sampler model (#3468)
1 parent 89b6d0f commit 82bddef

7 files changed

+233
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
7+
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
8+
#include "opentelemetry/version.h"
9+
10+
OPENTELEMETRY_BEGIN_NAMESPACE
11+
namespace sdk
12+
{
13+
namespace configuration
14+
{
15+
16+
// YAML-SCHEMA: schema/tracer_provider.json
17+
// YAML-NODE: always_off
18+
class AlwaysOffSamplerConfiguration : public SamplerConfiguration
19+
{
20+
public:
21+
void Accept(SamplerConfigurationVisitor *visitor) const override
22+
{
23+
visitor->VisitAlwaysOff(this);
24+
}
25+
};
26+
27+
} // namespace configuration
28+
} // namespace sdk
29+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
7+
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
8+
#include "opentelemetry/version.h"
9+
10+
OPENTELEMETRY_BEGIN_NAMESPACE
11+
namespace sdk
12+
{
13+
namespace configuration
14+
{
15+
16+
// YAML-SCHEMA: schema/tracer_provider.json
17+
// YAML-NODE: always_on
18+
class AlwaysOnSamplerConfiguration : public SamplerConfiguration
19+
{
20+
public:
21+
void Accept(SamplerConfigurationVisitor *visitor) const override { visitor->VisitAlwaysOn(this); }
22+
};
23+
24+
} // namespace configuration
25+
} // namespace sdk
26+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
10+
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
11+
#include "opentelemetry/version.h"
12+
13+
OPENTELEMETRY_BEGIN_NAMESPACE
14+
namespace sdk
15+
{
16+
namespace configuration
17+
{
18+
19+
// YAML-SCHEMA: schema/tracer_provider.json
20+
// YAML-NODE: jaeger_remote
21+
class JaegerRemoteSamplerConfiguration : public SamplerConfiguration
22+
{
23+
public:
24+
void Accept(SamplerConfigurationVisitor *visitor) const override
25+
{
26+
visitor->VisitJaegerRemote(this);
27+
}
28+
29+
std::string endpoint;
30+
std::size_t interval{0};
31+
std::unique_ptr<SamplerConfiguration> initial_sampler;
32+
};
33+
34+
} // namespace configuration
35+
} // namespace sdk
36+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
8+
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
9+
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
10+
#include "opentelemetry/version.h"
11+
12+
OPENTELEMETRY_BEGIN_NAMESPACE
13+
namespace sdk
14+
{
15+
namespace configuration
16+
{
17+
18+
// YAML-SCHEMA: schema/tracer_provider.json
19+
// YAML-NODE: parent_based
20+
class ParentBasedSamplerConfiguration : public SamplerConfiguration
21+
{
22+
public:
23+
void Accept(SamplerConfigurationVisitor *visitor) const override
24+
{
25+
visitor->VisitParentBased(this);
26+
}
27+
28+
std::unique_ptr<SamplerConfiguration> root;
29+
std::unique_ptr<SamplerConfiguration> remote_parent_sampled;
30+
std::unique_ptr<SamplerConfiguration> remote_parent_not_sampled;
31+
std::unique_ptr<SamplerConfiguration> local_parent_sampled;
32+
std::unique_ptr<SamplerConfiguration> local_parent_not_sampled;
33+
};
34+
35+
} // namespace configuration
36+
} // namespace sdk
37+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
14+
class SamplerConfigurationVisitor;
15+
16+
// YAML-SCHEMA: schema/tracer_provider.json
17+
// YAML-NODE: Sampler
18+
class SamplerConfiguration
19+
{
20+
public:
21+
SamplerConfiguration() = default;
22+
SamplerConfiguration(SamplerConfiguration &&) = default;
23+
SamplerConfiguration(const SamplerConfiguration &) = default;
24+
SamplerConfiguration &operator=(SamplerConfiguration &&) = default;
25+
SamplerConfiguration &operator=(const SamplerConfiguration &other) = default;
26+
virtual ~SamplerConfiguration() = default;
27+
28+
virtual void Accept(SamplerConfigurationVisitor *visitor) const = 0;
29+
};
30+
31+
} // namespace configuration
32+
} // namespace sdk
33+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
14+
class AlwaysOffSamplerConfiguration;
15+
class AlwaysOnSamplerConfiguration;
16+
class JaegerRemoteSamplerConfiguration;
17+
class ParentBasedSamplerConfiguration;
18+
class TraceIdRatioBasedSamplerConfiguration;
19+
class ExtensionSamplerConfiguration;
20+
21+
class SamplerConfigurationVisitor
22+
{
23+
public:
24+
SamplerConfigurationVisitor() = default;
25+
SamplerConfigurationVisitor(SamplerConfigurationVisitor &&) = default;
26+
SamplerConfigurationVisitor(const SamplerConfigurationVisitor &) = default;
27+
SamplerConfigurationVisitor &operator=(SamplerConfigurationVisitor &&) = default;
28+
SamplerConfigurationVisitor &operator=(const SamplerConfigurationVisitor &other) = default;
29+
virtual ~SamplerConfigurationVisitor() = default;
30+
31+
virtual void VisitAlwaysOff(const AlwaysOffSamplerConfiguration *model) = 0;
32+
virtual void VisitAlwaysOn(const AlwaysOnSamplerConfiguration *model) = 0;
33+
virtual void VisitJaegerRemote(const JaegerRemoteSamplerConfiguration *model) = 0;
34+
virtual void VisitParentBased(const ParentBasedSamplerConfiguration *model) = 0;
35+
virtual void VisitTraceIdRatioBased(const TraceIdRatioBasedSamplerConfiguration *model) = 0;
36+
virtual void VisitExtension(const ExtensionSamplerConfiguration *model) = 0;
37+
};
38+
39+
} // namespace configuration
40+
} // namespace sdk
41+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/sdk/configuration/sampler_configuration.h"
7+
#include "opentelemetry/sdk/configuration/sampler_configuration_visitor.h"
8+
#include "opentelemetry/version.h"
9+
10+
OPENTELEMETRY_BEGIN_NAMESPACE
11+
namespace sdk
12+
{
13+
namespace configuration
14+
{
15+
16+
// YAML-SCHEMA: schema/tracer_provider.json
17+
// YAML-NODE: trace_id_ratio_based
18+
class TraceIdRatioBasedSamplerConfiguration : public SamplerConfiguration
19+
{
20+
public:
21+
void Accept(SamplerConfigurationVisitor *visitor) const override
22+
{
23+
visitor->VisitTraceIdRatioBased(this);
24+
}
25+
26+
double ratio{0.0};
27+
};
28+
29+
} // namespace configuration
30+
} // namespace sdk
31+
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)