X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace2%2Fgraph%2Fmessage-iterator.h;h=228b40d1ab15b70d81f27edb96b042776a90be62;hb=9a2c8b8e0cb6579066b4b8ceb8255cdd5175bb2d;hp=eafab9968eeff60c98d9e60469990f044c90b60f;hpb=efb6feaebd26c2a6849d851be736e5430db31131;p=babeltrace.git diff --git a/include/babeltrace2/graph/message-iterator.h b/include/babeltrace2/graph/message-iterator.h index eafab996..228b40d1 100644 --- a/include/babeltrace2/graph/message-iterator.h +++ b/include/babeltrace2/graph/message-iterator.h @@ -67,6 +67,89 @@ typedef enum bt_message_iterator_can_seek_ns_from_origin_status { BT_MESSAGE_ITERATOR_CAN_SEEK_NS_FROM_ORIGIN_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, } bt_message_iterator_can_seek_ns_from_origin_status; +typedef enum bt_message_iterator_create_from_message_iterator_status { + BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_OK = __BT_FUNC_STATUS_OK, + BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_ERROR = __BT_FUNC_STATUS_ERROR, + BT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, +} bt_message_iterator_create_from_message_iterator_status; + +typedef enum bt_message_iterator_create_from_sink_component_status { + BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_OK = __BT_FUNC_STATUS_OK, + BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_ERROR = __BT_FUNC_STATUS_ERROR, + BT_MESSAGE_ITERATOR_CREATE_FROM_SINK_COMPONENT_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, +} bt_message_iterator_create_from_sink_component_status; + +static inline +bt_message_iterator * +bt_message_iterator_as_message_iterator( + bt_message_iterator *iterator) +{ + return __BT_UPCAST(bt_message_iterator, iterator); +} + +extern bt_message_iterator_create_from_message_iterator_status +bt_message_iterator_create_from_message_iterator( + bt_self_message_iterator *self_msg_iter, + bt_self_component_port_input *input_port, + bt_message_iterator **message_iterator); + +extern bt_message_iterator_create_from_sink_component_status +bt_message_iterator_create_from_sink_component( + bt_self_component_sink *self_comp, + bt_self_component_port_input *input_port, + bt_message_iterator **message_iterator); + +extern bt_component * +bt_message_iterator_borrow_component( + bt_message_iterator *iterator); + +extern bt_message_iterator_next_status +bt_message_iterator_next( + bt_message_iterator *iterator, + bt_message_array_const *msgs, uint64_t *count); + +extern bt_message_iterator_can_seek_ns_from_origin_status +bt_message_iterator_can_seek_ns_from_origin( + bt_message_iterator *iterator, + int64_t ns_from_origin, bt_bool *can_seek); + +extern bt_message_iterator_can_seek_beginning_status +bt_message_iterator_can_seek_beginning( + bt_message_iterator *iterator, + bt_bool *can_seek); + +extern bt_message_iterator_seek_ns_from_origin_status +bt_message_iterator_seek_ns_from_origin( + bt_message_iterator *iterator, + int64_t ns_from_origin); + +extern bt_message_iterator_seek_beginning_status +bt_message_iterator_seek_beginning( + bt_message_iterator *iterator); + +extern bt_bool +bt_message_iterator_can_seek_forward( + bt_message_iterator *iterator); + +extern void bt_message_iterator_get_ref( + const bt_message_iterator *message_iterator); + +extern void bt_message_iterator_put_ref( + const bt_message_iterator *message_iterator); + +#define BT_MESSAGE_ITERATOR_PUT_REF_AND_RESET(_var) \ + do { \ + bt_message_iterator_put_ref(_var); \ + (_var) = NULL; \ + } while (0) + +#define BT_MESSAGE_ITERATOR_MOVE_REF(_var_dst, _var_src) \ + do { \ + bt_message_iterator_put_ref(_var_dst); \ + (_var_dst) = (_var_src); \ + (_var_src) = NULL; \ + } while (0) + #ifdef __cplusplus } #endif