This is an archive of the discontinued Mercurial Phabricator instance.

wireproto: use CBOR for command requests
ClosedPublic

Authored by indygreg on Mar 26 2018, 5:35 PM.

Details

Summary

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.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

indygreg created this revision.Mar 26 2018, 5:35 PM
durin42 accepted this revision.Apr 3 2018, 11:45 AM
This revision is now accepted and ready to land.Apr 3 2018, 11:45 AM
This revision was automatically updated to reflect the committed changes.