-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathenvironment.h
More file actions
96 lines (82 loc) · 3.74 KB
/
environment.h
File metadata and controls
96 lines (82 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#pragma once
// This component provides a registry of all environment variables that can be
// used to configure this library.
//
// Each `enum Variable` denotes an environment variable. The enum value names
// are the same as the names of the environment variables.
//
// `variable_names` is an array of the names of the environment variables. Nginx
// uses `variable_names` as an allow list of environment variables to forward to
// worker processes.
//
// `name` returns the name of a specified `Variable`.
//
// `lookup` retrieves the value of `Variable` in the environment.
#include <datadog/optional.h>
#include <datadog/string_view.h>
namespace datadog {
namespace tracing {
namespace environment {
// To enforce correspondence between `enum Variable` and `variable_names`, the
// preprocessor is used so that the DD_* symbols are listed exactly once.
#define LIST_ENVIRONMENT_VARIABLES(MACRO) \
MACRO(DD_AGENT_HOST) \
MACRO(DD_ENV) \
MACRO(DD_INSTRUMENTATION_TELEMETRY_ENABLED) \
MACRO(DD_PROPAGATION_STYLE_EXTRACT) \
MACRO(DD_PROPAGATION_STYLE_INJECT) \
MACRO(DD_REMOTE_CONFIGURATION_ENABLED) \
MACRO(DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS) \
MACRO(DD_SERVICE) \
MACRO(DD_SPAN_SAMPLING_RULES) \
MACRO(DD_SPAN_SAMPLING_RULES_FILE) \
MACRO(DD_TRACE_PROPAGATION_STYLE_EXTRACT) \
MACRO(DD_TRACE_PROPAGATION_STYLE_INJECT) \
MACRO(DD_TRACE_PROPAGATION_STYLE) \
MACRO(DD_TAGS) \
MACRO(DD_TRACE_AGENT_PORT) \
MACRO(DD_TRACE_AGENT_URL) \
MACRO(DD_TRACE_DEBUG) \
MACRO(DD_TRACE_ENABLED) \
MACRO(DD_TRACE_RATE_LIMIT) \
MACRO(DD_TRACE_REPORT_HOSTNAME) \
MACRO(DD_TRACE_SAMPLE_RATE) \
MACRO(DD_TRACE_SAMPLING_RULES) \
MACRO(DD_TRACE_STARTUP_LOGS) \
MACRO(DD_TRACE_TAGS_PROPAGATION_MAX_LENGTH) \
MACRO(DD_VERSION) \
MACRO(DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED) \
MACRO(DD_TELEMETRY_HEARTBEAT_INTERVAL) \
MACRO(DD_TELEMETRY_METRICS_ENABLED) \
MACRO(DD_TELEMETRY_METRICS_INTERVAL_SECONDS) \
MACRO(DD_TELEMETRY_DEBUG) \
MACRO(DD_TRACE_BAGGAGE_MAX_ITEMS) \
MACRO(DD_TRACE_BAGGAGE_MAX_BYTES) \
MACRO(DD_TELEMETRY_LOG_COLLECTION_ENABLED) \
MACRO(DD_INSTRUMENTATION_INSTALL_ID) \
MACRO(DD_INSTRUMENTATION_INSTALL_TYPE) \
MACRO(DD_INSTRUMENTATION_INSTALL_TIME) \
MACRO(DD_APM_TRACING_ENABLED) \
MACRO(DD_EXTERNAL_ENV)
#define WITH_COMMA(ARG) ARG,
enum Variable { LIST_ENVIRONMENT_VARIABLES(WITH_COMMA) };
// Quoting a macro argument requires this two-step.
#define QUOTED_IMPL(ARG) #ARG
#define QUOTED(ARG) QUOTED_IMPL(ARG)
#define QUOTED_WITH_COMMA(ARG) WITH_COMMA(QUOTED(ARG))
inline const char *const variable_names[] = {
LIST_ENVIRONMENT_VARIABLES(QUOTED_WITH_COMMA)};
#undef QUOTED_WITH_COMMA
#undef QUOTED
#undef QUOTED_IMPL
#undef WITH_COMMA
#undef LIST_ENVIRONMENT_VARIABLES
// Return the name of the specified environment `variable`.
StringView name(Variable variable);
// Return the value of the specified environment `variable`, or return
// `nullopt` if that variable is not set in the environment.
Optional<StringView> lookup(Variable variable);
std::string to_json();
} // namespace environment
} // namespace tracing
} // namespace datadog