18
18
--
19
19
20
20
require ' TProtocol'
21
- require ' libluabpack'
22
- require ' libluabitwise'
23
- require ' liblualongnumber'
21
+ local libluabpack = require ' libluabpack'
22
+ local libluabitwise = require ' libluabitwise'
23
+ local liblualongnumber = require ' liblualongnumber'
24
24
25
25
TCompactProtocol = __TObject .new (TProtocolBase , {
26
26
__type = ' TCompactProtocol' ,
@@ -61,7 +61,8 @@ TCompactType = {
61
61
COMPACT_LIST = 0x09 ,
62
62
COMPACT_SET = 0x0A ,
63
63
COMPACT_MAP = 0x0B ,
64
- COMPACT_STRUCT = 0x0C
64
+ COMPACT_STRUCT = 0x0C ,
65
+ COMPACT_UUID = 0x0D ,
65
66
}
66
67
67
68
TTypeToCompactType = {}
@@ -77,21 +78,23 @@ TTypeToCompactType[TType.LIST] = TCompactType.COMPACT_LIST
77
78
TTypeToCompactType [TType .SET ] = TCompactType .COMPACT_SET
78
79
TTypeToCompactType [TType .MAP ] = TCompactType .COMPACT_MAP
79
80
TTypeToCompactType [TType .STRUCT ] = TCompactType .COMPACT_STRUCT
81
+ TTypeToCompactType [TType .UUID ] = TCompactType .COMPACT_UUID
80
82
81
83
CompactTypeToTType = {}
82
- CompactTypeToTType [TType .STOP ] = TType .STOP
83
- CompactTypeToTType [TCompactType .COMPACT_BOOLEAN_TRUE ] = TType .BOOL
84
+ CompactTypeToTType [TType .STOP ] = TType .STOP
85
+ CompactTypeToTType [TCompactType .COMPACT_BOOLEAN_TRUE ] = TType .BOOL
84
86
CompactTypeToTType [TCompactType .COMPACT_BOOLEAN_FALSE ] = TType .BOOL
85
- CompactTypeToTType [TCompactType .COMPACT_BYTE ] = TType .BYTE
86
- CompactTypeToTType [TCompactType .COMPACT_I16 ] = TType .I16
87
- CompactTypeToTType [TCompactType .COMPACT_I32 ] = TType .I32
88
- CompactTypeToTType [TCompactType .COMPACT_I64 ] = TType .I64
89
- CompactTypeToTType [TCompactType .COMPACT_DOUBLE ] = TType .DOUBLE
90
- CompactTypeToTType [TCompactType .COMPACT_BINARY ] = TType .STRING
91
- CompactTypeToTType [TCompactType .COMPACT_LIST ] = TType .LIST
92
- CompactTypeToTType [TCompactType .COMPACT_SET ] = TType .SET
93
- CompactTypeToTType [TCompactType .COMPACT_MAP ] = TType .MAP
94
- CompactTypeToTType [TCompactType .COMPACT_STRUCT ] = TType .STRUCT
87
+ CompactTypeToTType [TCompactType .COMPACT_BYTE ] = TType .BYTE
88
+ CompactTypeToTType [TCompactType .COMPACT_I16 ] = TType .I16
89
+ CompactTypeToTType [TCompactType .COMPACT_I32 ] = TType .I32
90
+ CompactTypeToTType [TCompactType .COMPACT_I64 ] = TType .I64
91
+ CompactTypeToTType [TCompactType .COMPACT_DOUBLE ] = TType .DOUBLE
92
+ CompactTypeToTType [TCompactType .COMPACT_BINARY ] = TType .STRING
93
+ CompactTypeToTType [TCompactType .COMPACT_LIST ] = TType .LIST
94
+ CompactTypeToTType [TCompactType .COMPACT_SET ] = TType .SET
95
+ CompactTypeToTType [TCompactType .COMPACT_MAP ] = TType .MAP
96
+ CompactTypeToTType [TCompactType .COMPACT_STRUCT ] = TType .STRUCT
97
+ CompactTypeToTType [TCompactType .COMPACT_UUID ] = TType .UUID
95
98
96
99
function TCompactProtocol :resetLastField ()
97
100
self .lastField = {}
@@ -197,6 +200,11 @@ function TCompactProtocol:writeI32(i32)
197
200
self :writeVarint32 (libluabpack .i32ToZigzag (i32 ))
198
201
end
199
202
203
+ function TCompactProtocol :writeUI32 (i32 )
204
+ local buff = libluabpack .bpack (' I' , i32 )
205
+ self .trans :write (buff )
206
+ end
207
+
200
208
function TCompactProtocol :writeI64 (i64 )
201
209
self :writeVarint64 (libluabpack .i64ToZigzag (i64 ))
202
210
end
@@ -211,6 +219,13 @@ function TCompactProtocol:writeString(str)
211
219
self :writeBinary (str )
212
220
end
213
221
222
+ function TCompactProtocol :writeUuid (uuid )
223
+ self :writeUI32 (uuid .two )
224
+ self :writeUI32 (uuid .three )
225
+ self :writeUI32 (uuid .zero )
226
+ self :writeUI32 (uuid .one )
227
+ end
228
+
214
229
function TCompactProtocol :writeBinary (str )
215
230
-- Should be utf-8
216
231
self :writeVarint32 (string.len (str ))
@@ -385,6 +400,12 @@ function TCompactProtocol:readI32()
385
400
return value
386
401
end
387
402
403
+ function TCompactProtocol :readUI32 ()
404
+ local buff = self .trans :readAll (4 )
405
+ local val = libluabpack .bunpack (' I' , buff )
406
+ return val
407
+ end
408
+
388
409
function TCompactProtocol :readI64 ()
389
410
local value = self :readVarint64 ()
390
411
return value
@@ -400,6 +421,19 @@ function TCompactProtocol:readString()
400
421
return self :readBinary ()
401
422
end
402
423
424
+ function TCompactProtocol :readUuid ()
425
+ local a = self :readUI32 ()
426
+ local b = self :readUI32 ()
427
+ local c = self :readUI32 ()
428
+ local d = self :readUI32 ()
429
+ return TUUID :new {
430
+ zero = c ,
431
+ one = d ,
432
+ two = a ,
433
+ three = b
434
+ }
435
+ end
436
+
403
437
function TCompactProtocol :readBinary ()
404
438
local size = self :readVarint32 ()
405
439
if size <= 0 then
0 commit comments