X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=plugins%2Futils%2Fmuxer%2Fmuxer.c;h=4b3669726cd7c28f99bcccb24809e95fb27ca738;hb=c9d3ff42c006dbbbb746f4192eb5d2fa1c110067;hp=6d8815241d650d0fb6d5a92ec597239c8baa0202;hpb=12b0fa5148594fecfeb84e1ec10b6740ed9c09a6;p=babeltrace.git diff --git a/plugins/utils/muxer/muxer.c b/plugins/utils/muxer/muxer.c index 6d881524..4b366972 100644 --- a/plugins/utils/muxer/muxer.c +++ b/plugins/utils/muxer/muxer.c @@ -1495,3 +1495,53 @@ bt_self_component_status muxer_input_port_connected( end: return status; } + +BT_HIDDEN +bt_bool muxer_msg_iter_can_seek_beginning( + bt_self_message_iterator *self_msg_iter) +{ + struct muxer_msg_iter *muxer_msg_iter = + bt_self_message_iterator_get_data(self_msg_iter); + uint64_t i; + bt_bool ret = BT_TRUE; + + for (i = 0; i < muxer_msg_iter->muxer_upstream_msg_iters->len; i++) { + struct muxer_upstream_msg_iter *upstream_msg_iter = + muxer_msg_iter->muxer_upstream_msg_iters->pdata[i]; + + if (!bt_self_component_port_input_message_iterator_can_seek_beginning( + upstream_msg_iter->msg_iter)) { + ret = BT_FALSE; + goto end; + } + } + +end: + return ret; +} + +BT_HIDDEN +bt_self_message_iterator_status muxer_msg_iter_seek_beginning( + bt_self_message_iterator *self_msg_iter) +{ + struct muxer_msg_iter *muxer_msg_iter = + bt_self_message_iterator_get_data(self_msg_iter); + int status; + uint64_t i; + + for (i = 0; i < muxer_msg_iter->muxer_upstream_msg_iters->len; i++) { + struct muxer_upstream_msg_iter *upstream_msg_iter = + muxer_msg_iter->muxer_upstream_msg_iters->pdata[i]; + + status = bt_self_component_port_input_message_iterator_seek_beginning( + upstream_msg_iter->msg_iter); + if (status != BT_MESSAGE_ITERATOR_STATUS_OK) { + goto end; + } + } + + muxer_msg_iter->last_returned_ts_ns = INT64_MIN; + +end: + return status; +}