Fix: leak of streams
[babeltrace.git] / formats / lttng-live / lttng-live.h
index ae04e8979a18edd536e9bb5e3f7227322ccdee0a..ef799fd7f5d402fc420cde3bd76e6fea765b1739 100644 (file)
  */
 
 #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;
@@ -45,12 +58,15 @@ struct lttng_live_ctx {
 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 stream_node;
        char path[PATH_MAX];
 };
 
@@ -58,7 +74,7 @@ struct lttng_live_session {
        uint64_t live_timer_interval;
        uint64_t stream_count;
        struct lttng_live_ctx *ctx;
-       struct lttng_live_viewer_stream *streams;
+       struct bt_list_head stream_list;
        GHashTable *ctf_traces;
 };
 
@@ -85,7 +101,7 @@ int lttng_live_connect_viewer(struct lttng_live_ctx *ctx);
 int lttng_live_establish_connection(struct lttng_live_ctx *ctx);
 int lttng_live_list_sessions(struct lttng_live_ctx *ctx, const char *path);
 int lttng_live_attach_session(struct lttng_live_ctx *ctx, uint64_t id);
-void lttng_live_read(struct lttng_live_ctx *ctx);
+int lttng_live_read(struct lttng_live_ctx *ctx);
 int lttng_live_get_new_streams(struct lttng_live_ctx *ctx, uint64_t id);
 int lttng_live_should_quit(void);
 
This page took 0.023377 seconds and 4 git commands to generate.