X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Flttng-utils%2Fplugin.c;h=c6e75f59f122a929ac30965b19dc57afa3fe9d0a;hb=504db471cbe39293f9abbab8353646906127292b;hp=60466325ba989fd4083f263e1ae8f8b705c49efe;hpb=4cbd174e53b3912f1ff65e86e6a2df09c211aad0;p=babeltrace.git diff --git a/plugins/lttng-utils/plugin.c b/plugins/lttng-utils/plugin.c index 60466325..c6e75f59 100644 --- a/plugins/lttng-utils/plugin.c +++ b/plugins/lttng-utils/plugin.c @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -73,33 +74,9 @@ end: } static -void unref_debug_info(struct debug_info *debug_info) +void unref_trace(struct debug_info_trace *di_trace) { - debug_info_destroy(debug_info); -} - -static -void unref_trace(struct bt_ctf_trace *trace) -{ - bt_put(trace); -} - -static -void unref_stream(struct bt_ctf_stream *stream) -{ - bt_put(stream); -} - -static -void unref_packet(struct bt_ctf_packet *packet) -{ - bt_put(packet); -} - -static -void unref_stream_class(struct bt_ctf_stream_class *stream_class) -{ - bt_put(stream_class); + bt_put(di_trace->trace); } static @@ -116,10 +93,13 @@ void debug_info_iterator_destroy(struct bt_private_notification_iterator *it) bt_put(it_data->current_notification); bt_put(it_data->input_iterator); g_hash_table_destroy(it_data->trace_map); + /* + * TODO g_hash_table_destroy(it_data->stream_map); g_hash_table_destroy(it_data->stream_class_map); g_hash_table_destroy(it_data->packet_map); g_hash_table_destroy(it_data->trace_debug_map); + */ g_free(it_data); } @@ -165,7 +145,6 @@ struct bt_notification *handle_notification(FILE *err, writer_packet); assert(new_notification); bt_put(packet); - bt_put(writer_packet); break; } case BT_NOTIFICATION_TYPE_EVENT: @@ -190,6 +169,25 @@ struct bt_notification *handle_notification(FILE *err, bt_put(writer_event); break; } + case BT_NOTIFICATION_TYPE_STREAM_BEGIN: + { + struct bt_ctf_stream *stream = + bt_notification_stream_begin_get_stream(notification); + struct bt_ctf_stream *writer_stream; + + if (!stream) { + goto end; + } + + writer_stream = debug_info_stream_begin(debug_it, stream); + assert(writer_stream); + new_notification = bt_notification_stream_begin_create( + writer_stream); + assert(new_notification); + bt_put(stream); + bt_put(writer_stream); + break; + } case BT_NOTIFICATION_TYPE_STREAM_END: { struct bt_ctf_stream *stream = @@ -276,6 +274,7 @@ enum bt_notification_iterator_status debug_info_iterator_init( enum bt_notification_iterator_status ret = BT_NOTIFICATION_ITERATOR_STATUS_OK; enum bt_notification_iterator_status it_ret; + enum bt_connection_status conn_status; struct bt_private_connection *connection = NULL; struct bt_private_component *component = bt_private_notification_iterator_get_private_component(iterator); @@ -283,6 +282,7 @@ enum bt_notification_iterator_status debug_info_iterator_init( struct bt_private_port *input_port; static const enum bt_notification_type notif_types[] = { BT_NOTIFICATION_TYPE_EVENT, + BT_NOTIFICATION_TYPE_STREAM_BEGIN, BT_NOTIFICATION_TYPE_STREAM_END, BT_NOTIFICATION_TYPE_PACKET_BEGIN, BT_NOTIFICATION_TYPE_PACKET_END, @@ -308,10 +308,10 @@ enum bt_notification_iterator_status debug_info_iterator_init( goto end; } - it_data->input_iterator = bt_private_connection_create_notification_iterator( - connection, notif_types); - if (!it_data->input_iterator) { - ret = BT_NOTIFICATION_ITERATOR_STATUS_NOMEM; + conn_status = bt_private_connection_create_notification_iterator( + connection, notif_types, &it_data->input_iterator); + if (conn_status != BT_CONNECTION_STATUS_OK) { + ret = BT_NOTIFICATION_ITERATOR_STATUS_ERROR; goto end; } @@ -320,14 +320,6 @@ enum bt_notification_iterator_status debug_info_iterator_init( it_data->err = it_data->debug_info_component->err; it_data->trace_map = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) unref_trace); - it_data->stream_map = g_hash_table_new_full(g_direct_hash, - g_direct_equal, NULL, (GDestroyNotify) unref_stream); - it_data->stream_class_map = g_hash_table_new_full(g_direct_hash, - g_direct_equal, NULL, (GDestroyNotify) unref_stream_class); - it_data->packet_map = g_hash_table_new_full(g_direct_hash, - g_direct_equal, NULL, (GDestroyNotify) unref_packet); - it_data->trace_debug_map = g_hash_table_new_full(g_direct_hash, - g_direct_equal, NULL, (GDestroyNotify) unref_debug_info); it_ret = bt_private_notification_iterator_set_user_data(iterator, it_data); if (it_ret) { @@ -441,7 +433,6 @@ enum bt_component_status debug_info_component_init( { enum bt_component_status ret; struct debug_info_component *debug_info = create_debug_info_component_data(); - struct bt_private_port *priv_port = NULL; if (!debug_info) { ret = BT_COMPONENT_STATUS_NOMEM; @@ -453,21 +444,17 @@ enum bt_component_status debug_info_component_init( goto error; } - priv_port = bt_private_component_filter_add_input_private_port( - component, "in", NULL); - if (!priv_port) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = bt_private_component_filter_add_input_private_port( + component, "in", NULL, NULL); + if (ret != BT_COMPONENT_STATUS_OK) { goto end; } - BT_PUT(priv_port); - priv_port = bt_private_component_filter_add_output_private_port( - component, "out", NULL); - if (!priv_port) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = bt_private_component_filter_add_output_private_port( + component, "out", NULL, NULL); + if (ret != BT_COMPONENT_STATUS_OK) { goto end; } - BT_PUT(priv_port); ret = init_from_params(debug_info, params); end: