Skip to content

Commit d34d2d3

Browse files
committed
format
1 parent ad685c8 commit d34d2d3

File tree

4 files changed

+86
-87
lines changed

4 files changed

+86
-87
lines changed

include/datadog/config.h

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -62,73 +62,72 @@ struct ConfigMetadata {
6262
: name(n), value(std::move(v)), origin(orig), error(std::move(err)) {}
6363
};
6464

65-
// Return the chosen configuration value, in order of precedence: `from_env`,
65+
// Return the chosen configuration value, in order of precedence: `from_env`,
6666
// `from_user`, and `fallback`.
6767
// This overload directly populates both telemetry_configs[config_name] and
68-
// metadata[config_name] using the stringified value, with all values found, from lowest to highest precedence.
69-
// Returns the chosen value directly.
70-
//
68+
// metadata[config_name] using the stringified value, with all values found,
69+
// from lowest to highest precedence. Returns the chosen value directly.
70+
//
7171
// The fallback parameter is optional and defaults to nullptr.
72-
template <typename Value, typename Stringifier = std::nullptr_t, typename DefaultValue = std::nullptr_t>
73-
Value pick(
74-
const Optional<Value>& from_env, const Optional<Value>& from_user,
75-
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>* telemetry_configs,
76-
std::unordered_map<ConfigName, ConfigMetadata>* metadata,
77-
ConfigName config_name,
78-
DefaultValue fallback = nullptr,
79-
Stringifier to_string_fn = nullptr) {
80-
81-
auto stringify = [&](const Value& v) -> std::string {
82-
if constexpr (!std::is_same_v<Stringifier, std::nullptr_t>) {
83-
return to_string_fn(v); // use provided function
84-
} else if constexpr (std::is_constructible_v<std::string, Value>) {
85-
return std::string(v); // default behaviour (works for string-like types)
86-
} else {
87-
static_assert(!std::is_same_v<Value, Value>,
88-
"Non-string types require a stringifier function");
89-
return ""; // unreachable
90-
}
91-
};
92-
93-
std::vector<ConfigMetadata> telemetry_entries;
94-
Optional<Value> chosen_value;
95-
96-
auto add_entry = [&](ConfigMetadata::Origin origin, const Value& val) {
97-
std::string val_str = stringify(val);
98-
telemetry_entries.emplace_back(ConfigMetadata{config_name, val_str, origin});
99-
chosen_value = val;
100-
};
101-
102-
// Add DEFAULT entry if fallback was provided (detected by type)
103-
if constexpr (!std::is_same_v<DefaultValue, std::nullptr_t>) {
104-
add_entry(ConfigMetadata::Origin::DEFAULT, fallback);
72+
template <typename Value, typename Stringifier = std::nullptr_t,
73+
typename DefaultValue = std::nullptr_t>
74+
Value pick(const Optional<Value>& from_env, const Optional<Value>& from_user,
75+
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>*
76+
telemetry_configs,
77+
std::unordered_map<ConfigName, ConfigMetadata>* metadata,
78+
ConfigName config_name, DefaultValue fallback = nullptr,
79+
Stringifier to_string_fn = nullptr) {
80+
auto stringify = [&](const Value& v) -> std::string {
81+
if constexpr (!std::is_same_v<Stringifier, std::nullptr_t>) {
82+
return to_string_fn(v); // use provided function
83+
} else if constexpr (std::is_constructible_v<std::string, Value>) {
84+
return std::string(v); // default behaviour (works for string-like types)
85+
} else {
86+
static_assert(!std::is_same_v<Value, Value>,
87+
"Non-string types require a stringifier function");
88+
return ""; // unreachable
10589
}
90+
};
10691

107-
if (from_user) {
108-
add_entry(ConfigMetadata::Origin::CODE, *from_user);
109-
}
92+
std::vector<ConfigMetadata> telemetry_entries;
93+
Optional<Value> chosen_value;
11094

111-
if (from_env) {
112-
add_entry(ConfigMetadata::Origin::ENVIRONMENT_VARIABLE, *from_env);
113-
}
95+
auto add_entry = [&](ConfigMetadata::Origin origin, const Value& val) {
96+
std::string val_str = stringify(val);
97+
telemetry_entries.emplace_back(
98+
ConfigMetadata{config_name, val_str, origin});
99+
chosen_value = val;
100+
};
114101

115-
(*telemetry_configs)[config_name] = std::move(telemetry_entries);
116-
if (!telemetry_entries.empty()) {
117-
(*metadata)[config_name] = (*telemetry_configs)[config_name].back();
118-
}
102+
// Add DEFAULT entry if fallback was provided (detected by type)
103+
if constexpr (!std::is_same_v<DefaultValue, std::nullptr_t>) {
104+
add_entry(ConfigMetadata::Origin::DEFAULT, fallback);
105+
}
106+
107+
if (from_user) {
108+
add_entry(ConfigMetadata::Origin::CODE, *from_user);
109+
}
110+
111+
if (from_env) {
112+
add_entry(ConfigMetadata::Origin::ENVIRONMENT_VARIABLE, *from_env);
113+
}
119114

120-
return chosen_value.value_or(Value{});
115+
(*telemetry_configs)[config_name] = std::move(telemetry_entries);
116+
if (!telemetry_entries.empty()) {
117+
(*metadata)[config_name] = (*telemetry_configs)[config_name].back();
121118
}
122119

123-
120+
return chosen_value.value_or(Value{});
121+
}
122+
124123
// Return a pair containing the configuration origin and value of a
125124
// configuration value chosen from one of the specified `from_env`,
126125
// `from_config`, and `fallback`. This function defines the relative precedence
127126
// among configuration values originating from the environment, programmatic
128127
// configuration, and default configuration.
129128
template <typename Value, typename DefaultValue>
130-
std::pair<ConfigMetadata::Origin, Value> pick(const Optional<Value> &from_env,
131-
const Optional<Value> &from_user,
129+
std::pair<ConfigMetadata::Origin, Value> pick(const Optional<Value>& from_env,
130+
const Optional<Value>& from_user,
132131
DefaultValue fallback) {
133132
if (from_env) {
134133
return {ConfigMetadata::Origin::ENVIRONMENT_VARIABLE, *from_env};
@@ -137,6 +136,6 @@ std::pair<ConfigMetadata::Origin, Value> pick(const Optional<Value> &from_env,
137136
}
138137
return {ConfigMetadata::Origin::DEFAULT, fallback};
139138
}
140-
139+
141140
} // namespace tracing
142141
} // namespace datadog

include/datadog/telemetry/product.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ struct Product final {
3131
/// Optional error message related to the product status.
3232
tracing::Optional<std::string> error_message;
3333
/// Map of configuration settings for the product.
34-
std::unordered_map<tracing::ConfigName, std::vector<tracing::ConfigMetadata>> configurations;
34+
std::unordered_map<tracing::ConfigName, std::vector<tracing::ConfigMetadata>>
35+
configurations;
3536
};
3637

3738
inline std::string_view to_string(Product::Name product) {

src/datadog/trace_sampler_config.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,12 @@ Expected<FinalizedTraceSamplerConfig> finalize_config(
225225
result.rules.emplace_back(std::move(finalized_rule));
226226
}
227227

228-
std::unordered_map<ConfigName, std::vector<ConfigMetadata>> telemetry_configs_tmp;
229-
double max_per_second = pick(env_config->max_per_second, config.max_per_second,
230-
&telemetry_configs_tmp, &result.metadata,
231-
ConfigName::TRACE_SAMPLING_LIMIT, 100.0,
232-
[](const double& d) { return std::to_string(d); });
228+
std::unordered_map<ConfigName, std::vector<ConfigMetadata>>
229+
telemetry_configs_tmp;
230+
double max_per_second = pick(
231+
env_config->max_per_second, config.max_per_second, &telemetry_configs_tmp,
232+
&result.metadata, ConfigName::TRACE_SAMPLING_LIMIT, 100.0,
233+
[](const double &d) { return std::to_string(d); });
233234

234235
const auto allowed_types = {FP_NORMAL, FP_SUBNORMAL};
235236
if (!(max_per_second > 0) ||

src/datadog/tracer_config.cpp

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -287,32 +287,31 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
287287
std::unordered_map<ConfigName, std::vector<ConfigMetadata>> telemetry_configs;
288288

289289
// DD_SERVICE
290-
final_config.defaults.service =
291-
pick(env_config->service, user_config.service,
292-
&telemetry_configs, &final_config.metadata, ConfigName::SERVICE_NAME,
293-
get_process_name());
290+
final_config.defaults.service = pick(
291+
env_config->service, user_config.service, &telemetry_configs,
292+
&final_config.metadata, ConfigName::SERVICE_NAME, get_process_name());
294293

295294
// Service type
296295
final_config.defaults.service_type =
297296
value_or(env_config->service_type, user_config.service_type, "web");
298297

299298
// DD_ENV
300299
final_config.defaults.environment =
301-
pick(env_config->environment, user_config.environment,
302-
&telemetry_configs, &final_config.metadata, ConfigName::SERVICE_ENV);
300+
pick(env_config->environment, user_config.environment, &telemetry_configs,
301+
&final_config.metadata, ConfigName::SERVICE_ENV);
303302

304303
// DD_VERSION
305304
final_config.defaults.version =
306-
pick(env_config->version, user_config.version,
307-
&telemetry_configs, &final_config.metadata, ConfigName::SERVICE_VERSION);
305+
pick(env_config->version, user_config.version, &telemetry_configs,
306+
&final_config.metadata, ConfigName::SERVICE_VERSION);
308307

309308
// Span name
310309
final_config.defaults.name = value_or(env_config->name, user_config.name, "");
311310

312311
// DD_TAGS
313312
final_config.defaults.tags =
314-
pick(env_config->tags, user_config.tags,
315-
&telemetry_configs, &final_config.metadata, ConfigName::TAGS,
313+
pick(env_config->tags, user_config.tags, &telemetry_configs,
314+
&final_config.metadata, ConfigName::TAGS,
316315
std::unordered_map<std::string, std::string>{},
317316
[](const auto& tags) { return join_tags(tags); });
318317

@@ -323,8 +322,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
323322

324323
final_config.extraction_styles =
325324
pick(env_config->extraction_styles, user_config.extraction_styles,
326-
&telemetry_configs, &final_config.metadata, ConfigName::EXTRACTION_STYLES,
327-
default_propagation_styles,
325+
&telemetry_configs, &final_config.metadata,
326+
ConfigName::EXTRACTION_STYLES, default_propagation_styles,
328327
[](const std::vector<PropagationStyle>& styles) {
329328
return join_propagation_styles(styles);
330329
});
@@ -337,8 +336,8 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
337336
// Injection Styles
338337
final_config.injection_styles =
339338
pick(env_config->injection_styles, user_config.injection_styles,
340-
&telemetry_configs, &final_config.metadata, ConfigName::INJECTION_STYLES,
341-
default_propagation_styles,
339+
&telemetry_configs, &final_config.metadata,
340+
ConfigName::INJECTION_STYLES, default_propagation_styles,
342341
[](const std::vector<PropagationStyle>& styles) {
343342
return join_propagation_styles(styles);
344343
});
@@ -356,9 +355,9 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
356355

357356
// Report traces
358357
final_config.report_traces = pick(
359-
env_config->report_traces, user_config.report_traces,
360-
&telemetry_configs, &final_config.metadata, ConfigName::REPORT_TRACES,
361-
true, [](const bool& b) { return to_string(b); });
358+
env_config->report_traces, user_config.report_traces, &telemetry_configs,
359+
&final_config.metadata, ConfigName::REPORT_TRACES, true,
360+
[](const bool& b) { return to_string(b); });
362361

363362
// Report hostname
364363
final_config.report_hostname =
@@ -371,9 +370,9 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
371370
// 128b Trace IDs
372371
final_config.generate_128bit_trace_ids =
373372
pick(env_config->generate_128bit_trace_ids,
374-
user_config.generate_128bit_trace_ids,
375-
&telemetry_configs, &final_config.metadata, ConfigName::GENEREATE_128BIT_TRACE_IDS,
376-
true, [](const bool& b) { return to_string(b); });
373+
user_config.generate_128bit_trace_ids, &telemetry_configs,
374+
&final_config.metadata, ConfigName::GENEREATE_128BIT_TRACE_IDS, true,
375+
[](const bool& b) { return to_string(b); });
377376

378377
// Integration name & version
379378
final_config.integration_name = value_or(
@@ -386,15 +385,15 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
386385
final_config.baggage_opts.max_items =
387386
pick(env_config->baggage_max_items, user_config.baggage_max_items,
388387
&telemetry_configs, &final_config.metadata,
389-
ConfigName::TRACE_BAGGAGE_MAX_ITEMS,
390-
64UL, [](const int& i) { return std::to_string(i); });
388+
ConfigName::TRACE_BAGGAGE_MAX_ITEMS, 64UL,
389+
[](const int& i) { return std::to_string(i); });
391390

392391
// Baggage - max bytes
393392
final_config.baggage_opts.max_bytes =
394393
pick(env_config->baggage_max_bytes, user_config.baggage_max_bytes,
395394
&telemetry_configs, &final_config.metadata,
396-
ConfigName::TRACE_BAGGAGE_MAX_BYTES,
397-
8192UL, [](const int& i) { return std::to_string(i); });
395+
ConfigName::TRACE_BAGGAGE_MAX_BYTES, 8192UL,
396+
[](const int& i) { return std::to_string(i); });
398397

399398
if (final_config.baggage_opts.max_items <= 0 ||
400399
final_config.baggage_opts.max_bytes < 3) {
@@ -462,16 +461,15 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig& user_config,
462461
final_config.tracing_enabled =
463462
pick(env_config->tracing_enabled, user_config.tracing_enabled,
464463
&telemetry_configs, &final_config.metadata,
465-
ConfigName::APM_TRACING_ENABLED,
466-
true, [](const bool& b) { return to_string(b); });
464+
ConfigName::APM_TRACING_ENABLED, true,
465+
[](const bool& b) { return to_string(b); });
467466

468467
{
469468
// Resource Renaming Enabled
470469
const bool resource_renaming_enabled = pick(
471470
env_config->resource_renaming_enabled,
472-
user_config.resource_renaming_enabled,
473-
&telemetry_configs, &final_config.metadata,
474-
ConfigName::TRACE_RESOURCE_RENAMING_ENABLED,
471+
user_config.resource_renaming_enabled, &telemetry_configs,
472+
&final_config.metadata, ConfigName::TRACE_RESOURCE_RENAMING_ENABLED,
475473
false, [](const bool& b) { return to_string(b); });
476474

477475
// Resource Renaming Always Simplified Endpoint

0 commit comments

Comments
 (0)