libdatadog 11.0.0.1.0-x86_64-linux → 13.1.0.1.0-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +4473 -593
  4. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/blazesym.h +1230 -0
  6. data/vendor/{libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/common.h +531 -293
  7. data/vendor/libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/crashtracker.h +436 -0
  8. data/vendor/{libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/profiling.h +10 -275
  9. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  10. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml +4473 -593
  11. data/vendor/libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  12. data/vendor/libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/blazesym.h +1230 -0
  13. data/vendor/{libdatadog-11.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/common.h +531 -293
  14. data/vendor/libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/crashtracker.h +436 -0
  15. data/vendor/{libdatadog-11.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +10 -275
  16. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  17. metadata +24 -22
  18. data/vendor/libdatadog-11.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/blazesym.h +0 -1229
  19. data/vendor/libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  20. data/vendor/libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/blazesym.h +0 -1229
  21. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
  22. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
  23. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  24. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  25. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
  26. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -0
  27. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
  28. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
@@ -39,6 +39,11 @@
39
39
  # define DDOG_CHECK_RETURN
40
40
  #endif
41
41
 
42
+ /**
43
+ * Default value for the timeout field in milliseconds.
44
+ */
45
+ #define ddog_Endpoint_DEFAULT_TIMEOUT 3000
46
+
42
47
  typedef struct ddog_Endpoint ddog_Endpoint;
43
48
 
44
49
  typedef struct ddog_Tag ddog_Tag;
@@ -68,7 +73,9 @@ typedef struct ddog_Error {
68
73
 
69
74
  typedef struct ddog_Slice_CChar {
70
75
  /**
71
- * Must be non-null and suitably aligned for the underlying type.
76
+ * Should be non-null and suitably aligned for the underlying type. It is
77
+ * allowed but not recommended for the pointer to be null when the len is
78
+ * zero.
72
79
  */
73
80
  const char *ptr;
74
81
  /**
@@ -99,288 +106,170 @@ typedef struct ddog_Option_Error {
99
106
 
100
107
  typedef struct ddog_Option_Error ddog_MaybeError;
101
108
 
102
- /**
103
- * A wrapper for returning owned strings from FFI
104
- */
105
- typedef struct ddog_StringWrapper {
106
- /**
107
- * This is a String stuffed into the vec.
108
- */
109
- struct ddog_Vec_U8 message;
110
- } ddog_StringWrapper;
111
-
112
- /**
113
- * Holds the raw parts of a Rust Vec; it should only be created from Rust,
114
- * never from C.
115
- */
116
- typedef struct ddog_Vec_Tag {
117
- const struct ddog_Tag *ptr;
118
- uintptr_t len;
119
- uintptr_t capacity;
120
- } ddog_Vec_Tag;
109
+ typedef struct ddog_ArrayQueue {
110
+ struct ddog_ArrayQueue *inner;
111
+ void (*item_delete_fn)(void*);
112
+ } ddog_ArrayQueue;
121
113
 
122
- typedef enum ddog_Vec_Tag_PushResult_Tag {
123
- DDOG_VEC_TAG_PUSH_RESULT_OK,
124
- DDOG_VEC_TAG_PUSH_RESULT_ERR,
125
- } ddog_Vec_Tag_PushResult_Tag;
114
+ typedef enum ddog_ArrayQueue_NewResult_Tag {
115
+ DDOG_ARRAY_QUEUE_NEW_RESULT_OK,
116
+ DDOG_ARRAY_QUEUE_NEW_RESULT_ERR,
117
+ } ddog_ArrayQueue_NewResult_Tag;
126
118
 
127
- typedef struct ddog_Vec_Tag_PushResult {
128
- ddog_Vec_Tag_PushResult_Tag tag;
119
+ typedef struct ddog_ArrayQueue_NewResult {
120
+ ddog_ArrayQueue_NewResult_Tag tag;
129
121
  union {
122
+ struct {
123
+ struct ddog_ArrayQueue *ok;
124
+ };
130
125
  struct {
131
126
  struct ddog_Error err;
132
127
  };
133
128
  };
134
- } ddog_Vec_Tag_PushResult;
135
-
136
- typedef struct ddog_Vec_Tag_ParseResult {
137
- struct ddog_Vec_Tag tags;
138
- struct ddog_Error *error_message;
139
- } ddog_Vec_Tag_ParseResult;
140
-
141
- typedef enum ddog_prof_DemangleOptions {
142
- DDOG_PROF_DEMANGLE_OPTIONS_COMPLETE,
143
- DDOG_PROF_DEMANGLE_OPTIONS_NAME_ONLY,
144
- } ddog_prof_DemangleOptions;
145
-
146
- typedef enum ddog_prof_NormalizedAddressTypes {
147
- DDOG_PROF_NORMALIZED_ADDRESS_TYPES_NONE = 0,
148
- DDOG_PROF_NORMALIZED_ADDRESS_TYPES_ELF,
149
- } ddog_prof_NormalizedAddressTypes;
129
+ } ddog_ArrayQueue_NewResult;
150
130
 
151
131
  /**
152
- * This enum represents operations a profiler might be engaged in.
153
- * The idea is that if a crash consistently occurs while a particular operation
154
- * is ongoing, its likely related.
155
- *
156
- * In the future, we might also track wall-clock time of operations
157
- * (or some statistical sampling thereof) using the same enum.
158
- *
159
- * NOTE: This enum is known to be non-exhaustive. Feel free to add new types
160
- * as needed.
161
- */
162
- typedef enum ddog_prof_ProfilingOpTypes {
163
- DDOG_PROF_PROFILING_OP_TYPES_NOT_PROFILING = 0,
164
- DDOG_PROF_PROFILING_OP_TYPES_COLLECTING_SAMPLE,
165
- DDOG_PROF_PROFILING_OP_TYPES_UNWINDING,
166
- DDOG_PROF_PROFILING_OP_TYPES_SERIALIZING,
167
- /**
168
- * Dummy value to allow easier iteration
169
- */
170
- DDOG_PROF_PROFILING_OP_TYPES_SIZE,
171
- } ddog_prof_ProfilingOpTypes;
172
-
173
- /**
174
- * Stacktrace collection occurs in the context of a crashing process.
175
- * If the stack is sufficiently corruputed, it is possible (but unlikely),
176
- * for stack trace collection itself to crash.
177
- * We recommend fully enabling stacktrace collection, but having an environment
178
- * variable to allow downgrading the collector.
132
+ * Data structure for the result of the push() and force_push() functions.
133
+ * force_push() replaces the oldest element if the queue is full, while push() returns the given
134
+ * value if the queue is full. For push(), it's redundant to return the value since the caller
135
+ * already has it, but it's returned for consistency with crossbeam API and with force_push().
179
136
  */
180
- typedef enum ddog_prof_StacktraceCollection {
181
- /**
182
- * Stacktrace collection occurs in the
183
- */
184
- DDOG_PROF_STACKTRACE_COLLECTION_DISABLED,
185
- DDOG_PROF_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
186
- DDOG_PROF_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
187
- DDOG_PROF_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
188
- } ddog_prof_StacktraceCollection;
189
-
190
- typedef struct ddog_CancellationToken ddog_CancellationToken;
191
-
192
- typedef struct ddog_prof_Exporter ddog_prof_Exporter;
137
+ typedef enum ddog_ArrayQueue_PushResult_Tag {
138
+ DDOG_ARRAY_QUEUE_PUSH_RESULT_OK,
139
+ DDOG_ARRAY_QUEUE_PUSH_RESULT_FULL,
140
+ DDOG_ARRAY_QUEUE_PUSH_RESULT_ERR,
141
+ } ddog_ArrayQueue_PushResult_Tag;
142
+
143
+ typedef struct ddog_ArrayQueue_PushResult {
144
+ ddog_ArrayQueue_PushResult_Tag tag;
145
+ union {
146
+ struct {
147
+ void *full;
148
+ };
149
+ struct {
150
+ struct ddog_Error err;
151
+ };
152
+ };
153
+ } ddog_ArrayQueue_PushResult;
193
154
 
194
- typedef struct ddog_prof_ProfiledEndpointsStats ddog_prof_ProfiledEndpointsStats;
155
+ typedef enum ddog_ArrayQueue_PopResult_Tag {
156
+ DDOG_ARRAY_QUEUE_POP_RESULT_OK,
157
+ DDOG_ARRAY_QUEUE_POP_RESULT_EMPTY,
158
+ DDOG_ARRAY_QUEUE_POP_RESULT_ERR,
159
+ } ddog_ArrayQueue_PopResult_Tag;
195
160
 
196
- typedef struct ddog_prof_Exporter_Request ddog_prof_Exporter_Request;
161
+ typedef struct ddog_ArrayQueue_PopResult {
162
+ ddog_ArrayQueue_PopResult_Tag tag;
163
+ union {
164
+ struct {
165
+ void *ok;
166
+ };
167
+ struct {
168
+ struct ddog_Error err;
169
+ };
170
+ };
171
+ } ddog_ArrayQueue_PopResult;
197
172
 
198
- /**
199
- * A generic result type for when a crashtracking operation may fail,
200
- * but there's nothing to return in the case of success.
201
- */
202
- typedef enum ddog_prof_CrashtrackerResult_Tag {
203
- DDOG_PROF_CRASHTRACKER_RESULT_OK,
204
- DDOG_PROF_CRASHTRACKER_RESULT_ERR,
205
- } ddog_prof_CrashtrackerResult_Tag;
173
+ typedef enum ddog_ArrayQueue_BoolResult_Tag {
174
+ DDOG_ARRAY_QUEUE_BOOL_RESULT_OK,
175
+ DDOG_ARRAY_QUEUE_BOOL_RESULT_ERR,
176
+ } ddog_ArrayQueue_BoolResult_Tag;
206
177
 
207
- typedef struct ddog_prof_CrashtrackerResult {
208
- ddog_prof_CrashtrackerResult_Tag tag;
178
+ typedef struct ddog_ArrayQueue_BoolResult {
179
+ ddog_ArrayQueue_BoolResult_Tag tag;
209
180
  union {
210
181
  struct {
211
- /**
212
- * Do not use the value of Ok. This value only exists to overcome
213
- * Rust -> C code generation.
214
- */
215
182
  bool ok;
216
183
  };
217
184
  struct {
218
185
  struct ddog_Error err;
219
186
  };
220
187
  };
221
- } ddog_prof_CrashtrackerResult;
188
+ } ddog_ArrayQueue_BoolResult;
222
189
 
223
- typedef struct ddog_prof_Slice_CharSlice {
224
- /**
225
- * Must be non-null and suitably aligned for the underlying type.
226
- */
227
- const ddog_CharSlice *ptr;
228
- /**
229
- * The number of elements (not bytes) that `.ptr` points to. Must be less
230
- * than or equal to [isize::MAX].
231
- */
232
- uintptr_t len;
233
- } ddog_prof_Slice_CharSlice;
190
+ typedef enum ddog_ArrayQueue_UsizeResult_Tag {
191
+ DDOG_ARRAY_QUEUE_USIZE_RESULT_OK,
192
+ DDOG_ARRAY_QUEUE_USIZE_RESULT_ERR,
193
+ } ddog_ArrayQueue_UsizeResult_Tag;
234
194
 
235
- typedef enum ddog_prof_Endpoint_Tag {
236
- DDOG_PROF_ENDPOINT_AGENT,
237
- DDOG_PROF_ENDPOINT_AGENTLESS,
238
- DDOG_PROF_ENDPOINT_FILE,
239
- } ddog_prof_Endpoint_Tag;
240
-
241
- typedef struct ddog_prof_Endpoint_ddog_prof_Agentless_Body {
242
- ddog_CharSlice _0;
243
- ddog_CharSlice _1;
244
- } ddog_prof_Endpoint_ddog_prof_Agentless_Body;
245
-
246
- typedef struct ddog_prof_Endpoint {
247
- ddog_prof_Endpoint_Tag tag;
195
+ typedef struct ddog_ArrayQueue_UsizeResult {
196
+ ddog_ArrayQueue_UsizeResult_Tag tag;
248
197
  union {
249
198
  struct {
250
- ddog_CharSlice agent;
199
+ uintptr_t ok;
251
200
  };
252
- ddog_prof_Endpoint_ddog_prof_Agentless_Body AGENTLESS;
253
201
  struct {
254
- ddog_CharSlice file;
202
+ struct ddog_Error err;
255
203
  };
256
204
  };
257
- } ddog_prof_Endpoint;
205
+ } ddog_ArrayQueue_UsizeResult;
258
206
 
259
- typedef struct ddog_prof_CrashtrackerConfiguration {
260
- struct ddog_prof_Slice_CharSlice additional_files;
261
- bool create_alt_stack;
262
- /**
263
- * The endpoint to send the crash report to (can be a file://)
264
- *
265
- * If ProfilingEndpoint is left to a zero value (enum value for Agent + empty charslice),
266
- * the crashtracker will infer the agent host from env variables.
267
- */
268
- struct ddog_prof_Endpoint endpoint;
269
- enum ddog_prof_StacktraceCollection resolve_frames;
270
- uint64_t timeout_secs;
271
- bool wait_for_receiver;
272
- } ddog_prof_CrashtrackerConfiguration;
273
-
274
- typedef struct ddog_prof_EnvVar {
275
- ddog_CharSlice key;
276
- ddog_CharSlice val;
277
- } ddog_prof_EnvVar;
207
+ typedef enum ddog_Option_U32_Tag {
208
+ DDOG_OPTION_U32_SOME_U32,
209
+ DDOG_OPTION_U32_NONE_U32,
210
+ } ddog_Option_U32_Tag;
278
211
 
279
- typedef struct ddog_prof_Slice_EnvVar {
280
- /**
281
- * Must be non-null and suitably aligned for the underlying type.
282
- */
283
- const struct ddog_prof_EnvVar *ptr;
284
- /**
285
- * The number of elements (not bytes) that `.ptr` points to. Must be less
286
- * than or equal to [isize::MAX].
287
- */
288
- uintptr_t len;
289
- } ddog_prof_Slice_EnvVar;
290
-
291
- typedef struct ddog_prof_CrashtrackerReceiverConfig {
292
- struct ddog_prof_Slice_CharSlice args;
293
- struct ddog_prof_Slice_EnvVar env;
294
- ddog_CharSlice path_to_receiver_binary;
295
- /**
296
- * Optional filename to forward stderr to (useful for logging/debugging)
297
- */
298
- ddog_CharSlice optional_stderr_filename;
299
- /**
300
- * Optional filename to forward stdout to (useful for logging/debugging)
301
- */
302
- ddog_CharSlice optional_stdout_filename;
303
- } ddog_prof_CrashtrackerReceiverConfig;
212
+ typedef struct ddog_Option_U32 {
213
+ ddog_Option_U32_Tag tag;
214
+ union {
215
+ struct {
216
+ uint32_t some;
217
+ };
218
+ };
219
+ } ddog_Option_U32;
304
220
 
305
- typedef struct ddog_prof_CrashtrackerMetadata {
306
- ddog_CharSlice profiling_library_name;
307
- ddog_CharSlice profiling_library_version;
308
- ddog_CharSlice family;
221
+ /**
222
+ * A wrapper for returning owned strings from FFI
223
+ */
224
+ typedef struct ddog_StringWrapper {
309
225
  /**
310
- * Should include "service", "environment", etc
226
+ * This is a String stuffed into the vec.
311
227
  */
312
- const struct ddog_Vec_Tag *tags;
313
- } ddog_prof_CrashtrackerMetadata;
228
+ struct ddog_Vec_U8 message;
229
+ } ddog_StringWrapper;
314
230
 
315
231
  /**
316
- * Represents a CrashInfo. Do not access its member for any reason, only use
317
- * the C API functions on this struct.
232
+ * Holds the raw parts of a Rust Vec; it should only be created from Rust,
233
+ * never from C.
318
234
  */
319
- typedef struct ddog_prof_CrashInfo {
320
- struct ddog_prof_CrashInfo *inner;
321
- } ddog_prof_CrashInfo;
235
+ typedef struct ddog_Vec_Tag {
236
+ const struct ddog_Tag *ptr;
237
+ uintptr_t len;
238
+ uintptr_t capacity;
239
+ } ddog_Vec_Tag;
322
240
 
323
- /**
324
- * Returned by [ddog_prof_Profile_new].
325
- */
326
- typedef enum ddog_prof_CrashInfoNewResult_Tag {
327
- DDOG_PROF_CRASH_INFO_NEW_RESULT_OK,
328
- DDOG_PROF_CRASH_INFO_NEW_RESULT_ERR,
329
- } ddog_prof_CrashInfoNewResult_Tag;
241
+ typedef enum ddog_Vec_Tag_PushResult_Tag {
242
+ DDOG_VEC_TAG_PUSH_RESULT_OK,
243
+ DDOG_VEC_TAG_PUSH_RESULT_ERR,
244
+ } ddog_Vec_Tag_PushResult_Tag;
330
245
 
331
- typedef struct ddog_prof_CrashInfoNewResult {
332
- ddog_prof_CrashInfoNewResult_Tag tag;
246
+ typedef struct ddog_Vec_Tag_PushResult {
247
+ ddog_Vec_Tag_PushResult_Tag tag;
333
248
  union {
334
- struct {
335
- struct ddog_prof_CrashInfo ok;
336
- };
337
249
  struct {
338
250
  struct ddog_Error err;
339
251
  };
340
252
  };
341
- } ddog_prof_CrashInfoNewResult;
253
+ } ddog_Vec_Tag_PushResult;
342
254
 
343
- typedef struct ddog_prof_SigInfo {
344
- uint64_t signum;
345
- ddog_CharSlice signame;
346
- } ddog_prof_SigInfo;
255
+ typedef struct ddog_Vec_Tag_ParseResult {
256
+ struct ddog_Vec_Tag tags;
257
+ struct ddog_Error *error_message;
258
+ } ddog_Vec_Tag_ParseResult;
347
259
 
348
- typedef enum ddog_prof_Option_U32_Tag {
349
- DDOG_PROF_OPTION_U32_SOME_U32,
350
- DDOG_PROF_OPTION_U32_NONE_U32,
351
- } ddog_prof_Option_U32_Tag;
260
+ typedef struct ddog_CancellationToken ddog_CancellationToken;
352
261
 
353
- typedef struct ddog_prof_Option_U32 {
354
- ddog_prof_Option_U32_Tag tag;
355
- union {
356
- struct {
357
- uint32_t some;
358
- };
359
- };
360
- } ddog_prof_Option_U32;
262
+ typedef struct ddog_prof_Exporter ddog_prof_Exporter;
361
263
 
362
- typedef struct ddog_prof_StackFrameNames {
363
- struct ddog_prof_Option_U32 colno;
364
- ddog_CharSlice filename;
365
- struct ddog_prof_Option_U32 lineno;
366
- ddog_CharSlice name;
367
- } ddog_prof_StackFrameNames;
264
+ typedef struct ddog_prof_ProfiledEndpointsStats ddog_prof_ProfiledEndpointsStats;
368
265
 
369
- typedef struct ddog_prof_Slice_StackFrameNames {
370
- /**
371
- * Must be non-null and suitably aligned for the underlying type.
372
- */
373
- const struct ddog_prof_StackFrameNames *ptr;
374
- /**
375
- * The number of elements (not bytes) that `.ptr` points to. Must be less
376
- * than or equal to [isize::MAX].
377
- */
378
- uintptr_t len;
379
- } ddog_prof_Slice_StackFrameNames;
266
+ typedef struct ddog_prof_Exporter_Request ddog_prof_Exporter_Request;
380
267
 
381
268
  typedef struct ddog_Slice_U8 {
382
269
  /**
383
- * Must be non-null and suitably aligned for the underlying type.
270
+ * Should be non-null and suitably aligned for the underlying type. It is
271
+ * allowed but not recommended for the pointer to be null when the len is
272
+ * zero.
384
273
  */
385
274
  const uint8_t *ptr;
386
275
  /**
@@ -395,81 +284,48 @@ typedef struct ddog_Slice_U8 {
395
284
  */
396
285
  typedef struct ddog_Slice_U8 ddog_ByteSlice;
397
286
 
398
- typedef struct ddog_prof_NormalizedAddress {
399
- uint64_t file_offset;
400
- ddog_ByteSlice build_id;
401
- ddog_CharSlice path;
402
- enum ddog_prof_NormalizedAddressTypes typ;
403
- } ddog_prof_NormalizedAddress;
404
-
405
- typedef struct ddog_prof_StackFrame {
406
- ddog_CharSlice build_id;
407
- uintptr_t ip;
408
- uintptr_t module_base_address;
409
- struct ddog_prof_Slice_StackFrameNames names;
410
- struct ddog_prof_NormalizedAddress normalized_ip;
411
- uintptr_t sp;
412
- uintptr_t symbol_address;
413
- } ddog_prof_StackFrame;
287
+ typedef struct ddog_prof_Exporter_File {
288
+ ddog_CharSlice name;
289
+ ddog_ByteSlice file;
290
+ } ddog_prof_Exporter_File;
414
291
 
415
- typedef struct ddog_prof_Slice_StackFrame {
292
+ typedef struct ddog_prof_Exporter_Slice_File {
416
293
  /**
417
- * Must be non-null and suitably aligned for the underlying type.
294
+ * Should be non-null and suitably aligned for the underlying type. It is
295
+ * allowed but not recommended for the pointer to be null when the len is
296
+ * zero.
418
297
  */
419
- const struct ddog_prof_StackFrame *ptr;
298
+ const struct ddog_prof_Exporter_File *ptr;
420
299
  /**
421
300
  * The number of elements (not bytes) that `.ptr` points to. Must be less
422
301
  * than or equal to [isize::MAX].
423
302
  */
424
303
  uintptr_t len;
425
- } ddog_prof_Slice_StackFrame;
304
+ } ddog_prof_Exporter_Slice_File;
426
305
 
427
- /**
428
- * A wrapper for returning owned strings from FFI
429
- */
430
- typedef struct ddog_prof_StringWrapper {
431
- /**
432
- * This is a String stuffed into the vec.
433
- */
434
- struct ddog_Vec_U8 message;
435
- } ddog_prof_StringWrapper;
306
+ typedef enum ddog_prof_Endpoint_Tag {
307
+ DDOG_PROF_ENDPOINT_AGENT,
308
+ DDOG_PROF_ENDPOINT_AGENTLESS,
309
+ DDOG_PROF_ENDPOINT_FILE,
310
+ } ddog_prof_Endpoint_Tag;
436
311
 
437
- /**
438
- * Returned by [ddog_prof_Profile_new].
439
- */
440
- typedef enum ddog_prof_StringWrapperResult_Tag {
441
- DDOG_PROF_STRING_WRAPPER_RESULT_OK,
442
- DDOG_PROF_STRING_WRAPPER_RESULT_ERR,
443
- } ddog_prof_StringWrapperResult_Tag;
312
+ typedef struct ddog_prof_Endpoint_ddog_prof_Agentless_Body {
313
+ ddog_CharSlice _0;
314
+ ddog_CharSlice _1;
315
+ } ddog_prof_Endpoint_ddog_prof_Agentless_Body;
444
316
 
445
- typedef struct ddog_prof_StringWrapperResult {
446
- ddog_prof_StringWrapperResult_Tag tag;
317
+ typedef struct ddog_prof_Endpoint {
318
+ ddog_prof_Endpoint_Tag tag;
447
319
  union {
448
320
  struct {
449
- struct ddog_prof_StringWrapper ok;
321
+ ddog_CharSlice agent;
450
322
  };
323
+ ddog_prof_Endpoint_ddog_prof_Agentless_Body AGENTLESS;
451
324
  struct {
452
- struct ddog_Error err;
325
+ ddog_CharSlice file;
453
326
  };
454
327
  };
455
- } ddog_prof_StringWrapperResult;
456
-
457
- typedef struct ddog_prof_Exporter_File {
458
- ddog_CharSlice name;
459
- ddog_ByteSlice file;
460
- } ddog_prof_Exporter_File;
461
-
462
- typedef struct ddog_prof_Exporter_Slice_File {
463
- /**
464
- * Must be non-null and suitably aligned for the underlying type.
465
- */
466
- const struct ddog_prof_Exporter_File *ptr;
467
- /**
468
- * The number of elements (not bytes) that `.ptr` points to. Must be less
469
- * than or equal to [isize::MAX].
470
- */
471
- uintptr_t len;
472
- } ddog_prof_Exporter_Slice_File;
328
+ } ddog_prof_Endpoint;
473
329
 
474
330
  typedef enum ddog_prof_Exporter_NewResult_Tag {
475
331
  DDOG_PROF_EXPORTER_NEW_RESULT_OK,
@@ -488,6 +344,22 @@ typedef struct ddog_prof_Exporter_NewResult {
488
344
  };
489
345
  } ddog_prof_Exporter_NewResult;
490
346
 
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;
351
+
352
+ typedef struct ddog_prof_Option_Error {
353
+ ddog_prof_Option_Error_Tag tag;
354
+ union {
355
+ struct {
356
+ struct ddog_Error some;
357
+ };
358
+ };
359
+ } ddog_prof_Option_Error;
360
+
361
+ typedef struct ddog_prof_Option_Error ddog_prof_MaybeError;
362
+
491
363
  typedef enum ddog_prof_Exporter_Request_BuildResult_Tag {
492
364
  DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_OK,
493
365
  DDOG_PROF_EXPORTER_REQUEST_BUILD_RESULT_ERR,
@@ -569,7 +441,9 @@ typedef struct ddog_prof_ValueType {
569
441
 
570
442
  typedef struct ddog_prof_Slice_ValueType {
571
443
  /**
572
- * Must be non-null and suitably aligned for the underlying type.
444
+ * Should be non-null and suitably aligned for the underlying type. It is
445
+ * allowed but not recommended for the pointer to be null when the len is
446
+ * zero.
573
447
  */
574
448
  const struct ddog_prof_ValueType *ptr;
575
449
  /**
@@ -675,7 +549,9 @@ typedef struct ddog_prof_Location {
675
549
 
676
550
  typedef struct ddog_prof_Slice_Location {
677
551
  /**
678
- * Must be non-null and suitably aligned for the underlying type.
552
+ * Should be non-null and suitably aligned for the underlying type. It is
553
+ * allowed but not recommended for the pointer to be null when the len is
554
+ * zero.
679
555
  */
680
556
  const struct ddog_prof_Location *ptr;
681
557
  /**
@@ -687,7 +563,9 @@ typedef struct ddog_prof_Slice_Location {
687
563
 
688
564
  typedef struct ddog_Slice_I64 {
689
565
  /**
690
- * Must be non-null and suitably aligned for the underlying type.
566
+ * Should be non-null and suitably aligned for the underlying type. It is
567
+ * allowed but not recommended for the pointer to be null when the len is
568
+ * zero.
691
569
  */
692
570
  const int64_t *ptr;
693
571
  /**
@@ -718,7 +596,9 @@ typedef struct ddog_prof_Label {
718
596
 
719
597
  typedef struct ddog_prof_Slice_Label {
720
598
  /**
721
- * Must be non-null and suitably aligned for the underlying type.
599
+ * Should be non-null and suitably aligned for the underlying type. It is
600
+ * allowed but not recommended for the pointer to be null when the len is
601
+ * zero.
722
602
  */
723
603
  const struct ddog_prof_Label *ptr;
724
604
  /**
@@ -751,7 +631,9 @@ typedef struct ddog_prof_Sample {
751
631
 
752
632
  typedef struct ddog_prof_Slice_Usize {
753
633
  /**
754
- * Must be non-null and suitably aligned for the underlying type.
634
+ * Should be non-null and suitably aligned for the underlying type. It is
635
+ * allowed but not recommended for the pointer to be null when the len is
636
+ * zero.
755
637
  */
756
638
  const uintptr_t *ptr;
757
639
  /**
@@ -873,6 +755,282 @@ typedef struct ddog_ContextKey {
873
755
  enum ddog_MetricType _1;
874
756
  } ddog_ContextKey;
875
757
 
758
+ typedef enum ddog_crasht_DemangleOptions {
759
+ DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
760
+ DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
761
+ } ddog_crasht_DemangleOptions;
762
+
763
+ typedef enum ddog_crasht_NormalizedAddressTypes {
764
+ DDOG_CRASHT_NORMALIZED_ADDRESS_TYPES_NONE = 0,
765
+ DDOG_CRASHT_NORMALIZED_ADDRESS_TYPES_ELF,
766
+ DDOG_CRASHT_NORMALIZED_ADDRESS_TYPES_PDB,
767
+ } ddog_crasht_NormalizedAddressTypes;
768
+
769
+ /**
770
+ * This enum represents operations a the tracked library might be engaged in.
771
+ * Currently only implemented for profiling.
772
+ * The idea is that if a crash consistently occurs while a particular operation
773
+ * is ongoing, its likely related.
774
+ *
775
+ * In the future, we might also track wall-clock time of operations
776
+ * (or some statistical sampling thereof) using the same enum.
777
+ *
778
+ * NOTE: This enum is known to be non-exhaustive. Feel free to add new types
779
+ * as needed.
780
+ */
781
+ typedef enum ddog_crasht_OpTypes {
782
+ DDOG_CRASHT_OP_TYPES_PROFILER_INACTIVE = 0,
783
+ DDOG_CRASHT_OP_TYPES_PROFILER_COLLECTING_SAMPLE,
784
+ DDOG_CRASHT_OP_TYPES_PROFILER_UNWINDING,
785
+ DDOG_CRASHT_OP_TYPES_PROFILER_SERIALIZING,
786
+ /**
787
+ * Dummy value to allow easier iteration
788
+ */
789
+ DDOG_CRASHT_OP_TYPES_SIZE,
790
+ } ddog_crasht_OpTypes;
791
+
792
+ /**
793
+ * Stacktrace collection occurs in the context of a crashing process.
794
+ * If the stack is sufficiently corruputed, it is possible (but unlikely),
795
+ * for stack trace collection itself to crash.
796
+ * We recommend fully enabling stacktrace collection, but having an environment
797
+ * variable to allow downgrading the collector.
798
+ */
799
+ typedef enum ddog_crasht_StacktraceCollection {
800
+ /**
801
+ * Stacktrace collection occurs in the
802
+ */
803
+ DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
804
+ DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
805
+ DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
806
+ DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
807
+ } ddog_crasht_StacktraceCollection;
808
+
809
+ /**
810
+ * A generic result type for when a crashtracking operation may fail,
811
+ * but there's nothing to return in the case of success.
812
+ */
813
+ typedef enum ddog_crasht_Result_Tag {
814
+ DDOG_CRASHT_RESULT_OK,
815
+ DDOG_CRASHT_RESULT_ERR,
816
+ } ddog_crasht_Result_Tag;
817
+
818
+ typedef struct ddog_crasht_Result {
819
+ ddog_crasht_Result_Tag tag;
820
+ union {
821
+ struct {
822
+ /**
823
+ * Do not use the value of Ok. This value only exists to overcome
824
+ * Rust -> C code generation.
825
+ */
826
+ bool ok;
827
+ };
828
+ struct {
829
+ struct ddog_Error err;
830
+ };
831
+ };
832
+ } ddog_crasht_Result;
833
+
834
+ typedef struct ddog_crasht_Slice_CharSlice {
835
+ /**
836
+ * Should be non-null and suitably aligned for the underlying type. It is
837
+ * allowed but not recommended for the pointer to be null when the len is
838
+ * zero.
839
+ */
840
+ const ddog_CharSlice *ptr;
841
+ /**
842
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
843
+ * than or equal to [isize::MAX].
844
+ */
845
+ uintptr_t len;
846
+ } ddog_crasht_Slice_CharSlice;
847
+
848
+ typedef struct ddog_crasht_Config {
849
+ struct ddog_crasht_Slice_CharSlice additional_files;
850
+ bool create_alt_stack;
851
+ /**
852
+ * The endpoint to send the crash report to (can be a file://).
853
+ * If None, the crashtracker will infer the agent host from env variables.
854
+ */
855
+ const struct ddog_Endpoint *endpoint;
856
+ enum ddog_crasht_StacktraceCollection resolve_frames;
857
+ uint64_t timeout_secs;
858
+ bool wait_for_receiver;
859
+ } ddog_crasht_Config;
860
+
861
+ typedef struct ddog_crasht_EnvVar {
862
+ ddog_CharSlice key;
863
+ ddog_CharSlice val;
864
+ } ddog_crasht_EnvVar;
865
+
866
+ typedef struct ddog_crasht_Slice_EnvVar {
867
+ /**
868
+ * Should be non-null and suitably aligned for the underlying type. It is
869
+ * allowed but not recommended for the pointer to be null when the len is
870
+ * zero.
871
+ */
872
+ const struct ddog_crasht_EnvVar *ptr;
873
+ /**
874
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
875
+ * than or equal to [isize::MAX].
876
+ */
877
+ uintptr_t len;
878
+ } ddog_crasht_Slice_EnvVar;
879
+
880
+ typedef struct ddog_crasht_ReceiverConfig {
881
+ struct ddog_crasht_Slice_CharSlice args;
882
+ struct ddog_crasht_Slice_EnvVar env;
883
+ ddog_CharSlice path_to_receiver_binary;
884
+ /**
885
+ * Optional filename to forward stderr to (useful for logging/debugging)
886
+ */
887
+ ddog_CharSlice optional_stderr_filename;
888
+ /**
889
+ * Optional filename to forward stdout to (useful for logging/debugging)
890
+ */
891
+ ddog_CharSlice optional_stdout_filename;
892
+ } ddog_crasht_ReceiverConfig;
893
+
894
+ typedef struct ddog_crasht_Metadata {
895
+ ddog_CharSlice library_name;
896
+ ddog_CharSlice library_version;
897
+ ddog_CharSlice family;
898
+ /**
899
+ * Should include "service", "environment", etc
900
+ */
901
+ const struct ddog_Vec_Tag *tags;
902
+ } ddog_crasht_Metadata;
903
+
904
+ typedef enum ddog_crasht_UsizeResult_Tag {
905
+ DDOG_CRASHT_USIZE_RESULT_OK,
906
+ DDOG_CRASHT_USIZE_RESULT_ERR,
907
+ } ddog_crasht_UsizeResult_Tag;
908
+
909
+ typedef struct ddog_crasht_UsizeResult {
910
+ ddog_crasht_UsizeResult_Tag tag;
911
+ union {
912
+ struct {
913
+ uintptr_t ok;
914
+ };
915
+ struct {
916
+ struct ddog_Error err;
917
+ };
918
+ };
919
+ } ddog_crasht_UsizeResult;
920
+
921
+ /**
922
+ * Represents a CrashInfo. Do not access its member for any reason, only use
923
+ * the C API functions on this struct.
924
+ */
925
+ typedef struct ddog_crasht_CrashInfo {
926
+ struct ddog_crasht_CrashInfo *inner;
927
+ } ddog_crasht_CrashInfo;
928
+
929
+ /**
930
+ * Returned by [ddog_prof_Profile_new].
931
+ */
932
+ typedef enum ddog_crasht_CrashInfoNewResult_Tag {
933
+ DDOG_CRASHT_CRASH_INFO_NEW_RESULT_OK,
934
+ DDOG_CRASHT_CRASH_INFO_NEW_RESULT_ERR,
935
+ } ddog_crasht_CrashInfoNewResult_Tag;
936
+
937
+ typedef struct ddog_crasht_CrashInfoNewResult {
938
+ ddog_crasht_CrashInfoNewResult_Tag tag;
939
+ union {
940
+ struct {
941
+ struct ddog_crasht_CrashInfo ok;
942
+ };
943
+ struct {
944
+ struct ddog_Error err;
945
+ };
946
+ };
947
+ } ddog_crasht_CrashInfoNewResult;
948
+
949
+ typedef struct ddog_crasht_SigInfo {
950
+ uint64_t signum;
951
+ ddog_CharSlice signame;
952
+ } ddog_crasht_SigInfo;
953
+
954
+ typedef struct ddog_crasht_StackFrameNames {
955
+ struct ddog_Option_U32 colno;
956
+ ddog_CharSlice filename;
957
+ struct ddog_Option_U32 lineno;
958
+ ddog_CharSlice name;
959
+ } ddog_crasht_StackFrameNames;
960
+
961
+ typedef struct ddog_crasht_Slice_StackFrameNames {
962
+ /**
963
+ * Should be non-null and suitably aligned for the underlying type. It is
964
+ * allowed but not recommended for the pointer to be null when the len is
965
+ * zero.
966
+ */
967
+ const struct ddog_crasht_StackFrameNames *ptr;
968
+ /**
969
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
970
+ * than or equal to [isize::MAX].
971
+ */
972
+ uintptr_t len;
973
+ } ddog_crasht_Slice_StackFrameNames;
974
+
975
+ typedef struct ddog_crasht_NormalizedAddress {
976
+ uint64_t file_offset;
977
+ ddog_ByteSlice build_id;
978
+ uint64_t age;
979
+ ddog_CharSlice path;
980
+ enum ddog_crasht_NormalizedAddressTypes typ;
981
+ } ddog_crasht_NormalizedAddress;
982
+
983
+ typedef struct ddog_crasht_StackFrame {
984
+ ddog_CharSlice build_id;
985
+ uintptr_t ip;
986
+ uintptr_t module_base_address;
987
+ struct ddog_crasht_Slice_StackFrameNames names;
988
+ struct ddog_crasht_NormalizedAddress normalized_ip;
989
+ uintptr_t sp;
990
+ uintptr_t symbol_address;
991
+ } ddog_crasht_StackFrame;
992
+
993
+ typedef struct ddog_crasht_Slice_StackFrame {
994
+ /**
995
+ * Should be non-null and suitably aligned for the underlying type. It is
996
+ * allowed but not recommended for the pointer to be null when the len is
997
+ * zero.
998
+ */
999
+ const struct ddog_crasht_StackFrame *ptr;
1000
+ /**
1001
+ * The number of elements (not bytes) that `.ptr` points to. Must be less
1002
+ * than or equal to [isize::MAX].
1003
+ */
1004
+ uintptr_t len;
1005
+ } ddog_crasht_Slice_StackFrame;
1006
+
1007
+ /**
1008
+ * A wrapper for returning owned strings from FFI
1009
+ */
1010
+ typedef struct ddog_crasht_StringWrapper {
1011
+ /**
1012
+ * This is a String stuffed into the vec.
1013
+ */
1014
+ struct ddog_Vec_U8 message;
1015
+ } ddog_crasht_StringWrapper;
1016
+
1017
+ typedef enum ddog_crasht_StringWrapperResult_Tag {
1018
+ DDOG_CRASHT_STRING_WRAPPER_RESULT_OK,
1019
+ DDOG_CRASHT_STRING_WRAPPER_RESULT_ERR,
1020
+ } ddog_crasht_StringWrapperResult_Tag;
1021
+
1022
+ typedef struct ddog_crasht_StringWrapperResult {
1023
+ ddog_crasht_StringWrapperResult_Tag tag;
1024
+ union {
1025
+ struct {
1026
+ struct ddog_crasht_StringWrapper ok;
1027
+ };
1028
+ struct {
1029
+ struct ddog_Error err;
1030
+ };
1031
+ };
1032
+ } ddog_crasht_StringWrapperResult;
1033
+
876
1034
  #ifdef __cplusplus
877
1035
  extern "C" {
878
1036
  #endif // __cplusplus
@@ -893,8 +1051,80 @@ ddog_CharSlice ddog_Error_message(const struct ddog_Error *error);
893
1051
 
894
1052
  void ddog_MaybeError_drop(ddog_MaybeError);
895
1053
 
1054
+ /**
1055
+ * Creates a new ArrayQueue with the given capacity and item_delete_fn.
1056
+ * The item_delete_fn is called when an item is dropped from the queue.
1057
+ */
1058
+ DDOG_CHECK_RETURN
1059
+ struct ddog_ArrayQueue_NewResult ddog_ArrayQueue_new(uintptr_t capacity,
1060
+ void (*item_delete_fn)(void*));
1061
+
1062
+ /**
1063
+ * Drops the ArrayQueue.
1064
+ * # Safety
1065
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new.
1066
+ */
1067
+ void ddog_ArrayQueue_drop(struct ddog_ArrayQueue *queue);
1068
+
1069
+ /**
1070
+ * Pushes an item into the ArrayQueue. It returns the given value if the queue is full.
1071
+ * # Safety
1072
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new. The value
1073
+ * is null or points to a valid memory location that can be deallocated by the item_delete_fn.
1074
+ */
1075
+ struct ddog_ArrayQueue_PushResult ddog_ArrayQueue_push(const struct ddog_ArrayQueue *queue_ptr,
1076
+ void *value);
1077
+
1078
+ /**
1079
+ * Pushes an element into the queue, replacing the oldest element if necessary.
1080
+ * # Safety
1081
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new. The value
1082
+ * is null or points to a valid memory location that can be deallocated by the item_delete_fn.
1083
+ */
1084
+ DDOG_CHECK_RETURN
1085
+ struct ddog_ArrayQueue_PushResult ddog_ArrayQueue_force_push(const struct ddog_ArrayQueue *queue_ptr,
1086
+ void *value);
1087
+
1088
+ /**
1089
+ * Pops an item from the ArrayQueue.
1090
+ * # Safety
1091
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new.
1092
+ */
1093
+ DDOG_CHECK_RETURN
1094
+ struct ddog_ArrayQueue_PopResult ddog_ArrayQueue_pop(const struct ddog_ArrayQueue *queue_ptr);
1095
+
1096
+ /**
1097
+ * Checks if the ArrayQueue is empty.
1098
+ * # Safety
1099
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new.
1100
+ */
1101
+ struct ddog_ArrayQueue_BoolResult ddog_ArrayQueue_is_empty(const struct ddog_ArrayQueue *queue_ptr);
1102
+
1103
+ /**
1104
+ * Returns the length of the ArrayQueue.
1105
+ * # Safety
1106
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new.
1107
+ */
1108
+ struct ddog_ArrayQueue_UsizeResult ddog_ArrayQueue_len(const struct ddog_ArrayQueue *queue_ptr);
1109
+
1110
+ /**
1111
+ * Returns true if the underlying queue is full.
1112
+ * # Safety
1113
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new.
1114
+ */
1115
+ struct ddog_ArrayQueue_BoolResult ddog_ArrayQueue_is_full(const struct ddog_ArrayQueue *queue_ptr);
1116
+
1117
+ /**
1118
+ * Returns the capacity of the ArrayQueue.
1119
+ * # Safety
1120
+ * The pointer is null or points to a valid memory location allocated by ArrayQueue_new.
1121
+ */
1122
+ struct ddog_ArrayQueue_UsizeResult ddog_ArrayQueue_capacity(const struct ddog_ArrayQueue *queue_ptr);
1123
+
896
1124
  DDOG_CHECK_RETURN struct ddog_Endpoint *ddog_endpoint_from_url(ddog_CharSlice url);
897
1125
 
1126
+ DDOG_CHECK_RETURN struct ddog_Endpoint *ddog_endpoint_from_filename(ddog_CharSlice filename);
1127
+
898
1128
  DDOG_CHECK_RETURN struct ddog_Endpoint *ddog_endpoint_from_api_key(ddog_CharSlice api_key);
899
1129
 
900
1130
  DDOG_CHECK_RETURN
@@ -902,8 +1132,16 @@ struct ddog_Error *ddog_endpoint_from_api_key_and_site(ddog_CharSlice api_key,
902
1132
  ddog_CharSlice site,
903
1133
  struct ddog_Endpoint **endpoint);
904
1134
 
1135
+ void ddog_endpoint_set_timeout(struct ddog_Endpoint *endpoint, uint64_t millis);
1136
+
1137
+ void ddog_endpoint_set_test_token(struct ddog_Endpoint *endpoint, ddog_CharSlice token);
1138
+
905
1139
  void ddog_endpoint_drop(struct ddog_Endpoint*);
906
1140
 
1141
+ struct ddog_Option_U32 ddog_Option_U32_some(uint32_t v);
1142
+
1143
+ struct ddog_Option_U32 ddog_Option_U32_none(void);
1144
+
907
1145
  /**
908
1146
  * # Safety
909
1147
  * Only pass null or a valid reference to a `ddog_StringWrapper`.