@@ -55,7 +55,7 @@
clt = clientpeer(srv)
print(clt.greet("Foobar"))
-b = clt.batch()
-fs = [b.greet(s) for s in ["Fo, =;:<o", "Bar"]]
+b = clt.iterbatch()
+map(b.greet, ('Fo, =;:<o', 'Bar'))
b.submit()
-print([f.value for f in fs])
+print([r for r in b.results()])
@@ -8,7 +8,6 @@
from __future__ import absolute_import
import hashlib
-import itertools
import os
import tempfile
@@ -80,38 +79,6 @@
# """
# raise NotImplementedError()
-class remotebatch(peer.batcher):
- '''batches the queued calls; uses as few roundtrips as possible'''
- def __init__(self, remote):
- '''remote must support _submitbatch(encbatch) and
- _submitone(op, encargs)'''
- peer.batcher.__init__(self)
- self.remote = remote
- def submit(self):
- req, rsp = [], []
- for name, args, opts, resref in self.calls:
- mtd = getattr(self.remote, name)
- batchablefn = getattr(mtd, 'batchable', None)
- if batchablefn is not None:
- batchable = batchablefn(mtd.im_self, *args, **opts)
- encargsorres, encresref = next(batchable)
- assert encresref
- req.append((name, encargsorres,))
- rsp.append((batchable, encresref, resref,))
- else:
- if req:
- self._submitreq(req, rsp)
- req, rsp = [], []
- resref.set(mtd(*args, **opts))
- if req:
- self._submitreq(req, rsp)
- def _submitreq(self, req, rsp):
- encresults = self.remote._submitbatch(req)
- for encres, r in zip(encresults, rsp):
- batchable, encresref, resref = r
- encresref.set(encres)
- resref.set(next(batchable))
-
class remoteiterbatcher(peer.iterbatcher):
def __init__(self, remote):
super(remoteiterbatcher, self).__init__()
@@ -253,11 +220,6 @@
See also httppeer.py and sshpeer.py for protocol-specific
implementations of this interface.
"""
- def batch(self):
- if self.capable('batch'):
- return remotebatch(self)
- else:
- return peer.localbatch(self)
def _submitbatch(self, req):
"""run batch request <req> on the server
@@ -49,15 +49,6 @@
def results(self):
raise NotImplementedError()
-class localbatch(batcher):
- '''performs the queued calls directly'''
- def __init__(self, local):
- batcher.__init__(self)
- self.local = local
- def submit(self):
- 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__()
@@ -106,10 +97,6 @@
return plain
class peerrepository(object):
-
- def batch(self):
- return localbatch(self)
-
def iterbatch(self):
"""Batch requests but allow iterating over the results.