diff --git a/src/client.py b/src/client.py --- a/src/client.py +++ b/src/client.py @@ -1,9 +1,11 @@ -from hashtree import HashTree -import collections +import collections import socket import logging as log +from datetime import datetime import config as conf +from util import progress +from hashtree import HashTree from networkers import NetworkReader,NetworkWriter @@ -29,6 +31,7 @@ class Client: self.filename=filename def negotiate(self): + print(datetime.now(), "initializing...") localTree=HashTree.fromFile(self.filename) blocksToTransfer=[] nodeStack=collections.deque([0]) # root @@ -39,6 +42,7 @@ class Client: outcoming.writeMsg(jsonData) # determine which blocks to send + print(datetime.now(), "negotiating:") while len(nodeStack)>0: with Connection() as (incoming,outcoming): i=nodeStack.pop() @@ -52,7 +56,10 @@ class Client: if 2*i+3<len(localTree.store): # inner node nodeStack.append(2*i+2) nodeStack.append(2*i+1) - else: blocksToTransfer.append(i-localTree.leafStart) # leaf + else: + blocksToTransfer.append(i-localTree.leafStart) # leaf + progress(i-localTree.leafStart, localTree.leafCount) + print("100%") return blocksToTransfer @@ -61,7 +68,8 @@ class Client: dataFile=open(self.filename,mode="rb") i1=-1 - for i2 in blocksToTransfer: + print(datetime.now(), "sending data:") + for (k,i2) in enumerate(blocksToTransfer): with Connection() as (incoming,outcoming): jsonData={"command":"send", "index":i2, "dataType":"data"} if i1+1!=i2: @@ -71,10 +79,12 @@ class Client: log.info("block #{0}: {1}...{2}".format(i2,binData[:5],binData[-5:])) outcoming.writeMsg(jsonData,binData) - i1=i2 + i1=i2 + progress(k,len(blocksToTransfer)) + print("100%") with Connection() as (incoming,outcoming): outcoming.writeMsg({"command":"end"}) - log.info("closing session...") + log.info(datetime.now(), "closing session...") dataFile.close()