# HG changeset patch # User Gregory Szorc # Date 1478573197 28800 # Node ID 5925bda42dbd457de3b68936a6cb418154cd7368 # Parent c86109eface722a3942c9314a55c9f8a325fe7bc bundle2: use compressstream compression engine API Compression engines now have an API for compressing a stream of chunks. Switch to it and make low-level compression code disappear. diff -r c86109eface7 -r 5925bda42dbd mercurial/bundle2.py --- a/mercurial/bundle2.py Mon Nov 07 18:57:07 2016 -0800 +++ b/mercurial/bundle2.py Mon Nov 07 18:46:37 2016 -0800 @@ -571,13 +571,8 @@ yield _pack(_fstreamparamsize, len(param)) if param: yield param - # starting compression - compressor = self._compengine.compressorobj() - for chunk in self._getcorechunk(): - data = compressor.compress(chunk) - if data: - yield data - yield compressor.flush() + for chunk in self._compengine.compressstream(self._getcorechunk()): + yield chunk def _paramchunk(self): """return a encoded version of all stream parameters""" @@ -1323,15 +1318,10 @@ raise error.Abort(_('unknown stream compression type: %s') % comp) compengine = util.compengines.forbundletype(comp) - compressor = compengine.compressorobj() - subchunkiter = cg.getchunks() def chunkiter(): yield header - for chunk in subchunkiter: - data = compressor.compress(chunk) - if data: - yield data - yield compressor.flush() + for chunk in compengine.compressstream(cg.getchunks()): + yield chunk chunkiter = chunkiter() # parse the changegroup data, otherwise we will block