-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroxy.proto
265 lines (227 loc) · 5.65 KB
/
roxy.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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
syntax = "proto3";
option go_package = "github.com/chronos-tachyon/roxy/proto/roxy_v0";
import "google/protobuf/any.proto";
import "google/protobuf/timestamp.proto";
package roxy.v0;
service Web {
rpc Serve (stream WebMessage) returns (stream WebMessage);
rpc Socket (stream WebSocketFrame) returns (stream WebSocketFrame);
}
message WebMessage {
bytes body_chunk = 1;
repeated KeyValue headers = 2;
repeated KeyValue trailers = 3;
}
message KeyValue {
string key = 1;
string value = 2;
}
message WebSocketFrame {
enum Type {
UNKNOWN = 0;
DATA_TEXT = 1;
DATA_BINARY = 2;
reserved 3 to 7;
CTRL_CLOSE = 8;
CTRL_PING = 9;
CTRL_PONG = 10;
reserved 11 to 15;
}
Type frame_type = 1;
bytes payload = 2;
repeated WebSocketExtension websocket_extensions = 3;
}
message WebSocketExtension {
string extension_type = 1;
google.protobuf.Any extension_data = 2;
}
message WebSocketCloseError {
uint32 code = 1;
string text = 2;
}
service AirTrafficControl {
rpc Lookup (LookupRequest) returns (LookupResponse);
rpc LookupClients (LookupClientsRequest) returns (LookupClientsResponse);
rpc LookupServers (LookupServersRequest) returns (LookupServersResponse);
rpc Find (FindRequest) returns (FindResponse);
rpc ServerAnnounce (stream ServerAnnounceRequest) returns (stream ServerAnnounceResponse);
rpc ClientAssign (stream ClientAssignRequest) returns (stream ClientAssignResponse);
rpc Transfer (TransferRequest) returns (TransferResponse);
}
message LookupRequest {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
}
message LookupResponse {
repeated string allowed_client_names = 1;
repeated string allowed_server_names = 2;
uint32 expected_num_clients_per_shard = 3;
uint32 expected_num_servers_per_shard = 4;
bool is_sharded = 5;
uint32 num_shards = 6;
double avg_supplied_cost_per_second_per_server = 7;
double avg_demanded_cost_per_query = 8;
repeated ShardData shards = 32;
}
message LookupClientsRequest {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
string unique_id = 4;
}
message LookupClientsResponse {
repeated ClientData clients = 1;
}
message LookupServersRequest {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
string unique_id = 4;
}
message LookupServersResponse {
repeated ServerData servers = 1;
}
message FindRequest {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
}
message FindResponse {
GoAway go_away = 1;
}
message ServerAnnounceRequest {
ServerData first = 1;
uint64 cost_counter = 2;
bool is_serving = 3;
}
message ServerAnnounceResponse {
GoAway go_away = 1;
}
message ClientAssignRequest {
ClientData first = 1;
uint64 cost_counter = 2;
bool is_serving = 3;
}
message ClientAssignResponse {
GoAway go_away = 1;
repeated Event events = 2;
}
message TransferRequest {
uint64 config_id = 1;
string service_name = 2;
uint32 shard_number = 3;
bool has_shard_number = 4;
repeated ClientData clients = 5;
repeated ServerData servers = 6;
}
message TransferResponse {
}
message ShardData {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
uint32 num_clients = 4;
uint32 num_servers = 5;
double declared_demand_cost_per_second = 6;
double measured_demand_cost_per_second = 7;
double declared_supply_cost_per_second = 8;
double measured_supply_cost_per_second = 9;
}
message ClientData {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
string unique_id = 4;
string location = 5;
double declared_cost_per_second = 10;
double measured_cost_per_second = 11;
bool is_alive = 12;
bool is_serving = 13;
repeated Sample history = 14;
}
message ServerData {
string service_name = 1;
uint32 shard_number = 2;
bool has_shard_number = 3;
string unique_id = 4;
string location = 5;
string server_name = 6;
bytes ip = 7;
string zone = 8;
uint32 port = 9;
double declared_cost_per_second = 10;
double measured_cost_per_second = 11;
bool is_alive = 12;
bool is_serving = 13;
repeated Sample history = 14;
}
message Sample {
google.protobuf.Timestamp timestamp = 1;
uint64 counter = 2;
}
message GoAway {
bytes ip = 1;
string zone = 2;
uint32 port = 3;
}
message Event {
enum Type {
UNKNOWN = 0;
INSERT_IP = 1;
DELETE_IP = 2;
UPDATE_WEIGHT = 3;
NEW_SERVICE_CONFIG = 4;
DELETE_ALL_IPS = 5;
}
Type event_type = 1;
string unique_id = 2;
string location = 3;
string server_name = 4;
bytes ip = 5;
string zone = 6;
uint32 port = 7;
double assigned_cost_per_second = 8;
string service_config_json = 64;
}
service Admin {
rpc Ping (PingRequest) returns (PingResponse);
rpc Reload (ReloadRequest) returns (ReloadResponse);
rpc Flip (FlipRequest) returns (FlipResponse);
rpc Commit (CommitRequest) returns (CommitResponse);
rpc Shutdown (ShutdownRequest) returns (ShutdownResponse);
rpc SetHealth (SetHealthRequest) returns (SetHealthResponse);
rpc GetCertificate (GetCertificateRequest) returns (GetCertificateResponse);
}
message PingRequest {}
message PingResponse {}
message ReloadRequest {
uint64 id = 1;
int64 rev = 2;
}
message ReloadResponse {
}
message FlipRequest {
uint64 id = 1;
}
message FlipResponse {
}
message CommitRequest {
uint64 id = 1;
}
message CommitResponse {
}
message ShutdownRequest {}
message ShutdownResponse {}
message SetHealthRequest {
string subsystem_name = 1;
bool is_healthy = 2;
}
message SetHealthResponse {
}
message GetCertificateRequest {
string certificate_name = 1;
}
message GetCertificateResponse {
bytes certificate_body = 1;
}