Files
@ 6a0ab4fe9f5e
Branch filter:
Location: Morevna/src/networkers.py - annotation
6a0ab4fe9f5e
1.3 KiB
text/x-python
changed naming to snake case. sadly no love for camel case in this world
34f4027c1bd6 34f4027c1bd6 41ea9614ce8c 41ea9614ce8c 34f4027c1bd6 34f4027c1bd6 5c80ca07f00c 5c80ca07f00c 34f4027c1bd6 6a0ab4fe9f5e 5c80ca07f00c dad65188b1a0 6a0ab4fe9f5e 6a0ab4fe9f5e 41ea9614ce8c 5c80ca07f00c dad65188b1a0 6a0ab4fe9f5e 6a0ab4fe9f5e 41ea9614ce8c 6a0ab4fe9f5e 6a0ab4fe9f5e 6a0ab4fe9f5e 6a0ab4fe9f5e 41ea9614ce8c 6a0ab4fe9f5e 6a0ab4fe9f5e 6a0ab4fe9f5e 34f4027c1bd6 6a0ab4fe9f5e 34f4027c1bd6 34f4027c1bd6 34f4027c1bd6 5c80ca07f00c 5c80ca07f00c 34f4027c1bd6 6a0ab4fe9f5e 6a0ab4fe9f5e 026618d6681b 026618d6681b 6a0ab4fe9f5e 34f4027c1bd6 6a0ab4fe9f5e 6a0ab4fe9f5e 6a0ab4fe9f5e 6a0ab4fe9f5e dad65188b1a0 6a0ab4fe9f5e | import json
import stats
class NetworkReader:
def __init__(self, stream):
self._stream = stream
def read_msg(self):
data = self._stream.readline()
assert data
stats.log_received(data)
json_length = int(data.split(b":")[1].strip()) # "json-length: length" -> length
data = self._stream.readline()
assert data
stats.log_received(data)
bin_length = int(data.split(b":")[1].strip()) # "bin-length: length" -> length
json_data = self._stream.read(json_length)
assert len(json_data)==json_length
stats.log_received(json_data)
json_data = json.loads(str(json_data, encoding="utf-8"))
bin_data = self._stream.read(bin_length)
assert len(bin_data)==bin_length
stats.log_received(bin_data)
return (json_data, bin_data)
class NetworkWriter:
def __init__(self, stream):
self._stream = stream
def write_msg(self, *args):
msg = self.prep_msg(*args)
self._stream.write(msg)
self._stream.flush()
stats.log_sent(msg)
def prep_msg(self, json_data, bin_data=b""):
json_data = bytes(json.dumps(json_data, separators=(',', ':'))+"\n", encoding="utf-8")
json_length = bytes("json-length: "+str(len(json_data))+"\n", encoding="utf-8")
bin_length = bytes("bin-length: "+str(len(bin_data))+"\n", encoding="utf-8")
return b"".join((json_length, bin_length, json_data, bin_data))
|