Author: dreiss
Date: Sat Jan 31 21:39:20 2009
New Revision: 739631
URL: http://svn.apache.org/viewvc?rev=739631&view=rev
Log:
python: Make TFramedTransport use a cStringIO for reading
Tested by running a client against a framed-transport server.
Modified:
incubator/thrift/trunk/lib/py/src/transport/TTransport.py
Modified: incubator/thrift/trunk/lib/py/src/transport/TTransport.py
URL:
http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/py/src/transport/TTransport.py?rev=739631&r1=739630&r2=739631&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/py/src/transport/TTransport.py (original)
+++ incubator/thrift/trunk/lib/py/src/transport/TTransport.py Sat Jan 31
21:39:20 2009
@@ -234,7 +234,7 @@
def __init__(self, trans,):
self.__trans = trans
- self.__rbuf = ''
+ self.__rbuf = StringIO()
self.__wbuf = StringIO()
def isOpen(self):
@@ -247,17 +247,17 @@
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)