From 647d30d218d206474d583d0189bb8169f741e7d9 Mon Sep 17 00:00:00 2001 From: David Reiss Date: Sat, 31 Jan 2009 21:39:20 +0000 Subject: [PATCH] python: Make TFramedTransport use a cStringIO for reading Tested by running a client against a framed-transport server. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@739631 13f79535-47bb-0310-9956-ffa450edef68 --- lib/py/src/transport/TTransport.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/py/src/transport/TTransport.py b/lib/py/src/transport/TTransport.py index db065fb8..ddb368f3 100644 --- a/lib/py/src/transport/TTransport.py +++ b/lib/py/src/transport/TTransport.py @@ -234,7 +234,7 @@ class TFramedTransport(TTransportBase): def __init__(self, trans,): self.__trans = trans - self.__rbuf = '' + self.__rbuf = StringIO() self.__wbuf = StringIO() def isOpen(self): @@ -247,17 +247,17 @@ class TFramedTransport(TTransportBase): return self.__trans.close() def read(self, sz): - if len(self.__rbuf) == 0: - self.readFrame() - give = min(len(self.__rbuf), sz) - buff = self.__rbuf[0:give] - self.__rbuf = self.__rbuf[give:] - return buff + ret = self.__rbuf.read(sz) + if len(ret) != 0: + return ret + + self.readFrame() + return self.__rbuf.read(sz) def readFrame(self): buff = self.__trans.readAll(4) sz, = unpack('!i', buff) - self.__rbuf = self.__trans.readAll(sz) + self.__rbuf = StringIO(self.__trans.readAll(sz)) def write(self, buf): self.__wbuf.write(buf) -- 2.17.1