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)


Reply via email to