Files
@ 5c80ca07f00c
Branch filter:
Location: Morevna/src/networkers.py - annotation
5c80ca07f00c
1.3 KiB
text/x-python
reformatted whitespace with more respect for PEP-8
34f4027c1bd6 34f4027c1bd6 41ea9614ce8c 41ea9614ce8c 34f4027c1bd6 34f4027c1bd6 5c80ca07f00c 5c80ca07f00c 34f4027c1bd6 34f4027c1bd6 5c80ca07f00c dad65188b1a0 41ea9614ce8c 5c80ca07f00c 41ea9614ce8c 5c80ca07f00c dad65188b1a0 41ea9614ce8c 5c80ca07f00c 41ea9614ce8c 5c80ca07f00c dad65188b1a0 41ea9614ce8c 5c80ca07f00c 41ea9614ce8c 5c80ca07f00c dad65188b1a0 41ea9614ce8c 34f4027c1bd6 5c80ca07f00c 34f4027c1bd6 34f4027c1bd6 34f4027c1bd6 5c80ca07f00c 5c80ca07f00c 34f4027c1bd6 5c80ca07f00c 5c80ca07f00c 026618d6681b 026618d6681b 41ea9614ce8c 34f4027c1bd6 5c80ca07f00c 5c80ca07f00c 5c80ca07f00c 5c80ca07f00c dad65188b1a0 5c80ca07f00c | import json
import stats
class NetworkReader:
def __init__(self, stream):
self._stream = stream
def readMsg(self):
data = self._stream.readline()
assert data
stats.logReceived(data)
jsonLength = int(data.split(b":")[1].strip()) # "json-length: length" -> length
data = self._stream.readline()
assert data
stats.logReceived(data)
binLength = int(data.split(b":")[1].strip()) # "bin-length: length" -> length
jsonData = self._stream.read(jsonLength)
assert len(jsonData)==jsonLength
stats.logReceived(jsonData)
jsonData = json.loads(str(jsonData,encoding="utf-8"))
binData = self._stream.read(binLength)
assert len(binData)==binLength
stats.logReceived(binData)
return (jsonData, binData)
class NetworkWriter:
def __init__(self, stream):
self._stream = stream
def writeMsg(self, *args):
msg = self.prepMsg(*args)
self._stream.write(msg)
self._stream.flush()
stats.logSent(msg)
def prepMsg(self, jsonData, binData=b""):
jsonData = bytes(json.dumps(jsonData,separators=(',',':'))+"\n", encoding="utf-8")
jsonLength = bytes("json-length: "+str(len(jsonData))+"\n", encoding="utf-8")
binLength = bytes("bin-length: "+str(len(binData))+"\n", encoding="utf-8")
return b"".join((jsonLength, binLength, jsonData, binData))
|