forked from kohler/masstree-beta
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkvproto.hh
63 lines (57 loc) · 1.5 KB
/
kvproto.hh
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/* Masstree
* Eddie Kohler, Yandong Mao, Robert Morris
* Copyright (c) 2012-2013 President and Fellows of Harvard College
* Copyright (c) 2012-2013 Massachusetts Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, subject to the conditions
* listed in the Masstree LICENSE file. These conditions include: you must
* preserve this copyright notice, and you cannot mention the copyright
* holders in advertising related to the Software without their permission.
* The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
* notice is a summary of the Masstree LICENSE file; the license in that file
* is legally binding.
*/
#ifndef KVPROTO_HH
#define KVPROTO_HH 1
#include "shared_config.hh"
struct kvproto {
kvproto() {
fill();
}
void fill();
bool check();
private:
rowtype_id rt_;
int maxkeylen_;
int maxrowlen_;
};
enum {
Cmd_None = 0,
Cmd_Get,
Cmd_Put, // does not return status
Cmd_Checkpoint,
Cmd_Scan,
Cmd_Remove,
Cmd_Put_Status,
Cmd_Max
};
enum result_t {
NotFound = -2,
Retry,
OutOfDate,
Inserted,
Updated,
Found,
ScanDone
};
struct row_marker {
enum { mt_remove = 1, mt_delta = 2 };
int marker_type_;
};
template <typename R>
inline bool row_is_marker(const R* row) {
return row->timestamp() & 1;
}
#endif