Compare commits

..
7 changed files with 33 additions and 21 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
from os.path import dirname, realpath, join
from setuptools import setup
from setuptools import setup, find_packages
here = dirname(realpath(__file__))
@@ -17,7 +17,7 @@ setup(
author='Avatao.com Innovative Learning Kft.',
author_email='support@avatao.com',
license='custom',
packages=['tfw'],
packages=find_packages(),
package_dir={'tfw': 'tfw'},
install_requires=requirements,
extras_require={
@@ -27,14 +27,15 @@ class MessageQueueHandler:
def _dispatch_messages(self):
for message in iter(self._queue.get, None):
message['typing'] = not self._queue.empty()
is_queue_empty = self._queue.empty()
message['typing'] = not is_queue_empty
self.connector.send_message(message)
self._sleep(self._get_sleep_time(message))
self._sleep(self._get_sleep_time(message, is_queue_empty))
def _get_sleep_time(self, message):
def _get_sleep_time(self, message, is_queue_empty):
words_per_min = message['wpm'] if 'wpm' in message else self.wpm
chars_per_min = self.avg_word_len * words_per_min / 60
return len(message['message']) / chars_per_min
return 0 if is_queue_empty else len(message['message']) / chars_per_min
def _sleep(self, seconds):
poll_freq = self.drain_poll_freq
+9 -8
View File
@@ -1,17 +1,22 @@
DEFAULT_ORIGINATOR = 'avataobot'
class MessageSender:
def __init__(self, uplink):
self.uplink = uplink
def send(self, message, originator=None):
def send(self, message, originator=DEFAULT_ORIGINATOR, buttons=None):
message = {
'key': 'message.send',
'message': message
}
if originator:
message['originator'] = originator
if buttons:
message['buttons'] = buttons
self.uplink.send_message(message)
def queue_messages(self, messages, originator=None):
def queue_messages(self, messages, originator=DEFAULT_ORIGINATOR, buttons=None):
message_queue = {
'key': 'message.queue',
'messages': []
@@ -21,10 +26,6 @@ class MessageSender:
if originator:
next_message['originator'] = originator
message_queue['messages'].append(next_message)
if buttons and message_queue['messages']:
message_queue['messages'][-1]['buttons'] = buttons
self.uplink.send_message(message_queue)
def set_originator(self, originator):
self.uplink.send_message({
'key': 'message.config',
'originator': originator
})
+1
View File
@@ -79,6 +79,7 @@ class IdeHandler:
def read(self, message):
if 'patterns' in message:
self.filemanager.patterns = message['patterns']
self.monitor.paths = self.filemanager.parents
try:
message['filename'] = self.filemanager.find_file(
message.get('filename') or self.initial_file
@@ -17,7 +17,7 @@ class TerminadoMiniServer:
url,
TerminadoMiniServer.ResetterTermSocket,
{'term_manager': self._term_manager}
)])
)], websocket_ping_interval=30)
@property
def term_manager(self):
@@ -33,10 +33,6 @@ class TerminadoMiniServer:
def check_origin(self, origin):
return True
def on_close(self):
self.term_manager.terminal = None
self.term_manager.get_terminal()
def listen(self):
self.application.listen(self.port)
+14 -1
View File
@@ -42,7 +42,8 @@ def deserialize_tfw_msg(*args):
"""
Return message from TFW multipart data
"""
return _deserialize_all(*args)[1]
envelope = _deserialize_all(*args)
return _repair_if_needed(envelope)
def _serialize_all(*args):
@@ -84,6 +85,18 @@ def _deserialize_single(data):
return _decode_if_needed(data)
def _repair_if_needed(envelope):
"""
Quick fix for broken messages received from separate processes.
"""
if len(envelope) == 2:
return envelope[1]
for part in envelope:
if isinstance(part, dict):
return part
return {}
def _encode_if_needed(value):
"""
Return input as bytes
+1 -1
View File
@@ -28,7 +28,7 @@ class TFWServer:
r'/ws', ZMQWebSocketRouter, {
'listener': self._listener,
}
)])
)], websocket_ping_interval=30)
def listen(self):
self.application.listen(TFWENV.WEB_PORT)