replay/logreader: use unique_ptr for `mbr_` (#29440)

pull/29451/head
Dean Lee 2 years ago committed by GitHub
parent 1887d9197a
commit 61a00d2673
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 12
      tools/replay/logreader.cc
  2. 3
      tools/replay/logreader.h

@ -29,8 +29,7 @@ Event::Event(const kj::ArrayPtr<const capnp::word> &amsg, bool frame) : reader(a
LogReader::LogReader(size_t memory_pool_block_size) {
#ifdef HAS_MEMORY_RESOURCE
const size_t buf_size = sizeof(Event) * memory_pool_block_size;
pool_buffer_ = ::operator new(buf_size);
mbr_ = new std::pmr::monotonic_buffer_resource(pool_buffer_, buf_size);
mbr_ = std::make_unique<std::pmr::monotonic_buffer_resource>(buf_size);
#endif
events.reserve(memory_pool_block_size);
}
@ -39,11 +38,6 @@ LogReader::~LogReader() {
for (Event *e : events) {
delete e;
}
#ifdef HAS_MEMORY_RESOURCE
delete mbr_;
::operator delete(pool_buffer_);
#endif
}
bool LogReader::load(const std::string &url, std::atomic<bool> *abort,
@ -69,7 +63,7 @@ bool LogReader::parse(const std::set<cereal::Event::Which> &allow, std::atomic<b
kj::ArrayPtr<const capnp::word> words((const capnp::word *)raw_.data(), raw_.size() / sizeof(capnp::word));
while (words.size() > 0 && !(abort && *abort)) {
#ifdef HAS_MEMORY_RESOURCE
Event *evt = new (mbr_) Event(words);
Event *evt = new (mbr_.get()) Event(words);
#else
Event *evt = new Event(words);
#endif
@ -85,7 +79,7 @@ bool LogReader::parse(const std::set<cereal::Event::Which> &allow, std::atomic<b
evt->which == cereal::Event::WIDE_ROAD_ENCODE_IDX) {
#ifdef HAS_MEMORY_RESOURCE
Event *frame_evt = new (mbr_) Event(words, true);
Event *frame_evt = new (mbr_.get()) Event(words, true);
#else
Event *frame_evt = new Event(words, true);
#endif

@ -61,7 +61,6 @@ private:
bool parse(const std::set<cereal::Event::Which> &allow, std::atomic<bool> *abort);
std::string raw_;
#ifdef HAS_MEMORY_RESOURCE
std::pmr::monotonic_buffer_resource *mbr_ = nullptr;
void *pool_buffer_ = nullptr;
std::unique_ptr<std::pmr::monotonic_buffer_resource> mbr_;
#endif
};

Loading…
Cancel
Save