libdatadog 4.0.0.1.0 → 6.0.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-4.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-6.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/LICENSE-3rdparty.yml +5047 -2328
  4. data/vendor/libdatadog-6.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/{libdatadog-4.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-6.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +186 -77
  6. data/vendor/{libdatadog-4.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-6.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +37 -8
  7. data/vendor/libdatadog-6.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  8. data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  9. data/vendor/{libdatadog-4.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-6.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/LICENSE-3rdparty.yml +5047 -2328
  10. data/vendor/libdatadog-6.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  11. data/vendor/{libdatadog-4.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-6.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +186 -77
  12. data/vendor/{libdatadog-4.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-6.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +37 -8
  13. data/vendor/libdatadog-6.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  14. data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  15. data/vendor/{libdatadog-4.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-6.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/LICENSE-3rdparty.yml +5047 -2328
  16. data/vendor/libdatadog-6.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  17. data/vendor/{libdatadog-4.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-6.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/common.h +186 -77
  18. data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +37 -8
  19. data/vendor/libdatadog-6.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  20. data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  21. data/vendor/{libdatadog-4.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-6.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/LICENSE-3rdparty.yml +5047 -2328
  22. data/vendor/libdatadog-6.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  23. data/vendor/{libdatadog-4.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-6.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/common.h +186 -77
  24. data/vendor/{libdatadog-4.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-6.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +37 -8
  25. data/vendor/libdatadog-6.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  26. data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  27. metadata +34 -30
  28. data/vendor/libdatadog-4.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  29. data/vendor/libdatadog-4.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  30. data/vendor/libdatadog-4.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  31. data/vendor/libdatadog-4.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  32. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  33. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  34. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  35. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  36. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
  37. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
  38. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
  39. /data/vendor/{libdatadog-4.0.0 → libdatadog-6.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -0
@@ -67,15 +67,21 @@ typedef struct ddog_Error {
67
67
  struct ddog_Vec_U8 message;
68
68
  } ddog_Error;
69
69
 
70
- /**
71
- * Remember, the data inside of each member is potentially coming from FFI,
72
- * so every operation on it is unsafe!
73
- */
74
70
  typedef struct ddog_Slice_CChar {
71
+ /**
72
+ * Must be non-null and suitably aligned for the underlying type.
73
+ */
75
74
  const char *ptr;
75
+ /**
76
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
77
+ * than or equal to [isize::MAX].
78
+ */
76
79
  uintptr_t len;
77
80
  } ddog_Slice_CChar;
78
81
 
82
+ /**
83
+ * Use to represent strings -- should be valid UTF-8.
84
+ */
79
85
  typedef struct ddog_Slice_CChar ddog_CharSlice;
80
86
 
81
87
  /**
@@ -107,6 +113,37 @@ typedef struct ddog_Vec_Tag_ParseResult {
107
113
  struct ddog_Error *error_message;
108
114
  } ddog_Vec_Tag_ParseResult;
109
115
 
116
+ typedef enum ddog_prof_CrashtrackerResolveFrames {
117
+ DDOG_PROF_CRASHTRACKER_RESOLVE_FRAMES_NEVER,
118
+ /**
119
+ * Resolving frames is experimental, and can fail/crash
120
+ */
121
+ DDOG_PROF_CRASHTRACKER_RESOLVE_FRAMES_EXPERIMENTAL_IN_PROCESS,
122
+ DDOG_PROF_CRASHTRACKER_RESOLVE_FRAMES_EXPERIMENTAL_IN_RECEIVER,
123
+ } ddog_prof_CrashtrackerResolveFrames;
124
+
125
+ /**
126
+ * This enum represents operations a profiler might be engaged in.
127
+ * The idea is that if a crash consistently occurs while a particular operation
128
+ * is ongoing, its likely related.
129
+ *
130
+ * In the future, we might also track wall-clock time of operations
131
+ * (or some statistical sampling thereof) using the same enum.
132
+ *
133
+ * NOTE: This enum is known to be non-exhaustive. Feel free to add new types
134
+ * as needed.
135
+ */
136
+ typedef enum ddog_prof_ProfilingOpTypes {
137
+ DDOG_PROF_PROFILING_OP_TYPES_NOT_PROFILING = 0,
138
+ DDOG_PROF_PROFILING_OP_TYPES_COLLECTING_SAMPLE,
139
+ DDOG_PROF_PROFILING_OP_TYPES_UNWINDING,
140
+ DDOG_PROF_PROFILING_OP_TYPES_SERIALIZING,
141
+ /**
142
+ * Dummy value to allow easier iteration
143
+ */
144
+ DDOG_PROF_PROFILING_OP_TYPES_SIZE,
145
+ } ddog_prof_ProfilingOpTypes;
146
+
110
147
  typedef struct ddog_CancellationToken ddog_CancellationToken;
111
148
 
112
149
  typedef struct ddog_prof_Exporter ddog_prof_Exporter;
@@ -115,6 +152,31 @@ typedef struct ddog_prof_ProfiledEndpointsStats ddog_prof_ProfiledEndpointsStats
115
152
 
116
153
  typedef struct ddog_prof_Exporter_Request ddog_prof_Exporter_Request;
117
154
 
155
+ /**
156
+ * A generic result type for when a profiling operation may fail, but there's
157
+ * nothing to return in the case of success.
158
+ */
159
+ typedef enum ddog_prof_Profile_Result_Tag {
160
+ DDOG_PROF_PROFILE_RESULT_OK,
161
+ DDOG_PROF_PROFILE_RESULT_ERR,
162
+ } ddog_prof_Profile_Result_Tag;
163
+
164
+ typedef struct ddog_prof_Profile_Result {
165
+ ddog_prof_Profile_Result_Tag tag;
166
+ union {
167
+ struct {
168
+ /**
169
+ * Do not use the value of Ok. This value only exists to overcome
170
+ * Rust -> C code generation.
171
+ */
172
+ bool ok;
173
+ };
174
+ struct {
175
+ struct ddog_Error err;
176
+ };
177
+ };
178
+ } ddog_prof_Profile_Result;
179
+
118
180
  typedef enum ddog_Endpoint_Tag {
119
181
  DDOG_ENDPOINT_AGENT,
120
182
  DDOG_ENDPOINT_AGENTLESS,
@@ -135,6 +197,71 @@ typedef struct ddog_Endpoint {
135
197
  };
136
198
  } ddog_Endpoint;
137
199
 
200
+ typedef struct ddog_prof_CrashtrackerConfiguration {
201
+ bool create_alt_stack;
202
+ /**
203
+ * The endpoint to send the crash repor to (can be a file://)
204
+ */
205
+ struct ddog_Endpoint endpoint;
206
+ /**
207
+ * Optional filename to forward stderr to (useful for logging/debugging)
208
+ */
209
+ ddog_CharSlice optional_stderr_filename;
210
+ /**
211
+ * Optional filename to forward stdout to (useful for logging/debugging)
212
+ */
213
+ ddog_CharSlice optional_stdout_filename;
214
+ ddog_CharSlice path_to_receiver_binary;
215
+ /**
216
+ * Whether/when we should attempt to resolve frames
217
+ */
218
+ enum ddog_prof_CrashtrackerResolveFrames resolve_frames;
219
+ } ddog_prof_CrashtrackerConfiguration;
220
+
221
+ typedef struct ddog_prof_CrashtrackerMetadata {
222
+ ddog_CharSlice profiling_library_name;
223
+ ddog_CharSlice profiling_library_version;
224
+ ddog_CharSlice family;
225
+ /**
226
+ * Should include "service", "environment", etc
227
+ */
228
+ const struct ddog_Vec_Tag *tags;
229
+ } ddog_prof_CrashtrackerMetadata;
230
+
231
+ typedef struct ddog_Slice_U8 {
232
+ /**
233
+ * Must be non-null and suitably aligned for the underlying type.
234
+ */
235
+ const uint8_t *ptr;
236
+ /**
237
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
238
+ * than or equal to [isize::MAX].
239
+ */
240
+ uintptr_t len;
241
+ } ddog_Slice_U8;
242
+
243
+ /**
244
+ * Use to represent bytes -- does not need to be valid UTF-8.
245
+ */
246
+ typedef struct ddog_Slice_U8 ddog_ByteSlice;
247
+
248
+ typedef struct ddog_prof_Exporter_File {
249
+ ddog_CharSlice name;
250
+ ddog_ByteSlice file;
251
+ } ddog_prof_Exporter_File;
252
+
253
+ typedef struct ddog_prof_Exporter_Slice_File {
254
+ /**
255
+ * Must be non-null and suitably aligned for the underlying type.
256
+ */
257
+ const struct ddog_prof_Exporter_File *ptr;
258
+ /**
259
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
260
+ * than or equal to [isize::MAX].
261
+ */
262
+ uintptr_t len;
263
+ } ddog_prof_Exporter_Slice_File;
264
+
138
265
  typedef enum ddog_prof_Exporter_NewResult_Tag {
139
266
  DDOG_PROF_EXPORTER_NEW_RESULT_OK,
140
267
  DDOG_PROF_EXPORTER_NEW_RESULT_ERR,
@@ -177,34 +304,6 @@ typedef struct ddog_Timespec {
177
304
  uint32_t nanoseconds;
178
305
  } ddog_Timespec;
179
306
 
180
- /**
181
- * Remember, the data inside of each member is potentially coming from FFI,
182
- * so every operation on it is unsafe!
183
- */
184
- typedef struct ddog_Slice_U8 {
185
- const uint8_t *ptr;
186
- uintptr_t len;
187
- } ddog_Slice_U8;
188
-
189
- /**
190
- * Use to represent bytes -- does not need to be valid UTF-8.
191
- */
192
- typedef struct ddog_Slice_U8 ddog_ByteSlice;
193
-
194
- typedef struct ddog_prof_Exporter_File {
195
- ddog_CharSlice name;
196
- ddog_ByteSlice file;
197
- } ddog_prof_Exporter_File;
198
-
199
- /**
200
- * Remember, the data inside of each member is potentially coming from FFI,
201
- * so every operation on it is unsafe!
202
- */
203
- typedef struct ddog_prof_Exporter_Slice_File {
204
- const struct ddog_prof_Exporter_File *ptr;
205
- uintptr_t len;
206
- } ddog_prof_Exporter_Slice_File;
207
-
208
307
  typedef struct ddog_HttpStatus {
209
308
  uint16_t code;
210
309
  } ddog_HttpStatus;
@@ -234,17 +333,40 @@ typedef struct ddog_prof_Profile {
234
333
  struct ddog_prof_Profile *inner;
235
334
  } ddog_prof_Profile;
236
335
 
336
+ /**
337
+ * Returned by [ddog_prof_Profile_new].
338
+ */
339
+ typedef enum ddog_prof_Profile_NewResult_Tag {
340
+ DDOG_PROF_PROFILE_NEW_RESULT_OK,
341
+ DDOG_PROF_PROFILE_NEW_RESULT_ERR,
342
+ } ddog_prof_Profile_NewResult_Tag;
343
+
344
+ typedef struct ddog_prof_Profile_NewResult {
345
+ ddog_prof_Profile_NewResult_Tag tag;
346
+ union {
347
+ struct {
348
+ struct ddog_prof_Profile ok;
349
+ };
350
+ struct {
351
+ struct ddog_Error err;
352
+ };
353
+ };
354
+ } ddog_prof_Profile_NewResult;
355
+
237
356
  typedef struct ddog_prof_ValueType {
238
357
  ddog_CharSlice type_;
239
358
  ddog_CharSlice unit;
240
359
  } ddog_prof_ValueType;
241
360
 
242
- /**
243
- * Remember, the data inside of each member is potentially coming from FFI,
244
- * so every operation on it is unsafe!
245
- */
246
361
  typedef struct ddog_prof_Slice_ValueType {
362
+ /**
363
+ * Must be non-null and suitably aligned for the underlying type.
364
+ */
247
365
  const struct ddog_prof_ValueType *ptr;
366
+ /**
367
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
368
+ * than or equal to [isize::MAX].
369
+ */
248
370
  uintptr_t len;
249
371
  } ddog_prof_Slice_ValueType;
250
372
 
@@ -253,31 +375,6 @@ typedef struct ddog_prof_Period {
253
375
  int64_t value;
254
376
  } ddog_prof_Period;
255
377
 
256
- /**
257
- * A generic result type for when a profiling operation may fail, but there's
258
- * nothing to return in the case of success.
259
- */
260
- typedef enum ddog_prof_Profile_Result_Tag {
261
- DDOG_PROF_PROFILE_RESULT_OK,
262
- DDOG_PROF_PROFILE_RESULT_ERR,
263
- } ddog_prof_Profile_Result_Tag;
264
-
265
- typedef struct ddog_prof_Profile_Result {
266
- ddog_prof_Profile_Result_Tag tag;
267
- union {
268
- struct {
269
- /**
270
- * Do not use the value of Ok. This value only exists to overcome
271
- * Rust -> C code generation.
272
- */
273
- bool ok;
274
- };
275
- struct {
276
- struct ddog_Error err;
277
- };
278
- };
279
- } ddog_prof_Profile_Result;
280
-
281
378
  typedef struct ddog_prof_Mapping {
282
379
  /**
283
380
  * Address at which the binary (or DLL) is loaded into memory.
@@ -342,21 +439,27 @@ typedef struct ddog_prof_Location {
342
439
  int64_t line;
343
440
  } ddog_prof_Location;
344
441
 
345
- /**
346
- * Remember, the data inside of each member is potentially coming from FFI,
347
- * so every operation on it is unsafe!
348
- */
349
442
  typedef struct ddog_prof_Slice_Location {
443
+ /**
444
+ * Must be non-null and suitably aligned for the underlying type.
445
+ */
350
446
  const struct ddog_prof_Location *ptr;
447
+ /**
448
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
449
+ * than or equal to [isize::MAX].
450
+ */
351
451
  uintptr_t len;
352
452
  } ddog_prof_Slice_Location;
353
453
 
354
- /**
355
- * Remember, the data inside of each member is potentially coming from FFI,
356
- * so every operation on it is unsafe!
357
- */
358
454
  typedef struct ddog_Slice_I64 {
455
+ /**
456
+ * Must be non-null and suitably aligned for the underlying type.
457
+ */
359
458
  const int64_t *ptr;
459
+ /**
460
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
461
+ * than or equal to [isize::MAX].
462
+ */
360
463
  uintptr_t len;
361
464
  } ddog_Slice_I64;
362
465
 
@@ -379,12 +482,15 @@ typedef struct ddog_prof_Label {
379
482
  ddog_CharSlice num_unit;
380
483
  } ddog_prof_Label;
381
484
 
382
- /**
383
- * Remember, the data inside of each member is potentially coming from FFI,
384
- * so every operation on it is unsafe!
385
- */
386
485
  typedef struct ddog_prof_Slice_Label {
486
+ /**
487
+ * Must be non-null and suitably aligned for the underlying type.
488
+ */
387
489
  const struct ddog_prof_Label *ptr;
490
+ /**
491
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
492
+ * than or equal to [isize::MAX].
493
+ */
388
494
  uintptr_t len;
389
495
  } ddog_prof_Slice_Label;
390
496
 
@@ -409,12 +515,15 @@ typedef struct ddog_prof_Sample {
409
515
  struct ddog_prof_Slice_Label labels;
410
516
  } ddog_prof_Sample;
411
517
 
412
- /**
413
- * Remember, the data inside of each member is potentially coming from FFI,
414
- * so every operation on it is unsafe!
415
- */
416
518
  typedef struct ddog_prof_Slice_Usize {
519
+ /**
520
+ * Must be non-null and suitably aligned for the underlying type.
521
+ */
417
522
  const uintptr_t *ptr;
523
+ /**
524
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
525
+ * than or equal to [isize::MAX].
526
+ */
418
527
  uintptr_t len;
419
528
  } ddog_prof_Slice_Usize;
420
529
 
@@ -11,6 +11,26 @@
11
11
  #include <stdint.h>
12
12
  #include "common.h"
13
13
 
14
+ DDOG_CHECK_RETURN
15
+ struct ddog_prof_Profile_Result ddog_prof_crashtracker_begin_profiling_op(enum ddog_prof_ProfilingOpTypes op);
16
+
17
+ DDOG_CHECK_RETURN
18
+ struct ddog_prof_Profile_Result ddog_prof_crashtracker_end_profiling_op(enum ddog_prof_ProfilingOpTypes op);
19
+
20
+ DDOG_CHECK_RETURN struct ddog_prof_Profile_Result ddog_prof_crashtracker_shutdown(void);
21
+
22
+ DDOG_CHECK_RETURN
23
+ struct ddog_prof_Profile_Result ddog_prof_crashtracker_update_on_fork(struct ddog_prof_CrashtrackerConfiguration config,
24
+ struct ddog_prof_CrashtrackerMetadata metadata);
25
+
26
+ DDOG_CHECK_RETURN struct ddog_prof_Profile_Result ddog_prof_crashtracker_receiver_entry_point(void);
27
+
28
+ DDOG_CHECK_RETURN
29
+ struct ddog_prof_Profile_Result ddog_prof_crashtracker_init(struct ddog_prof_CrashtrackerConfiguration config,
30
+ struct ddog_prof_CrashtrackerMetadata metadata);
31
+
32
+ DDOG_CHECK_RETURN struct ddog_prof_Exporter_Slice_File ddog_prof_Exporter_Slice_File_empty(void);
33
+
14
34
  /**
15
35
  * Creates an endpoint that uses the agent.
16
36
  * # Arguments
@@ -64,20 +84,25 @@ void ddog_prof_Exporter_drop(struct ddog_prof_Exporter *exporter);
64
84
  * If you use this parameter, please update the RFC with your use-case, so we can keep track of how this
65
85
  * is getting used.
66
86
  *
87
+ * For details on the `optional_info_json`, please reference the Datadog-internal
88
+ * "RFC: Pprof System Info Support".
89
+ *
67
90
  * # Safety
68
91
  * The `exporter`, `optional_additional_stats`, and `optional_endpoint_stats` args should be
69
92
  * valid objects created by this module.
70
- * NULL is allowed for `optional_additional_tags`, `optional_endpoints_stats` and
71
- * `optional_internal_metadata_json`.
93
+ * NULL is allowed for `optional_additional_tags`, `optional_endpoints_stats`,
94
+ * `optional_internal_metadata_json` and `optional_info_json`.
72
95
  */
73
96
  DDOG_CHECK_RETURN
74
97
  struct ddog_prof_Exporter_Request_BuildResult ddog_prof_Exporter_Request_build(struct ddog_prof_Exporter *exporter,
75
98
  struct ddog_Timespec start,
76
99
  struct ddog_Timespec end,
77
- struct ddog_prof_Exporter_Slice_File files,
100
+ struct ddog_prof_Exporter_Slice_File files_to_compress_and_export,
101
+ struct ddog_prof_Exporter_Slice_File files_to_export_unmodified,
78
102
  const struct ddog_Vec_Tag *optional_additional_tags,
79
103
  const struct ddog_prof_ProfiledEndpointsStats *optional_endpoints_stats,
80
104
  const ddog_CharSlice *optional_internal_metadata_json,
105
+ const ddog_CharSlice *optional_info_json,
81
106
  uint64_t timeout_ms);
82
107
 
83
108
  /**
@@ -170,9 +195,9 @@ void ddog_CancellationToken_drop(struct ddog_CancellationToken *token);
170
195
  * and must have the correct number of elements for the slice.
171
196
  */
172
197
  DDOG_CHECK_RETURN
173
- struct ddog_prof_Profile ddog_prof_Profile_new(struct ddog_prof_Slice_ValueType sample_types,
174
- const struct ddog_prof_Period *period,
175
- const struct ddog_Timespec *start_time);
198
+ struct ddog_prof_Profile_NewResult ddog_prof_Profile_new(struct ddog_prof_Slice_ValueType sample_types,
199
+ const struct ddog_prof_Period *period,
200
+ const struct ddog_Timespec *start_time);
176
201
 
177
202
  /**
178
203
  * # Safety
@@ -197,7 +222,8 @@ void ddog_prof_Profile_drop(struct ddog_prof_Profile *profile);
197
222
  */
198
223
  DDOG_CHECK_RETURN
199
224
  struct ddog_prof_Profile_Result ddog_prof_Profile_add(struct ddog_prof_Profile *profile,
200
- struct ddog_prof_Sample sample);
225
+ struct ddog_prof_Sample sample,
226
+ int64_t timestamp);
201
227
 
202
228
  /**
203
229
  * Associate an endpoint to a given local root span id.
@@ -303,6 +329,7 @@ void ddog_prof_EncodedProfile_drop(struct ddog_prof_EncodedProfile *profile);
303
329
 
304
330
  /**
305
331
  * Serialize the aggregated profile.
332
+ * Drains the data, and then resets the profile for future use.
306
333
  *
307
334
  * Don't forget to clean up the ok with `ddog_prof_EncodedProfile_drop` or
308
335
  * the error variant with `ddog_Error_drop` when you are done with them.
@@ -316,6 +343,7 @@ void ddog_prof_EncodedProfile_drop(struct ddog_prof_EncodedProfile *profile);
316
343
  * under anomalous conditions this may fail as system clocks can be adjusted,
317
344
  * or the programmer accidentally passed an earlier time. The duration of
318
345
  * the serialized profile will be set to zero for these cases.
346
+ * * `start_time` - Optional start time for the next profile.
319
347
  *
320
348
  * # Safety
321
349
  * The `profile` must point to a valid profile object.
@@ -325,7 +353,8 @@ void ddog_prof_EncodedProfile_drop(struct ddog_prof_EncodedProfile *profile);
325
353
  DDOG_CHECK_RETURN
326
354
  struct ddog_prof_Profile_SerializeResult ddog_prof_Profile_serialize(struct ddog_prof_Profile *profile,
327
355
  const struct ddog_Timespec *end_time,
328
- const int64_t *duration_nanos);
356
+ const int64_t *duration_nanos,
357
+ const struct ddog_Timespec *start_time);
329
358
 
330
359
  DDOG_CHECK_RETURN struct ddog_Slice_U8 ddog_Vec_U8_as_slice(const struct ddog_Vec_U8 *vec);
331
360
 
@@ -10,7 +10,7 @@ includedir=${prefix}/include
10
10
 
11
11
  Name: datadog_profiling
12
12
  Description: Contains common code used to implement Datadog's Continuous Profilers. (Dynamic linking variant, sets rpath)
13
- Version: 4.0.0
13
+ Version:
14
14
  Requires:
15
15
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
16
16
  Libs.private: