#include "../metadata/tsdl/ctf-meta.hpp"
+namespace bt2c {
+
+class Logger;
+
+} /* namespace bt2c */
+
/**
* @file ctf-msg-iter.h
*
CTF_MSG_ITER_MEDIUM_STATUS_OK = 0,
};
+inline const char *format_as(const ctf_msg_iter_medium_status status) noexcept
+{
+ switch (status) {
+ case CTF_MSG_ITER_MEDIUM_STATUS_EOF:
+ return "EOF";
+
+ case CTF_MSG_ITER_MEDIUM_STATUS_AGAIN:
+ return "AGAIN";
+
+ case CTF_MSG_ITER_MEDIUM_STATUS_ERROR:
+ return "ERROR";
+
+ case CTF_MSG_ITER_MEDIUM_STATUS_MEMORY_ERROR:
+ return "MEMORY_ERROR";
+
+ case CTF_MSG_ITER_MEDIUM_STATUS_OK:
+ return "OK";
+ }
+
+ bt_common_abort();
+}
+
/**
* CTF message iterator API status code.
*/
CTF_MSG_ITER_STATUS_OK = CTF_MSG_ITER_MEDIUM_STATUS_OK,
};
+inline const char *format_as(ctf_msg_iter_status status) noexcept
+{
+ switch (status) {
+ case CTF_MSG_ITER_STATUS_EOF:
+ return "EOF";
+
+ case CTF_MSG_ITER_STATUS_AGAIN:
+ return "AGAIN";
+
+ case CTF_MSG_ITER_STATUS_ERROR:
+ return "ERROR";
+
+ case CTF_MSG_ITER_STATUS_MEMORY_ERROR:
+ return "MEMORY_ERROR";
+
+ case CTF_MSG_ITER_STATUS_OK:
+ return "OK";
+ }
+
+ bt_common_abort();
+}
+
/**
* Medium operations.
*
bt_stream *(*borrow_stream)(bt_stream_class *stream_class, int64_t stream_id, void *data);
};
+/** CTF message iterator. */
+struct ctf_msg_iter;
+
+struct ctf_msg_iter_deleter
+{
+ void operator()(ctf_msg_iter *iter) noexcept;
+};
+
+using ctf_msg_iter_up = std::unique_ptr<ctf_msg_iter, ctf_msg_iter_deleter>;
+
/**
* Creates a CTF message iterator.
*
* @returns New CTF message iterator on
* success, or \c NULL on error
*/
-struct ctf_msg_iter *ctf_msg_iter_create(struct ctf_trace_class *tc, size_t max_request_sz,
- struct ctf_msg_iter_medium_ops medops, void *medops_data,
- bt_logging_level log_level, bt_self_component *self_comp,
- bt_self_message_iterator *self_msg_iter);
+ctf_msg_iter_up ctf_msg_iter_create(struct ctf_trace_class *tc, size_t max_request_sz,
+ struct ctf_msg_iter_medium_ops medops, void *medops_data,
+ bt_self_message_iterator *self_msg_iter,
+ const bt2c::Logger& logger);
/**
* Destroys a CTF message iterator, freeing all internal resources.
void ctf_msg_iter_set_dry_run(struct ctf_msg_iter *msg_it, bool val);
-static inline const char *ctf_msg_iter_medium_status_string(enum ctf_msg_iter_medium_status status)
-{
- switch (status) {
- case CTF_MSG_ITER_MEDIUM_STATUS_EOF:
- return "EOF";
- case CTF_MSG_ITER_MEDIUM_STATUS_AGAIN:
- return "AGAIN";
- case CTF_MSG_ITER_MEDIUM_STATUS_ERROR:
- return "ERROR";
- case CTF_MSG_ITER_MEDIUM_STATUS_MEMORY_ERROR:
- return "MEMORY_ERROR";
- case CTF_MSG_ITER_MEDIUM_STATUS_OK:
- return "OK";
- }
-
- bt_common_abort();
-}
-
-static inline const char *ctf_msg_iter_status_string(enum ctf_msg_iter_status status)
-{
- switch (status) {
- case CTF_MSG_ITER_STATUS_EOF:
- return "EOF";
- case CTF_MSG_ITER_STATUS_AGAIN:
- return "AGAIN";
- case CTF_MSG_ITER_STATUS_ERROR:
- return "ERROR";
- case CTF_MSG_ITER_STATUS_MEMORY_ERROR:
- return "MEMORY_ERROR";
- case CTF_MSG_ITER_STATUS_OK:
- return "OK";
- }
-
- bt_common_abort();
-}
-
#endif /* CTF_MSG_ITER_H */