summaryrefslogtreecommitdiff
path: root/lib/lua
diff options
context:
space:
mode:
authorzzn <zineng1991@gmail.com>2015-06-04 19:05:55 +0800
committerRoger Meier <roger@apache.org>2015-06-14 20:50:03 +0200
commit9815c19d7ea39b8585c2848b523e7182bb26b4c7 (patch)
tree7ac381d7470f6ae322fc3e7dc9407ff7401f03f7 /lib/lua
parent9b3b8d4987a34ed732a0c3b9edb757d913c38647 (diff)
downloadthrift-9815c19d7ea39b8585c2848b523e7182bb26b4c7.tar.gz
THRIFT-3180 fix framed transport
This closes #515
Diffstat (limited to 'lib/lua')
-rw-r--r--lib/lua/TFramedTransport.lua11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/lua/TFramedTransport.lua b/lib/lua/TFramedTransport.lua
index 84ae3ecf2..437b70137 100644
--- a/lib/lua/TFramedTransport.lua
+++ b/lib/lua/TFramedTransport.lua
@@ -38,7 +38,7 @@ function TFramedTransport:new(obj)
error('You must provide ' .. ttype(self) .. ' with a trans')
end
- return TTransportBase:new(obj)
+ return TTransportBase.new(self, obj)
end
function TFramedTransport:isOpen()
@@ -69,7 +69,7 @@ function TFramedTransport:read(len)
end
local val = string.sub(self.rBuf, 0, len)
- self.rBuf = string.sub(self.rBuf, len)
+ self.rBuf = string.sub(self.rBuf, len+1)
return val
end
@@ -79,9 +79,6 @@ function TFramedTransport:__readFrame()
self.rBuf = self.trans:readAll(frame_len)
end
-function TFramedTransport:readAll(len)
- return self.trans:readAll(len)
-end
function TFramedTransport:write(buf, len)
if self.doWrite == false then
@@ -91,7 +88,7 @@ function TFramedTransport:write(buf, len)
if len and len < string.len(buf) then
buf = string.sub(buf, 0, len)
end
- self.wBuf = self.wBuf + buf
+ self.wBuf = self.wBuf .. buf
end
function TFramedTransport:flush()
@@ -102,6 +99,8 @@ function TFramedTransport:flush()
-- If the write fails we still want wBuf to be clear
local tmp = self.wBuf
self.wBuf = ''
+ local frame_len_buf = libluabpack.bpack("i", string.len(tmp))
+ self.trans:write(frame_len_buf)
self.trans:write(tmp)
self.trans:flush()
end