mercurial/wireproto.py
changeset 14970 592e45b7d43e
parent 14623 e7c9fdbbb902
child 15017 f4522df38c65
equal deleted inserted replaced
14969:a3f97038c1c2 14970:592e45b7d43e
    15 # abstract batching support
    15 # abstract batching support
    16 
    16 
    17 class future(object):
    17 class future(object):
    18     '''placeholder for a value to be set later'''
    18     '''placeholder for a value to be set later'''
    19     def set(self, value):
    19     def set(self, value):
    20         if hasattr(self, 'value'):
    20         if util.safehasattr(self, 'value'):
    21             raise error.RepoError("future is already set")
    21             raise error.RepoError("future is already set")
    22         self.value = value
    22         self.value = value
    23 
    23 
    24 class batcher(object):
    24 class batcher(object):
    25     '''base class for batches of commands submittable in a single request
    25     '''base class for batches of commands submittable in a single request
    56         self.remote = remote
    56         self.remote = remote
    57     def submit(self):
    57     def submit(self):
    58         req, rsp = [], []
    58         req, rsp = [], []
    59         for name, args, opts, resref in self.calls:
    59         for name, args, opts, resref in self.calls:
    60             mtd = getattr(self.remote, name)
    60             mtd = getattr(self.remote, name)
    61             if hasattr(mtd, 'batchable'):
    61             batchablefn = getattr(mtd, 'batchable', None)
    62                 batchable = getattr(mtd, 'batchable')(mtd.im_self, *args, **opts)
    62             if batchablefn is not None:
       
    63                 batchable = batchablefn(mtd.im_self, *args, **opts)
    63                 encargsorres, encresref = batchable.next()
    64                 encargsorres, encresref = batchable.next()
    64                 if encresref:
    65                 if encresref:
    65                     req.append((name, encargsorres,))
    66                     req.append((name, encargsorres,))
    66                     rsp.append((batchable, encresref, resref,))
    67                     rsp.append((batchable, encresref, resref,))
    67                 else:
    68                 else: