--- a/mercurial/peer.py Wed Mar 02 14:18:43 2016 -0500
+++ b/mercurial/peer.py Tue Mar 01 18:39:25 2016 -0500
@@ -41,6 +41,14 @@
def submit(self):
raise NotImplementedError()
+class iterbatcher(batcher):
+
+ def submit(self):
+ raise NotImplementedError()
+
+ def results(self):
+ raise NotImplementedError()
+
class localbatch(batcher):
'''performs the queued calls directly'''
def __init__(self, local):
@@ -50,6 +58,19 @@
for name, args, opts, resref in self.calls:
resref.set(getattr(self.local, name)(*args, **opts))
+class localiterbatcher(iterbatcher):
+ def __init__(self, local):
+ super(iterbatcher, self).__init__()
+ self.local = local
+
+ def submit(self):
+ # submit for a local iter batcher is a noop
+ pass
+
+ def results(self):
+ for name, args, opts, resref in self.calls:
+ yield getattr(self.local, name)(*args, **opts)
+
def batchable(f):
'''annotation for batchable methods
@@ -91,6 +112,14 @@
def batch(self):
return localbatch(self)
+ def iterbatch(self):
+ """Batch requests but allow iterating over the results.
+
+ This is to allow interleaving responses with things like
+ progress updates for clients.
+ """
+ return localiterbatcher(self)
+
def capable(self, name):
'''tell whether repo supports named capability.
return False if not supported.