X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fctf-trace.h;h=489c5f1d58ba05dd7ada2f97076ffad6c0402e29;hb=94143186269a93973df9c0710736bf344cf1c6ea;hp=66f7a15684b03d7ec0063f1702462bdf3cc03261;hpb=157df58664846e22bdeea84dfcf717cb43360b3f;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/ctf-trace.h b/src/bin/lttng-relayd/ctf-trace.h index 66f7a1568..489c5f1d5 100644 --- a/src/bin/lttng-relayd/ctf-trace.h +++ b/src/bin/lttng-relayd/ctf-trace.h @@ -23,19 +23,42 @@ #include -#include "lttng-relayd.h" +#include "session.h" +#include "stream.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 */