#pragma once
#include <mutex>
#include <vector>
#include "storage/page_allocator.h"
namespace lbug {
namespace storage {
class PageManager;
class OptimisticAllocator : public PageAllocator {
public:
explicit OptimisticAllocator(PageManager& pageManager);
PageRange allocatePageRange(common::page_idx_t numPages) override;
void freePageRange(PageRange block) override;
void rollback();
void commit();
private:
PageManager& pageManager;
std::mutex mtx;
std::vector<PageRange> optimisticallyAllocatedPages;
};
} }