119 static void attach(
int fd, std::uint64_t bytes);
144 std::vector<std::uint32_t> chunks;
145 std::uint64_t size = 0;
148 std::optional<std::uint64_t> max_bytes;
153 void open_region(
Region& region, std::optional<std::uint64_t> max_bytes = std::nullopt);
154 void release_region(
Region& region)
noexcept;
155 void truncate(
Region& region, std::uint64_t bytes);
156 void ensure_size(
Region& region, std::uint64_t bytes,
157 std::uint64_t needed_bytes_lower_bound = 0);
158 void write(
Region& region, std::uint64_t offset,
const void*
data, std::size_t length);
159 void read(
const Region& region, std::uint64_t offset,
void*
data, std::size_t length)
const;
161 std::unique_ptr<Impl> impl_;
162 static std::unique_ptr<ScratchArena> singleton_;