Changeset - 13d0327a4abb
[Not reviewed]
default
0 3 1
Laman - 8 years ago 2017-05-08 13:16:05

rudimentary progress info
4 files changed with 24 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/client.py
Show inline comments
 
from hashtree import HashTree
 
import collections
 
import socket
 
import sys
 
import logging as log
 

	
 
import config as conf
src/hashtree.py
Show inline comments
 
import hashlib
 
import os
 

	
 
from util import progress
 

	
 

	
 
class HashTree:
 
	HASH_LEN=16 # bytes
 
@@ -20,10 +22,13 @@ class HashTree:
 
			size=stat.st_size # !! symlinks
 
			leafCount=(size-1)//HashTree.BLOCK_SIZE+1 # number of leaf blocks
 
			res=cls(leafCount)
 
			print("hashing file:")
 

	
 
			for i in range(leafCount):
 
				data=f.read(HashTree.BLOCK_SIZE)
 
				res.insertLeaf(hashlib.sha256(data).digest()[HashTree.HASH_LEN:])
 

	
 
				progress(i, leafCount)
 
		res.buildTree()
 
		
 
		return res
 
@@ -68,8 +73,10 @@ class HashTree:
 
			
 
	## Fast construction of the tree over the leaves. O(n).
 
	def buildTree(self):
 
		print("building tree:")
 
		for i in range(self.leafStart-1,-1,-1):
 
			self.store[i]=hashlib.sha256(self.store[i*2+1]+self.store[i*2+2]).digest()[HashTree.HASH_LEN:]
 
			progress(i, -1, self.leafStart - 1)
 

	
 

	
 
if __name__=="__main__":
src/morevna.py
Show inline comments
 
@@ -44,10 +44,10 @@ def serve(args):
 
parser=ArgumentParser()
 
subparsers=parser.add_subparsers()
 

	
 
pRebuild=subparsers.add_parser("build")
 
pRebuild.add_argument("treefile",help="stored hash tree location")
 
pRebuild.add_argument("datafile")
 
pRebuild.set_defaults(func=buildTree)
 
pBuild=subparsers.add_parser("build")
 
pBuild.add_argument("treefile", help="stored hash tree location")
 
pBuild.add_argument("datafile")
 
pBuild.set_defaults(func=buildTree)
 

	
 
pUpdate=subparsers.add_parser("update")
 
pUpdate.add_argument("-p","--port",type=int)
src/util.py
Show inline comments
 
new file 100644
 
def progress(i, n, i0=0):
 
	def _progress(i,n,i0):
 
		return 100*(i+1-i0)//(n-i0)
 

	
 
	if n<i0:
 
		i*=-1
 
		n*=-1
 
		i0*=-1
 
	assert i0<=i<n
 
	percentage=_progress(i,n,i0)
 
	if percentage>_progress(i-1,n,i0):
 
		print(r"{0}%".format(percentage),end="")
 
		if percentage==100: print()
0 comments (0 inline, 0 general)