Use compiler-agnostic defines to silence warning
[lttng-tools.git] / src / bin / lttng-relayd / viewer-session.hpp
index 65ad3e11a8165fe4fa3ec973f7bd42f49ff83e54..728676b9509f417ed7f2b899cc2ed44d56cd70c8 100644 (file)
  *
  */
 
  *
  */
 
-#include <limits.h>
-#include <inttypes.h>
-#include <pthread.h>
-#include <urcu/list.h>
-#include <urcu/ref.h>
+#include "lttng-viewer-abi.hpp"
+#include "session.hpp"
 
 #include <common/hashtable/hashtable.hpp>
 #include <common/trace-chunk.hpp>
 
 
 #include <common/hashtable/hashtable.hpp>
 #include <common/trace-chunk.hpp>
 
-#include "session.hpp"
-#include "lttng-viewer-abi.hpp"
+#include <inttypes.h>
+#include <limits.h>
+#include <pthread.h>
+#include <urcu/list.h>
+#include <urcu/ref.h>
 
 struct relay_viewer_session {
 
 struct relay_viewer_session {
+       /*
+        * The id of the relay viewer session. Uses the associated connection's socket FD.
+        */
+       uint64_t id;
        /*
         * Session list. Updates are protected by the session_list_lock.
         * Traversals are protected by RCU.
         * This list limits the design to having the sessions in at most
         * one viewer session.
         */
        /*
         * Session list. Updates are protected by the session_list_lock.
         * Traversals are protected by RCU.
         * This list limits the design to having the sessions in at most
         * one viewer session.
         */
-       struct cds_list_head session_list;      /* RCU list. */
-       pthread_mutex_t session_list_lock;      /* Protects list updates. */
+       struct cds_list_head session_list; /* RCU list. */
+       pthread_mutex_t session_list_lock; /* Protects list updates. */
+       /*
+        * Unannounced stream list. Updates are protected by the
+        * unannounced_stream_list_lock. This lock nests inside
+        * the following locks (in order): relay session, ctf_trace,
+        * and relay stream.
+        *
+        * Traversals are protected by RCU.
+        */
+       struct cds_list_head unannounced_stream_list;
+       pthread_mutex_t unannounced_stream_list_lock;
+       /*
+        * Node in the global viewer sessions hashtable.
+        */
+       struct lttng_ht_node_u64 viewer_session_n;
        /*
         * The viewer session's current trace chunk is initially set, when
         * a viewer attaches to the viewer session, to a copy the corresponding
        /*
         * The viewer session's current trace chunk is initially set, when
         * a viewer attaches to the viewer session, to a copy the corresponding
@@ -61,18 +79,17 @@ struct relay_viewer_session {
        struct lttng_trace_chunk *current_trace_chunk;
 };
 
        struct lttng_trace_chunk *current_trace_chunk;
 };
 
-struct relay_viewer_session *viewer_session_create(void);
+struct relay_viewer_session *viewer_session_create();
 void viewer_session_destroy(struct relay_viewer_session *vsession);
 void viewer_session_close(struct relay_viewer_session *vsession);
 
 void viewer_session_destroy(struct relay_viewer_session *vsession);
 void viewer_session_close(struct relay_viewer_session *vsession);
 
-enum lttng_viewer_attach_return_code viewer_session_attach(
-               struct relay_viewer_session *vsession,
-               struct relay_session *session);
+enum lttng_viewer_attach_return_code viewer_session_attach(struct relay_viewer_session *vsession,
+                                                          struct relay_session *session);
 int viewer_session_is_attached(struct relay_viewer_session *vsession,
 int viewer_session_is_attached(struct relay_viewer_session *vsession,
-               struct relay_session *session);
+                              struct relay_session *session);
 void viewer_session_close_one_session(struct relay_viewer_session *vsession,
 void viewer_session_close_one_session(struct relay_viewer_session *vsession,
-               struct relay_session *session);
+                                     struct relay_session *session);
 int viewer_session_set_trace_chunk_copy(struct relay_viewer_session *vsession,
 int viewer_session_set_trace_chunk_copy(struct relay_viewer_session *vsession,
-               struct lttng_trace_chunk *relay_session_trace_chunk);
+                                       struct lttng_trace_chunk *relay_session_trace_chunk);
 
 #endif /* _VIEWER_SESSION_H */
 
 #endif /* _VIEWER_SESSION_H */
This page took 0.024757 seconds and 4 git commands to generate.