Commit 5dfaf40
feat(c-binding): accept explicit span timestamps (#309)
* feat(c-binding): accept explicit span timestamps
Add `start_time_ns` to `dd_span_options_t` and introduce
`dd_span_finish_with_time(end_time_ns)`. Both accept wall-clock
nanoseconds since the UNIX epoch; 0 preserves today's "use current
time" behaviour so existing callers are unaffected.
The conversion from wall-ns to the tracer's internal `TimePoint`
derives the steady_clock tick from the current system/steady offset,
so duration math stays correct regardless of which endpoint is
explicit and which is implicit.
Motivated by FFI callers (e.g. the Kong plugin) that capture
timestamps in their host runtime before crossing the FFI boundary,
where using "now" inside the binding would lose the pre-FFI portion
of the span and bake in call-overhead skew.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* review: rename finish_with_time → set_end_time, use -1 sentinel
Per review feedback from @dmehala:
1. Rename dd_span_finish_with_time → dd_span_set_end_time to match the
C++ Span::set_end_time and the existing dd_span_set_* naming family.
2. Expose DD_TRACE_CURRENT_TIME (-1) as the "use current time" sentinel
for start_time_ns, so 0 (1970-01-01) stays a valid timestamp.
3. Drop the sentinel branch in dd_span_set_end_time; callers wanting
the current end time use dd_span_finish, and this also removes the
implicit-path clamp that was only defending against a future-start
caller bug.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 6d02fc0 commit 5dfaf40
3 files changed
Lines changed: 82 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
| |||
51 | 55 | | |
52 | 56 | | |
53 | 57 | | |
| 58 | + | |
54 | 59 | | |
55 | 60 | | |
56 | 61 | | |
| |||
179 | 184 | | |
180 | 185 | | |
181 | 186 | | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
182 | 199 | | |
183 | 200 | | |
184 | 201 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
47 | 65 | | |
48 | 66 | | |
49 | 67 | | |
| |||
64 | 82 | | |
65 | 83 | | |
66 | 84 | | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
67 | 88 | | |
68 | 89 | | |
69 | 90 | | |
| |||
257 | 278 | | |
258 | 279 | | |
259 | 280 | | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
260 | 298 | | |
261 | 299 | | |
262 | 300 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
94 | | - | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
95 | 99 | | |
96 | 100 | | |
97 | 101 | | |
| |||
100 | 104 | | |
101 | 105 | | |
102 | 106 | | |
103 | | - | |
| 107 | + | |
104 | 108 | | |
105 | 109 | | |
106 | 110 | | |
| |||
109 | 113 | | |
110 | 114 | | |
111 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
112 | 136 | | |
113 | 137 | | |
114 | 138 | | |
| |||
253 | 277 | | |
254 | 278 | | |
255 | 279 | | |
| 280 | + | |
256 | 281 | | |
257 | 282 | | |
258 | 283 | | |
0 commit comments