diff options
| author | troido <troido@protonmail.com> | 2020-04-23 09:49:41 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-04-23 09:49:41 +0200 |
| commit | 4021d17bbc7e9d3ca3f54fdd5e0545c170e9752b (patch) | |
| tree | 228871d56ed53446397159431e8e8cbf6801b4d0 /asciifarmclient | |
| parent | 550f9b7b4cbf7ddacc88c2762893d8860566bfdf (diff) | |
gave more message parsing code to the connection
Diffstat (limited to 'asciifarmclient')
| -rw-r--r-- | asciifarmclient/connection.py | 17 | ||||
| -rw-r--r-- | asciifarmclient/gameclient.py | 17 |
2 files changed, 19 insertions, 15 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()) diff --git a/asciifarmclient/gameclient.py b/asciifarmclient/gameclient.py index b78a693..d705b59 100644 --- a/asciifarmclient/gameclient.py +++ b/asciifarmclient/gameclient.py @@ -4,10 +4,6 @@ import os import sys import threading -import json -import getpass -import argparse -import string from queue import Queue import ratuil.inputs @@ -35,7 +31,7 @@ class Client: def sendMessage(self, message): - self.connection.send(message.to_json_bytes()) + self.connection.send(message) def sendInput(self, inp): message = messages.InputMessage(inp) @@ -57,8 +53,8 @@ class Client: def listen(self): self.connection.listen(self.pushMessage, self.onConnectionError) - def pushMessage(self, databytes): - self.queue.put(("message", databytes)) + def pushMessage(self, message): + self.queue.put(("message", message)) def onConnectionError(self, error): self.queue.put(("error", error)) @@ -73,13 +69,10 @@ class Client: self.closeMessage = msg - def update(self, databytes): - if len(databytes) == 0: + def update(self, message): + if message is None: self.close("Connection closed by server") return - datastr = databytes.decode('utf-8') - msg = json.loads(datastr) - message = messages.messages[msg[0]].from_json(msg) if isinstance(message, messages.ErrorMessage): error = message.errType if error == "nametaken": |
