largefiles: drop lfutil.blockstream - use filechunkiter like everybody else
authorMads Kiilerich <madski@unity3d.com>
Mon, 15 Apr 2013 23:43:44 +0200
changeset 19001 2a35296a6304
parent 19000 eaf146e811a4
child 19002 5083baa6cbf8
largefiles: drop lfutil.blockstream - use filechunkiter like everybody else The old chunk size is kept - just to avoid changing it.
hgext/largefiles/lfutil.py
hgext/largefiles/overrides.py
hgext/largefiles/remotestore.py
--- a/hgext/largefiles/lfutil.py	Mon Apr 15 23:35:43 2013 +0200
+++ b/hgext/largefiles/lfutil.py	Mon Apr 15 23:43:44 2013 +0200
@@ -311,7 +311,7 @@
         return ''
     hasher = util.sha1('')
     fd = open(file, 'rb')
-    for data in blockstream(fd):
+    for data in util.filechunkiter(fd, 128 * 1024):
         hasher.update(data)
     fd.close()
     return hasher.hexdigest()
@@ -331,16 +331,6 @@
     def close(self):
         pass
 
-def blockstream(infile, blocksize=128 * 1024):
-    """Generator that yields blocks of data from infile and closes infile."""
-    while True:
-        data = infile.read(blocksize)
-        if not data:
-            break
-        yield data
-    # same blecch as copyandhash() above
-    infile.close()
-
 def writehash(hash, filename, executable):
     util.makedirs(os.path.dirname(filename))
     util.writefile(filename, hash + '\n')
--- a/hgext/largefiles/overrides.py	Mon Apr 15 23:35:43 2013 +0200
+++ b/hgext/largefiles/overrides.py	Mon Apr 15 23:43:44 2013 +0200
@@ -1198,7 +1198,7 @@
                           'downloaded')  % lf)
             path = lfutil.usercachepath(repo.ui, hash)
             fpin = open(path, "rb")
-            for chunk in lfutil.blockstream(fpin):
+            for chunk in util.filechunkiter(fpin, 128 * 1024):
                 fp.write(chunk)
             fpin.close()
         fp.close()
--- a/hgext/largefiles/remotestore.py	Mon Apr 15 23:35:43 2013 +0200
+++ b/hgext/largefiles/remotestore.py	Mon Apr 15 23:43:44 2013 +0200
@@ -74,7 +74,11 @@
         # Mercurial does not close its SSH connections after writing a stream
         if length is not None:
             infile = lfutil.limitreader(infile, length)
-        return lfutil.copyandhash(lfutil.blockstream(infile), tmpfile)
+        try:
+            return lfutil.copyandhash(util.filechunkiter(infile, 128 * 1024),
+                                      tmpfile)
+        finally:
+            infile.close()
 
     def _verifyfile(self, cctx, cset, contents, standin, verified):
         filename = lfutil.splitstandin(standin)