Fix copytrace: copy packet_context
[babeltrace.git] / plugins / ctf / fs-sink / write.c
index d8131d318211a9a029d2144c4c122e0e50a850b7..51bd7208a9cb768aa4db8cdd4b50f0f4f167c625 100644 (file)
@@ -53,16 +53,29 @@ void unref_stream(struct bt_ctf_stream_class *writer_stream)
        bt_put(writer_stream);
 }
 
+static
 gboolean empty_ht(gpointer key, gpointer value, gpointer user_data)
 {
        return TRUE;
 }
 
+static
+gboolean empty_streams_ht(gpointer key, gpointer value, gpointer user_data)
+{
+       struct bt_ctf_stream *writer_stream = value;
+
+       bt_ctf_stream_flush(writer_stream);
+
+       return TRUE;
+}
+
+static
 void destroy_stream_state_key(gpointer key)
 {
        g_free((enum fs_writer_stream_state *) key);
 }
 
+static
 void check_completed_trace(gpointer key, gpointer value, gpointer user_data)
 {
        enum fs_writer_stream_state *state = value;
@@ -491,7 +504,7 @@ BT_HIDDEN
 void writer_close(struct writer_component *writer_component,
                struct fs_writer *fs_writer)
 {
-       if (fs_writer->static_listener_id > 0) {
+       if (fs_writer->static_listener_id >= 0) {
                bt_ctf_trace_remove_is_static_listener(fs_writer->trace,
                                fs_writer->static_listener_id);
        }
@@ -503,7 +516,7 @@ void writer_close(struct writer_component *writer_component,
 
        /* Empty the stream HT. */
        g_hash_table_foreach_remove(fs_writer->stream_map,
-                       empty_ht, NULL);
+                       empty_streams_ht, NULL);
        g_hash_table_destroy(fs_writer->stream_map);
 
        /* Empty the stream state HT. */
@@ -562,7 +575,6 @@ enum bt_component_status writer_stream_begin(
                                __func__, __FILE__, __LINE__);
                goto error;
        }
-       fs_writer->active_streams++;
 
        goto end;
 
@@ -636,7 +648,6 @@ enum bt_component_status writer_new_packet(
                struct bt_ctf_packet *packet)
 {
        struct bt_ctf_stream *stream = NULL, *writer_stream = NULL;
-       struct bt_ctf_field *writer_packet_context = NULL;
        enum bt_component_status ret = BT_COMPONENT_STATUS_OK;
        int int_ret;
 
@@ -655,23 +666,14 @@ enum bt_component_status writer_new_packet(
        }
        BT_PUT(stream);
 
-       writer_packet_context = ctf_copy_packet_context(writer_component->err,
-                       packet, writer_stream);
-       if (!writer_packet_context) {
+       int_ret = ctf_stream_copy_packet_context(
+                       writer_component->err, packet, writer_stream);
+       if (int_ret < 0) {
                fprintf(writer_component->err, "[error] %s in %s:%d\n",
                                __func__, __FILE__, __LINE__);
                goto error;
        }
-
-       int_ret = bt_ctf_stream_set_packet_context(writer_stream,
-                       writer_packet_context);
-       if (int_ret < 0) {
-               fprintf(writer_component->err, "[error] %s in %s:%d\n", __func__,
-                               __FILE__, __LINE__);
-               goto error;
-       }
        BT_PUT(writer_stream);
-       BT_PUT(writer_packet_context);
 
        goto end;
 
@@ -679,7 +681,6 @@ error:
        ret = BT_COMPONENT_STATUS_ERROR;
 end:
        bt_put(writer_stream);
-       bt_put(writer_packet_context);
        bt_put(stream);
        return ret;
 }
This page took 0.023865 seconds and 4 git commands to generate.