diff --git a/src/client.py b/src/client.py --- a/src/client.py +++ b/src/client.py @@ -17,13 +17,8 @@ class Connection: fr=self.socket.makefile(mode="rb") fw=self.socket.makefile(mode="wb") - networkReader=NetworkReader(fr) - networkReader.start() - networkWriter=NetworkWriter(fw) - networkWriter.start() - - self.incoming=networkReader.output # synchronized message queue - self.outcoming=networkWriter.input + self.incoming=NetworkReader(fr) + self.outcoming=NetworkWriter(fw) def __enter__(self): return self.incoming,self.outcoming @@ -40,16 +35,15 @@ def negotiate(): # initialize session with Connection() as (incoming,outcoming): jsonData={"command":"init", "blockSize":localTree.BLOCK_SIZE, "blockCount":localTree.leafCount, "version":conf.version} - outcoming.put((jsonData,b"")) + outcoming.writeMsg(jsonData) # determine which blocks to send while len(nodeStack)>0: with Connection() as (incoming,outcoming): i=nodeStack.pop() - jsonData={"command":"req", "index":i} - outcoming.put((jsonData,b"")) + outcoming.writeMsg({"command":"req", "index":i}) - jsonData,binData=incoming.get(timeout=2) + jsonData,binData=incoming.readMsg() assert jsonData["index"]==i assert jsonData["dataType"]=="hash" @@ -76,12 +70,11 @@ def sendData(blocksToTransfer): print("block #{0}: {1}...{2}".format(i2,binData[:5],binData[-5:])) - outcoming.put((jsonData,binData),timeout=2) + outcoming.writeMsg(jsonData,binData) i1=i2 with Connection() as (incoming,outcoming): - jsonData={"command":"end"} - outcoming.put((jsonData,b""),timeout=2) + outcoming.writeMsg({"command":"end"}) print("closing...") dataFile.close()