35#ifndef PINEFORGE_DETAIL_O1_STORE_HPP
36#define PINEFORGE_DETAIL_O1_STORE_HPP
49using Id = std::uint64_t;
80 :
std::runtime_error(
"o1 store: transaction handle pool exhausted") {}
89 :
std::logic_error(
"o1 store: transaction is rollback-only") {}
164 virtual Id create(std::uint64_t bytes, std::uint64_t align) = 0;
167 virtual std::uint64_t
size(
Id)
const = 0;
177 virtual std::size_t
read(
Id, std::uint64_t off,
void* dst, std::size_t n)
const = 0;
178 virtual std::size_t
write(
Id, std::uint64_t off,
const void* src, std::size_t n) = 0;
190 virtual std::unique_ptr<Tx>
begin() = 0;
261 void require_open()
const;
264 std::unique_ptr<Tx> owned_;
265 bool finished_ =
false;
virtual Stats stats() const =0
virtual std::size_t write(Id, std::uint64_t off, const void *src, std::size_t n)=0
virtual bool join_active_tx()=0
virtual void note_cleanup_skipped(CleanupSkip reason) noexcept=0
virtual std::unique_ptr< Tx > begin()=0
static constexpr std::size_t max_caller_handles() noexcept
virtual std::uint64_t size(Id) const =0
virtual std::unique_ptr< Tx > begin_cleanup()=0
virtual std::size_t read(Id, std::uint64_t off, void *dst, std::size_t n) const =0
virtual void abandon_joined_tx() noexcept=0
virtual bool alive(Id) const =0
virtual bool resize(Id, std::uint64_t bytes)=0
static std::unique_ptr< Store > open(const Shape &, ScratchBacking &)
virtual Id create(std::uint64_t bytes, std::uint64_t align)=0
virtual std::uint64_t rollback_epoch() const noexcept=0
virtual void release(Id)=0
TxScope & operator=(const TxScope &)=delete
TxScope(const TxScope &)=delete
virtual void rollback()=0
constexpr std::size_t kStoreReadCacheBytes
constexpr std::uint32_t kMaxResidentPages
constexpr std::uint32_t kMaxChunkBytes
constexpr std::size_t kStoreReadCacheSlots
constexpr std::size_t kMaxTxHandles
constexpr std::uint64_t kMaxLiveObjectsCap
std::uint32_t journal_slots
std::uint32_t chunk_bytes
std::uint64_t max_live_objects
std::uint32_t resident_pages
std::uint32_t index_slots
std::uint64_t bytes_backing
std::uint64_t max_live_handles
std::uint64_t pages_spilled
std::uint64_t objects_live
std::uint64_t cleanup_failed
std::uint64_t bytes_resident
std::uint64_t cleanup_skipped_rollback_only
std::uint64_t max_live_objects