]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add method to extract shared memory from RAII ownership
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 9 Oct 2022 22:34:42 +0000 (23:34 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 9 Oct 2022 22:35:10 +0000 (23:35 +0100)
src/libutil/cxx/locked_file.hxx

index ce25b0a5a28ef3ab514f568e98b560e01b1f598d..94561a2d45ee757d6880ab2170d89958cb22d625 100644 (file)
@@ -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<raii_mmaped_locked_file, std::string>;
        static auto mmap_shared(const char *fname, int open_flags, int mmap_flags) -> tl::expected<raii_mmaped_locked_file, std::string>;
+       // 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<void *, std::size_t> {
+               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 {