#include "logging.h"
#include "utils.h"
-
-struct bt_stream_class *ctf_utils_borrow_stream_class_from_packet_header(
- struct bt_trace *trace,
- struct bt_field *packet_header_field)
-{
- struct bt_field *stream_id_field = NULL;
- struct bt_stream_class *stream_class = NULL;
- uint64_t stream_id = -1ULL;
- int ret;
-
- if (!packet_header_field) {
- goto single_stream_class;
- }
-
- stream_id_field = bt_field_structure_borrow_field_by_name(
- packet_header_field, "stream_id");
- if (!stream_id_field) {
- goto single_stream_class;
- }
-
- ret = bt_field_integer_unsigned_get_value(stream_id_field,
- &stream_id);
- if (ret) {
- stream_id = -1ULL;
- }
-
- if (stream_id == -1ULL) {
-single_stream_class:
- /* Single stream class */
- if (bt_trace_get_stream_class_count(trace) == 0) {
- goto end;
- }
-
- stream_class = bt_trace_borrow_stream_class_by_index(trace, 0);
- } else {
- stream_class = bt_trace_borrow_stream_class_by_id(trace,
- stream_id);
- }
-
-end:
- return stream_class;
-}