diff mercurial/wireprototypes.py @ 40021:ed919b90acda

wireprotov2: define type to represent pre-encoded object An upcoming commit will introduce a caching layer to command serving. This will require the ability to cache pre-encoded data. This commit introduces a type to represent pre-encoded data and teaches the output layer to not CBOR encode an instance of that type. Differential Revision: https://phab.mercurial-scm.org/D4772
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 26 Sep 2018 17:16:27 -0700
parents d059cb669632
children c537144fdbef
line wrap: on
line diff
--- a/mercurial/wireprototypes.py	Wed Sep 26 15:53:49 2018 -0700
+++ b/mercurial/wireprototypes.py	Wed Sep 26 17:16:27 2018 -0700
@@ -10,6 +10,9 @@
     hex,
 )
 from .i18n import _
+from .thirdparty import (
+    attr,
+)
 from . import (
     error,
     util,
@@ -352,3 +355,15 @@
                           ', '.sorted(validnames))
 
     return compengines
+
+@attr.s
+class encodedresponse(object):
+    """Represents response data that is already content encoded.
+
+    Wire protocol version 2 only.
+
+    Commands typically emit Python objects that are encoded and sent over the
+    wire. If commands emit an object of this type, the encoding step is bypassed
+    and the content from this object is used instead.
+    """
+    data = attr.ib()