-
Notifications
You must be signed in to change notification settings - Fork 2
/
KV.proto
124 lines (100 loc) · 2.18 KB
/
KV.proto
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
syntax = "proto3";
// protoc --go_out=. --go-grpc_out=. KV.proto
option go_package = "io.microraft/afloatdb/kv";
package io.microraft.afloatdb.kv.proto;
option java_multiple_files = true;
message Val {
oneof val {
string str = 1;
int64 num = 2;
bytes byteArray = 3;
}
}
message PutRequest {
string key = 1;
Val val = 2;
bool putIfAbsent = 3;
}
message PutResult {
Val oldVal = 1;
}
message SetRequest {
string key = 1;
Val val = 2;
}
message SetResult {
bool oldValExisted = 1;
}
message GetRequest {
string key = 1;
int64 minCommitIndex = 2;
}
message GetResult {
Val val = 1;
}
message ContainsRequest {
string key = 1;
Val val = 2;
int64 minCommitIndex = 3;
}
message ContainsResult {
bool success = 1;
}
message DeleteRequest {
string key = 1;
}
message DeleteResult {
bool success = 1;
}
message RemoveRequest {
string key = 1;
Val val = 2;
}
message RemoveResult {
bool success = 1;
Val oldVal = 2;
}
message ReplaceRequest {
string key = 1;
Val oldVal = 2;
Val newVal = 3;
}
message ReplaceResult {
bool success = 1;
}
message SizeRequest {
int64 minCommitIndex = 1;
}
message SizeResult {
int32 size = 1;
}
message ClearRequest {
}
message ClearResult {
int32 size = 1;
}
message KVResponse {
int64 commitIndex = 1;
oneof result {
PutResult putResult = 2;
SetResult setResult = 3;
GetResult getResult = 4;
ContainsResult containsResult = 5;
DeleteResult deleteResult = 6;
RemoveResult removeResult = 7;
ReplaceResult replaceResult = 8;
SizeResult sizeResult = 9;
ClearResult clearResult = 10;
};
}
service KVService {
rpc put (PutRequest) returns (KVResponse);
rpc set (SetRequest) returns (KVResponse);
rpc get (GetRequest) returns (KVResponse);
rpc contains (ContainsRequest) returns (KVResponse);
rpc delete (DeleteRequest) returns (KVResponse);
rpc remove (RemoveRequest) returns (KVResponse);
rpc replace (ReplaceRequest) returns (KVResponse);
rpc size (SizeRequest) returns (KVResponse);
rpc clear (ClearRequest) returns (KVResponse);
}