diff mercurial/wireprotov2server.py @ 37782:99accae4cc59

wireproto: reimplement dispatch() for version 2 server The code is minimal. I'm trying to create a cleaner break between version 1 and version 2 server code. Differential Revision: https://phab.mercurial-scm.org/D3397
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 16 Apr 2018 22:00:52 -0700
parents 352932a11905
children 9d818539abfa
line wrap: on
line diff
--- a/mercurial/wireprotov2server.py	Mon Apr 16 21:52:33 2018 -0700
+++ b/mercurial/wireprotov2server.py	Mon Apr 16 22:00:52 2018 -0700
@@ -296,7 +296,7 @@
             res.setbodybytes(_('command in frame must match command in URL'))
             return True
 
-    rsp = wireproto.dispatch(repo, proto, command['command'])
+    rsp = dispatch(repo, proto, command['command'])
 
     res.status = b'200 OK'
     res.headers[b'Content-Type'] = FRAMINGTYPE
@@ -328,6 +328,17 @@
         raise error.ProgrammingError('unhandled event from reactor: %s' %
                                      action)
 
+def getdispatchrepo(repo, proto, command):
+    return repo.filtered('served')
+
+def dispatch(repo, proto, command):
+    repo = getdispatchrepo(repo, proto, command)
+
+    func, spec = wireproto.commandsv2[command]
+    args = proto.getargs(spec)
+
+    return func(repo, proto, **args)
+
 @zi.implementer(wireprototypes.baseprotocolhandler)
 class httpv2protocolhandler(object):
     def __init__(self, req, ui, args=None):