@@ -159,6 +159,28 @@ DatadogAgent::DatadogAgent(
159159 send_heartbeat_and_telemetry ();
160160 }
161161 });
162+ // Callback for setting telemetry request headers.
163+ telemetry_set_request_headers_ = [](DictWriter& headers) {
164+ headers.set (" Content-Type" , " application/json" );
165+ };
166+ // Callback for successful telemetry HTTP requests, to examine HTTP status.
167+ telemetry_on_response_ = [logger = logger_](
168+ int response_status,
169+ const DictReader& /* response_headers*/ ,
170+ std::string response_body) {
171+ if (response_status < 200 || response_status >= 300 ) {
172+ logger->log_error ([&](auto & stream) {
173+ stream << " Unexpected telemetry response status " << response_status
174+ << " with body (starts on next line):\n "
175+ << response_body;
176+ });
177+ }
178+ };
179+ // Callback for unsuccessful telemetry HTTP requests.
180+ telemetry_on_error_ = [logger = logger_](Error error) {
181+ logger->log_error (error.with_prefix (
182+ " Error occurred during HTTP request for telemetry: " ));
183+ };
162184 }
163185}
164186
@@ -310,98 +332,29 @@ void DatadogAgent::flush() {
310332
311333void DatadogAgent::send_app_started (nlohmann::json&& tracer_config) {
312334 auto payload = tracer_telemetry_->app_started (std::move (tracer_config));
313- auto set_request_headers = [&](DictWriter& headers) {
314- headers.set (" Content-Type" , " application/json" );
315- };
316-
317- // Callback for a successful HTTP request, to examine HTTP status.
318- auto on_response = [logger = logger_](int response_status,
319- const DictReader& /* response_headers*/ ,
320- std::string response_body) {
321- if (response_status < 200 || response_status >= 300 ) {
322- logger->log_error ([&](auto & stream) {
323- stream << " Unexpected telemetry response status " << response_status
324- << " with body (starts on next line):\n "
325- << response_body;
326- });
327- }
328- };
329-
330- // Callback for unsuccessful HTTP request.
331- auto on_error = [logger = logger_](Error error) {
332- logger->log_error (error.with_prefix (
333- " Error occurred during HTTP request for telemetry: " ));
334- };
335-
336335 auto post_result = http_client_->post (
337- telemetry_endpoint_, std::move (set_request_headers) , std::move (payload),
338- std::move (on_response), std::move (on_error) );
336+ telemetry_endpoint_, telemetry_set_request_headers_ , std::move (payload),
337+ telemetry_on_response_, telemetry_on_error_ );
339338 if (auto * error = post_result.if_error ()) {
340339 logger_->log_error (*error);
341340 }
342341}
343342
344343void DatadogAgent::send_heartbeat_and_telemetry () {
345344 auto payload = tracer_telemetry_->heartbeat_and_telemetry ();
346- auto set_request_headers = [&](DictWriter& headers) {
347- headers.set (" Content-Type" , " application/json" );
348- };
349-
350- // Callback for a successful HTTP request, to examine HTTP status.
351- auto on_response = [logger = logger_](int response_status,
352- const DictReader& /* response_headers*/ ,
353- std::string response_body) {
354- if (response_status < 200 || response_status >= 300 ) {
355- logger->log_error ([&](auto & stream) {
356- stream << " Unexpected telemetry response status " << response_status
357- << " with body (starts on next line):\n "
358- << response_body;
359- });
360- }
361- };
362-
363- // Callback for unsuccessful HTTP request.
364- auto on_error = [logger = logger_](Error error) {
365- logger->log_error (error.with_prefix (
366- " Error occurred during HTTP request for telemetry: " ));
367- };
368-
369345 auto post_result = http_client_->post (
370- telemetry_endpoint_, std::move (set_request_headers) , std::move (payload),
371- std::move (on_response), std::move (on_error) );
346+ telemetry_endpoint_, telemetry_set_request_headers_ , std::move (payload),
347+ telemetry_on_response_, telemetry_on_error_ );
372348 if (auto * error = post_result.if_error ()) {
373349 logger_->log_error (*error);
374350 }
375351}
376352
377353void DatadogAgent::send_app_closing () {
378354 auto payload = tracer_telemetry_->app_closing ();
379- auto set_request_headers = [&](DictWriter& headers) {
380- headers.set (" Content-Type" , " application/json" );
381- };
382-
383- // Callback for a successful HTTP request, to examine HTTP status.
384- auto on_response = [logger = logger_](int response_status,
385- const DictReader& /* response_headers*/ ,
386- std::string response_body) {
387- if (response_status < 200 || response_status >= 300 ) {
388- logger->log_error ([&](auto & stream) {
389- stream << " Unexpected telemetry response status " << response_status
390- << " with body (starts on next line):\n "
391- << response_body;
392- });
393- }
394- };
395-
396- // Callback for unsuccessful HTTP request.
397- auto on_error = [logger = logger_](Error error) {
398- logger->log_error (error.with_prefix (
399- " Error occurred during HTTP request for telemetry: " ));
400- };
401-
402355 auto post_result = http_client_->post (
403- telemetry_endpoint_, std::move (set_request_headers) , std::move (payload),
404- std::move (on_response), std::move (on_error) );
356+ telemetry_endpoint_, telemetry_set_request_headers_ , std::move (payload),
357+ telemetry_on_response_, telemetry_on_error_ );
405358 if (auto * error = post_result.if_error ()) {
406359 logger_->log_error (*error);
407360 }
0 commit comments