mercurial/wireproto.py
changeset 30206 d105195436c0
parent 30187 3e86261bf110
child 30466 2add671bf55b
--- a/mercurial/wireproto.py	Mon Oct 17 19:48:36 2016 +0200
+++ b/mercurial/wireproto.py	Sun Oct 16 11:10:21 2016 -0700
@@ -85,6 +85,14 @@
         """
         raise NotImplementedError()
 
+    def compresschunks(self, chunks):
+        """Generator of possible compressed chunks to send to the client.
+
+        This is like ``groupchunks()`` except it accepts a generator as
+        its argument.
+        """
+        raise NotImplementedError()
+
 class remotebatch(peer.batcher):
     '''batches the queued calls; uses as few roundtrips as possible'''
     def __init__(self, remote):
@@ -773,9 +781,7 @@
             return ooberror(bundle2required)
 
     chunks = exchange.getbundlechunks(repo, 'serve', **opts)
-    # TODO avoid util.chunkbuffer() here since it is adding overhead to
-    # what is fundamentally a generator proxying operation.
-    return streamres(proto.groupchunks(util.chunkbuffer(chunks)))
+    return streamres(proto.compresschunks(chunks))
 
 @wireprotocommand('heads')
 def heads(repo, proto):