X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fmessage%2Fdiscarded-items.c;h=4a846313a54bca69105653c1fee3a38d2cb165c4;hb=HEAD;hp=e04654f2bd5395562c3a970bd9659e7eff40f7b5;hpb=0a83319b57c7f5d1f37a8c1af9a39daf6d503122;p=babeltrace.git diff --git a/src/lib/graph/message/discarded-items.c b/src/lib/graph/message/discarded-items.c index e04654f2..4a846313 100644 --- a/src/lib/graph/message/discarded-items.c +++ b/src/lib/graph/message/discarded-items.c @@ -21,6 +21,26 @@ #include "discarded-items.h" +#define BT_ASSERT_PRE_MSG_IS_DISC_EVENTS(_msg) \ + BT_ASSERT_PRE_MSG_HAS_TYPE("message", (_msg), \ + "discarded-events", BT_MESSAGE_TYPE_DISCARDED_EVENTS); + +#define BT_ASSERT_PRE_DEV_MSG_IS_DISC_EVENTS(_msg) \ + BT_ASSERT_PRE_DEV_MSG_HAS_TYPE("message", (_msg), \ + "discarded-events", BT_MESSAGE_TYPE_DISCARDED_EVENTS); + +#define BT_ASSERT_PRE_MSG_IS_DISC_PACKETS(_msg) \ + BT_ASSERT_PRE_MSG_HAS_TYPE("message", (_msg), \ + "discarded-packets", BT_MESSAGE_TYPE_DISCARDED_PACKETS); + +#define BT_ASSERT_PRE_DEV_MSG_IS_DISC_PACKETS(_msg) \ + BT_ASSERT_PRE_DEV_MSG_HAS_TYPE("message", (_msg), \ + "discarded-packets", BT_MESSAGE_TYPE_DISCARDED_PACKETS); + +#define BT_ASSERT_PRE_DEV_COUNT_OUTPUT_NON_NULL(_count) \ + BT_ASSERT_PRE_DEV_NON_NULL("count-output", count, \ + "Count (output)"); + static void destroy_discarded_items_message(struct bt_object *obj) { @@ -48,15 +68,17 @@ struct bt_message *create_discarded_items_message( struct bt_self_message_iterator *self_msg_iter, enum bt_message_type type, struct bt_stream *stream, bool with_cs, - uint64_t beginning_raw_value, uint64_t end_raw_value) + uint64_t beginning_raw_value, uint64_t end_raw_value, + const char *api_func, + const char *sc_supports_disc_precond_id) { struct bt_message_discarded_items *message; struct bt_stream_class *stream_class; bool has_support; bool need_cs; - BT_ASSERT_PRE_NON_NULL(self_msg_iter, "Message iterator"); - BT_ASSERT_PRE_NON_NULL(stream, "Stream"); + BT_ASSERT_PRE_MSG_ITER_NON_NULL_FROM_FUNC(api_func, self_msg_iter); + BT_ASSERT_PRE_STREAM_NON_NULL_FROM_FUNC(api_func, stream); stream_class = bt_stream_borrow_class(stream); BT_ASSERT(stream_class); @@ -68,30 +90,33 @@ struct bt_message *create_discarded_items_message( need_cs = stream_class->discarded_packets_have_default_clock_snapshots; } - BT_ASSERT_PRE(has_support, + BT_ASSERT_PRE_FROM_FUNC(api_func, sc_supports_disc_precond_id, + has_support, "Stream class does not support discarded events or packets: " "type=%s, %![stream-]+s, %![sc-]+S", - bt_message_type_string(type), stream, stream_class); - BT_ASSERT_PRE(need_cs ? with_cs : true, + bt_common_message_type_string(type), stream, stream_class); + BT_ASSERT_PRE_FROM_FUNC(api_func, "with-default-clock-snapshots", + need_cs ? with_cs : true, "Unexpected stream class configuration when creating " "a discarded events or discarded packets message: " "default clock snapshots are needed, but none was provided: " "type=%s, %![stream-]+s, %![sc-]+S, with-cs=%d, " "cs-begin-val=%" PRIu64 ", cs-end-val=%" PRIu64, - bt_message_type_string(type), stream, stream_class, + bt_common_message_type_string(type), stream, stream_class, with_cs, beginning_raw_value, end_raw_value); - BT_ASSERT_PRE(!need_cs ? !with_cs : true, + BT_ASSERT_PRE_FROM_FUNC(api_func, "without-default-clock-snapshots", + !need_cs ? !with_cs : true, "Unexpected stream class configuration when creating " "a discarded events or discarded packets message: " "no default clock snapshots are needed, but two were provided: " "type=%s, %![stream-]+s, %![sc-]+S, with-cs=%d, " "cs-begin-val=%" PRIu64 ", cs-end-val=%" PRIu64, - bt_message_type_string(type), stream, stream_class, + bt_common_message_type_string(type), stream, stream_class, with_cs, beginning_raw_value, end_raw_value); BT_LIB_LOGD("Creating discarded items message object: " "type=%s, %![stream-]+s, %![sc-]+S, with-cs=%d, " "cs-begin-val=%" PRIu64 ", cs-end-val=%" PRIu64, - bt_message_type_string(type), stream, stream_class, + bt_common_message_type_string(type), stream, stream_class, with_cs, beginning_raw_value, end_raw_value); message = g_new0(struct bt_message_discarded_items, 1); if (!message) { @@ -155,7 +180,6 @@ void set_discarded_items_message_count(struct bt_message *message, struct bt_message_discarded_items *disc_items_msg = (void *) message; BT_ASSERT(message); - BT_ASSERT_PRE_DEV_HOT(message, "Message", ": %!+n", message); bt_property_uint_set(&disc_items_msg->count, count); } @@ -165,8 +189,8 @@ enum bt_property_availability get_discarded_items_message_count( { struct bt_message_discarded_items *disc_items_msg = (void *) message; - BT_ASSERT_PRE_DEV_NON_NULL(count, "Count (output)"); BT_ASSERT_DBG(message); + BT_ASSERT_DBG(count); *count = disc_items_msg->count.value; return disc_items_msg->count.base.avail; } @@ -174,33 +198,33 @@ enum bt_property_availability get_discarded_items_message_count( static inline const struct bt_clock_snapshot * borrow_discarded_items_message_beginning_default_clock_snapshot_const( - const struct bt_message *message) + const struct bt_message *message, const char *api_func) { struct bt_message_discarded_items *disc_items_msg = (void *) message; BT_ASSERT_DBG(message); - BT_ASSERT_PRE_DEV(disc_items_msg->stream->class->default_clock_class, - "Message's stream's class has no default clock class: " - "%![msg-]+n, %![sc-]+S", - message, disc_items_msg->stream->class); + BT_ASSERT_PRE_DEV_MSG_SC_DEF_CLK_CLS_FROM_FUNC(api_func, message, + disc_items_msg->stream->class); return disc_items_msg->default_begin_cs; } static inline const struct bt_clock_snapshot * borrow_discarded_items_message_end_default_clock_snapshot_const( - const struct bt_message *message) + const struct bt_message *message, const char *api_func) { struct bt_message_discarded_items *disc_items_msg = (void *) message; BT_ASSERT_DBG(message); - BT_ASSERT_PRE_DEV(disc_items_msg->stream->class->default_clock_class, - "Message's stream's class has no default clock class: " - "%![msg-]+n, %![sc-]+S", - message, disc_items_msg->stream->class); + BT_ASSERT_PRE_DEV_MSG_SC_DEF_CLK_CLS_FROM_FUNC(api_func, message, + disc_items_msg->stream->class); return disc_items_msg->default_end_cs; } +#define SC_SUPPORTS_DISC_PRECOND_ID(_item_type) \ + "stream-class-supports-discarded-" _item_type + +BT_EXPORT struct bt_message *bt_message_discarded_events_create( struct bt_self_message_iterator *message_iterator, const struct bt_stream *stream) @@ -209,59 +233,69 @@ struct bt_message *bt_message_discarded_events_create( return create_discarded_items_message(message_iterator, BT_MESSAGE_TYPE_DISCARDED_EVENTS, (void *) stream, - false, 0, 0); + false, 0, 0, __func__, + SC_SUPPORTS_DISC_PRECOND_ID("events")); } +BT_EXPORT struct bt_message *bt_message_discarded_events_create_with_default_clock_snapshots( struct bt_self_message_iterator *message_iterator, const struct bt_stream *stream, uint64_t beginning_raw_value, uint64_t end_raw_value) { BT_ASSERT_PRE_DEV_NO_ERROR(); - BT_ASSERT_PRE_BEGIN_LE_END(message_iterator, beginning_raw_value, end_raw_value); + BT_ASSERT_PRE_MSG_CS_BEGIN_LE_END(message_iterator, + beginning_raw_value, end_raw_value); return create_discarded_items_message(message_iterator, BT_MESSAGE_TYPE_DISCARDED_EVENTS, (void *) stream, - true, beginning_raw_value, end_raw_value); + true, beginning_raw_value, end_raw_value, __func__, + SC_SUPPORTS_DISC_PRECOND_ID("events")); } +BT_EXPORT struct bt_stream *bt_message_discarded_events_borrow_stream( struct bt_message *message) { - BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(message, BT_MESSAGE_TYPE_DISCARDED_EVENTS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(message); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_EVENTS(message); return borrow_discarded_items_message_stream(message); } +BT_EXPORT void bt_message_discarded_events_set_count(struct bt_message *message, uint64_t count) { - BT_ASSERT_PRE_NON_NULL(message, "Message"); - BT_ASSERT_PRE_MSG_HAS_TYPE(message, BT_MESSAGE_TYPE_DISCARDED_EVENTS); - BT_ASSERT_PRE(count > 0, "Discarded event count is 0."); + BT_ASSERT_PRE_MSG_NON_NULL(message); + BT_ASSERT_PRE_MSG_IS_DISC_EVENTS(message); + BT_ASSERT_PRE_DEV_MSG_HOT(message); + BT_ASSERT_PRE("count-gt-0", count > 0, "Discarded event count is 0."); set_discarded_items_message_count(message, count); } +BT_EXPORT const struct bt_clock_snapshot * bt_message_discarded_events_borrow_beginning_default_clock_snapshot_const( const struct bt_message *msg) { - BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(msg, BT_MESSAGE_TYPE_DISCARDED_EVENTS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_EVENTS(msg); return borrow_discarded_items_message_beginning_default_clock_snapshot_const( - msg); + msg, __func__); } +BT_EXPORT const struct bt_clock_snapshot * bt_message_discarded_events_borrow_end_default_clock_snapshot_const( const struct bt_message *msg) { - BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(msg, BT_MESSAGE_TYPE_DISCARDED_EVENTS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_EVENTS(msg); return borrow_discarded_items_message_end_default_clock_snapshot_const( - msg); + msg, __func__); } +BT_EXPORT const struct bt_stream * bt_message_discarded_events_borrow_stream_const(const struct bt_message *message) { @@ -269,15 +303,17 @@ bt_message_discarded_events_borrow_stream_const(const struct bt_message *message (void *) message); } +BT_EXPORT enum bt_property_availability bt_message_discarded_events_get_count( const struct bt_message *message, uint64_t *count) { - BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(message, - BT_MESSAGE_TYPE_DISCARDED_EVENTS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(message); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_EVENTS(message); + BT_ASSERT_PRE_DEV_COUNT_OUTPUT_NON_NULL(count); return get_discarded_items_message_count(message, count); } +BT_EXPORT struct bt_message *bt_message_discarded_packets_create( struct bt_self_message_iterator *message_iterator, const struct bt_stream *stream) @@ -286,60 +322,68 @@ struct bt_message *bt_message_discarded_packets_create( return create_discarded_items_message(message_iterator, BT_MESSAGE_TYPE_DISCARDED_PACKETS, (void *) stream, - false, 0, 0); + false, 0, 0, __func__, SC_SUPPORTS_DISC_PRECOND_ID("packets")); } +BT_EXPORT struct bt_message *bt_message_discarded_packets_create_with_default_clock_snapshots( struct bt_self_message_iterator *message_iterator, const struct bt_stream *stream, uint64_t beginning_raw_value, uint64_t end_raw_value) { BT_ASSERT_PRE_DEV_NO_ERROR(); - BT_ASSERT_PRE_BEGIN_LE_END(message_iterator, beginning_raw_value, end_raw_value); + BT_ASSERT_PRE_MSG_CS_BEGIN_LE_END(message_iterator, + beginning_raw_value, end_raw_value); return create_discarded_items_message(message_iterator, BT_MESSAGE_TYPE_DISCARDED_PACKETS, (void *) stream, - true, beginning_raw_value, end_raw_value); + true, beginning_raw_value, end_raw_value, __func__, + SC_SUPPORTS_DISC_PRECOND_ID("packets")); } +BT_EXPORT struct bt_stream *bt_message_discarded_packets_borrow_stream( struct bt_message *message) { - BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(message, - BT_MESSAGE_TYPE_DISCARDED_PACKETS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(message); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_PACKETS(message); return borrow_discarded_items_message_stream(message); } +BT_EXPORT void bt_message_discarded_packets_set_count(struct bt_message *message, uint64_t count) { - BT_ASSERT_PRE_NON_NULL(message, "Message"); - BT_ASSERT_PRE_MSG_HAS_TYPE(message, BT_MESSAGE_TYPE_DISCARDED_PACKETS); - BT_ASSERT_PRE(count > 0, "Discarded packet count is 0."); + BT_ASSERT_PRE_MSG_NON_NULL(message); + BT_ASSERT_PRE_MSG_IS_DISC_PACKETS(message); + BT_ASSERT_PRE_DEV_MSG_HOT(message); + BT_ASSERT_PRE("count-gt-0", count > 0, "Discarded packet count is 0."); set_discarded_items_message_count(message, count); } +BT_EXPORT const struct bt_clock_snapshot * bt_message_discarded_packets_borrow_beginning_default_clock_snapshot_const( const struct bt_message *msg) { - BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(msg, BT_MESSAGE_TYPE_DISCARDED_PACKETS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_PACKETS(msg); return borrow_discarded_items_message_beginning_default_clock_snapshot_const( - msg); + msg, __func__); } +BT_EXPORT const struct bt_clock_snapshot * bt_message_discarded_packets_borrow_end_default_clock_snapshot_const( const struct bt_message *msg) { - BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(msg, BT_MESSAGE_TYPE_DISCARDED_PACKETS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_PACKETS(msg); return borrow_discarded_items_message_end_default_clock_snapshot_const( - msg); + msg, __func__); } +BT_EXPORT const struct bt_stream * bt_message_discarded_packets_borrow_stream_const(const struct bt_message *message) { @@ -347,12 +391,13 @@ bt_message_discarded_packets_borrow_stream_const(const struct bt_message *messag (void *) message); } +BT_EXPORT enum bt_property_availability bt_message_discarded_packets_get_count( const struct bt_message *message, uint64_t *count) { - BT_ASSERT_PRE_DEV_NON_NULL(message, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(message, - BT_MESSAGE_TYPE_DISCARDED_PACKETS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(message); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_PACKETS(message); + BT_ASSERT_PRE_DEV_COUNT_OUTPUT_NON_NULL(count); return get_discarded_items_message_count(message, count); } @@ -367,22 +412,24 @@ borrow_discarded_items_message_stream_class_default_clock_class( return disc_items_msg->stream->class->default_clock_class; } +BT_EXPORT const struct bt_clock_class * bt_message_discarded_events_borrow_stream_class_default_clock_class_const( const struct bt_message *msg) { - BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(msg, BT_MESSAGE_TYPE_DISCARDED_EVENTS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_EVENTS(msg); return borrow_discarded_items_message_stream_class_default_clock_class( msg); } +BT_EXPORT const struct bt_clock_class * bt_message_discarded_packets_borrow_stream_class_default_clock_class_const( const struct bt_message *msg) { - BT_ASSERT_PRE_DEV_NON_NULL(msg, "Message"); - BT_ASSERT_PRE_DEV_MSG_HAS_TYPE(msg, BT_MESSAGE_TYPE_DISCARDED_PACKETS); + BT_ASSERT_PRE_DEV_MSG_NON_NULL(msg); + BT_ASSERT_PRE_DEV_MSG_IS_DISC_PACKETS(msg); return borrow_discarded_items_message_stream_class_default_clock_class( msg); }