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: 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) self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try: try:
self.sock.bind(host_port_pair) self.sock.bind(host_port_pair)
@ -21,13 +21,18 @@ class Server:
self.sock.listen(2) self.sock.listen(2)
self.handlers = [] self.handlers = []
self.debug = debug self.debug = debug
self.compression_level = compression_level
def run(self, handler, handler_args={}): def run(self, handler, handler_args={}):
self.handler = handler self.handler = handler
while 1: while 1:
sock, info = self.sock.accept() 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) handler = self.handler(sock, info, **handler_args)
self.handlers.append(handler) self.handlers.append(handler)
_thread.start_new_thread(self.controller, (handler, )) _thread.start_new_thread(self.controller, (handler, ))

View file

@ -213,6 +213,7 @@ config.add(Config.Option("server_address", ("127.0.0.1", 3077)))
config.add(Config.Option("debug", True, validator=lambda x: True if True or False else False)) config.add(Config.Option("debug", True, validator=lambda x: True if True or False else False))
config.add(Config.Option("binary_path", "Binaries", validator=folder_validator)) config.add(Config.Option("binary_path", "Binaries", validator=folder_validator))
config.add(Config.Option("source_path", "Source", validator=folder_validator)) config.add(Config.Option("source_path", "Source", validator=folder_validator))
config.add(Config.Option("compression_level", 0, validator=lambda x: x >= 0 and x <= 9))
try: try:
config = config.read_from_file(CONFIG_PATH) config = config.read_from_file(CONFIG_PATH)
@ -220,7 +221,7 @@ except FileNotFoundError:
config.write_to_file(CONFIG_PATH) config.write_to_file(CONFIG_PATH)
config = config.read_from_file(CONFIG_PATH) config = config.read_from_file(CONFIG_PATH)
server = Server(config.server_address, debug=config.debug) server = Server(config.server_address, debug=config.debug, compression_level=config.compression_level)
broadcast = Broadcast() broadcast = Broadcast()
# Populating broadcast channels with all channels defined in Handler.Channels # Populating broadcast channels with all channels defined in Handler.Channels

View file

@ -157,10 +157,13 @@ class Fl0w:
def connect(self, connect_details): def connect(self, connect_details):
connect_details_raw = connect_details connect_details_raw = connect_details
connect_details = connect_details.split(":") connect_details = connect_details.split(":")
compression_level = int(sublime.load_settings("fl0w.sublime-settings").get("compression_level"))
if len(connect_details) == 2: if len(connect_details) == 2:
try: try:
# Establish connection to the server # Establish connection to the server
self.sock = ESock(socket.create_connection((connect_details[0], int(connect_details[1]))), disconnect_callback=self.invoke_disconnect, debug=False) self.sock = ESock(socket.create_connection((connect_details[0], int(connect_details[1]))),
disconnect_callback=self.invoke_disconnect, debug=False, compression_level=compression_level)
sublime.status_message("Connected to %s:%s." % (connect_details[0], connect_details[1])) sublime.status_message("Connected to %s:%s." % (connect_details[0], connect_details[1]))
# Initialize all routes # Initialize all routes
error_report = Fl0w.ErrorReport() error_report = Fl0w.ErrorReport()

View file

@ -1,3 +1,4 @@
{ {
"server_address": "" // Last server address "server_address": "", // Last server address
"compression_level": 2
} }

View file

@ -125,6 +125,7 @@ config = Config.Config()
config.add(Config.Option("server_address", ("127.0.0.1", 3077))) config.add(Config.Option("server_address", ("127.0.0.1", 3077)))
config.add(Config.Option("debug", True, validator=lambda x: True if True or False else False)) config.add(Config.Option("debug", True, validator=lambda x: True if True or False else False))
config.add(Config.Option("output_unbuffer", "stdbuf")) config.add(Config.Option("output_unbuffer", "stdbuf"))
config.add(Config.Option("compression_level", 0, validator=lambda x: x >= 0 and x <= 9))
try: try:
config = config.read_from_file(CONFIG_PATH) config = config.read_from_file(CONFIG_PATH)