blob: 203efb54d85df23871f48ce23b045dc790afe14d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#ifndef __BUFFER_POOL_H__
#define __BUFFER_POOL_H__
#include "absl/container/flat_hash_map.h"
#include "absl/status/statusor.h"
#include "komfydb/common/permissions.h"
#include "komfydb/config.h"
#include "komfydb/storage/catalog.h"
#include "komfydb/storage/page.h"
#include "komfydb/storage/page_id.h"
#include "komfydb/transaction/transaction_id.h"
namespace {
using komfydb::common::Permissions;
using komfydb::transaction::TransactionId;
}; // namespace
namespace komfydb::storage {
class BufferPool {
private:
const int pages_cnt;
std::shared_ptr<Catalog> catalog;
absl::flat_hash_map<PageId, std::unique_ptr<Page>> page_pool;
const static int PAGE_SIZE = CONFIG_PAGE_SIZE;
const static int PAGES_CNT = CONFIG_BUFFER_POOL_PAGES_CNT;
public:
BufferPool(std::shared_ptr<Catalog> catalog, int pages_cnt = PAGES_CNT)
: pages_cnt(pages_cnt), catalog(catalog) {}
int GetPageSize() const { return pages_cnt; }
absl::StatusOr<Page*> GetPage(TransactionId tid, PageId pid,
Permissions perm);
};
}; // namespace komfydb::storage
#endif // __BUFFER_POOL_H__
|