130 static void attach(
int fd, std::uint64_t bytes);
155 std::vector<std::uint32_t> chunks;
156 std::uint64_t size = 0;
159 std::optional<std::uint64_t> max_bytes;
164 void open_region(
Region& region, std::optional<std::uint64_t> max_bytes = std::nullopt);
165 void release_region(
Region& region)
noexcept;
168 void release_prefix(
Region& region, std::uint64_t bytes);
169 void truncate(
Region& region, std::uint64_t bytes);
170 void ensure_size(
Region& region, std::uint64_t bytes,
171 std::uint64_t needed_bytes_lower_bound = 0);
172 void write(
Region& region, std::uint64_t offset,
const void*
data, std::size_t length);
173 void read(
const Region& region, std::uint64_t offset,
void*
data, std::size_t length)
const;
175 std::unique_ptr<Impl> impl_;
176 static std::unique_ptr<ScratchArena> singleton_;