ir: stream: add bt_ctf_stream_is_writer()
[babeltrace.git] / formats / ctf / ir / stream.c
index 56abfcea5f89fe1f78f47241428fcc20d3688361..5e9e133794232aeba637540998dd6afd7c84c4bd 100644 (file)
@@ -61,7 +61,7 @@ int set_packet_header_magic(struct bt_ctf_stream *stream)
                goto end;
        }
 
-       if (!bt_ctf_field_validate(magic_field)) {
+       if (bt_ctf_field_is_set(magic_field)) {
                /* Value already set. Not an error, skip. */
                goto end;
        }
@@ -113,7 +113,7 @@ int set_packet_header_uuid(struct bt_ctf_stream *stream)
                goto end;
        }
 
-       if (!bt_ctf_field_validate(uuid_field)) {
+       if (bt_ctf_field_is_set(uuid_field)) {
                /* Value already set. Not an error, skip. */
                goto end;
        }
@@ -186,7 +186,7 @@ int set_packet_header_stream_id(struct bt_ctf_stream *stream)
                goto end;
        }
 
-       if (!bt_ctf_field_validate(stream_id_field)) {
+       if (bt_ctf_field_is_set(stream_id_field)) {
                /* Value already set. Not an error, skip. */
                goto end;
        }
@@ -403,9 +403,6 @@ struct bt_ctf_stream *bt_ctf_stream_create(
                if (ret) {
                        goto error;
                }
-
-               stream->clock_values = g_hash_table_new_full(g_direct_hash,
-                       g_direct_equal, NULL, g_free);
        }
 
        /* Add this stream to the trace's streams */
@@ -639,7 +636,7 @@ int bt_ctf_stream_set_packet_context(struct bt_ctf_stream *stream,
        int ret = 0;
        struct bt_ctf_field_type *field_type;
 
-       if (!stream || !field || stream->pos.fd < 0) {
+       if (!stream || stream->pos.fd < 0) {
                ret = -1;
                goto end;
        }
@@ -652,9 +649,8 @@ int bt_ctf_stream_set_packet_context(struct bt_ctf_stream *stream,
        }
 
        bt_put(field_type);
-       bt_get(field);
        bt_put(stream->packet_context);
-       stream->packet_context = field;
+       stream->packet_context = bt_get(field);
 end:
        return ret;
 }
@@ -683,7 +679,7 @@ int bt_ctf_stream_set_packet_header(struct bt_ctf_stream *stream,
        struct bt_ctf_trace *trace = NULL;
        struct bt_ctf_field_type *field_type = NULL;
 
-       if (!stream || !field || stream->pos.fd < 0) {
+       if (!stream || stream->pos.fd < 0) {
                ret = -1;
                goto end;
        }
@@ -695,9 +691,8 @@ int bt_ctf_stream_set_packet_header(struct bt_ctf_stream *stream,
                goto end;
        }
 
-       bt_get(field);
        bt_put(stream->packet_header);
-       stream->packet_header = field;
+       stream->packet_header = bt_get(field);
 end:
        BT_PUT(trace);
        bt_put(field_type);
@@ -937,10 +932,6 @@ void bt_ctf_stream_destroy(struct bt_object *obj)
                g_string_free(stream->name, TRUE);
        }
 
-       if (stream->clock_values) {
-               g_hash_table_destroy(stream->clock_values);
-       }
-
        bt_put(stream->packet_header);
        bt_put(stream->packet_context);
        g_free(stream);
@@ -966,7 +957,7 @@ int set_structure_field_integer(struct bt_ctf_field *structure, char *name,
        }
 
        /* Make sure the payload has not already been set. */
-       if (!bt_ctf_field_validate(integer)) {
+       if (bt_ctf_field_is_set(integer)) {
                /* Payload already set, not an error */
                goto end;
        }
@@ -1010,77 +1001,16 @@ end:
        return name;
 }
 
-BT_HIDDEN
-void bt_ctf_stream_update_clock_value(struct bt_ctf_stream *stream,
-               struct bt_ctf_field *value_field)
+int bt_ctf_stream_is_writer(struct bt_ctf_stream *stream)
 {
-       struct bt_ctf_field_type *value_type = NULL;
-       struct bt_ctf_clock *clock = NULL;
-       uint64_t requested_new_value;
-       uint64_t requested_new_value_mask;
-       uint64_t *cur_value;
-       uint64_t cur_value_masked;
-       int requested_new_value_size;
-       int ret;
-
-       assert(stream);
-       assert(clock);
-       assert(value_field);
-       value_type = bt_ctf_field_get_type(value_field);
-       assert(value_type);
-       clock = bt_ctf_field_type_integer_get_mapped_clock(value_type);
-       assert(clock);
-       requested_new_value_size =
-               bt_ctf_field_type_integer_get_size(value_type);
-       assert(requested_new_value_size > 0);
-       ret = bt_ctf_field_unsigned_integer_get_value(value_field,
-               &requested_new_value);
-       assert(!ret);
-       cur_value = g_hash_table_lookup(stream->clock_values, clock);
-
-       if (!cur_value) {
-               /*
-                * Updating the value of a clock which is not registered
-                * yet, so register it with the new value as its initial
-                * value.
-                */
-               uint64_t *requested_new_value_ptr = g_new0(uint64_t, 1);
-
-               *requested_new_value_ptr = requested_new_value;
-               g_hash_table_insert(stream->clock_values, clock,
-                       requested_new_value_ptr);
-               goto end;
-       }
+       int ret = -1;
 
-       /*
-        * Special case for a 64-bit new value, which is the limit
-        * of a clock value as of this version: overwrite the
-        * current value directly.
-        */
-       if (requested_new_value_size == 64) {
-               *cur_value = requested_new_value;
+       if (!stream) {
                goto end;
        }
 
-       requested_new_value_mask = (1ULL << requested_new_value_size) - 1;
-       cur_value_masked = *cur_value & requested_new_value_mask;
-
-       if (requested_new_value < cur_value_masked) {
-               /*
-                * It looks like a wrap happened on the number of bits
-                * of the requested new value. Assume that the clock
-                * value wrapped only one time.
-                */
-               *cur_value += requested_new_value_mask + 1;
-       }
-
-       /* Clear the low bits of the current clock value */
-       *cur_value &= ~requested_new_value_mask;
-
-       /* Set the low bits of the current clock value */
-       *cur_value |= requested_new_value;
+       ret = (stream->pos.fd >= 0);
 
 end:
-       bt_put(clock);
-       bt_put(value_type);
+       return ret;
 }
This page took 0.036003 seconds and 4 git commands to generate.