Add configuration entries for setting the compression level used by ESock.

On the ST client and on the server, compression_level defaults to 2,
on the Wallaby client to 0 because of limited resources and longer
battery-life.
This commit is contained in:
Christoph Heiss 2016-04-15 10:11:48 +02:00
parent a6de0790dd
commit 306d629d0b
5 changed files with 33 additions and 22 deletions

View file

@ -11,7 +11,7 @@ import _thread
class Server:
def __init__(self, host_port_pair, debug=False):
def __init__(self, host_port_pair, debug=False, compression_level=None):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
self.sock.bind(host_port_pair)
@ -21,13 +21,18 @@ class Server:
self.sock.listen(2)
self.handlers = []
self.debug = debug
self.compression_level = compression_level
def run(self, handler, handler_args={}):
self.handler = handler
while 1:
sock, info = self.sock.accept()
sock = ESock(sock) if not self.debug else ESock(sock, debug=self.debug)
if self.compression_level:
sock = ESock(sock, debug=self.debug, compression_level=self.compression_level)
else:
sock = ESock(sock, debug=self.debug)
handler = self.handler(sock, info, **handler_args)
self.handlers.append(handler)
_thread.start_new_thread(self.controller, (handler, ))
@ -60,11 +65,11 @@ class Server:
handler.finish()
except Exception:
self.print_trace(sock)
finally:
finally:
if handler in self.handlers:
del self.handlers[self.handlers.index(handler)]
handler.sock.close()
class Handler:
def __init__(self, sock, info, **kwargs):
@ -79,4 +84,4 @@ class Server:
pass
def finish(self):
pass
pass