33#include " json.hpp"
44#include " logger.h"
55#include " platform_util.h"
6+ #include " span_defaults.h"
67#include " version.h"
78
89namespace datadog {
910namespace tracing {
1011
11- TracerTelemetry::TracerTelemetry (const Clock& clock,
12- const FinalizedTracerConfig& config)
13- : clock_(clock), config_(config) {
12+ TracerTelemetry::TracerTelemetry (
13+ const Clock& clock, const std::shared_ptr<Logger>& logger,
14+ const std::shared_ptr<const SpanDefaults>& span_defaults)
15+ : clock_(clock), logger_(logger), span_defaults_(span_defaults) {
1416 metrics_snapshots_.emplace_back (metrics_.tracer .spans_created ,
1517 MetricSnapshot{});
1618 metrics_snapshots_.emplace_back (metrics_.tracer .spans_finished ,
@@ -41,12 +43,11 @@ TracerTelemetry::TracerTelemetry(const Clock& clock,
4143 MetricSnapshot{});
4244}
4345
44- std::string TracerTelemetry::app_started () {
46+ std::string TracerTelemetry::app_started (nlohmann::json&& tracer_config ) {
4547 time_t tracer_time = std::chrono::duration_cast<std::chrono::seconds>(
4648 clock_ ().wall .time_since_epoch ())
4749 .count ();
48- std::string hostname = get_hostname ().value_or (" hostname-unavailable" );
49-
50+
5051 seq_id++;
5152 auto payload =
5253 nlohmann::json::object (
@@ -59,15 +60,16 @@ std::string TracerTelemetry::app_started() {
5960 {" debug" , true },
6061 {" application" ,
6162 nlohmann::json::object ({
62- {" service_name" , config_. defaults . service },
63- {" env" , config_. defaults . environment },
63+ {" service_name" , span_defaults_-> service },
64+ {" env" , span_defaults_-> environment },
6465 {" tracer_version" , tracer_version_string},
6566 {" language_name" , " cpp" },
6667 {" language_version" , std::to_string (__cplusplus)},
6768 })},
68- // TODO: host information (hostname, os, os_version, kernel, etc)
69+ // TODO: host information (os, os_version, kernel, etc)
6970 {" host" , nlohmann::json::object ({
70- {" hostname" , hostname},
71+ {" hostname" ,
72+ get_hostname ().value_or (" hostname-unavailable" )},
7173 })},
7274 {" payload" ,
7375 nlohmann::json::object ({
@@ -77,6 +79,13 @@ std::string TracerTelemetry::app_started() {
7779 })},
7880
7981 })},
82+ // TODO: Until we figure out "configuration", above, include a
83+ // JSON dump of the tracer configuration as "additional_payload".
84+ {" additional_payload" ,
85+ nlohmann::json::array ({nlohmann::json::object ({
86+ {" name" , " tracer_config_json" },
87+ {" value" , tracer_config.dump ()},
88+ })})},
8089 })
8190 .dump ();
8291
@@ -144,8 +153,8 @@ std::string TracerTelemetry::heartbeat_and_telemetry() {
144153 {" debug" , true },
145154 {" application" ,
146155 nlohmann::json::object ({
147- {" service_name" , config_. defaults . service },
148- {" env" , config_. defaults . environment },
156+ {" service_name" , span_defaults_-> service },
157+ {" env" , span_defaults_-> environment },
149158 {" tracer_version" , tracer_version_string},
150159 {" language_name" , " cpp" },
151160 {" language_version" , std::to_string (__cplusplus)},
0 commit comments