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 | 
