Document libbabeltrace2's C API
[babeltrace.git] / src / lib / graph / message / stream.c
index ecab2c29a5acd9fd520c77e362e680e7e4a4f140..1ecb452fbdec4ed7604142f6a69c3fc6cb789b6d 100644 (file)
 
 #include "lib/assert-pre.h"
 #include "compat/compiler.h"
-#include <babeltrace2/trace-ir/clock-snapshot-const.h>
+#include <babeltrace2/trace-ir/clock-snapshot.h>
 #include "lib/trace-ir/stream.h"
 #include <babeltrace2/trace-ir/stream-class.h>
 #include "lib/trace-ir/stream-class.h"
-#include <babeltrace2/graph/message-stream-beginning.h>
-#include <babeltrace2/graph/message-stream-end.h>
-#include <babeltrace2/graph/message-stream-beginning-const.h>
-#include <babeltrace2/graph/message-stream-end-const.h>
+#include <babeltrace2/graph/message.h>
 #include "common/assert.h"
 #include <inttypes.h>
 
@@ -45,6 +42,14 @@ void destroy_stream_message(struct bt_object *obj)
        struct bt_message_stream *message = (void *) obj;
 
        BT_LIB_LOGD("Destroying stream message: %!+n", message);
+
+       if (message->default_cs) {
+               BT_LIB_LOGD("Putting default clock snapshot: %!+k",
+                       message->default_cs);
+               bt_clock_snapshot_destroy(message->default_cs);
+               message->default_cs = NULL;
+       }
+
        BT_LIB_LOGD("Putting stream: %!+s", message->stream);
        BT_OBJECT_PUT_REF_AND_RESET(message->stream);
        g_free(message);
@@ -75,7 +80,7 @@ struct bt_message *create_stream_message(
        bt_message_init(&message->parent, type,
                destroy_stream_message, NULL);
        message->stream = stream;
-       bt_object_get_no_null_check(message->stream);
+       bt_object_get_ref_no_null_check(message->stream);
 
        if (stream_class->default_clock_class) {
                message->default_cs = bt_clock_snapshot_create(
@@ -105,6 +110,8 @@ struct bt_message *bt_message_stream_beginning_create(
                struct bt_self_message_iterator *self_msg_iter,
                const struct bt_stream *stream)
 {
+       BT_ASSERT_PRE_DEV_NO_ERROR();
+
        return create_stream_message(self_msg_iter, (void *) stream,
                BT_MESSAGE_TYPE_STREAM_BEGINNING);
 }
@@ -113,6 +120,8 @@ struct bt_message *bt_message_stream_end_create(
                struct bt_self_message_iterator *self_msg_iter,
                const struct bt_stream *stream)
 {
+       BT_ASSERT_PRE_DEV_NO_ERROR();
+
        return create_stream_message(self_msg_iter, (void *) stream,
                BT_MESSAGE_TYPE_STREAM_END);
 }
@@ -122,7 +131,7 @@ struct bt_stream *borrow_stream_message_stream(struct bt_message *message)
 {
        struct bt_message_stream *stream_msg;
 
-       BT_ASSERT(message);
+       BT_ASSERT_DBG(message);
        stream_msg = (void *) message;
        return stream_msg->stream;
 }
@@ -130,16 +139,18 @@ struct bt_stream *borrow_stream_message_stream(struct bt_message *message)
 struct bt_stream *bt_message_stream_beginning_borrow_stream(
                struct bt_message *message)
 {
-       BT_ASSERT_PRE_NON_NULL(message, "Message");
-       BT_ASSERT_PRE_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_STREAM_BEGINNING);
+       BT_ASSERT_PRE_DEV_NON_NULL(message, "Message");
+       BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message,
+               BT_MESSAGE_TYPE_STREAM_BEGINNING);
        return borrow_stream_message_stream(message);
 }
 
 struct bt_stream *bt_message_stream_end_borrow_stream(
                struct bt_message *message)
 {
-       BT_ASSERT_PRE_NON_NULL(message, "Message");
-       BT_ASSERT_PRE_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_STREAM_END);
+       BT_ASSERT_PRE_DEV_NON_NULL(message, "Message");
+       BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message,
+               BT_MESSAGE_TYPE_STREAM_END);
        return borrow_stream_message_stream(message);
 }
 
@@ -165,7 +176,7 @@ void bt_message_stream_set_default_clock_snapshot(
        struct bt_stream_class *sc;
 
        BT_ASSERT(msg);
-       BT_ASSERT_PRE_HOT(msg, "Message", ": %!+n", msg);
+       BT_ASSERT_PRE_DEV_HOT(msg, "Message", ": %!+n", msg);
        sc = stream_msg->stream->class;
        BT_ASSERT(sc);
        BT_ASSERT_PRE(sc->default_clock_class,
@@ -203,13 +214,13 @@ bt_message_stream_borrow_default_clock_snapshot_const(
        struct bt_message_stream *stream_msg = (void *) msg;
        struct bt_stream_class *sc;
 
-       BT_ASSERT(msg);
+       BT_ASSERT_DBG(msg);
        sc = stream_msg->stream->class;
-       BT_ASSERT(sc);
-       BT_ASSERT_PRE(sc->default_clock_class,
+       BT_ASSERT_DBG(sc);
+       BT_ASSERT_PRE_DEV(sc->default_clock_class,
                "Message's stream's class has no default clock class: "
                "%![msg-]+n, %![sc-]+S", msg, sc);
-       BT_ASSERT(stream_msg->default_cs);
+       BT_ASSERT_DBG(stream_msg->default_cs);
 
        *snapshot = stream_msg->default_cs;
 
@@ -220,9 +231,9 @@ enum bt_message_stream_clock_snapshot_state
 bt_message_stream_beginning_borrow_default_clock_snapshot_const(
                const bt_message *message, const bt_clock_snapshot **snapshot)
 {
-       BT_ASSERT_PRE_NON_NULL(message, "Message");
-       BT_ASSERT_PRE_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_STREAM_BEGINNING);
-
+       BT_ASSERT_PRE_DEV_NON_NULL(message, "Message");
+       BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message,
+               BT_MESSAGE_TYPE_STREAM_BEGINNING);
        return bt_message_stream_borrow_default_clock_snapshot_const(
                message, snapshot);
 }
@@ -231,9 +242,8 @@ enum bt_message_stream_clock_snapshot_state
 bt_message_stream_end_borrow_default_clock_snapshot_const(
                const bt_message *message, const bt_clock_snapshot **snapshot)
 {
-       BT_ASSERT_PRE_NON_NULL(message, "Message");
-       BT_ASSERT_PRE_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_STREAM_END);
-
+       BT_ASSERT_PRE_DEV_NON_NULL(message, "Message");
+       BT_ASSERT_PRE_DEV_MSG_IS_TYPE(message, BT_MESSAGE_TYPE_STREAM_END);
        return bt_message_stream_borrow_default_clock_snapshot_const(
                message, snapshot);
 }
@@ -245,7 +255,7 @@ borrow_stream_message_stream_class_default_clock_class(
 {
        struct bt_message_stream *stream_msg = (void *) msg;
 
-       BT_ASSERT(msg);
+       BT_ASSERT_DBG(msg);
        return stream_msg->stream->class->default_clock_class;
 }
 
@@ -253,8 +263,8 @@ const struct bt_clock_class *
 bt_message_stream_beginning_borrow_stream_class_default_clock_class_const(
                const struct bt_message *msg)
 {
-       BT_ASSERT_PRE_NON_NULL(msg, "Message");
-       BT_ASSERT_PRE_MSG_IS_TYPE(msg,
+       BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message");
+       BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg,
                BT_MESSAGE_TYPE_STREAM_BEGINNING);
        return borrow_stream_message_stream_class_default_clock_class(msg);
 }
@@ -263,7 +273,7 @@ const struct bt_clock_class *
 bt_message_stream_end_borrow_stream_class_default_clock_class_const(
                const struct bt_message *msg)
 {
-       BT_ASSERT_PRE_NON_NULL(msg, "Message");
-       BT_ASSERT_PRE_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_STREAM_END);
+       BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message");
+       BT_ASSERT_PRE_DEV_MSG_IS_TYPE(msg, BT_MESSAGE_TYPE_STREAM_END);
        return borrow_stream_message_stream_class_default_clock_class(msg);
 }
This page took 0.027474 seconds and 4 git commands to generate.