summaryrefslogtreecommitdiffstats
path: root/module/remote/thriftbackend/Transport.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/remote/thriftbackend/Transport.py')
-rw-r--r--module/remote/thriftbackend/Transport.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/module/remote/thriftbackend/Transport.py b/module/remote/thriftbackend/Transport.py
index 50638f461..5772c5a9e 100644
--- a/module/remote/thriftbackend/Transport.py
+++ b/module/remote/thriftbackend/Transport.py
@@ -1,15 +1,37 @@
# -*- coding: utf-8 -*-
from thrift.transport.TTransport import TBufferedTransport
+from thrift.transport.TZlibTransport import TZlibTransport
class Transport(TBufferedTransport):
DEFAULT_BUFFER = 4096
def __init__(self, trans, rbuf_size = DEFAULT_BUFFER):
TBufferedTransport.__init__(self, trans, rbuf_size)
+ self.handle = trans.handle
+ self.remoteaddr = trans.handle.getpeername()
+
+class TransportCompressed(TZlibTransport):
+ DEFAULT_BUFFER = 4096
+
+ def __init__(self, trans, rbuf_size = DEFAULT_BUFFER):
+ TZlibTransport.__init__(self, trans, rbuf_size)
+ self.handle = trans.handle
self.remoteaddr = trans.handle.getpeername()
class TransportFactory:
def getTransport(self, trans):
buffered = Transport(trans)
return buffered
+
+class TransportFactoryCompressed:
+ _last_trans = None
+ _last_z = None
+
+ def getTransport(self, trans, compresslevel=9):
+ if trans == self._last_trans:
+ return self._last_z
+ ztrans = TransportCompressed(Transport(trans), compresslevel)
+ self._last_trans = trans
+ self._last_z = ztrans
+ return ztrans \ No newline at end of file