* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef _LTT_RELAYD_H
-#define _LTT_RELAYD_H
+#ifndef LTTNG_RELAYD_H
+#define LTTNG_RELAYD_H
#define _LGPL_SOURCE
#include <urcu.h>
* Queue used to enqueue relay requests
*/
struct relay_cmd_queue {
- int32_t futex;
struct cds_wfq_queue queue;
+ int32_t futex;
};
enum connection_type {
* Represents a session for the relay point of view
*/
struct relay_session {
+ /*
+ * This session id is used to identify a set of stream to a tracing session
+ * but also make sure we have a unique session id associated with a session
+ * daemon which can provide multiple data source.
+ */
uint64_t id;
struct lttcomm_sock *sock;
- unsigned int version_check_done:1;
+ /* protocol version to use for this session */
+ uint32_t major;
+ uint32_t minor;
};
/*
*/
struct relay_stream {
uint64_t stream_handle;
+ uint64_t prev_seq; /* previous data sequence number encountered */
struct lttng_ht_node_ulong stream_n;
- int fd;
- uint64_t seq;
struct relay_session *session;
+ struct rcu_head rcu_node;
+ int fd;
+
+ /* Information telling us when to close the stream */
+ unsigned int close_flag:1;
+ uint64_t last_net_seq_num;
+ /* Indicate if the stream was initialized for a data pending command. */
+ unsigned int data_pending_check_done:1;
};
/*
*/
struct relay_command {
struct lttcomm_sock *sock;
+ struct relay_session *session;
struct cds_wfq_node node;
struct lttng_ht_node_ulong sock_n;
+ struct rcu_head rcu_node;
enum connection_type type;
- struct relay_session *session;
+ unsigned int version_check_done:1;
};
-#endif
+#endif /* LTTNG_RELAYD_H */