wireprotov2: add response type that serializes to indefinite length bytestring
This will be needed in a future patch.
Differential Revision: https://phab.mercurial-scm.org/D5133
--- a/mercurial/wireprotoframing.py Wed Sep 26 14:38:43 2018 -0700
+++ b/mercurial/wireprotoframing.py Tue Oct 16 21:35:33 2018 +0200
@@ -1146,6 +1146,14 @@
for frame in emitter.send(o.data):
yield frame
+ elif isinstance(
+ o, wireprototypes.indefinitebytestringresponse):
+ for chunk in cborutil.streamencodebytestringfromiter(
+ o.chunks):
+
+ for frame in emitter.send(chunk):
+ yield frame
+
# A regular object is CBOR encoded.
else:
for chunk in cborutil.streamencode(o):
--- a/mercurial/wireprototypes.py Wed Sep 26 14:38:43 2018 -0700
+++ b/mercurial/wireprototypes.py Tue Oct 16 21:35:33 2018 +0200
@@ -389,3 +389,12 @@
fullhashseed = attr.ib(default=None)
serverdercerts = attr.ib(default=None)
servercadercerts = attr.ib(default=None)
+
+@attr.s
+class indefinitebytestringresponse(object):
+ """Represents an object to be encoded to an indefinite length bytestring.
+
+ Instances are initialized from an iterable of chunks, with each chunk being
+ a bytes instance.
+ """
+ chunks = attr.ib()