libdatadog 30.0.0.1.0 → 33.0.0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/tasks/build.rake +175 -0
  4. data/vendor/libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.csv +548 -0
  5. data/vendor/{libdatadog-30.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +80 -19
  6. data/vendor/{libdatadog-30.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/data-pipeline.h +17 -4
  7. data/vendor/{libdatadog-30.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/ffe.h +7 -3
  8. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/profiling.h +36 -0
  9. data/vendor/{libdatadog-30.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-33.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/telemetry.h +21 -0
  10. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  11. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  12. data/vendor/libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.csv +548 -0
  13. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  14. data/vendor/{libdatadog-30.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +80 -19
  15. data/vendor/{libdatadog-30.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/data-pipeline.h +17 -4
  16. data/vendor/{libdatadog-30.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/ffe.h +7 -3
  17. data/vendor/{libdatadog-30.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +36 -0
  18. data/vendor/{libdatadog-30.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin → libdatadog-33.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/telemetry.h +21 -0
  19. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  20. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  21. data/vendor/libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin/LICENSE-3rdparty.csv +548 -0
  22. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/bin/libdatadog-crashtracking-receiver +0 -0
  23. data/vendor/{libdatadog-30.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin}/include/datadog/common.h +80 -19
  24. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/data-pipeline.h +17 -4
  25. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/ffe.h +7 -3
  26. data/vendor/{libdatadog-30.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin}/include/datadog/profiling.h +36 -0
  27. data/vendor/{libdatadog-30.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-33.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin}/include/datadog/telemetry.h +21 -0
  28. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/lib/libdatadog_profiling.dylib +0 -0
  29. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  30. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.csv +548 -0
  31. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +2875 -0
  32. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/data-pipeline.h +216 -0
  33. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/ffe.h +179 -0
  34. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +1130 -0
  35. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/telemetry.h +307 -0
  36. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  37. data/vendor/libdatadog-33.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +15 -0
  38. data/vendor/libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.csv +548 -0
  39. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  40. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/common.h +80 -19
  41. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/data-pipeline.h +17 -4
  42. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/ffe.h +7 -3
  43. data/vendor/{libdatadog-30.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +36 -0
  44. data/vendor/{libdatadog-30.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-33.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/telemetry.h +21 -0
  45. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  46. data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  47. metadata +82 -81
  48. data/vendor/libdatadog-30.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +0 -53656
  49. data/vendor/libdatadog-30.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +0 -53656
  50. data/vendor/libdatadog-30.0.0/arm64-darwin/libdatadog-aarch64-apple-darwin/LICENSE-3rdparty.yml +0 -53656
  51. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +0 -53656
  52. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +0 -2814
  53. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/data-pipeline.h +0 -203
  54. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/ffe.h +0 -175
  55. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +0 -1094
  56. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/telemetry.h +0 -286
  57. data/vendor/libdatadog-30.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -15
  58. data/vendor/libdatadog-30.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml +0 -53656
  59. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  60. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  61. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  62. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +0 -0
  63. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/crashtracker.h +0 -0
  64. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/ddsketch.h +0 -0
  65. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/library-config.h +0 -0
  66. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/log.h +0 -0
  67. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  68. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  69. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +0 -0
  70. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/crashtracker.h +0 -0
  71. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/ddsketch.h +0 -0
  72. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/library-config.h +0 -0
  73. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/log.h +0 -0
  74. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/LICENSE +0 -0
  75. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/NOTICE +0 -0
  76. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/blazesym.h +0 -0
  77. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/crashtracker.h +0 -0
  78. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/ddsketch.h +0 -0
  79. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/library-config.h +0 -0
  80. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/arm64-darwin/libdatadog-aarch64-apple-darwin/include/datadog/log.h +0 -0
  81. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
  82. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
  83. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  84. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/blazesym.h +0 -0
  85. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/crashtracker.h +0 -0
  86. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/ddsketch.h +0 -0
  87. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/library-config.h +0 -0
  88. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/log.h +0 -0
  89. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
  90. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -0
  91. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/blazesym.h +0 -0
  92. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/crashtracker.h +0 -0
  93. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/ddsketch.h +0 -0
  94. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/library-config.h +0 -0
  95. /data/vendor/{libdatadog-30.0.0 → libdatadog-33.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/log.h +0 -0
@@ -0,0 +1,216 @@
1
+ // Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_DATA_PIPELINE_H
6
+ #define DDOG_DATA_PIPELINE_H
7
+
8
+ #include <stdarg.h>
9
+ #include <stdbool.h>
10
+ #include <stdint.h>
11
+ #include <stdlib.h>
12
+ #include "common.h"
13
+ #ifdef __cplusplus
14
+ extern "C" {
15
+ #endif // __cplusplus
16
+
17
+ /**
18
+ * Frees `error` and all its contents. After being called error will not point to a valid memory
19
+ * address so any further actions on it could lead to undefined behavior.
20
+ */
21
+ void ddog_trace_exporter_error_free(struct ddog_TraceExporterError *error);
22
+
23
+ /**
24
+ * Return a read-only pointer to the response body. This pointer is only valid as long as
25
+ * `response` is valid.
26
+ */
27
+ const uint8_t *ddog_trace_exporter_response_get_body(const struct ddog_TraceExporterResponse *response,
28
+ uintptr_t *out_len);
29
+
30
+ /**
31
+ * Free `response` and all its contents. After being called response will not point to a valid
32
+ * memory address so any further actions on it could lead to undefined behavior.
33
+ */
34
+ void ddog_trace_exporter_response_free(struct ddog_TraceExporterResponse *response);
35
+
36
+ void ddog_trace_exporter_config_new(struct ddog_TraceExporterConfig **out_handle);
37
+
38
+ /**
39
+ * Frees TraceExporterConfig handle internal resources.
40
+ */
41
+ void ddog_trace_exporter_config_free(struct ddog_TraceExporterConfig *handle);
42
+
43
+ /**
44
+ * Sets traces destination.
45
+ */
46
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_url(struct ddog_TraceExporterConfig *config,
47
+ ddog_CharSlice url);
48
+
49
+ /**
50
+ * Sets tracer's version to be included in the headers request.
51
+ */
52
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_tracer_version(struct ddog_TraceExporterConfig *config,
53
+ ddog_CharSlice version);
54
+
55
+ /**
56
+ * Sets tracer's language to be included in the headers request.
57
+ */
58
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_language(struct ddog_TraceExporterConfig *config,
59
+ ddog_CharSlice lang);
60
+
61
+ /**
62
+ * Sets tracer's language version to be included in the headers request.
63
+ */
64
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_lang_version(struct ddog_TraceExporterConfig *config,
65
+ ddog_CharSlice version);
66
+
67
+ /**
68
+ * Sets tracer's language interpreter to be included in the headers request.
69
+ */
70
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_lang_interpreter(struct ddog_TraceExporterConfig *config,
71
+ ddog_CharSlice interpreter);
72
+
73
+ /**
74
+ * Sets hostname information to be included in the headers request.
75
+ */
76
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_hostname(struct ddog_TraceExporterConfig *config,
77
+ ddog_CharSlice hostname);
78
+
79
+ /**
80
+ * Sets environment information to be included in the headers request.
81
+ */
82
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_env(struct ddog_TraceExporterConfig *config,
83
+ ddog_CharSlice env);
84
+
85
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_version(struct ddog_TraceExporterConfig *config,
86
+ ddog_CharSlice version);
87
+
88
+ /**
89
+ * Sets service name to be included in the headers request.
90
+ */
91
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_service(struct ddog_TraceExporterConfig *config,
92
+ ddog_CharSlice service);
93
+
94
+ /**
95
+ * Enables health metrics emission.
96
+ */
97
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_enable_health_metrics(struct ddog_TraceExporterConfig *config,
98
+ bool is_enabled);
99
+
100
+ /**
101
+ * Enables telemetry metrics.
102
+ */
103
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_enable_telemetry(struct ddog_TraceExporterConfig *config,
104
+ const struct ddog_TelemetryClientConfig *telemetry_cfg);
105
+
106
+ /**
107
+ * Set client-side stats computation status.
108
+ */
109
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_compute_stats(struct ddog_TraceExporterConfig *config,
110
+ bool is_enabled);
111
+
112
+ /**
113
+ * Sets `Datadog-Client-Computed-Stats` header to `true`.
114
+ * This indicates that the upstream system has already computed the stats,
115
+ * and no further stats computation should be performed.
116
+ *
117
+ * <div class="warning">
118
+ * This method must not be used when `compute_stats` is enabled, as it could
119
+ * result in duplicate stats computation.
120
+ * </div>
121
+ *
122
+ * A common use case is in Application Security Monitoring (ASM) scenarios:
123
+ * when APM is disabled but ASM is enabled, setting this header to `true`
124
+ * ensures that no stats are computed at any level (exporter or agent).
125
+ */
126
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_client_computed_stats(struct ddog_TraceExporterConfig *config,
127
+ bool client_computed_stats);
128
+
129
+ /**
130
+ * Sets the process tags to be included in the stats payload.
131
+ */
132
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_process_tags(struct ddog_TraceExporterConfig *config,
133
+ ddog_CharSlice process_tags);
134
+
135
+ /**
136
+ * Sets the `X-Datadog-Test-Session-Token` header. Only used for testing with the test agent.
137
+ */
138
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_test_session_token(struct ddog_TraceExporterConfig *config,
139
+ ddog_CharSlice token);
140
+
141
+ /**
142
+ * Sets the timeout in ms for all agent's connections.
143
+ */
144
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_connection_timeout(struct ddog_TraceExporterConfig *config,
145
+ uint64_t timeout_ms);
146
+
147
+ /**
148
+ * Sets a shared runtime for the TraceExporter to use for background workers.
149
+ *
150
+ * `handle` must have been initialized with [`ddog_shared_runtime_new`].
151
+ *
152
+ * When set, the exporter will use the provided runtime instead of creating its own.
153
+ * This allows multiple exporters (or other components) to share a single runtime.
154
+ * The config holds a clone of the `Arc` (increments the strong count), so the
155
+ * original handle remains valid and must still be freed with
156
+ * [`ddog_shared_runtime_free`].
157
+ */
158
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_shared_runtime(struct ddog_TraceExporterConfig *config,
159
+ struct ddog_SharedRuntime *handle);
160
+
161
+ /**
162
+ * Enables OTLP HTTP/JSON export and sets the endpoint URL.
163
+ *
164
+ * When set, traces are sent to this URL in OTLP HTTP/JSON format instead of the Datadog
165
+ * agent. The host language is responsible for resolving the endpoint from its configuration
166
+ * (e.g. `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`) before calling this function.
167
+ */
168
+ struct ddog_TraceExporterError *ddog_trace_exporter_config_set_otlp_endpoint(struct ddog_TraceExporterConfig *config,
169
+ ddog_CharSlice url);
170
+
171
+ /**
172
+ * Create a new TraceExporter instance.
173
+ *
174
+ * When an OTLP endpoint is configured via `TraceExporterConfig`, the exporter sends traces in
175
+ * OTLP HTTP/JSON to that endpoint instead of the Datadog agent. The same payload (e.g.
176
+ * MessagePack) is passed to `ddog_trace_exporter_send`; the library decodes and converts to
177
+ * OTLP when OTLP is enabled.
178
+ *
179
+ * # Arguments
180
+ *
181
+ * * `out_handle` - The handle to write the TraceExporter instance in.
182
+ * * `config` - The configuration used to set up the TraceExporter handle.
183
+ */
184
+ struct ddog_TraceExporterError *ddog_trace_exporter_new(ddog_TraceExporter **out_handle,
185
+ const struct ddog_TraceExporterConfig *config);
186
+
187
+ /**
188
+ * Free the TraceExporter instance.
189
+ *
190
+ * # Arguments
191
+ *
192
+ * * handle - The handle to the TraceExporter instance.
193
+ */
194
+ void ddog_trace_exporter_free(ddog_TraceExporter *handle);
195
+
196
+ /**
197
+ * Send traces to the Datadog Agent.
198
+ *
199
+ * # Arguments
200
+ *
201
+ * * `handle` - The handle to the TraceExporter instance.
202
+ * * `trace` - The traces to send to the Datadog Agent in the input format used to create the
203
+ * TraceExporter. The memory for the trace must be valid for the life of the call to this
204
+ * function.
205
+ * * `trace_count` - The number of traces to send to the Datadog Agent.
206
+ * * `response_out` - Optional handle to store a pointer to the agent response information.
207
+ */
208
+ struct ddog_TraceExporterError *ddog_trace_exporter_send(const ddog_TraceExporter *handle,
209
+ ddog_ByteSlice trace,
210
+ struct ddog_TraceExporterResponse **response_out);
211
+
212
+ #ifdef __cplusplus
213
+ } // extern "C"
214
+ #endif // __cplusplus
215
+
216
+ #endif /* DDOG_DATA_PIPELINE_H */
@@ -0,0 +1,179 @@
1
+ // Copyright 2025-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_FFE_H
6
+ #define DDOG_FFE_H
7
+
8
+ #pragma once
9
+
10
+ #include <stdbool.h>
11
+ #include <stddef.h>
12
+ #include <stdint.h>
13
+ #include "common.h"
14
+
15
+ #ifdef __cplusplus
16
+ extern "C" {
17
+ #endif // __cplusplus
18
+
19
+ /**
20
+ * Evaluates a feature flag.
21
+ *
22
+ * # Ownership
23
+ *
24
+ * The caller must call `ddog_ffe_assignment_drop` on the returned value to free resources.
25
+ *
26
+ * # Safety
27
+ *
28
+ * - `config` must be a valid `Configuration` handle
29
+ * - `flag_key` must be a valid C string
30
+ * - `context` must be a valid `EvaluationContext` handle
31
+ */
32
+ DDOG_CHECK_RETURN
33
+ ddog_ffe_Handle_ResolutionDetails ddog_ffe_get_assignment(ddog_ffe_Handle_Configuration config,
34
+ const char *flag_key,
35
+ enum ddog_ffe_ExpectedFlagType expected_type,
36
+ ddog_ffe_Handle_EvaluationContext context);
37
+
38
+ /**
39
+ * Get value produced by evaluation.
40
+ *
41
+ * # Ownership
42
+ *
43
+ * The returned `VariantValue` borrows from `assignment`. It must not be used after `assignment` is
44
+ * freed.
45
+ *
46
+ * # Safety
47
+ * `assignment` must be a valid handle.
48
+ */
49
+ struct ddog_ffe_VariantValue ddog_ffe_assignment_get_value(ddog_ffe_Handle_ResolutionDetails assignment);
50
+
51
+ /**
52
+ * Get variant key produced by evaluation. Returns `NULL` if evaluation did not produce any value.
53
+ *
54
+ * # Ownership
55
+ *
56
+ * The returned string borrows from `assignment`. It must not be used after `assignment` is
57
+ * freed.
58
+ *
59
+ * # Safety
60
+ * `assignment` must be a valid handle.
61
+ */
62
+ struct ddog_ffe_BorrowedStr ddog_ffe_assignment_get_variant(ddog_ffe_Handle_ResolutionDetails assignment);
63
+
64
+ /**
65
+ * Get allocation key produced by evaluation. Returns `NULL` if evaluation did not produce any
66
+ * value.
67
+ *
68
+ * # Ownership
69
+ *
70
+ * The returned string borrows from `assignment`. It must not be used after `assignment` is
71
+ * freed.
72
+ *
73
+ * # Safety
74
+ * `assignment` must be a valid handle.
75
+ */
76
+ struct ddog_ffe_BorrowedStr ddog_ffe_assignment_get_allocation_key(ddog_ffe_Handle_ResolutionDetails assignment);
77
+
78
+ /**
79
+ * # Safety
80
+ * `assignment` must be a valid handle.
81
+ */
82
+ enum ddog_ffe_Reason ddog_ffe_assignment_get_reason(ddog_ffe_Handle_ResolutionDetails assignment);
83
+
84
+ /**
85
+ * # Safety
86
+ * `assignment` must be a valid handle.
87
+ */
88
+ enum ddog_ffe_ErrorCode ddog_ffe_assignment_get_error_code(ddog_ffe_Handle_ResolutionDetails assignment);
89
+
90
+ /**
91
+ * # Safety
92
+ * `assignment` must be a valid handle.
93
+ */
94
+ struct ddog_ffe_BorrowedStr ddog_ffe_assignment_get_error_message(ddog_ffe_Handle_ResolutionDetails assignment);
95
+
96
+ /**
97
+ * Get the serial_id produced by evaluation.
98
+ *
99
+ * Returns `None` if the assignment has no serial_id or evaluation did not produce any value.
100
+ *
101
+ * # Safety
102
+ * `assignment` must be a valid handle.
103
+ */
104
+ struct ddog_Option_I32 ddog_ffe_assignment_get_serial_id(ddog_ffe_Handle_ResolutionDetails assignment);
105
+
106
+ /**
107
+ * # Safety
108
+ * `assignment` must be a valid handle.
109
+ */
110
+ bool ddog_ffe_assignment_get_do_log(ddog_ffe_Handle_ResolutionDetails assignment);
111
+
112
+ /**
113
+ * # Safety
114
+ * `assignment` must be a valid handle.
115
+ */
116
+ struct ddog_ffe_ArrayMap_BorrowedStr ddog_ffe_assignnment_get_flag_metadata(ddog_ffe_Handle_ResolutionDetails assignment);
117
+
118
+ /**
119
+ * Frees an Assignment handle.
120
+ *
121
+ * # Safety
122
+ * - `assignment` must be a valid Assignment handle
123
+ */
124
+ void ddog_ffe_assignment_drop(ddog_ffe_Handle_ResolutionDetails *assignment);
125
+
126
+ /**
127
+ * Creates a new Configuration from JSON bytes.
128
+ *
129
+ * # Ownership
130
+ *
131
+ * The caller must call `ddog_ffe_configuration_drop` to release resources allocated for
132
+ * configuration.
133
+ *
134
+ * # Safety
135
+ *
136
+ * - `json_bytes` must point to valid memory.
137
+ */
138
+ DDOG_CHECK_RETURN
139
+ struct ddog_ffe_Result_HandleConfiguration ddog_ffe_configuration_new(struct ddog_ffe_BorrowedStr json_bytes);
140
+
141
+ /**
142
+ * Frees a Configuration.
143
+ *
144
+ * # Safety
145
+ *
146
+ * `config` must be a valid Configuration handle created by `ddog_ffe_configuration_new`.
147
+ */
148
+ void ddog_ffe_configuration_drop(ddog_ffe_Handle_Configuration *config);
149
+
150
+ /**
151
+ * Creates a new EvaluationContext with the given targeting key and attributes.
152
+ *
153
+ * # Ownership
154
+ *
155
+ * `ddog_ffe_evaluation_context_drop` must be called on the result value to free resources.
156
+ *
157
+ * # Safety
158
+ * - `targeting_key` must be a valid C string or NULL.
159
+ * - `attributes` must point to a valid array of valid `AttributePair` structs (can be null if
160
+ * `attributes_count` is 0)
161
+ */
162
+ DDOG_CHECK_RETURN
163
+ ddog_ffe_Handle_EvaluationContext ddog_ffe_evaluation_context_new(const char *targeting_key,
164
+ const struct ddog_ffe_AttributePair *attributes,
165
+ uintptr_t attributes_count);
166
+
167
+ /**
168
+ * Frees an EvaluationContext
169
+ *
170
+ * # Safety
171
+ * `context` must be a valid EvaluationContext handle created by `ddog_ffe_evaluation_context_new`
172
+ */
173
+ void ddog_ffe_evaluation_context_drop(ddog_ffe_Handle_EvaluationContext *context);
174
+
175
+ #ifdef __cplusplus
176
+ } // extern "C"
177
+ #endif // __cplusplus
178
+
179
+ #endif /* DDOG_FFE_H */