diff options
Diffstat (limited to 'module/remote/thriftbackend/Transport.py')
-rw-r--r-- | module/remote/thriftbackend/Transport.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/module/remote/thriftbackend/Transport.py b/module/remote/thriftbackend/Transport.py new file mode 100644 index 000000000..7db4ba9d7 --- /dev/null +++ b/module/remote/thriftbackend/Transport.py @@ -0,0 +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(object): + def getTransport(self, trans): + buffered = Transport(trans) + return buffered + +class TransportFactoryCompressed(object): + _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 |