THRIFT-4386 Add Lua 5.3/5.4 support
Clint: lua
Patch: Thomas Bruggink
This closes #3012
diff --git a/lib/lua/TBinaryProtocol.lua b/lib/lua/TBinaryProtocol.lua
index 4b8e98a..9eacc4a 100644
--- a/lib/lua/TBinaryProtocol.lua
+++ b/lib/lua/TBinaryProtocol.lua
@@ -18,8 +18,8 @@
--
require 'TProtocol'
-require 'libluabpack'
-require 'libluabitwise'
+local libluabpack = require 'libluabpack'
+local libluabitwise = require 'libluabitwise'
TBinaryProtocol = __TObject.new(TProtocolBase, {
__type = 'TBinaryProtocol',
@@ -111,6 +111,11 @@
self.trans:write(buff)
end
+function TBinaryProtocol:writeUI32(i32)
+ local buff = libluabpack.bpack('I', i32)
+ self.trans:write(buff)
+end
+
function TBinaryProtocol:writeI64(i64)
local buff = libluabpack.bpack('l', i64)
self.trans:write(buff)
@@ -127,6 +132,13 @@
self.trans:write(str)
end
+function TBinaryProtocol:writeUuid(uuid)
+ self:writeUI32(uuid.two)
+ self:writeUI32(uuid.three)
+ self:writeUI32(uuid.zero)
+ self:writeUI32(uuid.one)
+end
+
function TBinaryProtocol:readMessageBegin()
local sz, ttype, name, seqid = self:readI32()
if sz < 0 then
@@ -226,6 +238,12 @@
return val
end
+function TBinaryProtocol:readUI32()
+ local buff = self.trans:readAll(4)
+ local val = libluabpack.bunpack('I', buff)
+ return val
+end
+
function TBinaryProtocol:readI64()
local buff = self.trans:readAll(8)
local val = libluabpack.bunpack('l', buff)
@@ -244,6 +262,19 @@
return str
end
+function TBinaryProtocol:readUuid()
+ local a = self:readUI32()
+ local b = self:readUI32()
+ local c = self:readUI32()
+ local d = self:readUI32()
+ return TUUID:new {
+ zero = c,
+ one = d,
+ two = a,
+ three = b
+ }
+end
+
TBinaryProtocolFactory = TProtocolFactory:new{
__type = 'TBinaryProtocolFactory',
strictRead = false