X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fctf-trace.h;h=a64d53aa663df0c7dd6abf3b2e5bba7a557fabef;hp=66f7a15684b03d7ec0063f1702462bdf3cc03261;hb=2a174661a1e0ab551b41ff1cae7191688525fc1f;hpb=2f8f53af90479595d530f8f02e71dd0b9fb810ee diff --git a/src/bin/lttng-relayd/ctf-trace.h b/src/bin/lttng-relayd/ctf-trace.h index 66f7a1568..a64d53aa6 100644 --- a/src/bin/lttng-relayd/ctf-trace.h +++ b/src/bin/lttng-relayd/ctf-trace.h @@ -24,18 +24,41 @@ #include #include "lttng-relayd.h" +#include "session.h" struct ctf_trace { int refcount; + unsigned int invalid_flag:1; uint64_t id; uint64_t metadata_received; uint64_t metadata_sent; struct relay_stream *metadata_stream; struct relay_viewer_stream *viewer_metadata_stream; + /* Node indexed by stream path name in the corresponding session. */ + struct lttng_ht_node_str node; + + /* Relay stream associated with this ctf trace. */ + struct cds_list_head stream_list; }; -void ctf_trace_assign(struct lttng_ht *ht, struct relay_stream *stream); -struct ctf_trace *ctf_trace_create(void); -void ctf_trace_try_destroy(struct ctf_trace *obj); +static inline void ctf_trace_get_ref(struct ctf_trace *trace) +{ + uatomic_inc(&trace->refcount); +} + +static inline void ctf_trace_put_ref(struct ctf_trace *trace) +{ + uatomic_add(&trace->refcount, -1); +} + +void ctf_trace_assign(struct relay_stream *stream); +struct ctf_trace *ctf_trace_create(char *path_name); +void ctf_trace_destroy(struct ctf_trace *obj); +void ctf_trace_try_destroy(struct relay_session *session, + struct ctf_trace *ctf_trace); +struct ctf_trace *ctf_trace_find_by_path(struct lttng_ht *ht, + char *path_name); +void ctf_trace_add(struct lttng_ht *ht, struct ctf_trace *trace); +void ctf_trace_delete(struct lttng_ht *ht, struct ctf_trace *trace); #endif /* _CTF_TRACE_H */