Skip to content

Commit 4ee7f1c

Browse files
committed
feat(tracer): add sidecar thread listener module
Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
1 parent 63b5353 commit 4ee7f1c

3 files changed

Lines changed: 49 additions & 1 deletion

File tree

components-rs/ddtrace.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,16 @@ ddog_MaybeError ddog_sidecar_connect_php(struct ddog_SidecarTransport **connecti
116116
void ddtrace_sidecar_reconnect(struct ddog_SidecarTransport **transport,
117117
struct ddog_SidecarTransport *(*factory)(void));
118118

119+
// Thread-based sidecar connection (Unix only)
120+
#if !defined(_WIN32)
121+
ddog_MaybeError ddog_sidecar_connect_master(int32_t pid);
122+
ddog_MaybeError ddog_sidecar_connect_worker(int32_t pid,
123+
struct ddog_SidecarTransport **connection);
124+
ddog_MaybeError ddog_sidecar_shutdown_master_listener(void);
125+
bool ddog_sidecar_is_master_listener_active(int32_t pid);
126+
ddog_MaybeError ddog_sidecar_clear_inherited_listener(void);
127+
#endif
128+
119129
bool ddog_shm_limiter_inc(const struct ddog_MaybeShmLimiter *limiter, uint32_t limit);
120130

121131
bool ddog_exception_hash_limiter_inc(struct ddog_SidecarTransport *connection,

components-rs/sidecar.h

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,44 @@ void ddog_sidecar_transport_drop(struct ddog_SidecarTransport*);
9292
*/
9393
ddog_MaybeError ddog_sidecar_connect(struct ddog_SidecarTransport **connection);
9494

95+
/**
96+
* Start master listener thread for thread-based connections (Unix only).
97+
*
98+
* This spawns a listener thread that accepts worker connections.
99+
*/
100+
#if !defined(_WIN32)
101+
ddog_MaybeError ddog_sidecar_connect_master(int32_t pid);
102+
#endif
103+
104+
/**
105+
* Connect as worker to master listener thread (Unix only).
106+
*/
107+
#if !defined(_WIN32)
108+
ddog_MaybeError ddog_sidecar_connect_worker(int32_t pid,
109+
struct ddog_SidecarTransport **connection);
110+
#endif
111+
112+
/**
113+
* Shutdown the master listener thread (Unix only).
114+
*/
115+
#if !defined(_WIN32)
116+
ddog_MaybeError ddog_sidecar_shutdown_master_listener(void);
117+
#endif
118+
119+
/**
120+
* Check if master listener is active for the given PID (Unix only).
121+
*/
122+
#if !defined(_WIN32)
123+
bool ddog_sidecar_is_master_listener_active(int32_t pid);
124+
#endif
125+
126+
/**
127+
* Clear inherited master listener state in child after fork (Unix only).
128+
*/
129+
#if !defined(_WIN32)
130+
ddog_MaybeError ddog_sidecar_clear_inherited_listener(void);
131+
#endif
132+
95133
ddog_MaybeError ddog_sidecar_ping(struct ddog_SidecarTransport **transport);
96134

97135
ddog_MaybeError ddog_sidecar_flush_traces(struct ddog_SidecarTransport **transport);

0 commit comments

Comments
 (0)