Files @ 5c80ca07f00c
Branch filter:

Location: Morevna/src/networkers.py

Laman
reformatted whitespace with more respect for PEP-8
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))