libdatadog 1.0.1.1.0 → 2.0.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  4. data/vendor/{libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/LICENSE-3rdparty.yml +190 -136
  5. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  6. data/vendor/{libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +97 -52
  7. data/vendor/{libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +74 -35
  8. data/vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  9. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  10. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  11. data/vendor/{libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/LICENSE-3rdparty.yml +190 -136
  12. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  13. data/vendor/{libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +97 -52
  14. data/vendor/{libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +74 -35
  15. data/vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  16. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  17. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
  18. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +190 -136
  19. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
  20. data/vendor/{libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/common.h +97 -52
  21. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +74 -35
  22. data/vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  23. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  24. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
  25. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml +190 -136
  26. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -0
  27. data/vendor/{libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/common.h +97 -52
  28. data/vendor/{libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +74 -35
  29. data/vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  30. data/vendor/{libdatadog-1.0.1 → libdatadog-2.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
  31. metadata +30 -30
  32. data/vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  33. data/vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  34. data/vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  35. data/vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
@@ -46,21 +46,45 @@ typedef struct ddog_Tag ddog_Tag;
46
46
  * Holds the raw parts of a Rust Vec; it should only be created from Rust,
47
47
  * never from C.
48
48
  */
49
- typedef struct ddog_Vec_Tag {
50
- const struct ddog_Tag *ptr;
49
+ typedef struct ddog_Vec_U8 {
50
+ const uint8_t *ptr;
51
51
  uintptr_t len;
52
52
  uintptr_t capacity;
53
- } ddog_Vec_Tag;
53
+ } ddog_Vec_U8;
54
+
55
+ /**
56
+ * Please treat this as opaque; do not reach into it, and especially don't
57
+ * write into it! The most relevant APIs are:
58
+ * * `ddog_Error_message`, to get the message as a slice.
59
+ * * `ddog_Error_drop`.
60
+ */
61
+ typedef struct ddog_Error {
62
+ /**
63
+ * This is a String stuffed into the vec.
64
+ */
65
+ struct ddog_Vec_U8 message;
66
+ } ddog_Error;
67
+
68
+ /**
69
+ * Remember, the data inside of each member is potentially coming from FFI,
70
+ * so every operation on it is unsafe!
71
+ */
72
+ typedef struct ddog_Slice_CChar {
73
+ const char *ptr;
74
+ uintptr_t len;
75
+ } ddog_Slice_CChar;
76
+
77
+ typedef struct ddog_Slice_CChar ddog_CharSlice;
54
78
 
55
79
  /**
56
80
  * Holds the raw parts of a Rust Vec; it should only be created from Rust,
57
81
  * never from C.
58
82
  */
59
- typedef struct ddog_Vec_U8 {
60
- const uint8_t *ptr;
83
+ typedef struct ddog_Vec_Tag {
84
+ const struct ddog_Tag *ptr;
61
85
  uintptr_t len;
62
86
  uintptr_t capacity;
63
- } ddog_Vec_U8;
87
+ } ddog_Vec_Tag;
64
88
 
65
89
  typedef enum ddog_Vec_Tag_PushResult_Tag {
66
90
  DDOG_VEC_TAG_PUSH_RESULT_OK,
@@ -71,25 +95,14 @@ typedef struct ddog_Vec_Tag_PushResult {
71
95
  ddog_Vec_Tag_PushResult_Tag tag;
72
96
  union {
73
97
  struct {
74
- struct ddog_Vec_U8 err;
98
+ struct ddog_Error err;
75
99
  };
76
100
  };
77
101
  } ddog_Vec_Tag_PushResult;
78
102
 
79
- /**
80
- * Remember, the data inside of each member is potentially coming from FFI,
81
- * so every operation on it is unsafe!
82
- */
83
- typedef struct ddog_Slice_CChar {
84
- const char *ptr;
85
- uintptr_t len;
86
- } ddog_Slice_CChar;
87
-
88
- typedef struct ddog_Slice_CChar ddog_CharSlice;
89
-
90
103
  typedef struct ddog_Vec_Tag_ParseResult {
91
104
  struct ddog_Vec_Tag tags;
92
- struct ddog_Vec_U8 *error_message;
105
+ struct ddog_Error *error_message;
93
106
  } ddog_Vec_Tag_ParseResult;
94
107
 
95
108
  typedef struct ddog_CancellationToken ddog_CancellationToken;
@@ -100,21 +113,27 @@ typedef struct ddog_prof_Exporter ddog_prof_Exporter;
100
113
 
101
114
  typedef struct ddog_prof_ProfiledEndpointsStats ddog_prof_ProfiledEndpointsStats;
102
115
 
103
- /**
104
- * This type only exists to workaround a bug in cbindgen; may be removed in the
105
- * future.
106
- */
107
116
  typedef struct ddog_prof_Exporter_Request ddog_prof_Exporter_Request;
108
117
 
109
- /**
110
- * Holds the raw parts of a Rust Vec; it should only be created from Rust,
111
- * never from C.
112
- */
113
- typedef struct ddog_prof_Vec_U8 {
114
- const uint8_t *ptr;
115
- uintptr_t len;
116
- uintptr_t capacity;
117
- } ddog_prof_Vec_U8;
118
+ typedef enum ddog_Endpoint_Tag {
119
+ DDOG_ENDPOINT_AGENT,
120
+ DDOG_ENDPOINT_AGENTLESS,
121
+ } ddog_Endpoint_Tag;
122
+
123
+ typedef struct ddog_Endpoint_ddog_prof_Agentless_Body {
124
+ ddog_CharSlice _0;
125
+ ddog_CharSlice _1;
126
+ } ddog_Endpoint_ddog_prof_Agentless_Body;
127
+
128
+ typedef struct ddog_Endpoint {
129
+ ddog_Endpoint_Tag tag;
130
+ union {
131
+ struct {
132
+ ddog_CharSlice agent;
133
+ };
134
+ ddog_Endpoint_ddog_prof_Agentless_Body AGENTLESS;
135
+ };
136
+ } ddog_Endpoint;
118
137
 
119
138
  typedef enum ddog_prof_Exporter_NewResult_Tag {
120
139
  DDOG_PROF_EXPORTER_NEW_RESULT_OK,
@@ -128,30 +147,27 @@ typedef struct ddog_prof_Exporter_NewResult {
128
147
  struct ddog_prof_Exporter *ok;
129
148
  };
130
149
  struct {
131
- struct ddog_prof_Vec_U8 err;
150
+ struct ddog_Error err;
132
151
  };
133
152
  };
134
153
  } ddog_prof_Exporter_NewResult;
135
154
 
136
- typedef enum ddog_Endpoint_Tag {
137
- DDOG_ENDPOINT_AGENT,
138
- DDOG_ENDPOINT_AGENTLESS,
139
- } ddog_Endpoint_Tag;
140
-
141
- typedef struct ddog_Endpoint_ddog_prof_Agentless_Body {
142
- ddog_CharSlice _0;
143
- ddog_CharSlice _1;
144
- } ddog_Endpoint_ddog_prof_Agentless_Body;
155
+ typedef enum ddog_prof_Exporter_Request_BuildResult_Tag {
156
+ DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_OK,
157
+ DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_ERR,
158
+ } ddog_prof_Exporter_Request_BuildResult_Tag;
145
159
 
146
- typedef struct ddog_Endpoint {
147
- ddog_Endpoint_Tag tag;
160
+ typedef struct ddog_prof_Exporter_Request_BuildResult {
161
+ ddog_prof_Exporter_Request_BuildResult_Tag tag;
148
162
  union {
149
163
  struct {
150
- ddog_CharSlice agent;
164
+ struct ddog_prof_Exporter_Request *ok;
165
+ };
166
+ struct {
167
+ struct ddog_Error err;
151
168
  };
152
- ddog_Endpoint_ddog_prof_Agentless_Body AGENTLESS;
153
169
  };
154
- } ddog_Endpoint;
170
+ } ddog_prof_Exporter_Request_BuildResult;
155
171
 
156
172
  /**
157
173
  * Represents time since the Unix Epoch in seconds plus nanoseconds.
@@ -205,7 +221,7 @@ typedef struct ddog_prof_Exporter_SendResult {
205
221
  struct ddog_HttpStatus http_response;
206
222
  };
207
223
  struct {
208
- struct ddog_prof_Vec_U8 err;
224
+ struct ddog_Error err;
209
225
  };
210
226
  };
211
227
  } ddog_prof_Exporter_SendResult;
@@ -229,6 +245,23 @@ typedef struct ddog_prof_Period {
229
245
  int64_t value;
230
246
  } ddog_prof_Period;
231
247
 
248
+ typedef enum ddog_prof_Profile_AddResult_Tag {
249
+ DDOG_PROF_PROFILE_ADD_RESULT_OK,
250
+ DDOG_PROF_PROFILE_ADD_RESULT_ERR,
251
+ } ddog_prof_Profile_AddResult_Tag;
252
+
253
+ typedef struct ddog_prof_Profile_AddResult {
254
+ ddog_prof_Profile_AddResult_Tag tag;
255
+ union {
256
+ struct {
257
+ uint64_t ok;
258
+ };
259
+ struct {
260
+ struct ddog_Error err;
261
+ };
262
+ };
263
+ } ddog_prof_Profile_AddResult;
264
+
232
265
  typedef struct ddog_prof_Mapping {
233
266
  /**
234
267
  * Address at which the binary (or DLL) is loaded into memory.
@@ -399,7 +432,7 @@ typedef struct ddog_prof_Sample {
399
432
  typedef struct ddog_prof_EncodedProfile {
400
433
  struct ddog_Timespec start;
401
434
  struct ddog_Timespec end;
402
- struct ddog_prof_Vec_U8 buffer;
435
+ struct ddog_Vec_U8 buffer;
403
436
  struct ddog_prof_ProfiledEndpointsStats *endpoints_stats;
404
437
  } ddog_prof_EncodedProfile;
405
438
 
@@ -415,17 +448,29 @@ typedef struct ddog_prof_Profile_SerializeResult {
415
448
  struct ddog_prof_EncodedProfile ok;
416
449
  };
417
450
  struct {
418
- struct ddog_prof_Vec_U8 err;
451
+ struct ddog_Error err;
419
452
  };
420
453
  };
421
454
  } ddog_prof_Profile_SerializeResult;
422
455
 
456
+ /**
457
+ * # Safety
458
+ * Only pass null or a valid reference to a `ddog_Error`.
459
+ */
460
+ void ddog_Error_drop(struct ddog_Error *error);
461
+
462
+ /**
463
+ * Returns a CharSlice of the error's message that is valid until the error
464
+ * is dropped.
465
+ * # Safety
466
+ * Only pass null or a valid reference to a `ddog_Error`.
467
+ */
468
+ ddog_CharSlice ddog_Error_message(const struct ddog_Error *error);
469
+
423
470
  DDOG_CHECK_RETURN struct ddog_Vec_Tag ddog_Vec_Tag_new(void);
424
471
 
425
472
  void ddog_Vec_Tag_drop(struct ddog_Vec_Tag);
426
473
 
427
- void ddog_Vec_Tag_PushResult_drop(struct ddog_Vec_Tag_PushResult);
428
-
429
474
  /**
430
475
  * Creates a new Tag from the provided `key` and `value` by doing a utf8
431
476
  * lossy conversion, and pushes into the `vec`. The strings `key` and `value`
@@ -11,8 +11,6 @@
11
11
  #include <stdint.h>
12
12
  #include "common.h"
13
13
 
14
- void ddog_prof_Exporter_NewResult_drop(struct ddog_prof_Exporter_NewResult result);
15
-
16
14
  /**
17
15
  * Creates an endpoint that uses the agent.
18
16
  * # Arguments
@@ -39,6 +37,8 @@ struct ddog_Endpoint ddog_Endpoint_agentless(ddog_CharSlice site, ddog_CharSlice
39
37
  * * `tags` - Tags to include with every profile reported by this exporter. It's also possible to include
40
38
  * profile-specific tags, see `additional_tags` on `profile_exporter_build`.
41
39
  * * `endpoint` - Configuration for reporting data
40
+ * # Safety
41
+ * All pointers must refer to valid objects of the correct types.
42
42
  */
43
43
  DDOG_CHECK_RETURN
44
44
  struct ddog_prof_Exporter_NewResult ddog_prof_Exporter_new(ddog_CharSlice profiling_library_name,
@@ -47,41 +47,56 @@ struct ddog_prof_Exporter_NewResult ddog_prof_Exporter_new(ddog_CharSlice profil
47
47
  const struct ddog_Vec_Tag *tags,
48
48
  struct ddog_Endpoint endpoint);
49
49
 
50
+ /**
51
+ * # Safety
52
+ * The `exporter` may be null, but if non-null the pointer must point to a
53
+ * valid `ddog_prof_Exporter_Request` object made by the Rust Global
54
+ * allocator that has not already been dropped.
55
+ */
50
56
  void ddog_prof_Exporter_drop(struct ddog_prof_Exporter *exporter);
51
57
 
52
58
  /**
53
- * Builds a Request object based on the profile data supplied.
59
+ * If successful, builds a `ddog_prof_Exporter_Request` object based on the
60
+ * profile data supplied. If unsuccessful, it returns an error message.
54
61
  *
55
62
  * # Safety
56
- * The `exporter` and the files inside of the `files` slice need to have been
57
- * created by this module.
63
+ * The `exporter`, `additional_stats`, and `endpoint_stats` args should be
64
+ * valid objects created by this module, except NULL is allowed.
58
65
  */
59
66
  DDOG_CHECK_RETURN
60
- struct ddog_prof_Exporter_Request *ddog_prof_Exporter_Request_build(struct ddog_prof_Exporter *exporter,
61
- struct ddog_Timespec start,
62
- struct ddog_Timespec end,
63
- struct ddog_prof_Exporter_Slice_File files,
64
- const struct ddog_Vec_Tag *additional_tags,
65
- const struct ddog_prof_ProfiledEndpointsStats *endpoints_stats,
66
- uint64_t timeout_ms);
67
+ struct ddog_prof_Exporter_Request_BuildResult ddog_prof_Exporter_Request_build(struct ddog_prof_Exporter *exporter,
68
+ struct ddog_Timespec start,
69
+ struct ddog_Timespec end,
70
+ struct ddog_prof_Exporter_Slice_File files,
71
+ const struct ddog_Vec_Tag *additional_tags,
72
+ const struct ddog_prof_ProfiledEndpointsStats *endpoints_stats,
73
+ uint64_t timeout_ms);
74
+
75
+ /**
76
+ * # Safety
77
+ * Each pointer of `request` may be null, but if non-null the inner-most
78
+ * pointer must point to a valid `ddog_prof_Exporter_Request` object made by
79
+ * the Rust Global allocator.
80
+ */
81
+ void ddog_prof_Exporter_Request_drop(struct ddog_prof_Exporter_Request **request);
67
82
 
68
83
  /**
69
84
  * Sends the request, returning the HttpStatus.
70
85
  *
71
86
  * # Arguments
72
- * * `exporter` - borrows the exporter for sending the request
73
- * * `request` - takes ownership of the request
74
- * * `cancel` - borrows the cancel, if any
87
+ * * `exporter` - Borrows the exporter for sending the request.
88
+ * * `request` - Takes ownership of the request, replacing it with a null
89
+ * pointer. This is why it takes a double-pointer, rather than
90
+ * a single one.
91
+ * * `cancel` - Borrows the cancel, if any.
75
92
  *
76
93
  * # Safety
77
94
  * All non-null arguments MUST have been created by created by apis in this module.
78
95
  */
79
96
  DDOG_CHECK_RETURN
80
97
  struct ddog_prof_Exporter_SendResult ddog_prof_Exporter_send(struct ddog_prof_Exporter *exporter,
81
- struct ddog_prof_Exporter_Request *request,
82
- struct ddog_CancellationToken *cancel);
83
-
84
- void ddog_prof_Exporter_Request_drop(struct ddog_prof_Exporter_Request *_request);
98
+ struct ddog_prof_Exporter_Request **request,
99
+ const struct ddog_CancellationToken *cancel);
85
100
 
86
101
  /**
87
102
  * Can be passed as an argument to send and then be used to asynchronously cancel it from a different thread.
@@ -111,20 +126,26 @@ struct ddog_CancellationToken *ddog_CancellationToken_new(void);
111
126
  * Without clone, both t1 and t2 would need to synchronize to make sure neither was using the cancel
112
127
  * before it could be dropped. With clone, there is no need for such synchronization, both threads
113
128
  * have their own cancel and should drop that cancel after they are done with it.
129
+ *
130
+ * # Safety
131
+ * If the `token` is non-null, it must point to a valid object.
114
132
  */
115
133
  DDOG_CHECK_RETURN
116
- struct ddog_CancellationToken *ddog_CancellationToken_clone(struct ddog_CancellationToken *cancel);
134
+ struct ddog_CancellationToken *ddog_CancellationToken_clone(const struct ddog_CancellationToken *token);
117
135
 
118
136
  /**
119
137
  * Cancel send that is being called in another thread with the given token.
120
138
  * Note that cancellation is a terminal state; cancelling a token more than once does nothing.
121
139
  * Returns `true` if token was successfully cancelled.
122
140
  */
123
- bool ddog_CancellationToken_cancel(struct ddog_CancellationToken *cancel);
141
+ bool ddog_CancellationToken_cancel(const struct ddog_CancellationToken *cancel);
124
142
 
125
- void ddog_CancellationToken_drop(struct ddog_CancellationToken *_cancel);
126
-
127
- void ddog_prof_Exporter_SendResult_drop(struct ddog_prof_Exporter_SendResult result);
143
+ /**
144
+ * # Safety
145
+ * The `token` can be null, but non-null values must be created by the Rust
146
+ * Global allocator and must have not been dropped already.
147
+ */
148
+ void ddog_CancellationToken_drop(struct ddog_CancellationToken *token);
128
149
 
129
150
  /**
130
151
  * Create a new profile with the given sample types. Must call
@@ -147,19 +168,28 @@ struct ddog_prof_Profile *ddog_prof_Profile_new(struct ddog_prof_Slice_ValueType
147
168
 
148
169
  /**
149
170
  * # Safety
150
- * The `profile` must point to an object created by another FFI routine in this
151
- * module, such as `ddog_Profile_with_sample_types`.
171
+ * The `profile` can be null, but if non-null it must point to a valid object
172
+ * created by the Rust Global allocator.
152
173
  */
153
- void ddog_prof_Profile_drop(struct ddog_prof_Profile *_profile);
174
+ void ddog_prof_Profile_drop(struct ddog_prof_Profile *profile);
154
175
 
155
176
  /**
156
177
  * # Safety
157
178
  * The `profile` ptr must point to a valid Profile object created by this
158
179
  * module. All pointers inside the `sample` need to be valid for the duration
159
180
  * of this call.
181
+ *
182
+ * If successful, it returns the internal id of the sample (> 0) in the Ok
183
+ * variant. On error, it holds an error message in the error variant.
184
+ *
185
+ * # Safety
186
+ * The `profile` ptr must point to a valid Profile object created by this
187
+ * module.
160
188
  * This call is _NOT_ thread-safe.
161
189
  */
162
- uint64_t ddog_prof_Profile_add(struct ddog_prof_Profile *profile, struct ddog_prof_Sample sample);
190
+ DDOG_CHECK_RETURN
191
+ struct ddog_prof_Profile_AddResult ddog_prof_Profile_add(struct ddog_prof_Profile *profile,
192
+ struct ddog_prof_Sample sample);
163
193
 
164
194
  /**
165
195
  * Associate an endpoint to a given local root span id.
@@ -171,7 +201,7 @@ uint64_t ddog_prof_Profile_add(struct ddog_prof_Profile *profile, struct ddog_pr
171
201
  *
172
202
  * # Arguments
173
203
  * * `profile` - a reference to the profile that will contain the samples.
174
- * * `local_root_span_id` - the value of the local root span id label to look for.
204
+ * * `local_root_span_id`
175
205
  * * `endpoint` - the value of the endpoint label to add for matching samples.
176
206
  *
177
207
  * # Safety
@@ -180,7 +210,7 @@ uint64_t ddog_prof_Profile_add(struct ddog_prof_Profile *profile, struct ddog_pr
180
210
  * This call is _NOT_ thread-safe.
181
211
  */
182
212
  void ddog_prof_Profile_set_endpoint(struct ddog_prof_Profile *profile,
183
- ddog_CharSlice local_root_span_id,
213
+ uint64_t local_root_span_id,
184
214
  ddog_CharSlice endpoint);
185
215
 
186
216
  /**
@@ -200,8 +230,18 @@ void ddog_prof_Profile_add_endpoint_count(struct ddog_prof_Profile *profile,
200
230
  int64_t value);
201
231
 
202
232
  /**
203
- * Serialize the aggregated profile. Don't forget to clean up the result by
204
- * calling ddog_prof_Profile_SerializeResult_drop.
233
+ * # Safety
234
+ * Only pass a reference to a valid `ddog_prof_EncodedProfile`, or null. A
235
+ * valid reference also means that it hasn't already been dropped (do not
236
+ * call this twice on the same object).
237
+ */
238
+ void ddog_prof_EncodedProfile_drop(struct ddog_prof_EncodedProfile *profile);
239
+
240
+ /**
241
+ * Serialize the aggregated profile.
242
+ *
243
+ * Don't forget to clean up the ok with `ddog_prof_EncodedProfile_drop` or
244
+ * the error variant with `ddog_Error_drop` when you are done with them.
205
245
  *
206
246
  * # Arguments
207
247
  * * `profile` - a reference to the profile being serialized.
@@ -218,13 +258,12 @@ void ddog_prof_Profile_add_endpoint_count(struct ddog_prof_Profile *profile,
218
258
  * The `end_time` must be null or otherwise point to a valid TimeSpec object.
219
259
  * The `duration_nanos` must be null or otherwise point to a valid i64.
220
260
  */
261
+ DDOG_CHECK_RETURN
221
262
  struct ddog_prof_Profile_SerializeResult ddog_prof_Profile_serialize(const struct ddog_prof_Profile *profile,
222
263
  const struct ddog_Timespec *end_time,
223
264
  const int64_t *duration_nanos);
224
265
 
225
- void ddog_prof_Profile_SerializeResult_drop(struct ddog_prof_Profile_SerializeResult _result);
226
-
227
- DDOG_CHECK_RETURN struct ddog_Slice_U8 ddog_Vec_U8_as_slice(const struct ddog_prof_Vec_U8 *vec);
266
+ DDOG_CHECK_RETURN struct ddog_Slice_U8 ddog_Vec_U8_as_slice(const struct ddog_Vec_U8 *vec);
228
267
 
229
268
  /**
230
269
  * Resets all data in `profile` except the sample types and period. Returns
@@ -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: 1.0.1
13
+ Version: 2.0.0
14
14
  Requires:
15
15
  Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
16
16
  Libs.private:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libdatadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1.1.0
4
+ version: 2.0.0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-06 00:00:00.000000000 Z
11
+ date: 2023-02-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: libdatadog is a Rust-based utility library for Datadog's ddtrace gem.
14
14
  email:
@@ -19,34 +19,34 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - lib/libdatadog.rb
21
21
  - lib/libdatadog/version.rb
22
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE
23
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml
24
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE
25
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/common.h
26
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/profiling.h
27
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so
28
- - vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc
29
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE
30
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml
31
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE
32
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/common.h
33
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/profiling.h
34
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so
35
- - vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc
36
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE
37
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml
38
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE
39
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/common.h
40
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/profiling.h
41
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so
42
- - vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc
43
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE
44
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml
45
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE
46
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h
47
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h
48
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so
49
- - vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc
22
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE
23
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml
24
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE
25
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/common.h
26
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/profiling.h
27
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so
28
+ - vendor/libdatadog-2.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc
29
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE
30
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml
31
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE
32
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/common.h
33
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/profiling.h
34
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so
35
+ - vendor/libdatadog-2.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc
36
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE
37
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml
38
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE
39
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/common.h
40
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/profiling.h
41
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so
42
+ - vendor/libdatadog-2.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc
43
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE
44
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml
45
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE
46
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h
47
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h
48
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so
49
+ - vendor/libdatadog-2.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc
50
50
  homepage: https://docs.datadoghq.com/tracing/
51
51
  licenses:
52
52
  - Apache-2.0