From: Vsevolod Stakhov Date: Sun, 9 Oct 2022 22:34:42 +0000 (+0100) Subject: [Minor] Add method to extract shared memory from RAII ownership X-Git-Tag: 3.4~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3f20a29a6ea7b1406751a9e68ad863ba46d78397;p=thirdparty%2Frspamd.git [Minor] Add method to extract shared memory from RAII ownership --- diff --git a/src/libutil/cxx/locked_file.hxx b/src/libutil/cxx/locked_file.hxx index ce25b0a5a2..94561a2d45 100644 --- a/src/libutil/cxx/locked_file.hxx +++ b/src/libutil/cxx/locked_file.hxx @@ -112,7 +112,15 @@ struct raii_mmaped_locked_file final { ~raii_mmaped_locked_file(); static auto mmap_shared(raii_locked_file &&file, int flags) -> tl::expected; static auto mmap_shared(const char *fname, int open_flags, int mmap_flags) -> tl::expected; + // Returns a constant pointer to the underlying map auto get_map() const -> void* {return map;} + // Passes the ownership of the mmaped memory to the callee + auto steal_map() -> std::tuple { + auto ret = std::make_tuple(this->map, file.get_stat().st_size); + this->map = nullptr; + return ret; + } + auto get_size() const -> std::size_t { return file.get_stat().st_size; } raii_mmaped_locked_file& operator=(raii_mmaped_locked_file &&other) noexcept {