libdatadog 1.0.1.1.0 → 3.0.0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/libdatadog/version.rb +1 -1
- data/vendor/libdatadog-3.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +13495 -0
- data/vendor/{libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-3.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +123 -52
- data/vendor/{libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-3.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +136 -35
- data/vendor/libdatadog-3.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
- data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
- data/vendor/libdatadog-3.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +13495 -0
- data/vendor/{libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-3.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +123 -52
- data/vendor/{libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-3.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +136 -35
- data/vendor/libdatadog-3.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
- data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
- data/vendor/libdatadog-3.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +13495 -0
- data/vendor/{libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-3.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/include/datadog/common.h +123 -52
- data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +136 -35
- data/vendor/libdatadog-3.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
- data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
- data/vendor/libdatadog-3.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml +13495 -0
- data/vendor/{libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-3.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/common.h +123 -52
- data/vendor/{libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-3.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +136 -35
- data/vendor/libdatadog-3.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
- data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +1 -1
- metadata +33 -33
- data/vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +0 -1129
- data/vendor/libdatadog-1.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
- data/vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +0 -1129
- data/vendor/libdatadog-1.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
- data/vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE-3rdparty.yml +0 -1129
- data/vendor/libdatadog-1.0.1/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
- data/vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE-3rdparty.yml +0 -1129
- data/vendor/libdatadog-1.0.1/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
- /data/vendor/{libdatadog-1.0.1 → libdatadog-3.0.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +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
|
50
|
-
const
|
49
|
+
typedef struct ddog_Vec_U8 {
|
50
|
+
const uint8_t *ptr;
|
51
51
|
uintptr_t len;
|
52
52
|
uintptr_t capacity;
|
53
|
-
}
|
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
|
60
|
-
const
|
83
|
+
typedef struct ddog_Vec_Tag {
|
84
|
+
const struct ddog_Tag *ptr;
|
61
85
|
uintptr_t len;
|
62
86
|
uintptr_t capacity;
|
63
|
-
}
|
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
|
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
|
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
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
}
|
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
|
150
|
+
struct ddog_Error err;
|
132
151
|
};
|
133
152
|
};
|
134
153
|
} ddog_prof_Exporter_NewResult;
|
135
154
|
|
136
|
-
typedef enum
|
137
|
-
|
138
|
-
|
139
|
-
}
|
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;
|
140
159
|
|
141
|
-
typedef struct
|
142
|
-
|
143
|
-
ddog_CharSlice _1;
|
144
|
-
} ddog_Endpoint_ddog_prof_Agentless_Body;
|
145
|
-
|
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
|
-
|
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
|
-
}
|
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
|
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.
|
@@ -396,10 +429,36 @@ typedef struct ddog_prof_Sample {
|
|
396
429
|
struct ddog_prof_Slice_Label labels;
|
397
430
|
} ddog_prof_Sample;
|
398
431
|
|
432
|
+
typedef enum ddog_prof_Profile_UpscalingRuleAddResult_Tag {
|
433
|
+
DDOG_PROF_PROFILE_UPSCALING_RULE_ADD_RESULT_OK,
|
434
|
+
DDOG_PROF_PROFILE_UPSCALING_RULE_ADD_RESULT_ERR,
|
435
|
+
} ddog_prof_Profile_UpscalingRuleAddResult_Tag;
|
436
|
+
|
437
|
+
typedef struct ddog_prof_Profile_UpscalingRuleAddResult {
|
438
|
+
ddog_prof_Profile_UpscalingRuleAddResult_Tag tag;
|
439
|
+
union {
|
440
|
+
struct {
|
441
|
+
bool ok;
|
442
|
+
};
|
443
|
+
struct {
|
444
|
+
struct ddog_Error err;
|
445
|
+
};
|
446
|
+
};
|
447
|
+
} ddog_prof_Profile_UpscalingRuleAddResult;
|
448
|
+
|
449
|
+
/**
|
450
|
+
* Remember, the data inside of each member is potentially coming from FFI,
|
451
|
+
* so every operation on it is unsafe!
|
452
|
+
*/
|
453
|
+
typedef struct ddog_prof_Slice_Usize {
|
454
|
+
const uintptr_t *ptr;
|
455
|
+
uintptr_t len;
|
456
|
+
} ddog_prof_Slice_Usize;
|
457
|
+
|
399
458
|
typedef struct ddog_prof_EncodedProfile {
|
400
459
|
struct ddog_Timespec start;
|
401
460
|
struct ddog_Timespec end;
|
402
|
-
struct
|
461
|
+
struct ddog_Vec_U8 buffer;
|
403
462
|
struct ddog_prof_ProfiledEndpointsStats *endpoints_stats;
|
404
463
|
} ddog_prof_EncodedProfile;
|
405
464
|
|
@@ -415,17 +474,29 @@ typedef struct ddog_prof_Profile_SerializeResult {
|
|
415
474
|
struct ddog_prof_EncodedProfile ok;
|
416
475
|
};
|
417
476
|
struct {
|
418
|
-
struct
|
477
|
+
struct ddog_Error err;
|
419
478
|
};
|
420
479
|
};
|
421
480
|
} ddog_prof_Profile_SerializeResult;
|
422
481
|
|
482
|
+
/**
|
483
|
+
* # Safety
|
484
|
+
* Only pass null or a valid reference to a `ddog_Error`.
|
485
|
+
*/
|
486
|
+
void ddog_Error_drop(struct ddog_Error *error);
|
487
|
+
|
488
|
+
/**
|
489
|
+
* Returns a CharSlice of the error's message that is valid until the error
|
490
|
+
* is dropped.
|
491
|
+
* # Safety
|
492
|
+
* Only pass null or a valid reference to a `ddog_Error`.
|
493
|
+
*/
|
494
|
+
ddog_CharSlice ddog_Error_message(const struct ddog_Error *error);
|
495
|
+
|
423
496
|
DDOG_CHECK_RETURN struct ddog_Vec_Tag ddog_Vec_Tag_new(void);
|
424
497
|
|
425
498
|
void ddog_Vec_Tag_drop(struct ddog_Vec_Tag);
|
426
499
|
|
427
|
-
void ddog_Vec_Tag_PushResult_drop(struct ddog_Vec_Tag_PushResult);
|
428
|
-
|
429
500
|
/**
|
430
501
|
* Creates a new Tag from the provided `key` and `value` by doing a utf8
|
431
502
|
* 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,64 @@ 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
|
-
*
|
59
|
+
* If successful, builds a `ddog_prof_Exporter_Request` object based on the
|
60
|
+
* profile data supplied. If unsuccessful, it returns an error message.
|
61
|
+
*
|
62
|
+
* For details on the `optional_internal_metadata_json`, please reference the Datadog-internal
|
63
|
+
* "RFC: Attaching internal metadata to pprof profiles".
|
64
|
+
* If you use this parameter, please update the RFC with your use-case, so we can keep track of how this
|
65
|
+
* is getting used.
|
54
66
|
*
|
55
67
|
* # Safety
|
56
|
-
* The `exporter` and
|
57
|
-
* created by this module.
|
68
|
+
* The `exporter`, `optional_additional_stats`, and `optional_endpoint_stats` args should be
|
69
|
+
* valid objects created by this module.
|
70
|
+
* NULL is allowed for `optional_additional_tags`, `optional_endpoints_stats` and
|
71
|
+
* `optional_internal_metadata_json`.
|
58
72
|
*/
|
59
73
|
DDOG_CHECK_RETURN
|
60
|
-
struct
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
74
|
+
struct ddog_prof_Exporter_Request_BuildResult ddog_prof_Exporter_Request_build(struct ddog_prof_Exporter *exporter,
|
75
|
+
struct ddog_Timespec start,
|
76
|
+
struct ddog_Timespec end,
|
77
|
+
struct ddog_prof_Exporter_Slice_File files,
|
78
|
+
const struct ddog_Vec_Tag *optional_additional_tags,
|
79
|
+
const struct ddog_prof_ProfiledEndpointsStats *optional_endpoints_stats,
|
80
|
+
const ddog_CharSlice *optional_internal_metadata_json,
|
81
|
+
uint64_t timeout_ms);
|
82
|
+
|
83
|
+
/**
|
84
|
+
* # Safety
|
85
|
+
* Each pointer of `request` may be null, but if non-null the inner-most
|
86
|
+
* pointer must point to a valid `ddog_prof_Exporter_Request` object made by
|
87
|
+
* the Rust Global allocator.
|
88
|
+
*/
|
89
|
+
void ddog_prof_Exporter_Request_drop(struct ddog_prof_Exporter_Request **request);
|
67
90
|
|
68
91
|
/**
|
69
92
|
* Sends the request, returning the HttpStatus.
|
70
93
|
*
|
71
94
|
* # Arguments
|
72
|
-
* * `exporter` -
|
73
|
-
* * `request` -
|
74
|
-
*
|
95
|
+
* * `exporter` - Borrows the exporter for sending the request.
|
96
|
+
* * `request` - Takes ownership of the request, replacing it with a null
|
97
|
+
* pointer. This is why it takes a double-pointer, rather than
|
98
|
+
* a single one.
|
99
|
+
* * `cancel` - Borrows the cancel, if any.
|
75
100
|
*
|
76
101
|
* # Safety
|
77
102
|
* All non-null arguments MUST have been created by created by apis in this module.
|
78
103
|
*/
|
79
104
|
DDOG_CHECK_RETURN
|
80
105
|
struct ddog_prof_Exporter_SendResult ddog_prof_Exporter_send(struct ddog_prof_Exporter *exporter,
|
81
|
-
struct ddog_prof_Exporter_Request
|
82
|
-
struct ddog_CancellationToken *cancel);
|
83
|
-
|
84
|
-
void ddog_prof_Exporter_Request_drop(struct ddog_prof_Exporter_Request *_request);
|
106
|
+
struct ddog_prof_Exporter_Request **request,
|
107
|
+
const struct ddog_CancellationToken *cancel);
|
85
108
|
|
86
109
|
/**
|
87
110
|
* Can be passed as an argument to send and then be used to asynchronously cancel it from a different thread.
|
@@ -111,20 +134,26 @@ struct ddog_CancellationToken *ddog_CancellationToken_new(void);
|
|
111
134
|
* Without clone, both t1 and t2 would need to synchronize to make sure neither was using the cancel
|
112
135
|
* before it could be dropped. With clone, there is no need for such synchronization, both threads
|
113
136
|
* have their own cancel and should drop that cancel after they are done with it.
|
137
|
+
*
|
138
|
+
* # Safety
|
139
|
+
* If the `token` is non-null, it must point to a valid object.
|
114
140
|
*/
|
115
141
|
DDOG_CHECK_RETURN
|
116
|
-
struct ddog_CancellationToken *ddog_CancellationToken_clone(struct ddog_CancellationToken *
|
142
|
+
struct ddog_CancellationToken *ddog_CancellationToken_clone(const struct ddog_CancellationToken *token);
|
117
143
|
|
118
144
|
/**
|
119
145
|
* Cancel send that is being called in another thread with the given token.
|
120
146
|
* Note that cancellation is a terminal state; cancelling a token more than once does nothing.
|
121
147
|
* Returns `true` if token was successfully cancelled.
|
122
148
|
*/
|
123
|
-
bool ddog_CancellationToken_cancel(struct ddog_CancellationToken *cancel);
|
124
|
-
|
125
|
-
void ddog_CancellationToken_drop(struct ddog_CancellationToken *_cancel);
|
149
|
+
bool ddog_CancellationToken_cancel(const struct ddog_CancellationToken *cancel);
|
126
150
|
|
127
|
-
|
151
|
+
/**
|
152
|
+
* # Safety
|
153
|
+
* The `token` can be null, but non-null values must be created by the Rust
|
154
|
+
* Global allocator and must have not been dropped already.
|
155
|
+
*/
|
156
|
+
void ddog_CancellationToken_drop(struct ddog_CancellationToken *token);
|
128
157
|
|
129
158
|
/**
|
130
159
|
* Create a new profile with the given sample types. Must call
|
@@ -147,19 +176,28 @@ struct ddog_prof_Profile *ddog_prof_Profile_new(struct ddog_prof_Slice_ValueType
|
|
147
176
|
|
148
177
|
/**
|
149
178
|
* # Safety
|
150
|
-
* The `profile`
|
151
|
-
*
|
179
|
+
* The `profile` can be null, but if non-null it must point to a valid object
|
180
|
+
* created by the Rust Global allocator.
|
152
181
|
*/
|
153
|
-
void ddog_prof_Profile_drop(struct ddog_prof_Profile *
|
182
|
+
void ddog_prof_Profile_drop(struct ddog_prof_Profile *profile);
|
154
183
|
|
155
184
|
/**
|
156
185
|
* # Safety
|
157
186
|
* The `profile` ptr must point to a valid Profile object created by this
|
158
187
|
* module. All pointers inside the `sample` need to be valid for the duration
|
159
188
|
* of this call.
|
189
|
+
*
|
190
|
+
* If successful, it returns the internal id of the sample (> 0) in the Ok
|
191
|
+
* variant. On error, it holds an error message in the error variant.
|
192
|
+
*
|
193
|
+
* # Safety
|
194
|
+
* The `profile` ptr must point to a valid Profile object created by this
|
195
|
+
* module.
|
160
196
|
* This call is _NOT_ thread-safe.
|
161
197
|
*/
|
162
|
-
|
198
|
+
DDOG_CHECK_RETURN
|
199
|
+
struct ddog_prof_Profile_AddResult ddog_prof_Profile_add(struct ddog_prof_Profile *profile,
|
200
|
+
struct ddog_prof_Sample sample);
|
163
201
|
|
164
202
|
/**
|
165
203
|
* Associate an endpoint to a given local root span id.
|
@@ -171,7 +209,7 @@ uint64_t ddog_prof_Profile_add(struct ddog_prof_Profile *profile, struct ddog_pr
|
|
171
209
|
*
|
172
210
|
* # Arguments
|
173
211
|
* * `profile` - a reference to the profile that will contain the samples.
|
174
|
-
* * `local_root_span_id`
|
212
|
+
* * `local_root_span_id`
|
175
213
|
* * `endpoint` - the value of the endpoint label to add for matching samples.
|
176
214
|
*
|
177
215
|
* # Safety
|
@@ -180,7 +218,7 @@ uint64_t ddog_prof_Profile_add(struct ddog_prof_Profile *profile, struct ddog_pr
|
|
180
218
|
* This call is _NOT_ thread-safe.
|
181
219
|
*/
|
182
220
|
void ddog_prof_Profile_set_endpoint(struct ddog_prof_Profile *profile,
|
183
|
-
|
221
|
+
uint64_t local_root_span_id,
|
184
222
|
ddog_CharSlice endpoint);
|
185
223
|
|
186
224
|
/**
|
@@ -200,8 +238,72 @@ void ddog_prof_Profile_add_endpoint_count(struct ddog_prof_Profile *profile,
|
|
200
238
|
int64_t value);
|
201
239
|
|
202
240
|
/**
|
203
|
-
*
|
204
|
-
*
|
241
|
+
* Add a poisson-based upscaling rule which will be use to adjust values and make them
|
242
|
+
* closer to reality.
|
243
|
+
*
|
244
|
+
* # Arguments
|
245
|
+
* * `profile` - a reference to the profile that will contain the samples.
|
246
|
+
* * `offset_values` - offset of the values
|
247
|
+
* * `label_name` - name of the label used to identify sample(s)
|
248
|
+
* * `label_value` - value of the label used to identify sample(s)
|
249
|
+
* * `sum_value_offset` - offset of the value used as a sum (compute the average with `count_value_offset`)
|
250
|
+
* * `count_value_offset` - offset of the value used as a count (compute the average with `sum_value_offset`)
|
251
|
+
* * `sampling_distance` - this is the threshold for this sampling window. This value must not be equal to 0
|
252
|
+
*
|
253
|
+
* # Safety
|
254
|
+
* This function must be called before serialize and must not be called after.
|
255
|
+
* The `profile` ptr must point to a valid Profile object created by this
|
256
|
+
* module.
|
257
|
+
* This call is _NOT_ thread-safe.
|
258
|
+
*/
|
259
|
+
DDOG_CHECK_RETURN
|
260
|
+
struct ddog_prof_Profile_UpscalingRuleAddResult ddog_prof_Profile_add_upscaling_rule_poisson(struct ddog_prof_Profile *profile,
|
261
|
+
struct ddog_prof_Slice_Usize offset_values,
|
262
|
+
ddog_CharSlice label_name,
|
263
|
+
ddog_CharSlice label_value,
|
264
|
+
uintptr_t sum_value_offset,
|
265
|
+
uintptr_t count_value_offset,
|
266
|
+
uint64_t sampling_distance);
|
267
|
+
|
268
|
+
/**
|
269
|
+
* Add a proportional-based upscaling rule which will be use to adjust values and make them
|
270
|
+
* closer to reality.
|
271
|
+
*
|
272
|
+
* # Arguments
|
273
|
+
* * `profile` - a reference to the profile that will contain the samples.
|
274
|
+
* * `offset_values` - offset of the values
|
275
|
+
* * `label_name` - name of the label used to identify sample(s)
|
276
|
+
* * `label_value` - value of the label used to identify sample(s)
|
277
|
+
* * `total_sampled` - number of sampled event (found in the pprof). This value must not be equal to 0
|
278
|
+
* * `total_real` - number of events the profiler actually witnessed. This value must not be equal to 0
|
279
|
+
*
|
280
|
+
* # Safety
|
281
|
+
* This function must be called before serialize and must not be called after.
|
282
|
+
* The `profile` ptr must point to a valid Profile object created by this
|
283
|
+
* module.
|
284
|
+
* This call is _NOT_ thread-safe.
|
285
|
+
*/
|
286
|
+
DDOG_CHECK_RETURN
|
287
|
+
struct ddog_prof_Profile_UpscalingRuleAddResult ddog_prof_Profile_add_upscaling_rule_proportional(struct ddog_prof_Profile *profile,
|
288
|
+
struct ddog_prof_Slice_Usize offset_values,
|
289
|
+
ddog_CharSlice label_name,
|
290
|
+
ddog_CharSlice label_value,
|
291
|
+
uint64_t total_sampled,
|
292
|
+
uint64_t total_real);
|
293
|
+
|
294
|
+
/**
|
295
|
+
* # Safety
|
296
|
+
* Only pass a reference to a valid `ddog_prof_EncodedProfile`, or null. A
|
297
|
+
* valid reference also means that it hasn't already been dropped (do not
|
298
|
+
* call this twice on the same object).
|
299
|
+
*/
|
300
|
+
void ddog_prof_EncodedProfile_drop(struct ddog_prof_EncodedProfile *profile);
|
301
|
+
|
302
|
+
/**
|
303
|
+
* Serialize the aggregated profile.
|
304
|
+
*
|
305
|
+
* Don't forget to clean up the ok with `ddog_prof_EncodedProfile_drop` or
|
306
|
+
* the error variant with `ddog_Error_drop` when you are done with them.
|
205
307
|
*
|
206
308
|
* # Arguments
|
207
309
|
* * `profile` - a reference to the profile being serialized.
|
@@ -218,13 +320,12 @@ void ddog_prof_Profile_add_endpoint_count(struct ddog_prof_Profile *profile,
|
|
218
320
|
* The `end_time` must be null or otherwise point to a valid TimeSpec object.
|
219
321
|
* The `duration_nanos` must be null or otherwise point to a valid i64.
|
220
322
|
*/
|
323
|
+
DDOG_CHECK_RETURN
|
221
324
|
struct ddog_prof_Profile_SerializeResult ddog_prof_Profile_serialize(const struct ddog_prof_Profile *profile,
|
222
325
|
const struct ddog_Timespec *end_time,
|
223
326
|
const int64_t *duration_nanos);
|
224
327
|
|
225
|
-
|
226
|
-
|
227
|
-
DDOG_CHECK_RETURN struct ddog_Slice_U8 ddog_Vec_U8_as_slice(const struct ddog_prof_Vec_U8 *vec);
|
328
|
+
DDOG_CHECK_RETURN struct ddog_Slice_U8 ddog_Vec_U8_as_slice(const struct ddog_Vec_U8 *vec);
|
228
329
|
|
229
330
|
/**
|
230
331
|
* Resets all data in `profile` except the sample types and period. Returns
|
Binary file
|
@@ -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:
|
13
|
+
Version: 3.0.0
|
14
14
|
Requires:
|
15
15
|
Libs: -L${libdir} -ldatadog_profiling -Wl,-rpath,${libdir}
|
16
16
|
Libs.private:
|