X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Fcommon%2Fnotif-iter%2Fnotif-iter.h;h=23277754a759b0d863bef1726a34757adb9572a0;hb=87187cbfcf0ff2101a05e58d9043ffa86108f431;hp=ed1dbbcd9e7e860b5e895f4107648262125b6876;hpb=06a626b83f4426ea5b8d3199d1edf5a07594026e;p=babeltrace.git diff --git a/plugins/ctf/common/notif-iter/notif-iter.h b/plugins/ctf/common/notif-iter/notif-iter.h index ed1dbbcd..23277754 100644 --- a/plugins/ctf/common/notif-iter/notif-iter.h +++ b/plugins/ctf/common/notif-iter/notif-iter.h @@ -32,6 +32,7 @@ #include #include #include +#include #include /** @@ -67,7 +68,7 @@ enum bt_ctf_notif_iter_medium_status { BT_CTF_NOTIF_ITER_MEDIUM_STATUS_ERROR = -1, /** Everything okay. */ - BT_CTF_NOTIF_ITER_MEDIUM_STATUS_OK = 0, + BT_CTF_NOTIF_ITER_MEDIUM_STATUS_OK = 0, }; /** @@ -80,7 +81,7 @@ enum bt_ctf_notif_iter_status { * The medium function called by the notification iterator * function reached the end of the file. */ - BT_CTF_NOTIF_ITER_STATUS_EOF = -4, + BT_CTF_NOTIF_ITER_STATUS_EOF = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_EOF, /** * There is no data available right now, try again later. @@ -91,13 +92,13 @@ enum bt_ctf_notif_iter_status { * last called notification iterator function once the situation * is resolved. */ - BT_CTF_NOTIF_ITER_STATUS_AGAIN = -3, + BT_CTF_NOTIF_ITER_STATUS_AGAIN = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_AGAIN, /** Invalid argument. */ - BT_CTF_NOTIF_ITER_STATUS_INVAL = -2, + BT_CTF_NOTIF_ITER_STATUS_INVAL = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_INVAL, /** General error. */ - BT_CTF_NOTIF_ITER_STATUS_ERROR = -1, + BT_CTF_NOTIF_ITER_STATUS_ERROR = BT_CTF_NOTIF_ITER_MEDIUM_STATUS_ERROR, /** Everything okay. */ BT_CTF_NOTIF_ITER_STATUS_OK = 0, @@ -226,8 +227,6 @@ struct bt_ctf_notif_iter_notif_event { struct bt_ctf_event *event; }; -void bt_ctf_notif_iter_notif_destroy(void *notif); - /** * Creates a CTF notification iterator. * @@ -245,6 +244,7 @@ void bt_ctf_notif_iter_notif_destroy(void *notif); * @returns New CTF notification iterator on * success, or \c NULL on error */ +BT_HIDDEN struct bt_ctf_notif_iter *bt_ctf_notif_iter_create(struct bt_ctf_trace *trace, size_t max_request_sz, struct bt_ctf_notif_iter_medium_ops medops, void *medops_data, FILE *err_stream); @@ -256,21 +256,9 @@ struct bt_ctf_notif_iter *bt_ctf_notif_iter_create(struct bt_ctf_trace *trace, * * @param notif_iter CTF notification iterator */ +BT_HIDDEN void bt_ctf_notif_iter_destroy(struct bt_ctf_notif_iter *notif_iter); -/** - * Resets the internal state of a CTF notification iterator. - * - * This function can be used when it is desired to seek to the beginning - * of another packet. It is expected that the next call to - * bt_ctf_notif_iter_medium_ops::request_bytes() made by this - * notification iterator will return the \em first bytes of a \em - * packet. - * - * @param notif_iter CTF notification iterator - */ -void bt_ctf_notif_iter_reset(struct bt_ctf_notif_iter *notif_iter); - /** * Returns the next notification from a CTF notification iterator. * @@ -284,12 +272,34 @@ void bt_ctf_notif_iter_reset(struct bt_ctf_notif_iter *notif_iter); * call this function again, until another status is returned. * * @param notif_iter CTF notification iterator + * @param cc_prio_map Clock class priority map to use when + * creating an event notification * @param notification Returned notification if the function's * return value is #BT_CTF_NOTIF_ITER_STATUS_OK * @returns One of #bt_ctf_notif_iter_status values */ +BT_HIDDEN enum bt_ctf_notif_iter_status bt_ctf_notif_iter_get_next_notification( - struct bt_ctf_notif_iter *notif_iter, - struct bt_ctf_notif_iter_notif **notification); + struct bt_ctf_notif_iter *notit, + struct bt_clock_class_priority_map *cc_prio_map, + struct bt_notification **notification); + +/** + * Returns the first packet header and context fields. This function + * never needs to call the `get_stream()` medium operation because + * it does not create packet or event objects. + * + * @param notif_iter CTF notification iterator + * @param packet_header_field Packet header field (\c NULL if there's + * no packet header field) + * @param packet_context_field Packet context field (\c NULL if there's + * no packet context field) + * @returns One of #bt_ctf_notif_iter_status values + */ +BT_HIDDEN +enum bt_ctf_notif_iter_status bt_ctf_notif_iter_get_packet_header_context_fields( + struct bt_ctf_notif_iter *notit, + struct bt_ctf_field **packet_header_field, + struct bt_ctf_field **packet_context_field); #endif /* CTF_NOTIF_ITER_H */