X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Ftext%2Fpretty%2Fprint.c;h=b3afd57387cbb566d08462ed0dea001ae5d0285f;hb=8e53bed40d8ef5026ccfd0149a8e48e6e220d740;hp=7e34af6d5d9228ecca206fef9fe962a1f978a763;hpb=601b0d3c9a6bf91274d0f01ccdec7fecfe3ed310;p=babeltrace.git diff --git a/plugins/text/pretty/print.c b/plugins/text/pretty/print.c index 7e34af6d..b3afd573 100644 --- a/plugins/text/pretty/print.c +++ b/plugins/text/pretty/print.c @@ -1,8 +1,4 @@ /* - * print.c - * - * Babeltrace CTF Text Output Plugin Event Printing - * * Copyright 2016 Jérémie Galarneau * Copyright 2016 Mathieu Desnoyers * @@ -50,12 +46,12 @@ struct timestamp { int64_t real_timestamp; /* Relative to UNIX epoch. */ - uint64_t clock_value; /* In cycles. */ + uint64_t clock_snapshot; /* In cycles. */ }; static -enum bt_component_status print_field(struct pretty_component *pretty, - struct bt_field *field, bool print_names, +int print_field(struct pretty_component *pretty, + const bt_field *field, bool print_names, GQuark *filters_fields, int filter_array_len); static @@ -82,19 +78,19 @@ void print_field_name_equal(struct pretty_component *pretty, const char *name) static void print_timestamp_cycles(struct pretty_component *pretty, - struct bt_event *event) + const bt_event *event) { - struct bt_clock_value *clock_value; + const bt_clock_snapshot *clock_snapshot; uint64_t cycles; - enum bt_clock_value_status cv_status; + bt_clock_snapshot_state cs_state; - cv_status = bt_event_borrow_default_clock_value(event, &clock_value); - if (cv_status != BT_CLOCK_VALUE_STATUS_KNOWN || !clock_value) { + cs_state = bt_event_borrow_default_clock_snapshot_const(event, &clock_snapshot); + if (cs_state != BT_CLOCK_SNAPSHOT_STATE_KNOWN || !clock_snapshot) { g_string_append(pretty->string, "????????????????????"); return; } - cycles = bt_clock_value_get_value(clock_value); + cycles = bt_clock_snapshot_get_value(clock_snapshot); g_string_append_printf(pretty->string, "%020" PRIu64, cycles); if (pretty->last_cycles_timestamp != -1ULL) { @@ -105,7 +101,7 @@ void print_timestamp_cycles(struct pretty_component *pretty, static void print_timestamp_wall(struct pretty_component *pretty, - struct bt_clock_value *clock_value) + const bt_clock_snapshot *clock_snapshot) { int ret; int64_t ts_nsec = 0; /* add configurable offset */ @@ -113,12 +109,12 @@ void print_timestamp_wall(struct pretty_component *pretty, uint64_t ts_sec_abs, ts_nsec_abs; bool is_negative; - if (!clock_value) { + if (!clock_snapshot) { g_string_append(pretty->string, "??:??:??.?????????"); return; } - ret = bt_clock_value_get_ns_from_origin(clock_value, &ts_nsec); + ret = bt_clock_snapshot_get_ns_from_origin(clock_snapshot, &ts_nsec); if (ret) { // TODO: log, this is unexpected g_string_append(pretty->string, "Error"); @@ -219,36 +215,31 @@ end: } static -enum bt_component_status print_event_timestamp(struct pretty_component *pretty, - struct bt_event *event, bool *start_line) +int print_event_timestamp(struct pretty_component *pretty, + const bt_event *event, bool *start_line) { bool print_names = pretty->options.print_header_field_names; - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_stream *stream = NULL; - struct bt_stream_class *stream_class = NULL; - struct bt_trace *trace = NULL; - struct bt_clock_value *clock_value = NULL; - enum bt_clock_value_status cv_status; - - stream = bt_event_borrow_stream(event); + int ret = 0; + const bt_stream *stream = NULL; + const bt_stream_class *stream_class = NULL; + const bt_clock_snapshot *clock_snapshot = NULL; + bt_clock_snapshot_state cs_state; + + stream = bt_event_borrow_stream_const(event); if (!stream) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } - stream_class = bt_stream_borrow_class(stream); + stream_class = bt_stream_borrow_class_const(stream); if (!stream_class) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } - trace = bt_stream_class_borrow_trace(stream_class); - if (!trace) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } - cv_status = bt_event_borrow_default_clock_value(event, &clock_value); - if (cv_status != BT_CLOCK_VALUE_STATUS_KNOWN || !clock_value) { + cs_state = bt_event_borrow_default_clock_snapshot_const(event, + &clock_snapshot); + if (cs_state != BT_CLOCK_SNAPSHOT_STATE_KNOWN || !clock_snapshot) { /* No default clock value: skip the timestamp without an error */ goto end; } @@ -264,10 +255,10 @@ enum bt_component_status print_event_timestamp(struct pretty_component *pretty, if (pretty->options.print_timestamp_cycles) { print_timestamp_cycles(pretty, event); } else { - clock_value = NULL; - cv_status = bt_event_borrow_default_clock_value(event, - &clock_value); - print_timestamp_wall(pretty, clock_value); + clock_snapshot = NULL; + cs_state = bt_event_borrow_default_clock_snapshot_const(event, + &clock_snapshot); + print_timestamp_wall(pretty, clock_snapshot); } if (pretty->use_colors) { g_string_append(pretty->string, COLOR_RST); @@ -316,40 +307,34 @@ end: } static -enum bt_component_status print_event_header(struct pretty_component *pretty, - struct bt_event *event) +int print_event_header(struct pretty_component *pretty, + const bt_event *event) { bool print_names = pretty->options.print_header_field_names; - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_event_class *event_class = NULL; - struct bt_stream_class *stream_class = NULL; - struct bt_trace *trace_class = NULL; + int ret = 0; + const bt_event_class *event_class = NULL; + const bt_stream_class *stream_class = NULL; + const bt_trace_class *trace_class = NULL; + const bt_packet *packet = NULL; + const bt_stream *stream = NULL; + const bt_trace *trace = NULL; int dom_print = 0; - enum bt_property_availability prop_avail; - - event_class = bt_event_borrow_class(event); - if (!event_class) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } - stream_class = bt_event_class_borrow_stream_class(event_class); - if (!stream_class) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } - trace_class = bt_stream_class_borrow_trace(stream_class); - if (!trace_class) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } + bt_property_availability prop_avail; + + event_class = bt_event_borrow_class_const(event); + stream_class = bt_event_class_borrow_stream_class_const(event_class); + trace_class = bt_stream_class_borrow_trace_class_const(stream_class); + packet = bt_event_borrow_packet_const(event); + stream = bt_packet_borrow_stream_const(packet); + trace = bt_stream_borrow_trace_const(stream); ret = print_event_timestamp(pretty, event, &pretty->start_line); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret) { goto end; } if (pretty->options.print_trace_field) { const char *name; - name = bt_trace_get_name(trace_class); + name = bt_trace_get_name(trace); if (name) { if (!pretty->start_line) { g_string_append(pretty->string, ", "); @@ -366,9 +351,9 @@ enum bt_component_status print_event_header(struct pretty_component *pretty, } } if (pretty->options.print_trace_hostname_field) { - struct bt_value *hostname_str; + const bt_value *hostname_str; - hostname_str = bt_trace_borrow_environment_entry_value_by_name( + hostname_str = bt_trace_class_borrow_environment_entry_value_by_name_const( trace_class, "hostname"); if (hostname_str) { const char *str; @@ -385,9 +370,9 @@ enum bt_component_status print_event_header(struct pretty_component *pretty, } } if (pretty->options.print_trace_domain_field) { - struct bt_value *domain_str; + const bt_value *domain_str; - domain_str = bt_trace_borrow_environment_entry_value_by_name( + domain_str = bt_trace_class_borrow_environment_entry_value_by_name_const( trace_class, "domain"); if (domain_str) { const char *str; @@ -406,9 +391,9 @@ enum bt_component_status print_event_header(struct pretty_component *pretty, } } if (pretty->options.print_trace_procname_field) { - struct bt_value *procname_str; + const bt_value *procname_str; - procname_str = bt_trace_borrow_environment_entry_value_by_name( + procname_str = bt_trace_class_borrow_environment_entry_value_by_name_const( trace_class, "procname"); if (procname_str) { const char *str; @@ -427,9 +412,9 @@ enum bt_component_status print_event_header(struct pretty_component *pretty, } } if (pretty->options.print_trace_vpid_field) { - struct bt_value *vpid_value; + const bt_value *vpid_value; - vpid_value = bt_trace_borrow_environment_entry_value_by_name( + vpid_value = bt_trace_class_borrow_environment_entry_value_by_name_const( trace_class, "vpid"); if (vpid_value) { int64_t value; @@ -466,7 +451,7 @@ enum bt_component_status print_event_header(struct pretty_component *pretty, [ BT_EVENT_CLASS_LOG_LEVEL_DEBUG_LINE ] = "TRACE_DEBUG_LINE", [ BT_EVENT_CLASS_LOG_LEVEL_DEBUG ] = "TRACE_DEBUG", }; - enum bt_event_class_log_level log_level; + bt_event_class_log_level log_level; const char *log_level_str = NULL; prop_avail = bt_event_class_get_log_level(event_class, @@ -536,20 +521,20 @@ end: } static -enum bt_component_status print_integer(struct pretty_component *pretty, - struct bt_field *field) +int print_integer(struct pretty_component *pretty, + const bt_field *field) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - enum bt_field_class_integer_preferred_display_base base; - struct bt_field_class *int_fc; + int ret = 0; + bt_field_class_integer_preferred_display_base base; + const bt_field_class *int_fc; union { uint64_t u; int64_t s; } v; bool rst_color = false; - enum bt_field_class_type ft_type; + bt_field_class_type ft_type; - int_fc = bt_field_borrow_class(field); + int_fc = bt_field_borrow_class_const(field); BT_ASSERT(int_fc); ft_type = bt_field_get_class_type(field); if (ft_type == BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER || @@ -624,7 +609,7 @@ enum bt_component_status print_integer(struct pretty_component *pretty, break; } default: - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } end: @@ -703,18 +688,18 @@ void print_escape_string(struct pretty_component *pretty, const char *str) } static -enum bt_component_status print_enum(struct pretty_component *pretty, - struct bt_field *field) +int print_enum(struct pretty_component *pretty, + const bt_field *field) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field_class *enumeration_field_class = NULL; + int ret = 0; + const bt_field_class *enumeration_field_class = NULL; bt_field_class_enumeration_mapping_label_array label_array; uint64_t label_count; uint64_t i; - enumeration_field_class = bt_field_borrow_class(field); + enumeration_field_class = bt_field_borrow_class_const(field); if (!enumeration_field_class) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } @@ -732,7 +717,7 @@ enum bt_component_status print_enum(struct pretty_component *pretty, } if (ret) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } @@ -764,7 +749,7 @@ enum bt_component_status print_enum(struct pretty_component *pretty, skip_loop: g_string_append(pretty->string, " : container = "); ret = print_integer(pretty, field); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } g_string_append(pretty->string, " )"); @@ -792,29 +777,29 @@ int filter_field_name(struct pretty_component *pretty, const char *field_name, } static -enum bt_component_status print_struct_field(struct pretty_component *pretty, - struct bt_field *_struct, - struct bt_field_class *struct_class, +int print_struct_field(struct pretty_component *pretty, + const bt_field *_struct, + const bt_field_class *struct_class, uint64_t i, bool print_names, uint64_t *nr_printed_fields, GQuark *filter_fields, int filter_array_len) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; + int ret = 0; const char *field_name; - struct bt_field *field = NULL; - struct bt_field_class *field_class = NULL;; + const bt_field *field = NULL; + const bt_field_class *field_class = NULL;; - field = bt_field_structure_borrow_member_field_by_index(_struct, i); + field = bt_field_structure_borrow_member_field_by_index_const(_struct, i); if (!field) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } - bt_field_class_structure_borrow_member_by_index(struct_class, i, + bt_field_class_structure_borrow_member_by_index_const(struct_class, i, &field_name, &field_class); if (filter_fields && !filter_field_name(pretty, field_name, filter_fields, filter_array_len)) { - ret = BT_COMPONENT_STATUS_OK; + ret = 0; goto end; } @@ -834,22 +819,22 @@ end: } static -enum bt_component_status print_struct(struct pretty_component *pretty, - struct bt_field *_struct, bool print_names, +int print_struct(struct pretty_component *pretty, + const bt_field *_struct, bool print_names, GQuark *filter_fields, int filter_array_len) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field_class *struct_class = NULL; + int ret = 0; + const bt_field_class *struct_class = NULL; uint64_t nr_fields, i, nr_printed_fields; - struct_class = bt_field_borrow_class(_struct); + struct_class = bt_field_borrow_class_const(_struct); if (!struct_class) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } nr_fields = bt_field_class_structure_get_member_count(struct_class); if (nr_fields < 0) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } g_string_append(pretty->string, "{"); @@ -859,7 +844,7 @@ enum bt_component_status print_struct(struct pretty_component *pretty, ret = print_struct_field(pretty, _struct, struct_class, i, print_names, &nr_printed_fields, filter_fields, filter_array_len); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } } @@ -871,10 +856,10 @@ end: } static -enum bt_component_status print_array_field(struct pretty_component *pretty, - struct bt_field *array, uint64_t i, bool print_names) +int print_array_field(struct pretty_component *pretty, + const bt_field *array, uint64_t i, bool print_names) { - struct bt_field *field = NULL; + const bt_field *field = NULL; if (i != 0) { g_string_append(pretty->string, ", "); @@ -885,23 +870,23 @@ enum bt_component_status print_array_field(struct pretty_component *pretty, g_string_append_printf(pretty->string, "[%" PRIu64 "] = ", i); } - field = bt_field_array_borrow_element_field_by_index(array, i); + field = bt_field_array_borrow_element_field_by_index_const(array, i); BT_ASSERT(field); return print_field(pretty, field, print_names, NULL, 0); } static -enum bt_component_status print_array(struct pretty_component *pretty, - struct bt_field *array, bool print_names) +int print_array(struct pretty_component *pretty, + const bt_field *array, bool print_names) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field_class *array_class = NULL; + int ret = 0; + const bt_field_class *array_class = NULL; uint64_t len; uint64_t i; - array_class = bt_field_borrow_class(array); + array_class = bt_field_borrow_class_const(array); if (!array_class) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } len = bt_field_array_get_length(array); @@ -909,7 +894,7 @@ enum bt_component_status print_array(struct pretty_component *pretty, pretty->depth++; for (i = 0; i < len; i++) { ret = print_array_field(pretty, array, i, print_names); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } } @@ -921,10 +906,10 @@ end: } static -enum bt_component_status print_sequence_field(struct pretty_component *pretty, - struct bt_field *seq, uint64_t i, bool print_names) +int print_sequence_field(struct pretty_component *pretty, + const bt_field *seq, uint64_t i, bool print_names) { - struct bt_field *field = NULL; + const bt_field *field = NULL; if (i != 0) { g_string_append(pretty->string, ", "); @@ -935,22 +920,22 @@ enum bt_component_status print_sequence_field(struct pretty_component *pretty, g_string_append_printf(pretty->string, "[%" PRIu64 "] = ", i); } - field = bt_field_array_borrow_element_field_by_index(seq, i); + field = bt_field_array_borrow_element_field_by_index_const(seq, i); BT_ASSERT(field); return print_field(pretty, field, print_names, NULL, 0); } static -enum bt_component_status print_sequence(struct pretty_component *pretty, - struct bt_field *seq, bool print_names) +int print_sequence(struct pretty_component *pretty, + const bt_field *seq, bool print_names) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; + int ret = 0; uint64_t len; uint64_t i; len = bt_field_array_get_length(seq); if (len < 0) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } @@ -959,7 +944,7 @@ enum bt_component_status print_sequence(struct pretty_component *pretty, pretty->depth++; for (i = 0; i < len; i++) { ret = print_sequence_field(pretty, seq, i, print_names); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } } @@ -971,13 +956,13 @@ end: } static -enum bt_component_status print_variant(struct pretty_component *pretty, - struct bt_field *variant, bool print_names) +int print_variant(struct pretty_component *pretty, + const bt_field *variant, bool print_names) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field *field = NULL; + int ret = 0; + const bt_field *field = NULL; - field = bt_field_variant_borrow_selected_option_field(variant); + field = bt_field_variant_borrow_selected_option_field_const(variant); BT_ASSERT(field); g_string_append(pretty->string, "{ "); pretty->depth++; @@ -986,7 +971,7 @@ enum bt_component_status print_variant(struct pretty_component *pretty, // print_field_name_equal(pretty, tag_choice); } ret = print_field(pretty, field, print_names, NULL, 0); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } pretty->depth--; @@ -997,11 +982,11 @@ end: } static -enum bt_component_status print_field(struct pretty_component *pretty, - struct bt_field *field, bool print_names, +int print_field(struct pretty_component *pretty, + const bt_field *field, bool print_names, GQuark *filter_fields, int filter_array_len) { - enum bt_field_class_type class_id; + bt_field_class_type class_id; class_id = bt_field_get_class_type(field); switch (class_id) { @@ -1020,7 +1005,7 @@ enum bt_component_status print_field(struct pretty_component *pretty, if (pretty->use_colors) { g_string_append(pretty->string, COLOR_RST); } - return BT_COMPONENT_STATUS_OK; + return 0; } case BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION: case BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION: @@ -1031,7 +1016,7 @@ enum bt_component_status print_field(struct pretty_component *pretty, str = bt_field_string_get_value(field); if (!str) { - return BT_COMPONENT_STATUS_ERROR; + return -1; } if (pretty->use_colors) { @@ -1041,7 +1026,7 @@ enum bt_component_status print_field(struct pretty_component *pretty, if (pretty->use_colors) { g_string_append(pretty->string, COLOR_RST); } - return BT_COMPONENT_STATUS_OK; + return 0; } case BT_FIELD_CLASS_TYPE_STRUCTURE: return print_struct(pretty, field, print_names, filter_fields, @@ -1055,24 +1040,24 @@ enum bt_component_status print_field(struct pretty_component *pretty, default: // TODO: log instead fprintf(pretty->err, "[error] Unknown type id: %d\n", (int) class_id); - return BT_COMPONENT_STATUS_ERROR; + return -1; } } static -enum bt_component_status print_stream_packet_context(struct pretty_component *pretty, - struct bt_event *event) +int print_stream_packet_context(struct pretty_component *pretty, + const bt_event *event) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_packet *packet = NULL; - struct bt_field *main_field = NULL; + int ret = 0; + const bt_packet *packet = NULL; + const bt_field *main_field = NULL; - packet = bt_event_borrow_packet(event); + packet = bt_event_borrow_packet_const(event); if (!packet) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } - main_field = bt_packet_borrow_context_field(packet); + main_field = bt_packet_borrow_context_field_const(packet); if (!main_field) { goto end; } @@ -1093,38 +1078,13 @@ end: } static -enum bt_component_status print_event_header_raw(struct pretty_component *pretty, - struct bt_event *event) -{ - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field *main_field = NULL; - - main_field = bt_event_borrow_header_field(event); - if (!main_field) { - goto end; - } - if (!pretty->start_line) { - g_string_append(pretty->string, ", "); - } - pretty->start_line = false; - if (pretty->options.print_scope_field_names) { - print_name_equal(pretty, "stream.event.header"); - } - ret = print_field(pretty, main_field, - pretty->options.print_header_field_names, NULL, 0); - -end: - return ret; -} - -static -enum bt_component_status print_stream_event_context(struct pretty_component *pretty, - struct bt_event *event) +int print_stream_event_context(struct pretty_component *pretty, + const bt_event *event) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field *main_field = NULL; + int ret = 0; + const bt_field *main_field = NULL; - main_field = bt_event_borrow_common_context_field(event); + main_field = bt_event_borrow_common_context_field_const(event); if (!main_field) { goto end; } @@ -1143,13 +1103,13 @@ end: } static -enum bt_component_status print_event_context(struct pretty_component *pretty, - struct bt_event *event) +int print_event_context(struct pretty_component *pretty, + const bt_event *event) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field *main_field = NULL; + int ret = 0; + const bt_field *main_field = NULL; - main_field = bt_event_borrow_specific_context_field(event); + main_field = bt_event_borrow_specific_context_field_const(event); if (!main_field) { goto end; } @@ -1168,13 +1128,13 @@ end: } static -enum bt_component_status print_event_payload(struct pretty_component *pretty, - struct bt_event *event) +int print_event_payload(struct pretty_component *pretty, + const bt_event *event) { - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_field *main_field = NULL; + int ret = 0; + const bt_field *main_field = NULL; - main_field = bt_event_borrow_payload_field(event); + main_field = bt_event_borrow_payload_field_const(event); if (!main_field) { goto end; } @@ -1210,51 +1170,44 @@ end: } BT_HIDDEN -enum bt_component_status pretty_print_event(struct pretty_component *pretty, - struct bt_notification *event_notif) +int pretty_print_event(struct pretty_component *pretty, + const bt_message *event_msg) { - enum bt_component_status ret; - struct bt_event *event = - bt_notification_event_borrow_event(event_notif); + int ret; + const bt_event *event = + bt_message_event_borrow_event_const(event_msg); BT_ASSERT(event); pretty->start_line = true; g_string_assign(pretty->string, ""); ret = print_event_header(pretty, event); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } ret = print_stream_packet_context(pretty, event); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } - if (pretty->options.verbose) { - ret = print_event_header_raw(pretty, event); - if (ret != BT_COMPONENT_STATUS_OK) { - goto end; - } - } - ret = print_stream_event_context(pretty, event); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } ret = print_event_context(pretty, event); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } ret = print_event_payload(pretty, event); - if (ret != BT_COMPONENT_STATUS_OK) { + if (ret != 0) { goto end; } g_string_append_c(pretty->string, '\n'); if (flush_buf(pretty->out, pretty)) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; goto end; } @@ -1263,31 +1216,29 @@ end: } static -enum bt_component_status print_discarded_elements_msg( - struct pretty_component *pretty, struct bt_packet *packet, +int print_discarded_elements_msg(struct pretty_component *pretty, + const bt_stream *stream, + const bt_clock_snapshot *begin_clock_snapshot, + const bt_clock_snapshot *end_clock_snapshot, uint64_t count, const char *elem_type) { -#if 0 - enum bt_component_status ret = BT_COMPONENT_STATUS_OK; - struct bt_stream *stream = NULL; - struct bt_stream_class *stream_class = NULL; - struct bt_trace *trace = NULL; + int ret = 0; + const bt_stream_class *stream_class = NULL; + const bt_trace *trace = NULL; const char *stream_name; const char *trace_name; - const unsigned char *trace_uuid; + bt_uuid trace_uuid; int64_t stream_class_id; int64_t stream_id; - struct bt_clock_value *begin_clock_value = NULL; - struct bt_clock_value *end_clock_value = NULL; /* Stream name */ - BT_ASSERT(packet); - stream = bt_packet_borrow_stream(packet); - BT_ASSERT(stream); stream_name = bt_stream_get_name(stream); + if (!stream_name) { + stream_name = "(unknown)"; + } /* Stream class ID */ - stream_class = bt_stream_borrow_class(stream); + stream_class = bt_stream_borrow_class_const(stream); BT_ASSERT(stream_class); stream_class_id = bt_stream_class_get_id(stream_class); @@ -1295,7 +1246,7 @@ enum bt_component_status print_discarded_elements_msg( stream_id = bt_stream_get_id(stream); /* Trace name */ - trace = bt_stream_class_borrow_trace(stream_class); + trace = bt_stream_borrow_trace_const(stream); BT_ASSERT(trace); trace_name = bt_trace_get_name(trace); if (!trace_name) { @@ -1303,29 +1254,32 @@ enum bt_component_status print_discarded_elements_msg( } /* Trace UUID */ - trace_uuid = bt_trace_get_uuid(trace); - - /* Beginning and end times */ - (void) bt_packet_borrow_previous_packet_default_end_clock_value( - packet, &begin_clock_value); - (void) bt_packet_borrow_default_end_clock_value(packet, - &end_clock_value); + trace_uuid = bt_trace_class_get_uuid( + bt_trace_borrow_class_const(trace)); /* Format message */ g_string_assign(pretty->string, ""); g_string_append_printf(pretty->string, - "%s%sWARNING%s%s: Tracer discarded %" PRId64 " %s%s ", + "%s%sWARNING%s%s: Tracer discarded ", bt_common_color_fg_yellow(), bt_common_color_bold(), bt_common_color_reset(), - bt_common_color_fg_yellow(), - count, elem_type, count == 1 ? "" : "s"); + bt_common_color_fg_yellow()); + + if (count == UINT64_C(-1)) { + g_string_append_printf(pretty->string, "a number of %ss", + elem_type); + } else { + g_string_append_printf(pretty->string, + "%" PRIu64 " %s%s", count, elem_type, + count == 1 ? "" : "s"); + } - if (begin_clock_value && end_clock_value) { - g_string_append(pretty->string, "between ["); - print_timestamp_wall(pretty, begin_clock_value); + if (begin_clock_snapshot && end_clock_snapshot) { + g_string_append(pretty->string, " between ["); + print_timestamp_wall(pretty, begin_clock_snapshot); g_string_append(pretty->string, "] and ["); - print_timestamp_wall(pretty, end_clock_value); + print_timestamp_wall(pretty, end_clock_snapshot); g_string_append(pretty->string, "]"); } else { g_string_append(pretty->string, "(unknown time range)"); @@ -1357,12 +1311,12 @@ enum bt_component_status print_discarded_elements_msg( } g_string_append_printf(pretty->string, - "within stream \"%s\" (stream class ID: %" PRId64 ", ", + "within stream \"%s\" (stream class ID: %" PRIu64 ", ", stream_name, stream_class_id); if (stream_id >= 0) { g_string_append_printf(pretty->string, - "stream ID: %" PRId64, stream_id); + "stream ID: %" PRIu64, stream_id); } else { g_string_append(pretty->string, "no stream ID"); } @@ -1375,46 +1329,71 @@ enum bt_component_status print_discarded_elements_msg( * with Babeltrace 1. */ if (flush_buf(stderr, pretty)) { - ret = BT_COMPONENT_STATUS_ERROR; + ret = -1; } return ret; -#endif - return 0; } BT_HIDDEN -enum bt_component_status pretty_print_packet(struct pretty_component *pretty, - struct bt_notification *packet_beginning_notif) +int pretty_print_discarded_items(struct pretty_component *pretty, + const bt_message *msg) { -#if 0 - struct bt_packet *packet = bt_notification_packet_begin_borrow_packet( - packet_beginning_notif); - uint64_t count; - enum bt_component_status status = BT_COMPONENT_STATUS_OK; - - if (bt_packet_get_discarded_event_count(packet, &count) == - BT_PACKET_PROPERTY_AVAILABILITY_AVAILABLE && - count > 0) { - status = print_discarded_elements_msg(pretty, packet, - count, "event"); - if (status != BT_COMPONENT_STATUS_OK) { - goto end; + const bt_clock_snapshot *begin = NULL; + const bt_clock_snapshot *end = NULL; + const bt_stream *stream; + const bt_stream_class *stream_class; + uint64_t count = UINT64_C(-1); + const char *elem_type; + + switch (bt_message_get_type(msg)) { + case BT_MESSAGE_TYPE_DISCARDED_EVENTS: + stream = bt_message_discarded_events_borrow_stream_const(msg); + + if (bt_message_discarded_events_get_count(msg, &count) == + BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE) { + count = UINT64_C(-1); + } + + elem_type = "event"; + break; + case BT_MESSAGE_TYPE_DISCARDED_PACKETS: + stream = bt_message_discarded_packets_borrow_stream_const(msg); + + if (bt_message_discarded_packets_get_count(msg, &count) == + BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE) { + count = UINT64_C(-1); } + + elem_type = "packet"; + break; + default: + abort(); } - if (bt_packet_get_discarded_packet_count(packet, &count) == - BT_PACKET_PROPERTY_AVAILABILITY_AVAILABLE && - count > 0) { - status = print_discarded_elements_msg(pretty, packet, - count, "packet"); - if (status != BT_COMPONENT_STATUS_OK) { - goto end; + BT_ASSERT(stream); + stream_class = bt_stream_borrow_class_const(stream); + + if (bt_stream_class_borrow_default_clock_class_const(stream_class)) { + switch (bt_message_get_type(msg)) { + case BT_MESSAGE_TYPE_DISCARDED_EVENTS: + bt_message_discarded_events_borrow_default_beginning_clock_snapshot_const( + msg, &begin); + bt_message_discarded_events_borrow_default_end_clock_snapshot_const( + msg, &end); + break; + case BT_MESSAGE_TYPE_DISCARDED_PACKETS: + bt_message_discarded_packets_borrow_default_beginning_clock_snapshot_const( + msg, &begin); + bt_message_discarded_packets_borrow_default_end_clock_snapshot_const( + msg, &end); + break; + default: + abort(); } } -end: - return status; -#endif + print_discarded_elements_msg(pretty, stream, begin, end, + count, elem_type); return 0; }