libdatadog 11.0.0.1.0-aarch64-linux → 13.1.0.1.0-aarch64-linux

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 (27) 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}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +4473 -593
  4. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +1230 -0
  6. data/vendor/{libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +531 -293
  7. data/vendor/libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/crashtracker.h +436 -0
  8. data/vendor/{libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +10 -275
  9. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  10. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +4473 -593
  11. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  12. data/vendor/libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +1230 -0
  13. data/vendor/{libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +531 -293
  14. data/vendor/libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/crashtracker.h +436 -0
  15. data/vendor/{libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +10 -275
  16. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  17. metadata +24 -22
  18. data/vendor/libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +0 -1229
  19. data/vendor/libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +0 -1229
  20. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  21. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  22. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  23. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  24. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  25. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  26. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
  27. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-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`.