Skip to content

Commit c73e012

Browse files
Ngo The TrungNgo-The-Trung
authored andcommitted
Use enum for opcode
1 parent efd375b commit c73e012

File tree

2 files changed

+125
-66
lines changed

2 files changed

+125
-66
lines changed

mcrouter/lib/mc/msg.h

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,4 +406,69 @@ const char* mc_req_err_to_string(const mc_req_err_t err);
406406
*/
407407
const char* mc_res_to_response_string(const mc_res_t result);
408408

409+
typedef enum mc_opcode_e : uint8_t {
410+
mc_opcode_noop = 0x0a,
411+
mc_opcode_set = 0x01,
412+
mc_opcode_setq = 0x11,
413+
mc_opcode_add = 0x02,
414+
mc_opcode_addq = 0x12,
415+
mc_opcode_replace = 0x03,
416+
mc_opcode_replaceq = 0x13,
417+
mc_opcode_append = 0x0e,
418+
mc_opcode_appendq = 0x19,
419+
mc_opcode_prepend = 0x0f,
420+
mc_opcode_prependq = 0x1a,
421+
mc_opcode_get = 0x00,
422+
mc_opcode_getq = 0x09,
423+
mc_opcode_getk = 0x0c,
424+
mc_opcode_getkq = 0x0d,
425+
mc_opcode_delete = 0x04,
426+
mc_opcode_deleteq = 0x14,
427+
mc_opcode_increment = 0x05,
428+
mc_opcode_incrementq = 0x15,
429+
mc_opcode_decrement = 0x06,
430+
mc_opcode_decrementq = 0x16,
431+
mc_opcode_touch = 0x1c,
432+
mc_opcode_gat = 0x1d,
433+
mc_opcode_gatq = 0x1e,
434+
mc_opcode_stat = 0x10,
435+
mc_opcode_version = 0x0b,
436+
mc_opcode_quit = 0x07,
437+
mc_opcode_quitq = 0x17,
438+
mc_opcode_flush = 0x08,
439+
mc_opcode_flushq = 0x18,
440+
// SASL commands
441+
mc_opcode_sasllistmechs = 0x20,
442+
mc_opcode_saslauth = 0x21,
443+
mc_opcode_saslstep = 0x22,
444+
// Range commands
445+
mc_opcode_rset = 0x31,
446+
mc_opcode_rsetq = 0x32,
447+
mc_opcode_rappend = 0x33,
448+
mc_opcode_rappendq = 0x34,
449+
mc_opcode_rprepend = 0x35,
450+
mc_opcode_rprependq = 0x36,
451+
mc_opcode_rget = 0x30,
452+
mc_opcode_rdelete = 0x37,
453+
mc_opcode_rdeleteq = 0x38,
454+
mc_opcode_rincr = 0x39,
455+
mc_opcode_rincrq = 0x3a,
456+
mc_opcode_rdecr = 0x3b,
457+
mc_opcode_rdecrq = 0x3c,
458+
// v1.6 proposed commands
459+
mc_opcode_setvbucket = 0x3d,
460+
mc_opcode_tapvbucketset = 0x45,
461+
mc_opcode_getvbucket = 0x3e,
462+
mc_opcode_tapdelete = 0x42,
463+
mc_opcode_verbosity = 0x1b,
464+
mc_opcode_tapflush = 0x43,
465+
mc_opcode_delvbucket = 0x3f,
466+
mc_opcode_tapconnect = 0x40,
467+
mc_opcode_tapmutation = 0x41,
468+
mc_opcode_tapopaque = 0x44,
469+
mc_opcode_tapcheckpointstart = 0x46,
470+
mc_opcode_tapcheckpointend = 0x47,
471+
} mc_opcode_t;
472+
473+
409474
__END_DECLS

mcrouter/lib/network/McBinaryParser.cpp

Lines changed: 60 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -89,154 +89,148 @@ bool McServerBinaryParser::parseHeader(const char * bytes) {
8989

9090
// TODO validate command constraint (i.e. no extras, no value)
9191
switch (getOpCode()) {
92-
case 0x0a: // No-op
93-
return false;
94-
95-
case 0x01: // Set
92+
case mc_opcode_set:
9693
currentMessage_.emplace<McSetRequest>();
9794
consumer_ = &McServerBinaryParser::consumeSetLike<McSetRequest, false>;
9895
return true;
99-
case 0x11: // SetQ
96+
case mc_opcode_setq:
10097
currentMessage_.emplace<McSetRequest>();
10198
consumer_ = &McServerBinaryParser::consumeSetLike<McSetRequest, true>;
10299
return true;
103-
case 0x02: // Add
100+
case mc_opcode_add:
104101
currentMessage_.emplace<McAddRequest>();
105102
consumer_ = &McServerBinaryParser::consumeSetLike<McAddRequest, false>;
106103
return true;
107-
case 0x12: // AddQ
104+
case mc_opcode_addq
108105
currentMessage_.emplace<McAddRequest>();
109106
consumer_ = &McServerBinaryParser::consumeSetLike<McAddRequest, true>;
110107
return true;
111-
case 0x03: // Replace
108+
case mc_opcode_replace:
112109
currentMessage_.emplace<McReplaceRequest>();
113110
consumer_ = &McServerBinaryParser::consumeSetLike<McReplaceRequest, false>;
114111
return true;
115-
case 0x13: // ReplaceQ
112+
case mc_opcode_replaceq:
116113
currentMessage_.emplace<McReplaceRequest>();
117114
consumer_ = &McServerBinaryParser::consumeSetLike<McReplaceRequest, true>;
118115
return true;
119-
case 0x0e: // Append
116+
case mc_opcode_append:
120117
currentMessage_.emplace<McAppendRequest>();
121118
consumer_ = &McServerBinaryParser::consumeAppendLike<McAppendRequest, false>;
122119
return true;
123-
case 0x19: // AppendQ
120+
case mc_opcode_appendq:
124121
currentMessage_.emplace<McAppendRequest>();
125122
consumer_ = &McServerBinaryParser::consumeAppendLike<McAppendRequest, true>;
126123
return true;
127-
case 0x0f: // Prepend
124+
case mc_opcode_prepend:
128125
currentMessage_.emplace<McPrependRequest>();
129126
consumer_ = &McServerBinaryParser::consumeAppendLike<McPrependRequest, false>;
130127
return true;
131-
case 0x1a: // PrependQ
128+
case mc_opcode_prependq:
132129
currentMessage_.emplace<McPrependRequest>();
133130
consumer_ = &McServerBinaryParser::consumeAppendLike<McPrependRequest, true>;
134131
return true;
135-
case 0x00: // Get
132+
case mc_opcode_get:
136133
currentMessage_.emplace<McGetRequest>();
137134
consumer_ = &McServerBinaryParser::consumeGetLike<McGetRequest, false, false>;
138135
return true;
139-
case 0x09: // GetQ
136+
case mc_opcode_getq:
140137
currentMessage_.emplace<McGetRequest>();
141138
consumer_ = &McServerBinaryParser::consumeGetLike<McGetRequest, true, false>;
142139
return true;
143-
case 0x0c: // GetK
140+
case mc_opcode_getk:
144141
currentMessage_.emplace<McGetRequest>();
145142
consumer_ = &McServerBinaryParser::consumeGetLike<McGetRequest, false, true>;
146143
return true;
147-
case 0x0d: // GetKQ
144+
case mc_opcode_getkq:
148145
currentMessage_.emplace<McGetRequest>();
149146
consumer_ = &McServerBinaryParser::consumeGetLike<McGetRequest, true, true>;
150147
return true;
151-
case 0x04: // Delete
148+
case mc_opcode_delete:
152149
currentMessage_.emplace<McDeleteRequest>();
153150
consumer_ = &McServerBinaryParser::consumeGetLike<McDeleteRequest, false, false>;
154151
return true;
155-
case 0x14: // DeleteQ
152+
case mc_opcode_deleteq:
156153
currentMessage_.emplace<McDeleteRequest>();
157154
consumer_ = &McServerBinaryParser::consumeGetLike<McDeleteRequest, true, false>;
158155
return true;
159-
case 0x05: // Increment
156+
case mc_opcode_increment:
160157
currentMessage_.emplace<McIncrRequest>();
161158
consumer_ = &McServerBinaryParser::consumeArithLike<McIncrRequest, false>;
162159
return true;
163-
case 0x15: // IncrementQ
160+
case mc_opcode_incrementq:
164161
currentMessage_.emplace<McIncrRequest>();
165162
consumer_ = &McServerBinaryParser::consumeArithLike<McIncrRequest, true>;
166163
return true;
167-
case 0x06: // Decrement
164+
case mc_opcode_decrement:
168165
currentMessage_.emplace<McDecrRequest>();
169166
consumer_ = &McServerBinaryParser::consumeArithLike<McDecrRequest, false>;
170167
return true;
171-
case 0x16: // DecrementQ
168+
case mc_opcode_decrementq:
172169
currentMessage_.emplace<McDecrRequest>();
173170
consumer_ = &McServerBinaryParser::consumeArithLike<McDecrRequest, true>;
174171
return true;
175-
case 0x1c: // Touch
176-
case 0x1d: // GAT
177-
case 0x1e: // GATQ
172+
case mc_opcode_touch:
173+
case mc_opcode_gat:
174+
case mc_opcode_gatq:
178175
currentMessage_.emplace<McTouchRequest>();
179176
consumer_ = &McServerBinaryParser::consumeGetLike<McTouchRequest, false, false>;
180177
return true;
181-
case 0x10: // Stat
178+
case mc_opcode_stat:
182179
currentMessage_.emplace<McStatsRequest>();
183180
consumer_ = &McServerBinaryParser::consumeGetLike<McStatsRequest, false, false>;
184181
return true;
185-
case 0x0b: // Version
182+
case mc_opcode_version:
186183
currentMessage_.emplace<McVersionRequest>();
187184
consumer_ = &McServerBinaryParser::consumeVersion;
188185
return true;
189-
case 0x07: // Quit
186+
case mc_opcode_quit:
190187
currentMessage_.emplace<McQuitRequest>();
191188
consumer_ = &McServerBinaryParser::consumeQuit<false>;
192189
return true;
193-
case 0x17: // QuitQ
190+
case mc_opcode_quitq:
194191
currentMessage_.emplace<McQuitRequest>();
195192
consumer_ = &McServerBinaryParser::consumeQuit<true>;
196193
return true;
197-
case 0x08: // Flush
194+
case mc_opcode_flush:
198195
currentMessage_.emplace<McFlushAllRequest>();
199196
consumer_ = &McServerBinaryParser::consumeFlush<false>;
200197
return true;
201-
case 0x18: // FlushQ
198+
case mc_opcode_flushq:
202199
currentMessage_.emplace<McFlushAllRequest>();
203200
consumer_ = &McServerBinaryParser::consumeFlush<true>;
204201
return true;
205-
/*
206-
case 0x20: // SASL list mechs
207-
case 0x21: // SASL Auth
208-
case 0x22: // SASL Step
209-
210-
// Range operations, not implemented in memcached itself
211-
case 0x31: // RSet
212-
case 0x32: // RSetQ
213-
case 0x33: // RAppend
214-
case 0x34: // RAppendQ
215-
case 0x35: // RPrepend
216-
case 0x36: // RPrependQ
217-
case 0x30: // RGet
218-
case 0x37: // RDelete
219-
case 0x38: // RDeleteQ
220-
case 0x39: // RIncr
221-
case 0x3a: // RIncrQ
222-
case 0x3b: // RDecr
223-
case 0x3c: // RDecrQ
224-
202+
case mc_opcode_noop:
203+
// SASL commands
204+
case mc_opcode_sasllistmechs:
205+
case mc_opcode_saslauth:
206+
case mc_opcode_saslstep:
207+
// Range commands
208+
case mc_opcode_rset:
209+
case mc_opcode_rsetq:
210+
case mc_opcode_rappend:
211+
case mc_opcode_rappendq:
212+
case mc_opcode_rprepend:
213+
case mc_opcode_rprependq:
214+
case mc_opcode_rget:
215+
case mc_opcode_rdelete:
216+
case mc_opcode_rdeleteq:
217+
case mc_opcode_rincr:
218+
case mc_opcode_rincrq:
219+
case mc_opcode_rdecr:
220+
case mc_opcode_rdecrq:
225221
// v1.6 proposed commands
226-
case 0x3d: // Set VBucket *
227-
case 0x45: // TAP VBucket Set *
228-
case 0x3e: // Get VBucket *
229-
case 0x42: // TAP Delete *
230-
231-
case 0x1b: // Verbosity *
232-
case 0x43: // TAP Flush *
233-
case 0x3f: // Del VBucket *
234-
case 0x40: // TAP Connect *
235-
case 0x41: // TAP Mutation *
236-
case 0x44: // TAP Opaque *
237-
case 0x46: // TAP Checkpoint Start *
238-
case 0x47: // TAP Checkpoint End *
239-
*/
222+
case mc_opcode_setvbucket:
223+
case mc_opcode_tapvbucketset:
224+
case mc_opcode_getvbucket:
225+
case mc_opcode_tapdelete:
226+
case mc_opcode_verosity:
227+
case mc_opcode_tapflush:
228+
case mc_opcode_delvbucket:
229+
case mc_opcode_tapconnect:
230+
case mc_opcode_tapmutation:
231+
case mc_opcode_tapopaque:
232+
case mc_opcode_tapcheckpointstart:
233+
case mc_opcode_tapcheckpointend::
240234
default:
241235
return false;
242236
}

0 commit comments

Comments
 (0)