*/
#include <stdint.h>
+#include <sys/param.h>
+#include <babeltrace/list.h>
+#include "lttng-viewer-abi.h"
#define LTTNG_DEFAULT_NETWORK_VIEWER_PORT 5344
#define LTTNG_LIVE_MAJOR 2
#define LTTNG_LIVE_MINOR 4
+/*
+ * The lttng-live output file pointer is currently hardcoded to stdout,
+ * and is expected to be hardcoded to this by fflush() performed between
+ * each packet.
+ */
+#define LTTNG_LIVE_OUTPUT_FP stdout
+
struct lttng_live_ctx {
- char traced_hostname[NAME_MAX];
- char session_name[NAME_MAX];
- char relay_hostname[NAME_MAX];
+ char traced_hostname[MAXNAMLEN];
+ char session_name[MAXNAMLEN];
+ char relay_hostname[MAXNAMLEN];
int control_sock;
int port;
+ /* Protocol version to use for this connection. */
+ uint32_t major;
+ uint32_t minor;
struct lttng_live_session *session;
struct bt_context *bt_ctx;
GArray *session_ids;
struct lttng_live_viewer_stream {
uint64_t id;
uint64_t mmap_size;
+ uint64_t ctf_stream_id;
FILE *metadata_fp_write;
ssize_t metadata_len;
int metadata_flag;
- int first_read;
+ int data_pending;
struct lttng_live_session *session;
struct lttng_live_ctf_trace *ctf_trace;
+ struct lttng_viewer_index current_index;
+ struct bt_list_head session_stream_node; /* Owns stream. */
+ struct bt_list_head trace_stream_node;
+ int in_trace;
char path[PATH_MAX];
};
uint64_t live_timer_interval;
uint64_t stream_count;
struct lttng_live_ctx *ctx;
- struct lttng_live_viewer_stream *streams;
+ /* The session stream list owns the lttng_live_viewer_stream object. */
+ struct bt_list_head stream_list;
GHashTable *ctf_traces;
};
struct lttng_live_ctf_trace {
uint64_t ctf_trace_id;
struct lttng_live_viewer_stream *metadata_stream;
- GPtrArray *streams;
+ /* The trace has a list of streams, but it has no ownership on them. */
+ struct bt_list_head stream_list;
FILE *metadata_fp;
struct bt_trace_handle *handle;
int trace_id;