From patchwork Thu Sep 24 01:21:24 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [5, of, 6] bundle20: extract core payload generation in its own function From: Pierre-Yves David X-Patchwork-Id: 10607 Message-Id: <62ee35a3fcb068f72588.1443057684@marginatus.alto.octopoid.net> To: mercurial-devel@selenic.com Cc: Pierre-Yves David Date: Wed, 23 Sep 2015 18:21:24 -0700 # HG changeset patch # User Pierre-Yves David # Date 1443038165 25200 # Wed Sep 23 12:56:05 2015 -0700 # Node ID 62ee35a3fcb068f72588b8fb594c4a7bfd163df7 # Parent 3c766da3be16121bce499831ae254915f0d38786 bundle20: extract core payload generation in its own function We are about to allow compressing the core of the bundle2. So we extract the generation of this bits in its own parts to make this compression phases easier in a later changesets. diff --git a/mercurial/bundle2.py b/mercurial/bundle2.py --- a/mercurial/bundle2.py +++ b/mercurial/bundle2.py @@ -528,18 +528,12 @@ class bundle20(object): param = self._paramchunk() outdebug(self.ui, 'bundle parameter: %s' % param) yield _pack(_fstreamparamsize, len(param)) if param: yield param - - outdebug(self.ui, 'start of parts') - for part in self._parts: - outdebug(self.ui, 'bundle part: "%s"' % part.type) - for chunk in part.getchunks(ui=self.ui): - yield chunk - outdebug(self.ui, 'end of bundle') - yield _pack(_fpartheadersize, 0) + for chunk in self._getcorechunk(): + yield chunk def _paramchunk(self): """return a encoded version of all stream parameters""" blocks = [] for par, value in self._params: @@ -548,10 +542,23 @@ class bundle20(object): value = urllib.quote(value) par = '%s=%s' % (par, value) blocks.append(par) return ' '.join(blocks) + def _getcorechunk(self): + """yield chunk for the core part of the bundle + + (all but headers and parameters)""" + outdebug(self.ui, 'start of parts') + for part in self._parts: + outdebug(self.ui, 'bundle part: "%s"' % part.type) + for chunk in part.getchunks(ui=self.ui): + yield chunk + outdebug(self.ui, 'end of bundle') + yield _pack(_fpartheadersize, 0) + + def salvageoutput(self): """return a list with a copy of all output parts in the bundle This is meant to be used during error handling to make sure we preserve server output"""