CTF-IR: Support unnamed streams
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 27 Feb 2015 18:00:07 +0000 (13:00 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 27 Feb 2015 18:00:07 +0000 (13:00 -0500)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
formats/ctf/ir/stream-class.c
formats/ctf/writer/writer.c
include/babeltrace/ctf-ir/stream-class.h

index 18ae57eaccadc7ba733d8d36288af8b0f3f578a4..116befab0b6e3444bdfe925415ece33e4fe54296 100644 (file)
@@ -51,7 +51,7 @@ struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name)
        int ret;
        struct bt_ctf_stream_class *stream_class = NULL;
 
-       if (!name || !strlen(name) || bt_ctf_validate_identifier(name)) {
+       if (name && bt_ctf_validate_identifier(name)) {
                goto error;
        }
 
@@ -101,6 +101,21 @@ end:
        return name;
 }
 
+int bt_ctf_stream_class_set_name(struct bt_ctf_stream_class *stream_class,
+               const char *name)
+{
+       int ret = 0;
+
+       if (!stream_class || stream_class->frozen) {
+               ret = -1;
+               goto end;
+       }
+
+       g_string_assign(stream_class->name, name);
+end:
+       return ret;
+}
+
 struct bt_ctf_clock *bt_ctf_stream_class_get_clock(
                struct bt_ctf_stream_class *stream_class)
 {
index 54eab39bb54d31fa251a74125f8a0d75222679ba..7b59d16cf1b71745883269d2287401003816e31d 100644 (file)
@@ -290,10 +290,23 @@ int create_stream_file(struct bt_ctf_writer *writer,
        int fd;
        GString *filename = g_string_new(stream->stream_class->name->str);
 
+       if (stream->stream_class->name->len == 0) {
+               int64_t ret;
+
+               ret = bt_ctf_stream_class_get_id(stream->stream_class);
+               if (ret < 0) {
+                       fd = -1;
+                       goto error;
+               }
+
+               g_string_printf(filename, "stream_%" PRId64, ret);
+       }
+
        g_string_append_printf(filename, "_%" PRIu32, stream->id);
        fd = openat(writer->trace_dir_fd, filename->str,
                O_RDWR | O_CREAT | O_TRUNC,
                S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
+error:
        g_string_free(filename, TRUE);
        return fd;
 }
index b52dcb78c6a6004f0465784abf16b7e12952f10b..c275b025f8fca8fe24f60c1b68020677176118de 100644 (file)
@@ -57,7 +57,7 @@ struct bt_ctf_clock;
  *  - uint32_t id
  *  - uint64_t timestamp
  *
- * @param name Stream name.
+ * @param name Stream name, NULL to create an unnamed stream class.
  *
  * Returns an allocated stream class on success, NULL on error.
  */
@@ -73,6 +73,16 @@ extern struct bt_ctf_stream_class *bt_ctf_stream_class_create(const char *name);
 extern const char *bt_ctf_stream_class_get_name(
                struct bt_ctf_stream_class *stream_class);
 
+/*
+ * bt_ctf_stream_class_set_name: Set a stream class' name.
+ *
+ * @param stream_class Stream class.
+ *
+ * Returns 0 on success, a negative value on error.
+ */
+extern int bt_ctf_stream_class_set_name(
+               struct bt_ctf_stream_class *stream_class, const char *name);
+
 /*
  * bt_ctf_stream_class_get_clock: get the clock associated with a stream class.
  *
This page took 0.026455 seconds and 4 git commands to generate.