X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Fcommon%2Fsrc%2Fmsg-iter%2Fmsg-iter.cpp;h=1d146f3dfee45bcaeb43d3d403ea40ed0cea5cdd;hb=53e1eccee216a75e77d30084d1797fd6b1dc589e;hp=ea9a24721ba97205831723e9ba2e05292dd6fc6e;hpb=0f5c5d5ce30884c93b4e4d0662e2914029c3e90f;p=babeltrace.git diff --git a/src/plugins/ctf/common/src/msg-iter/msg-iter.cpp b/src/plugins/ctf/common/src/msg-iter/msg-iter.cpp index ea9a2472..1d146f3d 100644 --- a/src/plugins/ctf/common/src/msg-iter/msg-iter.cpp +++ b/src/plugins/ctf/common/src/msg-iter/msg-iter.cpp @@ -15,6 +15,7 @@ #include "common/common.h" #include "cpp-common/bt2c/fmt.hpp" #include "cpp-common/bt2c/logging.hpp" +#include "cpp-common/bt2c/make-span.hpp" #include "cpp-common/vendor/fmt/format.h" #include "../bfcr/bfcr.hpp" @@ -523,7 +524,7 @@ static enum ctf_msg_iter_status request_medium_bytes(struct ctf_msg_iter *msg_it "packet-offset={}, cur={}, size={}, addr={}", msg_it->buf.packet_offset, msg_it->buf.at, msg_it->buf.sz, fmt::ptr(msg_it->buf.addr)); - BT_CPPLOGT_MEM_SPEC(msg_it->logger, buffer_addr, buffer_sz, + BT_CPPLOGT_MEM_SPEC(msg_it->logger, bt2c::makeSpan(buffer_addr, buffer_sz), "Returned bytes at {}:", fmt::ptr(buffer_addr)); } else if (m_status == CTF_MSG_ITER_MEDIUM_STATUS_EOF) { /* @@ -2642,10 +2643,10 @@ end: return msg; } -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 *data, - bt_self_message_iterator *self_msg_iter, - const bt2c::Logger& parentLogger) +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 *data, + bt_self_message_iterator *self_msg_iter, + const bt2c::Logger& parentLogger) { struct bt_bfcr_cbs cbs = { .classes = @@ -2678,13 +2679,13 @@ struct ctf_msg_iter *ctf_msg_iter_create(struct ctf_trace_class *tc, size_t max_ "data={}, log-level={}", fmt::ptr(tc), max_request_sz, fmt::ptr(data), logger.level()); - ctf_msg_iter *msg_it = new ctf_msg_iter {std::move(logger)}; + ctf_msg_iter_up msg_it {new ctf_msg_iter {std::move(logger)}}; msg_it->self_msg_iter = self_msg_iter; msg_it->meta.tc = tc; msg_it->medium.medops = medops; msg_it->medium.max_request_sz = max_request_sz; msg_it->medium.data = data; - msg_it->stack = stack_new(msg_it); + msg_it->stack = stack_new(msg_it.get()); msg_it->stored_values = g_array_new(FALSE, TRUE, sizeof(uint64_t)); g_array_set_size(msg_it->stored_values, tc->stored_value_count); @@ -2693,14 +2694,14 @@ struct ctf_msg_iter *ctf_msg_iter_create(struct ctf_trace_class *tc, size_t max_ goto error; } - msg_it->bfcr = bt_bfcr_create(cbs, msg_it, msg_it->logger); + msg_it->bfcr = bt_bfcr_create(cbs, msg_it.get(), msg_it->logger); if (!msg_it->bfcr) { BT_CPPLOGE_APPEND_CAUSE_SPEC(msg_it->logger, "Failed to create binary class reader (BFCR)."); goto error; } - ctf_msg_iter_reset(msg_it); + ctf_msg_iter_reset(msg_it.get()); BT_CPPLOGD_SPEC(msg_it->logger, "Created CTF plugin message iterator: " "trace-addr={}, max-request-size={}, " @@ -2713,8 +2714,7 @@ end: return msg_it; error: - ctf_msg_iter_destroy(msg_it); - msg_it = NULL; + msg_it.reset(); goto end; } @@ -2744,6 +2744,11 @@ void ctf_msg_iter_destroy(struct ctf_msg_iter *msg_it) delete msg_it; } +void ctf_msg_iter_deleter::operator()(ctf_msg_iter *iter) noexcept +{ + ctf_msg_iter_destroy(iter); +} + enum ctf_msg_iter_status ctf_msg_iter_get_next_message(struct ctf_msg_iter *msg_it, const bt_message **message) {