Mercurial > public > mercurial-scm > hg-stable
diff mercurial/wireprotoserver.py @ 37292:3d0e2cd86e05
wireproto: use CBOR for command requests
Now that we're using CBOR in the new wire protocol, let's convert
command requests to it.
Before I wrote this patch and was even thinking about CBOR, I was
thinking about how commands should be issued and came to the
conclusion that we didn't need separate frames to represent the
command name from its arguments. I already had a partially
completed patch prepared to merge the frames.
But with CBOR, it makes the implementation a bit simpler because
we don't need to roll our own serialization.
The changes here are a bit invasive. I tried to split this into
multiple commits to make it easier to review. But it was just too
hard.
* "command name" and "command argument" frames have been collapsed
into a "command request" frame.
* The flags for this new frame are totally different.
* Frame processing has been overhauled to reflect the new order
of things.
* Test fallout was significant. A handful of tests were removed.
Altogether, I think the new code is simpler. We don't have
complicated state around receiving commands. We're either receiving
command request frames or command data frames. We /could/
potentially collapse command data frames into command request
frames. Although I'd have to think a bit more about this before
I do it.
Differential Revision: https://phab.mercurial-scm.org/D2951
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 26 Mar 2018 14:34:32 -0700 |
parents | 5fadc63ac99f |
children | 45b39c69fae0 |
line wrap: on
line diff
--- a/mercurial/wireprotoserver.py Mon Mar 26 10:50:36 2018 -0700 +++ b/mercurial/wireprotoserver.py Mon Mar 26 14:34:32 2018 -0700 @@ -36,7 +36,7 @@ HGTYPE = 'application/mercurial-0.1' HGTYPE2 = 'application/mercurial-0.2' HGERRTYPE = 'application/hg-error' -FRAMINGTYPE = b'application/mercurial-exp-framing-0002' +FRAMINGTYPE = b'application/mercurial-exp-framing-0003' HTTPV2 = wireprototypes.HTTPV2 SSHV1 = wireprototypes.SSHV1