diff options
Diffstat (limited to 'asciifarmclient/connection.py')
| -rw-r--r-- | asciifarmclient/connection.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/asciifarmclient/connection.py b/asciifarmclient/connection.py index 370ef8a..bdcc913 100644 --- a/asciifarmclient/connection.py +++ b/asciifarmclient/connection.py @@ -2,6 +2,8 @@ import socket from asciifarmclient.common.tcommunicate import send, receive +from asciifarmclient.common import messages +import json class Connection: @@ -17,14 +19,23 @@ class Connection: def connect(self, address): self.sock.connect(address) + def receive(self): + databytes = receive(self.sock) + if len(databytes) == 0: + return None + datastr = databytes.decode('utf-8') + msg = json.loads(datastr) + message = messages.messages[msg[0]].from_json(msg) + return message + def listen(self, callback, onError): while True: try: - data = receive(self.sock) + message = self.receive() except Exception as err: onError(err) else: - callback(data) + callback(message) def send(self, message): - send(self.sock, message) + send(self.sock, message.to_json_bytes()) |
