python: Add TFileObjectTransport
authorDavid Reiss <dreiss@apache.org>
Sat, 31 Jan 2009 21:59:27 +0000 (21:59 +0000)
committerDavid Reiss <dreiss@apache.org>
Sat, 31 Jan 2009 21:59:27 +0000 (21:59 +0000)
TFileObjectTransport is a Thrift transport that wraps a
Python-style file-like object.  This is necessary to add
methods like isOpen and readAll.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@739637 13f79535-47bb-0310-9956-ffa450edef68

lib/py/src/transport/TTransport.py

index 67f97ba..a83ac25 100644 (file)
@@ -289,3 +289,25 @@ class TFramedTransport(TTransportBase, CReadableTransport):
       prefix += self.__rbuf.getvalue()
     self.__rbuf = StringIO(prefix)
     return self.__rbuf
+
+
+class TFileObjectTransport(TTransportBase):
+  """Wraps a file-like object to make it work as a Thrift transport."""
+
+  def __init__(self, fileobj):
+    self.fileobj = fileobj
+
+  def isOpen(self):
+    return True
+
+  def close(self):
+    self.fileobj.close()
+
+  def read(self, sz):
+    return self.fileobj.read(sz)
+
+  def write(self, buf):
+    self.fileobj.write(buf)
+
+  def flush(self):
+    self.fileobj.flush()