comparison mercurial/bundle2.py @ 21129:07bcbf326c8d

bundle2: use an official iterparts method to unbundle parts Explicit is better than implicit.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 16 Apr 2014 18:41:48 -0400
parents 5ecfe76d0d96
children 1ff06386217f
comparison
equal deleted inserted replaced
21128:f4014f646f71 21129:07bcbf326c8d
284 op.reply = bundle20(op.ui) 284 op.reply = bundle20(op.ui)
285 # todo: 285 # todo:
286 # - replace this is a init function soon. 286 # - replace this is a init function soon.
287 # - exception catching 287 # - exception catching
288 unbundler.params 288 unbundler.params
289 iterparts = iter(unbundler) 289 iterparts = unbundler.iterparts()
290 part = None 290 part = None
291 try: 291 try:
292 for part in iterparts: 292 for part in iterparts:
293 parttype = part.type 293 parttype = part.type
294 # part key are matched lower case 294 # part key are matched lower case
395 395
396 396
397 class unbundle20(unpackermixin): 397 class unbundle20(unpackermixin):
398 """interpret a bundle2 stream 398 """interpret a bundle2 stream
399 399
400 (this will eventually yield parts)""" 400 This class is fed with a binary stream and yields parts through its
401 `iterparts` methods."""
401 402
402 def __init__(self, ui, fp, header=None): 403 def __init__(self, ui, fp, header=None):
403 """If header is specified, we do not read it out of the stream.""" 404 """If header is specified, we do not read it out of the stream."""
404 self.ui = ui 405 self.ui = ui
405 super(unbundle20, self).__init__(fp) 406 super(unbundle20, self).__init__(fp)
448 self.ui.debug("ignoring unknown parameter %r\n" % name) 449 self.ui.debug("ignoring unknown parameter %r\n" % name)
449 else: 450 else:
450 raise KeyError(name) 451 raise KeyError(name)
451 452
452 453
453 def __iter__(self): 454 def iterparts(self):
454 """yield all parts contained in the stream""" 455 """yield all parts contained in the stream"""
455 # make sure param have been loaded 456 # make sure param have been loaded
456 self.params 457 self.params
457 self.ui.debug('start extraction of bundle2 parts\n') 458 self.ui.debug('start extraction of bundle2 parts\n')
458 headerblock = self._readpartheader() 459 headerblock = self._readpartheader()