libdatadog 16.0.1.1.0 → 19.1.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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +2 -2
  3. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/LICENSE-3rdparty.yml +19675 -12455
  4. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/blazesym.h +435 -229
  5. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +691 -128
  6. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/crashtracker.h +118 -14
  7. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/data-pipeline.h +65 -3
  8. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/library-config.h +18 -6
  9. data/vendor/libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/log.h +63 -0
  10. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/profiling.h +357 -42
  11. data/vendor/{libdatadog-16.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/telemetry.h +27 -30
  12. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/lib/libdatadog_profiling.so +0 -0
  13. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/LICENSE-3rdparty.yml +19675 -12455
  14. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  15. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +435 -229
  16. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +691 -128
  17. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/crashtracker.h +118 -14
  18. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/data-pipeline.h +65 -3
  19. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/library-config.h +18 -6
  20. data/vendor/libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/log.h +63 -0
  21. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +357 -42
  22. data/vendor/{libdatadog-16.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/telemetry.h +27 -30
  23. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/lib/libdatadog_profiling.so +0 -0
  24. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +19675 -12455
  25. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/blazesym.h +435 -229
  26. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +691 -128
  27. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/crashtracker.h +118 -14
  28. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/data-pipeline.h +65 -3
  29. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/library-config.h +18 -6
  30. data/vendor/libdatadog-19.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/log.h +63 -0
  31. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/profiling.h +357 -42
  32. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/telemetry.h +27 -30
  33. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  34. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/LICENSE-3rdparty.yml +19675 -12455
  35. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  36. data/vendor/{libdatadog-16.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/blazesym.h +435 -229
  37. data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/common.h +691 -128
  38. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/crashtracker.h +118 -14
  39. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/data-pipeline.h +65 -3
  40. data/vendor/{libdatadog-16.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/library-config.h +18 -6
  41. data/vendor/libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/log.h +63 -0
  42. data/vendor/{libdatadog-16.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +357 -42
  43. data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/telemetry.h +27 -30
  44. data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  45. metadata +60 -59
  46. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  47. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  48. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  49. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  50. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  51. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  52. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  53. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
  54. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
  55. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  56. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  57. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
  58. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -0
  59. /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
@@ -257,14 +257,18 @@ typedef struct ddog_Vec_Tag_ParseResult {
257
257
  struct ddog_Error *error_message;
258
258
  } ddog_Vec_Tag_ParseResult;
259
259
 
260
- typedef struct ddog_CancellationToken ddog_CancellationToken;
260
+ typedef struct ddog_prof_EncodedProfile ddog_prof_EncodedProfile;
261
261
 
262
262
  typedef struct ddog_prof_Exporter ddog_prof_Exporter;
263
263
 
264
- typedef struct ddog_prof_ProfiledEndpointsStats ddog_prof_ProfiledEndpointsStats;
265
-
266
264
  typedef struct ddog_prof_Exporter_Request ddog_prof_Exporter_Request;
267
265
 
266
+ /**
267
+ * A tag is a combination of a wire_type, stored in the least significant
268
+ * three bits, and the field number that is defined in the .proto file.
269
+ */
270
+ typedef struct ddog_Tag ddog_Tag;
271
+
268
272
  typedef struct ddog_Slice_U8 {
269
273
  /**
270
274
  * Should be non-null and suitably aligned for the underlying type. It is
@@ -327,84 +331,124 @@ typedef struct ddog_prof_Endpoint {
327
331
  };
328
332
  } ddog_prof_Endpoint;
329
333
 
330
- typedef enum ddog_prof_Exporter_NewResult_Tag {
331
- DDOG_PROF_EXPORTER_NEW_RESULT_OK,
332
- DDOG_PROF_EXPORTER_NEW_RESULT_ERR,
333
- } ddog_prof_Exporter_NewResult_Tag;
334
+ /**
335
+ * Represents an object that should only be referred to by its handle.
336
+ * Do not access its member for any reason, only use the C API functions on this struct.
337
+ */
338
+ typedef struct ddog_prof_ProfileExporter {
339
+ struct ddog_prof_Exporter *inner;
340
+ } ddog_prof_ProfileExporter;
341
+
342
+ /**
343
+ * A generic result type for when an operation may fail,
344
+ * or may return <T> in case of success.
345
+ */
346
+ typedef enum ddog_prof_ProfileExporter_Result_Tag {
347
+ DDOG_PROF_PROFILE_EXPORTER_RESULT_OK_HANDLE_PROFILE_EXPORTER,
348
+ DDOG_PROF_PROFILE_EXPORTER_RESULT_ERR_HANDLE_PROFILE_EXPORTER,
349
+ } ddog_prof_ProfileExporter_Result_Tag;
334
350
 
335
- typedef struct ddog_prof_Exporter_NewResult {
336
- ddog_prof_Exporter_NewResult_Tag tag;
351
+ typedef struct ddog_prof_ProfileExporter_Result {
352
+ ddog_prof_ProfileExporter_Result_Tag tag;
337
353
  union {
338
354
  struct {
339
- struct ddog_prof_Exporter *ok;
355
+ struct ddog_prof_ProfileExporter ok;
340
356
  };
341
357
  struct {
342
358
  struct ddog_Error err;
343
359
  };
344
360
  };
345
- } ddog_prof_Exporter_NewResult;
361
+ } ddog_prof_ProfileExporter_Result;
346
362
 
347
- typedef enum ddog_prof_Option_Error_Tag {
348
- DDOG_PROF_OPTION_ERROR_SOME_ERROR,
349
- DDOG_PROF_OPTION_ERROR_NONE_ERROR,
350
- } ddog_prof_Option_Error_Tag;
363
+ /**
364
+ * A generic result type for when an operation may fail,
365
+ * but there's nothing to return in the case of success.
366
+ */
367
+ typedef enum ddog_VoidResult_Tag {
368
+ DDOG_VOID_RESULT_OK,
369
+ DDOG_VOID_RESULT_ERR,
370
+ } ddog_VoidResult_Tag;
351
371
 
352
- typedef struct ddog_prof_Option_Error {
353
- ddog_prof_Option_Error_Tag tag;
372
+ typedef struct ddog_VoidResult {
373
+ ddog_VoidResult_Tag tag;
354
374
  union {
355
375
  struct {
356
- struct ddog_Error some;
376
+ struct ddog_Error err;
357
377
  };
358
378
  };
359
- } ddog_prof_Option_Error;
379
+ } ddog_VoidResult;
360
380
 
361
- typedef struct ddog_prof_Option_Error ddog_prof_MaybeError;
381
+ /**
382
+ * Represents an object that should only be referred to by its handle.
383
+ * Do not access its member for any reason, only use the C API functions on this struct.
384
+ */
385
+ typedef struct ddog_prof_Request {
386
+ struct ddog_prof_Exporter_Request *inner;
387
+ } ddog_prof_Request;
362
388
 
363
- typedef enum ddog_prof_Exporter_Request_BuildResult_Tag {
364
- DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_OK,
365
- DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_ERR,
366
- } ddog_prof_Exporter_Request_BuildResult_Tag;
389
+ /**
390
+ * A generic result type for when an operation may fail,
391
+ * or may return <T> in case of success.
392
+ */
393
+ typedef enum ddog_prof_Request_Result_Tag {
394
+ DDOG_PROF_REQUEST_RESULT_OK_HANDLE_REQUEST,
395
+ DDOG_PROF_REQUEST_RESULT_ERR_HANDLE_REQUEST,
396
+ } ddog_prof_Request_Result_Tag;
367
397
 
368
- typedef struct ddog_prof_Exporter_Request_BuildResult {
369
- ddog_prof_Exporter_Request_BuildResult_Tag tag;
398
+ typedef struct ddog_prof_Request_Result {
399
+ ddog_prof_Request_Result_Tag tag;
370
400
  union {
371
401
  struct {
372
- struct ddog_prof_Exporter_Request *ok;
402
+ struct ddog_prof_Request ok;
373
403
  };
374
404
  struct {
375
405
  struct ddog_Error err;
376
406
  };
377
407
  };
378
- } ddog_prof_Exporter_Request_BuildResult;
408
+ } ddog_prof_Request_Result;
379
409
 
380
410
  /**
381
- * Represents time since the Unix Epoch in seconds plus nanoseconds.
411
+ * Represents an object that should only be referred to by its handle.
412
+ * Do not access its member for any reason, only use the C API functions on this struct.
382
413
  */
383
- typedef struct ddog_Timespec {
384
- int64_t seconds;
385
- uint32_t nanoseconds;
386
- } ddog_Timespec;
414
+ typedef struct ddog_prof_EncodedProfile {
415
+ struct ddog_prof_EncodedProfile *inner;
416
+ } ddog_prof_EncodedProfile;
387
417
 
388
418
  typedef struct ddog_HttpStatus {
389
419
  uint16_t code;
390
420
  } ddog_HttpStatus;
391
421
 
392
- typedef enum ddog_prof_Exporter_SendResult_Tag {
393
- DDOG_PROF_EXPORTER_SEND_RESULT_HTTP_RESPONSE,
394
- DDOG_PROF_EXPORTER_SEND_RESULT_ERR,
395
- } ddog_prof_Exporter_SendResult_Tag;
422
+ /**
423
+ * A generic result type for when an operation may fail,
424
+ * or may return <T> in case of success.
425
+ */
426
+ typedef enum ddog_prof_Result_HttpStatus_Tag {
427
+ DDOG_PROF_RESULT_HTTP_STATUS_OK_HTTP_STATUS,
428
+ DDOG_PROF_RESULT_HTTP_STATUS_ERR_HTTP_STATUS,
429
+ } ddog_prof_Result_HttpStatus_Tag;
396
430
 
397
- typedef struct ddog_prof_Exporter_SendResult {
398
- ddog_prof_Exporter_SendResult_Tag tag;
431
+ typedef struct ddog_prof_Result_HttpStatus {
432
+ ddog_prof_Result_HttpStatus_Tag tag;
399
433
  union {
400
434
  struct {
401
- struct ddog_HttpStatus http_response;
435
+ struct ddog_HttpStatus ok;
402
436
  };
403
437
  struct {
404
438
  struct ddog_Error err;
405
439
  };
406
440
  };
407
- } ddog_prof_Exporter_SendResult;
441
+ } ddog_prof_Result_HttpStatus;
442
+
443
+ typedef struct ddog_OpaqueCancellationToken ddog_prof_TokioCancellationToken;
444
+
445
+ /**
446
+ * Represents an object that should only be referred to by its handle.
447
+ * Do not access its member for any reason, only use the C API functions on this struct.
448
+ */
449
+ typedef struct ddog_CancellationToken {
450
+ ddog_prof_TokioCancellationToken *inner;
451
+ } ddog_CancellationToken;
408
452
 
409
453
  /**
410
454
  * Represents a profile. Do not access its member for any reason, only use
@@ -537,10 +581,6 @@ typedef struct ddog_prof_Function {
537
581
  */
538
582
  ddog_CharSlice filename;
539
583
  struct ddog_prof_ManagedStringId filename_id;
540
- /**
541
- * Line number in source file.
542
- */
543
- int64_t start_line;
544
584
  } ddog_prof_Function;
545
585
 
546
586
  typedef struct ddog_prof_Location {
@@ -659,12 +699,26 @@ typedef struct ddog_prof_Slice_Usize {
659
699
  uintptr_t len;
660
700
  } ddog_prof_Slice_Usize;
661
701
 
662
- typedef struct ddog_prof_EncodedProfile {
663
- struct ddog_Timespec start;
664
- struct ddog_Timespec end;
665
- struct ddog_Vec_U8 buffer;
666
- struct ddog_prof_ProfiledEndpointsStats *endpoints_stats;
667
- } ddog_prof_EncodedProfile;
702
+ /**
703
+ * A generic result type for when an operation may fail,
704
+ * or may return <T> in case of success.
705
+ */
706
+ typedef enum ddog_prof_Result_ByteSlice_Tag {
707
+ DDOG_PROF_RESULT_BYTE_SLICE_OK_BYTE_SLICE,
708
+ DDOG_PROF_RESULT_BYTE_SLICE_ERR_BYTE_SLICE,
709
+ } ddog_prof_Result_ByteSlice_Tag;
710
+
711
+ typedef struct ddog_prof_Result_ByteSlice {
712
+ ddog_prof_Result_ByteSlice_Tag tag;
713
+ union {
714
+ struct {
715
+ ddog_ByteSlice ok;
716
+ };
717
+ struct {
718
+ struct ddog_Error err;
719
+ };
720
+ };
721
+ } ddog_prof_Result_ByteSlice;
668
722
 
669
723
  typedef enum ddog_prof_Profile_SerializeResult_Tag {
670
724
  DDOG_PROF_PROFILE_SERIALIZE_RESULT_OK,
@@ -683,53 +737,205 @@ typedef struct ddog_prof_Profile_SerializeResult {
683
737
  };
684
738
  } ddog_prof_Profile_SerializeResult;
685
739
 
686
- typedef enum ddog_prof_ManagedStringStorageNewResult_Tag {
687
- DDOG_PROF_MANAGED_STRING_STORAGE_NEW_RESULT_OK,
688
- DDOG_PROF_MANAGED_STRING_STORAGE_NEW_RESULT_ERR,
689
- } ddog_prof_ManagedStringStorageNewResult_Tag;
740
+ /**
741
+ * Represents time since the Unix Epoch in seconds plus nanoseconds.
742
+ */
743
+ typedef struct ddog_Timespec {
744
+ int64_t seconds;
745
+ uint32_t nanoseconds;
746
+ } ddog_Timespec;
690
747
 
691
- typedef struct ddog_prof_ManagedStringStorageNewResult {
692
- ddog_prof_ManagedStringStorageNewResult_Tag tag;
748
+ /**
749
+ * Opaque identifier for the profiler generation
750
+ */
751
+ typedef struct ddog_prof_Generation {
752
+ uint64_t id;
753
+ } ddog_prof_Generation;
754
+
755
+ typedef struct OpaqueFunctionId {
756
+ uint32_t _0;
757
+ } OpaqueFunctionId;
758
+
759
+ typedef struct ddog_prof_FunctionId {
760
+ struct ddog_prof_Generation generation;
761
+ struct OpaqueFunctionId id;
762
+ } ddog_prof_FunctionId;
763
+
764
+ /**
765
+ * A generic result type for when an operation may fail,
766
+ * or may return <T> in case of success.
767
+ */
768
+ typedef enum ddog_prof_FunctionId_Result_Tag {
769
+ DDOG_PROF_FUNCTION_ID_RESULT_OK_GENERATIONAL_ID_FUNCTION_ID,
770
+ DDOG_PROF_FUNCTION_ID_RESULT_ERR_GENERATIONAL_ID_FUNCTION_ID,
771
+ } ddog_prof_FunctionId_Result_Tag;
772
+
773
+ typedef struct ddog_prof_FunctionId_Result {
774
+ ddog_prof_FunctionId_Result_Tag tag;
693
775
  union {
694
776
  struct {
695
- struct ddog_prof_ManagedStringStorage ok;
777
+ struct ddog_prof_FunctionId ok;
696
778
  };
697
779
  struct {
698
780
  struct ddog_Error err;
699
781
  };
700
782
  };
701
- } ddog_prof_ManagedStringStorageNewResult;
783
+ } ddog_prof_FunctionId_Result;
702
784
 
703
- typedef enum ddog_prof_ManagedStringStorageInternResult_Tag {
704
- DDOG_PROF_MANAGED_STRING_STORAGE_INTERN_RESULT_OK,
705
- DDOG_PROF_MANAGED_STRING_STORAGE_INTERN_RESULT_ERR,
706
- } ddog_prof_ManagedStringStorageInternResult_Tag;
785
+ /**
786
+ * Represents an offset into the Profile's string table. Note that it cannot
787
+ * exceed u32 because an entire protobuf message must not be larger than or
788
+ * equal to 2 GiB. By the time you encode the tag and length prefix for each
789
+ * string, there's no way to get this many unique-ish strings without first
790
+ * exceeding the protobuf 2 GiB limit.
791
+ *
792
+ * A value of 0 means "no string" or "empty string" (they are synonymous).
793
+ */
794
+ typedef struct OpaqueStringId {
795
+ uint32_t _0;
796
+ } OpaqueStringId;
797
+ #define OpaqueStringId_ZERO (OpaqueStringId){ ._0 = 0 }
707
798
 
708
- typedef struct ddog_prof_ManagedStringStorageInternResult {
709
- ddog_prof_ManagedStringStorageInternResult_Tag tag;
799
+ typedef struct OpaqueStringId OpaqueStringId;
800
+
801
+ typedef struct ddog_prof_StringId {
802
+ struct ddog_prof_Generation generation;
803
+ OpaqueStringId id;
804
+ } ddog_prof_StringId;
805
+
806
+ typedef struct OpaqueLabelId {
807
+ uint32_t _0;
808
+ } OpaqueLabelId;
809
+
810
+ typedef struct ddog_prof_LabelId {
811
+ struct ddog_prof_Generation generation;
812
+ struct OpaqueLabelId id;
813
+ } ddog_prof_LabelId;
814
+
815
+ /**
816
+ * A generic result type for when an operation may fail,
817
+ * or may return <T> in case of success.
818
+ */
819
+ typedef enum ddog_prof_LabelId_Result_Tag {
820
+ DDOG_PROF_LABEL_ID_RESULT_OK_GENERATIONAL_ID_LABEL_ID,
821
+ DDOG_PROF_LABEL_ID_RESULT_ERR_GENERATIONAL_ID_LABEL_ID,
822
+ } ddog_prof_LabelId_Result_Tag;
823
+
824
+ typedef struct ddog_prof_LabelId_Result {
825
+ ddog_prof_LabelId_Result_Tag tag;
710
826
  union {
711
827
  struct {
712
- struct ddog_prof_ManagedStringId ok;
828
+ struct ddog_prof_LabelId ok;
713
829
  };
714
830
  struct {
715
831
  struct ddog_Error err;
716
832
  };
717
833
  };
718
- } ddog_prof_ManagedStringStorageInternResult;
834
+ } ddog_prof_LabelId_Result;
719
835
 
720
- typedef struct ddog_prof_Slice_CharSlice {
836
+ typedef struct OpaqueLabelSetId {
837
+ uint32_t _0;
838
+ } OpaqueLabelSetId;
839
+
840
+ typedef struct ddog_prof_LabelSetId {
841
+ struct ddog_prof_Generation generation;
842
+ struct OpaqueLabelSetId id;
843
+ } ddog_prof_LabelSetId;
844
+
845
+ /**
846
+ * A generic result type for when an operation may fail,
847
+ * or may return <T> in case of success.
848
+ */
849
+ typedef enum ddog_prof_LabelSetId_Result_Tag {
850
+ DDOG_PROF_LABEL_SET_ID_RESULT_OK_GENERATIONAL_ID_LABEL_SET_ID,
851
+ DDOG_PROF_LABEL_SET_ID_RESULT_ERR_GENERATIONAL_ID_LABEL_SET_ID,
852
+ } ddog_prof_LabelSetId_Result_Tag;
853
+
854
+ typedef struct ddog_prof_LabelSetId_Result {
855
+ ddog_prof_LabelSetId_Result_Tag tag;
856
+ union {
857
+ struct {
858
+ struct ddog_prof_LabelSetId ok;
859
+ };
860
+ struct {
861
+ struct ddog_Error err;
862
+ };
863
+ };
864
+ } ddog_prof_LabelSetId_Result;
865
+
866
+ typedef struct ddog_prof_Slice_LabelId {
721
867
  /**
722
868
  * Should be non-null and suitably aligned for the underlying type. It is
723
869
  * allowed but not recommended for the pointer to be null when the len is
724
870
  * zero.
725
871
  */
726
- const ddog_CharSlice *ptr;
872
+ const struct ddog_prof_LabelId *ptr;
727
873
  /**
728
874
  * The number of elements (not bytes) that `.ptr` points to. Must be less
729
875
  * than or equal to [isize::MAX].
730
876
  */
731
877
  uintptr_t len;
732
- } ddog_prof_Slice_CharSlice;
878
+ } ddog_prof_Slice_LabelId;
879
+
880
+ typedef struct OpaqueLocationId {
881
+ uint32_t _0;
882
+ } OpaqueLocationId;
883
+
884
+ typedef struct ddog_prof_LocationId {
885
+ struct ddog_prof_Generation generation;
886
+ struct OpaqueLocationId id;
887
+ } ddog_prof_LocationId;
888
+
889
+ /**
890
+ * A generic result type for when an operation may fail,
891
+ * or may return <T> in case of success.
892
+ */
893
+ typedef enum ddog_prof_LocationId_Result_Tag {
894
+ DDOG_PROF_LOCATION_ID_RESULT_OK_GENERATIONAL_ID_LOCATION_ID,
895
+ DDOG_PROF_LOCATION_ID_RESULT_ERR_GENERATIONAL_ID_LOCATION_ID,
896
+ } ddog_prof_LocationId_Result_Tag;
897
+
898
+ typedef struct ddog_prof_LocationId_Result {
899
+ ddog_prof_LocationId_Result_Tag tag;
900
+ union {
901
+ struct {
902
+ struct ddog_prof_LocationId ok;
903
+ };
904
+ struct {
905
+ struct ddog_Error err;
906
+ };
907
+ };
908
+ } ddog_prof_LocationId_Result;
909
+
910
+ typedef struct OpaqueMappingId {
911
+ uint32_t _0;
912
+ } OpaqueMappingId;
913
+
914
+ typedef struct ddog_prof_MappingId {
915
+ struct ddog_prof_Generation generation;
916
+ struct OpaqueMappingId id;
917
+ } ddog_prof_MappingId;
918
+
919
+ /**
920
+ * A generic result type for when an operation may fail,
921
+ * or may return <T> in case of success.
922
+ */
923
+ typedef enum ddog_prof_StringId_Result_Tag {
924
+ DDOG_PROF_STRING_ID_RESULT_OK_GENERATIONAL_ID_STRING_ID,
925
+ DDOG_PROF_STRING_ID_RESULT_ERR_GENERATIONAL_ID_STRING_ID,
926
+ } ddog_prof_StringId_Result_Tag;
927
+
928
+ typedef struct ddog_prof_StringId_Result {
929
+ ddog_prof_StringId_Result_Tag tag;
930
+ union {
931
+ struct {
932
+ struct ddog_prof_StringId ok;
933
+ };
934
+ struct {
935
+ struct ddog_Error err;
936
+ };
937
+ };
938
+ } ddog_prof_StringId_Result;
733
939
 
734
940
  typedef struct ddog_prof_Slice_ManagedStringId {
735
941
  /**
@@ -745,6 +951,170 @@ typedef struct ddog_prof_Slice_ManagedStringId {
745
951
  uintptr_t len;
746
952
  } ddog_prof_Slice_ManagedStringId;
747
953
 
954
+ typedef struct ddog_prof_MutSlice_GenerationalIdStringId {
955
+ /**
956
+ * Should be non-null and suitably aligned for the underlying type. It is
957
+ * allowed but not recommended for the pointer to be null when the len is
958
+ * zero.
959
+ */
960
+ struct ddog_prof_StringId *ptr;
961
+ /**
962
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
963
+ * than or equal to [isize::MAX].
964
+ */
965
+ uintptr_t len;
966
+ } ddog_prof_MutSlice_GenerationalIdStringId;
967
+
968
+ /**
969
+ * A generic result type for when an operation may fail,
970
+ * or may return <T> in case of success.
971
+ */
972
+ typedef enum ddog_prof_MappingId_Result_Tag {
973
+ DDOG_PROF_MAPPING_ID_RESULT_OK_GENERATIONAL_ID_MAPPING_ID,
974
+ DDOG_PROF_MAPPING_ID_RESULT_ERR_GENERATIONAL_ID_MAPPING_ID,
975
+ } ddog_prof_MappingId_Result_Tag;
976
+
977
+ typedef struct ddog_prof_MappingId_Result {
978
+ ddog_prof_MappingId_Result_Tag tag;
979
+ union {
980
+ struct {
981
+ struct ddog_prof_MappingId ok;
982
+ };
983
+ struct {
984
+ struct ddog_Error err;
985
+ };
986
+ };
987
+ } ddog_prof_MappingId_Result;
988
+
989
+ typedef struct OpaqueStackTraceId {
990
+ uint32_t _0;
991
+ } OpaqueStackTraceId;
992
+
993
+ typedef struct ddog_prof_StackTraceId {
994
+ struct ddog_prof_Generation generation;
995
+ struct OpaqueStackTraceId id;
996
+ } ddog_prof_StackTraceId;
997
+
998
+ /**
999
+ * A generic result type for when an operation may fail,
1000
+ * or may return <T> in case of success.
1001
+ */
1002
+ typedef enum ddog_prof_StackTraceId_Result_Tag {
1003
+ DDOG_PROF_STACK_TRACE_ID_RESULT_OK_GENERATIONAL_ID_STACK_TRACE_ID,
1004
+ DDOG_PROF_STACK_TRACE_ID_RESULT_ERR_GENERATIONAL_ID_STACK_TRACE_ID,
1005
+ } ddog_prof_StackTraceId_Result_Tag;
1006
+
1007
+ typedef struct ddog_prof_StackTraceId_Result {
1008
+ ddog_prof_StackTraceId_Result_Tag tag;
1009
+ union {
1010
+ struct {
1011
+ struct ddog_prof_StackTraceId ok;
1012
+ };
1013
+ struct {
1014
+ struct ddog_Error err;
1015
+ };
1016
+ };
1017
+ } ddog_prof_StackTraceId_Result;
1018
+
1019
+ typedef struct ddog_prof_Slice_LocationId {
1020
+ /**
1021
+ * Should be non-null and suitably aligned for the underlying type. It is
1022
+ * allowed but not recommended for the pointer to be null when the len is
1023
+ * zero.
1024
+ */
1025
+ const struct ddog_prof_LocationId *ptr;
1026
+ /**
1027
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1028
+ * than or equal to [isize::MAX].
1029
+ */
1030
+ uintptr_t len;
1031
+ } ddog_prof_Slice_LocationId;
1032
+
1033
+ typedef struct ddog_prof_Slice_CharSlice {
1034
+ /**
1035
+ * Should be non-null and suitably aligned for the underlying type. It is
1036
+ * allowed but not recommended for the pointer to be null when the len is
1037
+ * zero.
1038
+ */
1039
+ const ddog_CharSlice *ptr;
1040
+ /**
1041
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1042
+ * than or equal to [isize::MAX].
1043
+ */
1044
+ uintptr_t len;
1045
+ } ddog_prof_Slice_CharSlice;
1046
+
1047
+ /**
1048
+ * A generic result type for when an operation may fail,
1049
+ * or may return <T> in case of success.
1050
+ */
1051
+ typedef enum ddog_prof_Result_Generation_Tag {
1052
+ DDOG_PROF_RESULT_GENERATION_OK_GENERATION,
1053
+ DDOG_PROF_RESULT_GENERATION_ERR_GENERATION,
1054
+ } ddog_prof_Result_Generation_Tag;
1055
+
1056
+ typedef struct ddog_prof_Result_Generation {
1057
+ ddog_prof_Result_Generation_Tag tag;
1058
+ union {
1059
+ struct {
1060
+ struct ddog_prof_Generation ok;
1061
+ };
1062
+ struct {
1063
+ struct ddog_Error err;
1064
+ };
1065
+ };
1066
+ } ddog_prof_Result_Generation;
1067
+
1068
+ typedef enum ddog_prof_ManagedStringStorageNewResult_Tag {
1069
+ DDOG_PROF_MANAGED_STRING_STORAGE_NEW_RESULT_OK,
1070
+ DDOG_PROF_MANAGED_STRING_STORAGE_NEW_RESULT_ERR,
1071
+ } ddog_prof_ManagedStringStorageNewResult_Tag;
1072
+
1073
+ typedef struct ddog_prof_ManagedStringStorageNewResult {
1074
+ ddog_prof_ManagedStringStorageNewResult_Tag tag;
1075
+ union {
1076
+ struct {
1077
+ struct ddog_prof_ManagedStringStorage ok;
1078
+ };
1079
+ struct {
1080
+ struct ddog_Error err;
1081
+ };
1082
+ };
1083
+ } ddog_prof_ManagedStringStorageNewResult;
1084
+
1085
+ typedef enum ddog_prof_ManagedStringStorageInternResult_Tag {
1086
+ DDOG_PROF_MANAGED_STRING_STORAGE_INTERN_RESULT_OK,
1087
+ DDOG_PROF_MANAGED_STRING_STORAGE_INTERN_RESULT_ERR,
1088
+ } ddog_prof_ManagedStringStorageInternResult_Tag;
1089
+
1090
+ typedef struct ddog_prof_ManagedStringStorageInternResult {
1091
+ ddog_prof_ManagedStringStorageInternResult_Tag tag;
1092
+ union {
1093
+ struct {
1094
+ struct ddog_prof_ManagedStringId ok;
1095
+ };
1096
+ struct {
1097
+ struct ddog_Error err;
1098
+ };
1099
+ };
1100
+ } ddog_prof_ManagedStringStorageInternResult;
1101
+
1102
+ typedef enum ddog_prof_Option_Error_Tag {
1103
+ DDOG_PROF_OPTION_ERROR_SOME_ERROR,
1104
+ DDOG_PROF_OPTION_ERROR_NONE_ERROR,
1105
+ } ddog_prof_Option_Error_Tag;
1106
+
1107
+ typedef struct ddog_prof_Option_Error {
1108
+ ddog_prof_Option_Error_Tag tag;
1109
+ union {
1110
+ struct {
1111
+ struct ddog_Error some;
1112
+ };
1113
+ };
1114
+ } ddog_prof_Option_Error;
1115
+
1116
+ typedef struct ddog_prof_Option_Error ddog_prof_MaybeError;
1117
+
748
1118
  typedef enum ddog_StringWrapperResult_Tag {
749
1119
  DDOG_STRING_WRAPPER_RESULT_OK,
750
1120
  DDOG_STRING_WRAPPER_RESULT_ERR,
@@ -762,12 +1132,16 @@ typedef struct ddog_StringWrapperResult {
762
1132
  };
763
1133
  } ddog_StringWrapperResult;
764
1134
 
1135
+ typedef struct ddog_prof_StringId ddog_prof_StringId;
1136
+
765
1137
  typedef enum ddog_ConfigurationOrigin {
766
1138
  DDOG_CONFIGURATION_ORIGIN_ENV_VAR,
767
1139
  DDOG_CONFIGURATION_ORIGIN_CODE,
768
1140
  DDOG_CONFIGURATION_ORIGIN_DD_CONFIG,
769
1141
  DDOG_CONFIGURATION_ORIGIN_REMOTE_CONFIG,
770
1142
  DDOG_CONFIGURATION_ORIGIN_DEFAULT,
1143
+ DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
1144
+ DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
771
1145
  } ddog_ConfigurationOrigin;
772
1146
 
773
1147
  typedef enum ddog_LogLevel {
@@ -899,6 +1273,7 @@ typedef enum ddog_crasht_OpTypes {
899
1273
 
900
1274
  /**
901
1275
  * See https://man7.org/linux/man-pages/man2/sigaction.2.html
1276
+ * MUST REMAIN IN SYNC WITH THE ENUM IN emit_sigcodes.c
902
1277
  */
903
1278
  typedef enum ddog_crasht_SiCodes {
904
1279
  DDOG_CRASHT_SI_CODES_BUS_ADRALN,
@@ -906,6 +1281,14 @@ typedef enum ddog_crasht_SiCodes {
906
1281
  DDOG_CRASHT_SI_CODES_BUS_MCEERR_AO,
907
1282
  DDOG_CRASHT_SI_CODES_BUS_MCEERR_AR,
908
1283
  DDOG_CRASHT_SI_CODES_BUS_OBJERR,
1284
+ DDOG_CRASHT_SI_CODES_ILL_BADSTK,
1285
+ DDOG_CRASHT_SI_CODES_ILL_COPROC,
1286
+ DDOG_CRASHT_SI_CODES_ILL_ILLADR,
1287
+ DDOG_CRASHT_SI_CODES_ILL_ILLOPC,
1288
+ DDOG_CRASHT_SI_CODES_ILL_ILLOPN,
1289
+ DDOG_CRASHT_SI_CODES_ILL_ILLTRP,
1290
+ DDOG_CRASHT_SI_CODES_ILL_PRVOPC,
1291
+ DDOG_CRASHT_SI_CODES_ILL_PRVREG,
909
1292
  DDOG_CRASHT_SI_CODES_SEGV_ACCERR,
910
1293
  DDOG_CRASHT_SI_CODES_SEGV_BNDERR,
911
1294
  DDOG_CRASHT_SI_CODES_SEGV_MAPERR,
@@ -926,10 +1309,37 @@ typedef enum ddog_crasht_SiCodes {
926
1309
  * See https://man7.org/linux/man-pages/man7/signal.7.html
927
1310
  */
928
1311
  typedef enum ddog_crasht_SignalNames {
1312
+ DDOG_CRASHT_SIGNAL_NAMES_SIGHUP,
1313
+ DDOG_CRASHT_SIGNAL_NAMES_SIGINT,
1314
+ DDOG_CRASHT_SIGNAL_NAMES_SIGQUIT,
1315
+ DDOG_CRASHT_SIGNAL_NAMES_SIGILL,
1316
+ DDOG_CRASHT_SIGNAL_NAMES_SIGTRAP,
929
1317
  DDOG_CRASHT_SIGNAL_NAMES_SIGABRT,
930
1318
  DDOG_CRASHT_SIGNAL_NAMES_SIGBUS,
1319
+ DDOG_CRASHT_SIGNAL_NAMES_SIGFPE,
1320
+ DDOG_CRASHT_SIGNAL_NAMES_SIGKILL,
1321
+ DDOG_CRASHT_SIGNAL_NAMES_SIGUSR1,
931
1322
  DDOG_CRASHT_SIGNAL_NAMES_SIGSEGV,
1323
+ DDOG_CRASHT_SIGNAL_NAMES_SIGUSR2,
1324
+ DDOG_CRASHT_SIGNAL_NAMES_SIGPIPE,
1325
+ DDOG_CRASHT_SIGNAL_NAMES_SIGALRM,
1326
+ DDOG_CRASHT_SIGNAL_NAMES_SIGTERM,
1327
+ DDOG_CRASHT_SIGNAL_NAMES_SIGCHLD,
1328
+ DDOG_CRASHT_SIGNAL_NAMES_SIGCONT,
1329
+ DDOG_CRASHT_SIGNAL_NAMES_SIGSTOP,
1330
+ DDOG_CRASHT_SIGNAL_NAMES_SIGTSTP,
1331
+ DDOG_CRASHT_SIGNAL_NAMES_SIGTTIN,
1332
+ DDOG_CRASHT_SIGNAL_NAMES_SIGTTOU,
1333
+ DDOG_CRASHT_SIGNAL_NAMES_SIGURG,
1334
+ DDOG_CRASHT_SIGNAL_NAMES_SIGXCPU,
1335
+ DDOG_CRASHT_SIGNAL_NAMES_SIGXFSZ,
1336
+ DDOG_CRASHT_SIGNAL_NAMES_SIGVTALRM,
1337
+ DDOG_CRASHT_SIGNAL_NAMES_SIGPROF,
1338
+ DDOG_CRASHT_SIGNAL_NAMES_SIGWINCH,
1339
+ DDOG_CRASHT_SIGNAL_NAMES_SIGIO,
932
1340
  DDOG_CRASHT_SIGNAL_NAMES_SIGSYS,
1341
+ DDOG_CRASHT_SIGNAL_NAMES_SIGEMT,
1342
+ DDOG_CRASHT_SIGNAL_NAMES_SIGINFO,
933
1343
  DDOG_CRASHT_SIGNAL_NAMES_UNKNOWN,
934
1344
  } ddog_crasht_SignalNames;
935
1345
 
@@ -946,6 +1356,12 @@ typedef enum ddog_crasht_StacktraceCollection {
946
1356
  */
947
1357
  DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
948
1358
  DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
1359
+ /**
1360
+ * This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
1361
+ * and also unwind inlined functions. Enabling this feature will not only provide symbolic
1362
+ * details, but may also yield additional or less stack frames compared to other
1363
+ * configurations.
1364
+ */
949
1365
  DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
950
1366
  DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
951
1367
  } ddog_crasht_StacktraceCollection;
@@ -958,31 +1374,6 @@ typedef struct ddog_crasht_StackFrame ddog_crasht_StackFrame;
958
1374
 
959
1375
  typedef struct ddog_crasht_StackTrace ddog_crasht_StackTrace;
960
1376
 
961
- /**
962
- * A generic result type for when an operation may fail,
963
- * but there's nothing to return in the case of success.
964
- */
965
- typedef enum ddog_VoidResult_Tag {
966
- DDOG_VOID_RESULT_OK,
967
- DDOG_VOID_RESULT_ERR,
968
- } ddog_VoidResult_Tag;
969
-
970
- typedef struct ddog_VoidResult {
971
- ddog_VoidResult_Tag tag;
972
- union {
973
- struct {
974
- /**
975
- * Do not use the value of Ok. This value only exists to overcome
976
- * Rust -> C code generation.
977
- */
978
- bool ok;
979
- };
980
- struct {
981
- struct ddog_Error err;
982
- };
983
- };
984
- } ddog_VoidResult;
985
-
986
1377
  typedef struct ddog_crasht_Slice_CharSlice {
987
1378
  /**
988
1379
  * Should be non-null and suitably aligned for the underlying type. It is
@@ -997,26 +1388,49 @@ typedef struct ddog_crasht_Slice_CharSlice {
997
1388
  uintptr_t len;
998
1389
  } ddog_crasht_Slice_CharSlice;
999
1390
 
1391
+ typedef struct ddog_crasht_Slice_I32 {
1392
+ /**
1393
+ * Should be non-null and suitably aligned for the underlying type. It is
1394
+ * allowed but not recommended for the pointer to be null when the len is
1395
+ * zero.
1396
+ */
1397
+ const int32_t *ptr;
1398
+ /**
1399
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1400
+ * than or equal to [isize::MAX].
1401
+ */
1402
+ uintptr_t len;
1403
+ } ddog_crasht_Slice_I32;
1404
+
1000
1405
  typedef struct ddog_crasht_Config {
1001
1406
  struct ddog_crasht_Slice_CharSlice additional_files;
1002
1407
  bool create_alt_stack;
1003
- bool use_alt_stack;
1408
+ bool demangle_names;
1004
1409
  /**
1005
1410
  * The endpoint to send the crash report to (can be a file://).
1006
1411
  * If None, the crashtracker will infer the agent host from env variables.
1007
1412
  */
1008
1413
  const struct ddog_Endpoint *endpoint;
1414
+ /**
1415
+ * Optional filename for a unix domain socket if the receiver is used asynchonously
1416
+ */
1417
+ ddog_CharSlice optional_unix_socket_filename;
1009
1418
  enum ddog_crasht_StacktraceCollection resolve_frames;
1419
+ /**
1420
+ * The set of signals we should be registered for.
1421
+ * If empty, use the default set.
1422
+ */
1423
+ struct ddog_crasht_Slice_I32 signals;
1010
1424
  /**
1011
1425
  * Timeout in milliseconds before the signal handler starts tearing things down to return.
1426
+ * If 0, uses the default timeout as specified in
1427
+ * `datadog_crashtracker::shared::constants::DD_CRASHTRACK_DEFAULT_TIMEOUT`. Otherwise, uses
1428
+ * the specified timeout value.
1012
1429
  * This is given as a uint32_t, but the actual timeout needs to fit inside of an i32 (max
1013
1430
  * 2^31-1). This is a limitation of the various interfaces used to guarantee the timeout.
1014
1431
  */
1015
1432
  uint32_t timeout_ms;
1016
- /**
1017
- * Optional filename for a unix domain socket if the receiver is used asynchonously
1018
- */
1019
- ddog_CharSlice optional_unix_socket_filename;
1433
+ bool use_alt_stack;
1020
1434
  } ddog_crasht_Config;
1021
1435
 
1022
1436
  typedef struct ddog_crasht_EnvVar {
@@ -1062,6 +1476,20 @@ typedef struct ddog_crasht_Metadata {
1062
1476
  const struct ddog_Vec_Tag *tags;
1063
1477
  } ddog_crasht_Metadata;
1064
1478
 
1479
+ typedef struct ddog_crasht_Slice_CInt {
1480
+ /**
1481
+ * Should be non-null and suitably aligned for the underlying type. It is
1482
+ * allowed but not recommended for the pointer to be null when the len is
1483
+ * zero.
1484
+ */
1485
+ const int *ptr;
1486
+ /**
1487
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1488
+ * than or equal to [isize::MAX].
1489
+ */
1490
+ uintptr_t len;
1491
+ } ddog_crasht_Slice_CInt;
1492
+
1065
1493
  /**
1066
1494
  * A generic result type for when an operation may fail,
1067
1495
  * or may return <T> in case of success.
@@ -1204,8 +1632,20 @@ typedef enum ddog_TraceExporterErrorCode {
1204
1632
  DDOG_TRACE_EXPORTER_ERROR_CODE_NETWORK_UNKNOWN,
1205
1633
  DDOG_TRACE_EXPORTER_ERROR_CODE_SERDE,
1206
1634
  DDOG_TRACE_EXPORTER_ERROR_CODE_TIMED_OUT,
1635
+ DDOG_TRACE_EXPORTER_ERROR_CODE_INTERNAL,
1636
+ DDOG_TRACE_EXPORTER_ERROR_CODE_PANIC,
1207
1637
  } ddog_TraceExporterErrorCode;
1208
1638
 
1639
+ /**
1640
+ * Structure containing the agent response to a trace payload
1641
+ * MUST be freed with `ddog_trace_exporter_response_free`
1642
+ *
1643
+ * If the agent payload version is enabled on the trace exporter, and
1644
+ * the agent response indicates that the payload version hasn't changed,
1645
+ * the body will be empty.
1646
+ */
1647
+ typedef struct ddog_TraceExporterResponse ddog_TraceExporterResponse;
1648
+
1209
1649
  /**
1210
1650
  * The TraceExporter ingest traces from the tracers serialized as messagepack and forward them to
1211
1651
  * the agent while applying some transformation.
@@ -1236,7 +1676,7 @@ typedef struct ddog_TraceExporter ddog_TraceExporter;
1236
1676
  typedef struct ddog_TraceExporterConfig ddog_TraceExporterConfig;
1237
1677
 
1238
1678
  /**
1239
- * Stucture that contains error information that `TraceExporter` API can return.
1679
+ * Structure that contains error information that `TraceExporter` API can return.
1240
1680
  */
1241
1681
  typedef struct ddog_TraceExporterError {
1242
1682
  enum ddog_TraceExporterErrorCode code;
@@ -1244,31 +1684,28 @@ typedef struct ddog_TraceExporterError {
1244
1684
  } ddog_TraceExporterError;
1245
1685
 
1246
1686
  /**
1247
- * `AgentResponse` structure holds agent response information upon successful request.
1687
+ * FFI compatible configuration for the TelemetryClient.
1248
1688
  */
1249
- typedef struct ddog_AgentResponse {
1689
+ typedef struct ddog_TelemetryClientConfig {
1250
1690
  /**
1251
- * Sampling rate for the current service.
1691
+ * How often telemetry should be sent, in milliseconds.
1252
1692
  */
1253
- double rate;
1254
- } ddog_AgentResponse;
1255
-
1256
- typedef enum ddog_LibraryConfigName {
1257
- DDOG_LIBRARY_CONFIG_NAME_DD_APM_TRACING_ENABLED,
1258
- DDOG_LIBRARY_CONFIG_NAME_DD_RUNTIME_METRICS_ENABLED,
1259
- DDOG_LIBRARY_CONFIG_NAME_DD_LOGS_INJECTION,
1260
- DDOG_LIBRARY_CONFIG_NAME_DD_PROFILING_ENABLED,
1261
- DDOG_LIBRARY_CONFIG_NAME_DD_DATA_STREAMS_ENABLED,
1262
- DDOG_LIBRARY_CONFIG_NAME_DD_APPSEC_ENABLED,
1263
- DDOG_LIBRARY_CONFIG_NAME_DD_IAST_ENABLED,
1264
- DDOG_LIBRARY_CONFIG_NAME_DD_DYNAMIC_INSTRUMENTATION_ENABLED,
1265
- DDOG_LIBRARY_CONFIG_NAME_DD_DATA_JOBS_ENABLED,
1266
- DDOG_LIBRARY_CONFIG_NAME_DD_APPSEC_SCA_ENABLED,
1267
- DDOG_LIBRARY_CONFIG_NAME_DD_TRACE_DEBUG,
1268
- DDOG_LIBRARY_CONFIG_NAME_DD_SERVICE,
1269
- DDOG_LIBRARY_CONFIG_NAME_DD_ENV,
1270
- DDOG_LIBRARY_CONFIG_NAME_DD_VERSION,
1271
- } ddog_LibraryConfigName;
1693
+ uint64_t interval;
1694
+ /**
1695
+ * A V4 UUID that represents a tracer session. This ID should:
1696
+ * - Be generated when the tracer starts
1697
+ * - Be identical within the context of a host (i.e. multiple threads/processes that belong to
1698
+ * a single instrumented app should share the same runtime_id)
1699
+ * - Be associated with traces to allow correlation between traces and telemetry data
1700
+ */
1701
+ ddog_CharSlice runtime_id;
1702
+ /**
1703
+ * Whether to enable debug mode for telemetry.
1704
+ * When enabled, sets the DD-Telemetry-Debug-Enabled header to true.
1705
+ * Defaults to false.
1706
+ */
1707
+ bool debug_enabled;
1708
+ } ddog_TelemetryClientConfig;
1272
1709
 
1273
1710
  typedef enum ddog_LibraryConfigSource {
1274
1711
  DDOG_LIBRARY_CONFIG_SOURCE_LOCAL_STABLE_CONFIG = 0,
@@ -1328,8 +1765,10 @@ typedef struct ddog_CString {
1328
1765
  } ddog_CString;
1329
1766
 
1330
1767
  typedef struct ddog_LibraryConfig {
1331
- enum ddog_LibraryConfigName name;
1768
+ struct ddog_CString name;
1332
1769
  struct ddog_CString value;
1770
+ enum ddog_LibraryConfigSource source;
1771
+ struct ddog_CString config_id;
1333
1772
  } ddog_LibraryConfig;
1334
1773
 
1335
1774
  /**
@@ -1363,13 +1802,130 @@ typedef struct ddog_Result_VecLibraryConfig {
1363
1802
  };
1364
1803
  } ddog_Result_VecLibraryConfig;
1365
1804
 
1805
+ /**
1806
+ * C-compatible representation of an anonymous file handle
1807
+ */
1808
+ typedef struct ddog_TracerMemfdHandle {
1809
+ /**
1810
+ * File descriptor (relevant only on Linux)
1811
+ */
1812
+ int fd;
1813
+ } ddog_TracerMemfdHandle;
1814
+
1815
+ /**
1816
+ * A generic result type for when an operation may fail,
1817
+ * or may return <T> in case of success.
1818
+ */
1819
+ typedef enum ddog_Result_TracerMemfdHandle_Tag {
1820
+ DDOG_RESULT_TRACER_MEMFD_HANDLE_OK_TRACER_MEMFD_HANDLE,
1821
+ DDOG_RESULT_TRACER_MEMFD_HANDLE_ERR_TRACER_MEMFD_HANDLE,
1822
+ } ddog_Result_TracerMemfdHandle_Tag;
1823
+
1824
+ typedef struct ddog_Result_TracerMemfdHandle {
1825
+ ddog_Result_TracerMemfdHandle_Tag tag;
1826
+ union {
1827
+ struct {
1828
+ struct ddog_TracerMemfdHandle ok;
1829
+ };
1830
+ struct {
1831
+ struct ddog_Error err;
1832
+ };
1833
+ };
1834
+ } ddog_Result_TracerMemfdHandle;
1835
+
1836
+ /**
1837
+ * Log level for filtering log events.
1838
+ */
1839
+ typedef enum ddog_LogEventLevel {
1840
+ /**
1841
+ * The "trace" level.
1842
+ *
1843
+ * Designates very low priority, often extremely verbose, information.
1844
+ */
1845
+ DDOG_LOG_EVENT_LEVEL_TRACE = 0,
1846
+ /**
1847
+ * The "debug" level.
1848
+ *
1849
+ * Designates lower priority information.
1850
+ */
1851
+ DDOG_LOG_EVENT_LEVEL_DEBUG = 1,
1852
+ /**
1853
+ * The "info" level.
1854
+ *
1855
+ * Designates useful information.
1856
+ */
1857
+ DDOG_LOG_EVENT_LEVEL_INFO = 2,
1858
+ /**
1859
+ * The "warn" level.
1860
+ *
1861
+ * Designates hazardous situations.
1862
+ */
1863
+ DDOG_LOG_EVENT_LEVEL_WARN = 3,
1864
+ /**
1865
+ * The "error" level.
1866
+ *
1867
+ * Designates very serious errors.
1868
+ */
1869
+ DDOG_LOG_EVENT_LEVEL_ERROR = 4,
1870
+ } ddog_LogEventLevel;
1871
+
1872
+ /**
1873
+ * Target for standard stream output.
1874
+ */
1875
+ typedef enum ddog_StdTarget {
1876
+ /**
1877
+ * Write to standard output (stdout).
1878
+ */
1879
+ DDOG_STD_TARGET_OUT,
1880
+ /**
1881
+ * Write to standard error (stderr).
1882
+ */
1883
+ DDOG_STD_TARGET_ERR,
1884
+ } ddog_StdTarget;
1885
+
1886
+ /**
1887
+ * Configuration for standard stream output.
1888
+ */
1889
+ typedef struct ddog_StdConfig {
1890
+ /**
1891
+ * Target stream (stdout or stderr)
1892
+ */
1893
+ enum ddog_StdTarget target;
1894
+ } ddog_StdConfig;
1895
+
1896
+ /**
1897
+ * Configuration for file output.
1898
+ */
1899
+ typedef struct ddog_FileConfig {
1900
+ /**
1901
+ * Path to the log file
1902
+ */
1903
+ ddog_CharSlice path;
1904
+ /**
1905
+ * Maximum total number of files (current + rotated) to keep on disk.
1906
+ * When this limit is exceeded, the oldest rotated files are deleted.
1907
+ * Set to 0 to disable file cleanup.
1908
+ */
1909
+ uint64_t max_files;
1910
+ /**
1911
+ * Maximum size in bytes for each log file.
1912
+ * Set to 0 to disable size-based rotation.
1913
+ */
1914
+ uint64_t max_size_bytes;
1915
+ } ddog_FileConfig;
1916
+
1366
1917
  #ifdef __cplusplus
1367
1918
  extern "C" {
1368
1919
  #endif // __cplusplus
1369
1920
 
1370
1921
  /**
1922
+ * Drops the error. It should not be used after this, though the
1923
+ * implementation tries to limit the damage in the case of use-after-free and
1924
+ * double-free scenarios.
1925
+ *
1371
1926
  * # Safety
1372
- * Only pass null or a valid reference to a `ddog_Error`.
1927
+ *
1928
+ * Only pass null or a pointer to a valid, mutable `ddog_Error`.
1373
1929
  */
1374
1930
  void ddog_Error_drop(struct ddog_Error *error);
1375
1931
 
@@ -1475,16 +2031,23 @@ struct ddog_Option_U32 ddog_Option_U32_some(uint32_t v);
1475
2031
  struct ddog_Option_U32 ddog_Option_U32_none(void);
1476
2032
 
1477
2033
  /**
2034
+ * Drops a `ddog_StringWrapper`. It should not be used after this, though the
2035
+ * implementation tries to limit the damage in the case of use-after-free and
2036
+ * double-free scenarios.
2037
+ *
1478
2038
  * # Safety
1479
- * Only pass null or a valid reference to a `ddog_StringWrapper`.
2039
+ *
2040
+ * Only pass null or a pointer to a valid, mutable `ddog_StringWrapper`.
1480
2041
  */
1481
2042
  void ddog_StringWrapper_drop(struct ddog_StringWrapper *s);
1482
2043
 
1483
2044
  /**
1484
- * Returns a CharSlice of the message that is valid until the StringWrapper
1485
- * is dropped.
2045
+ * Returns a CharSlice of the message.
2046
+ *
1486
2047
  * # Safety
2048
+ *
1487
2049
  * Only pass null or a valid reference to a `ddog_StringWrapper`.
2050
+ * The string should not be mutated nor dropped while the CharSlice is alive.
1488
2051
  */
1489
2052
  ddog_CharSlice ddog_StringWrapper_message(const struct ddog_StringWrapper *s);
1490
2053