-
Notifications
You must be signed in to change notification settings - Fork 2
/
lsmtree.h
36 lines (35 loc) · 1017 Bytes
/
lsmtree.h
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
#ifndef __LSM_HEADER__
#define __LSM_HEADER__
#include"bptree.h"
#include"skiplist.h"
#include"threading.h"
#include"utils.h"
typedef struct threading threading;
typedef struct buffer{
sktable *data;
level *disk[LEVELN];
skiplist *lastB;
}buffer;
typedef struct table{
int lev_addr[LEVELN];
}table;
typedef struct lsmtree{
skiplist *memtree;
skiplist *sstable;
buffer buf;
table tlb;
int dfd;
}lsmtree;
lsmtree* init_lsm(lsmtree *);
bool merge(lsmtree *,KEYT target, skiplist *);
bool put(lsmtree *,KEYT key, char* value,lsmtree_req_t *);
bool is_gc_needed(lsmtree *);
bool compaction(lsmtree *,level *, level *,Entry *,lsmtree_gc_req_t *);
int get(lsmtree *,KEYT key,char *);
int thread_get(lsmtree *,KEYT key,threading *, char *value,lsmtree_req_t *);
int thread_level_get(lsmtree *,KEYT key,threading *,char *value,lsmtree_req_t *, int);
void lsm_free(lsmtree *);
KEYT write_data(lsmtree *LSM,skiplist *,lsmtree_gc_req_t *);
bool is_flush_needed(lsmtree * );
bool is_compt_needed(lsmtree *,KEYT);
#endif