X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Futils%2Ftrimmer%2Fiterator.c;h=6b5699a299139ef5949455da6f232400f1834639;hb=40f4ba76dd6f9508ca51b6220eaed57632281a07;hp=8a081bce096d793ddacd5808e1e44d5f7ff1f4df;hpb=f6ccaed94e575af57fe6bf38154771bee4871a2a;p=babeltrace.git diff --git a/plugins/utils/trimmer/iterator.c b/plugins/utils/trimmer/iterator.c index 8a081bce..6b5699a2 100644 --- a/plugins/utils/trimmer/iterator.c +++ b/plugins/utils/trimmer/iterator.c @@ -42,21 +42,21 @@ static gboolean close_packets(gpointer key, gpointer value, gpointer user_data) { - struct bt_packet *writer_packet = value; + const struct bt_packet *writer_packet = value; - bt_put(writer_packet); + bt_object_put_ref(writer_packet); return TRUE; } BT_HIDDEN -void trimmer_iterator_finalize(struct bt_private_connection_private_notification_iterator *it) +void trimmer_iterator_finalize(struct bt_self_notification_iterator *it) { struct trimmer_iterator *trim_it; - trim_it = bt_private_connection_private_notification_iterator_get_user_data(it); + trim_it = bt_self_notification_iterator_get_user_data(it); BT_ASSERT(trim_it); - bt_put(trim_it->input_iterator); + bt_object_put_ref(trim_it->input_iterator); g_hash_table_foreach_remove(trim_it->packet_map, close_packets, NULL); g_hash_table_destroy(trim_it->packet_map); @@ -65,7 +65,7 @@ void trimmer_iterator_finalize(struct bt_private_connection_private_notification BT_HIDDEN enum bt_notification_iterator_status trimmer_iterator_init( - struct bt_private_connection_private_notification_iterator *iterator, + struct bt_self_notification_iterator *iterator, struct bt_private_port *port) { enum bt_notification_iterator_status ret = @@ -74,16 +74,9 @@ enum bt_notification_iterator_status trimmer_iterator_init( enum bt_connection_status conn_status; struct bt_private_port *input_port = NULL; struct bt_private_connection *connection = NULL; - struct bt_private_component *component = - bt_private_connection_private_notification_iterator_get_private_component(iterator); + struct bt_self_component *component = + bt_self_notification_iterator_get_private_component(iterator); struct trimmer_iterator *it_data = g_new0(struct trimmer_iterator, 1); - static const enum bt_notification_type notif_types[] = { - BT_NOTIFICATION_TYPE_EVENT, - BT_NOTIFICATION_TYPE_STREAM_END, - BT_NOTIFICATION_TYPE_PACKET_BEGIN, - BT_NOTIFICATION_TYPE_PACKET_END, - BT_NOTIFICATION_TYPE_SENTINEL, - }; if (!it_data) { ret = BT_NOTIFICATION_ITERATOR_STATUS_NOMEM; @@ -91,14 +84,14 @@ enum bt_notification_iterator_status trimmer_iterator_init( } /* Create a new iterator on the upstream component. */ - input_port = bt_private_component_filter_get_input_private_port_by_name( + input_port = bt_self_component_filter_get_input_port_by_name( component, "in"); BT_ASSERT(input_port); - connection = bt_private_port_get_private_connection(input_port); + connection = bt_private_port_get_connection(input_port); BT_ASSERT(connection); conn_status = bt_private_connection_create_notification_iterator(connection, - notif_types, &it_data->input_iterator); + &it_data->input_iterator); if (conn_status != BT_CONNECTION_STATUS_OK) { ret = BT_NOTIFICATION_ITERATOR_STATUS_ERROR; goto end; @@ -108,15 +101,15 @@ enum bt_notification_iterator_status trimmer_iterator_init( it_data->packet_map = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); - it_ret = bt_private_connection_private_notification_iterator_set_user_data(iterator, + it_ret = bt_self_notification_iterator_set_user_data(iterator, it_data); if (it_ret) { goto end; } end: - bt_put(component); - bt_put(connection); - bt_put(input_port); + bt_object_put_ref(component); + bt_object_put_ref(connection); + bt_object_put_ref(input_port); return ret; } @@ -189,12 +182,12 @@ struct bt_notification *evaluate_event_notification( { int64_t ts; int clock_ret; - struct bt_event *event = NULL, *writer_event; + const struct bt_event *event = NULL, *writer_event; bool in_range = true; - struct bt_clock_class *clock_class = NULL; - struct bt_trace *trace = NULL; - struct bt_stream *stream = NULL; - struct bt_stream_class *stream_class = NULL; + const struct bt_clock_class *clock_class = NULL; + const struct bt_trace *trace = NULL; + const struct bt_stream *stream = NULL; + const struct bt_stream_class *stream_class = NULL; struct bt_clock_value *clock_value = NULL; bool lazy_update = false; struct bt_notification *new_notification = NULL; @@ -209,7 +202,7 @@ struct bt_notification *evaluate_event_notification( BT_ASSERT(writer_event); new_notification = bt_notification_event_create(writer_event, cc_prio_map); BT_ASSERT(new_notification); - bt_put(cc_prio_map); + bt_object_put_ref(cc_prio_map); stream = bt_event_get_stream(event); BT_ASSERT(stream); @@ -261,39 +254,39 @@ struct bt_notification *evaluate_event_notification( goto end; error: - BT_PUT(new_notification); + BT_OBJECT_PUT_REF_AND_RESET(new_notification); end: - bt_put(event); - bt_put(writer_event); - bt_put(clock_class); - bt_put(trace); - bt_put(stream); - bt_put(stream_class); - bt_put(clock_value); + bt_object_put_ref(event); + bt_object_put_ref(writer_event); + bt_object_put_ref(clock_class); + bt_object_put_ref(trace); + bt_object_put_ref(stream); + bt_object_put_ref(stream_class); + bt_object_put_ref(clock_value); *_event_in_range = in_range; return new_notification; } static -int ns_from_integer_field(struct bt_field *integer, int64_t *ns) +int ns_from_integer_field(const struct bt_field *integer, int64_t *ns) { int ret = 0; int is_signed; uint64_t raw_clock_value; - struct bt_field_type *integer_type = NULL; - struct bt_clock_class *clock_class = NULL; + const struct bt_field_class *integer_class = NULL; + const struct bt_clock_class *clock_class = NULL; struct bt_clock_value *clock_value = NULL; - integer_type = bt_field_get_type(integer); - BT_ASSERT(integer_type); - clock_class = bt_field_type_integer_get_mapped_clock_class( - integer_type); + integer_class = bt_field_get_class(integer); + BT_ASSERT(integer_class); + clock_class = bt_field_class_integer_get_mapped_clock_class( + integer_class); if (!clock_class) { ret = -1; goto end; } - is_signed = bt_ctf_field_type_integer_get_signed(integer_type); + is_signed = bt_field_class_integer_is_signed(integer_class); if (!is_signed) { ret = bt_field_unsigned_integer_get_value(integer, &raw_clock_value); @@ -313,9 +306,9 @@ int ns_from_integer_field(struct bt_field *integer, int64_t *ns) ret = bt_clock_value_get_value_ns_from_epoch(clock_value, ns); end: - bt_put(integer_type); - bt_put(clock_class); - bt_put(clock_value); + bt_object_put_ref(integer_class); + bt_object_put_ref(clock_class); + bt_object_put_ref(clock_value); return ret; } @@ -336,14 +329,14 @@ static uint64_t ns_from_value(uint64_t frequency, uint64_t value) * timestamp minus the offset. */ static -int64_t get_raw_timestamp(struct bt_packet *writer_packet, +int64_t get_raw_timestamp(const struct bt_packet *writer_packet, int64_t timestamp) { - struct bt_clock_class *writer_clock_class; + const struct bt_clock_class *writer_clock_class; int64_t sec_offset, cycles_offset, ns; - struct bt_trace *writer_trace; - struct bt_stream *writer_stream; - struct bt_stream_class *writer_stream_class; + const struct bt_trace *writer_trace; + const struct bt_stream *writer_stream; + const struct bt_stream_class *writer_stream_class; int ret; uint64_t freq; @@ -373,10 +366,10 @@ int64_t get_raw_timestamp(struct bt_packet *writer_packet, ns += ns_from_value(freq, cycles_offset); - bt_put(writer_clock_class); - bt_put(writer_trace); - bt_put(writer_stream_class); - bt_put(writer_stream); + bt_object_put_ref(writer_clock_class); + bt_object_put_ref(writer_trace); + bt_object_put_ref(writer_stream_class); + bt_object_put_ref(writer_stream); return timestamp - ns; } @@ -390,8 +383,8 @@ struct bt_notification *evaluate_packet_notification( { int64_t begin_ns, pkt_begin_ns, end_ns, pkt_end_ns; bool in_range = true; - struct bt_packet *packet = NULL, *writer_packet = NULL; - struct bt_field *packet_context = NULL, + const struct bt_packet *packet = NULL, *writer_packet = NULL; + const struct bt_field *packet_context = NULL, *timestamp_begin = NULL, *timestamp_end = NULL; struct bt_notification *new_notification = NULL; @@ -499,11 +492,11 @@ end: } end_no_notif: *_packet_in_range = in_range; - bt_put(packet); - bt_put(writer_packet); - bt_put(packet_context); - bt_put(timestamp_begin); - bt_put(timestamp_end); + bt_object_put_ref(packet); + bt_object_put_ref(writer_packet); + bt_object_put_ref(packet_context); + bt_object_put_ref(timestamp_begin); + bt_object_put_ref(timestamp_end); return new_notification; } @@ -512,7 +505,7 @@ struct bt_notification *evaluate_stream_notification( struct bt_notification *notification, struct trimmer_iterator *trim_it) { - struct bt_stream *stream; + const struct bt_stream *stream; stream = bt_notification_stream_end_get_stream(notification); BT_ASSERT(stream); @@ -550,10 +543,9 @@ enum bt_notification_iterator_status evaluate_notification( trim_it); break; default: - puts("Unhandled notification type"); break; } - BT_PUT(*notification); + BT_OBJECT_PUT_REF_AND_RESET(*notification); *notification = new_notification; if (finished) { @@ -565,10 +557,10 @@ enum bt_notification_iterator_status evaluate_notification( BT_HIDDEN struct bt_notification_iterator_next_method_return trimmer_iterator_next( - struct bt_private_connection_private_notification_iterator *iterator) + struct bt_self_notification_iterator *iterator) { struct trimmer_iterator *trim_it = NULL; - struct bt_private_component *component = NULL; + struct bt_self_component *component = NULL; struct trimmer *trimmer = NULL; struct bt_notification_iterator *source_it = NULL; struct bt_notification_iterator_next_method_return ret = { @@ -577,13 +569,13 @@ struct bt_notification_iterator_next_method_return trimmer_iterator_next( }; bool notification_in_range = false; - trim_it = bt_private_connection_private_notification_iterator_get_user_data(iterator); + trim_it = bt_self_notification_iterator_get_user_data(iterator); BT_ASSERT(trim_it); - component = bt_private_connection_private_notification_iterator_get_private_component( + component = bt_self_notification_iterator_get_private_component( iterator); BT_ASSERT(component); - trimmer = bt_private_component_get_user_data(component); + trimmer = bt_self_component_get_user_data(component); BT_ASSERT(trimmer); source_it = trim_it->input_iterator; @@ -606,7 +598,7 @@ struct bt_notification_iterator_next_method_return trimmer_iterator_next( &trimmer->begin, &trimmer->end, ¬ification_in_range); if (!notification_in_range) { - BT_PUT(ret.notification); + BT_OBJECT_PUT_REF_AND_RESET(ret.notification); } if (ret.status != BT_NOTIFICATION_ITERATOR_STATUS_OK) { @@ -614,6 +606,6 @@ struct bt_notification_iterator_next_method_return trimmer_iterator_next( } } end: - bt_put(component); + bt_object_put_ref(component); return ret; }