--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-wireproto.py Wed Jun 29 13:04:00 2011 +0200
@@ -0,0 +1,45 @@
+from mercurial import wireproto
+
+class proto(object):
+ def __init__(self, args):
+ self.args = args
+ def getargs(self, spec):
+ args = self.args
+ args.setdefault('*', {})
+ names = spec.split()
+ return [args[n] for n in names]
+
+class clientrepo(wireproto.wirerepository):
+ def __init__(self, serverrepo):
+ self.serverrepo = serverrepo
+ def _call(self, cmd, **args):
+ return wireproto.dispatch(self.serverrepo, proto(args), cmd)
+
+ @wireproto.batchable
+ def greet(self, name):
+ f = wireproto.future()
+ yield wireproto.todict(name=mangle(name)), f
+ yield unmangle(f.value)
+
+class serverrepo(object):
+ def greet(self, name):
+ return "Hello, " + name
+
+def mangle(s):
+ return ''.join(chr(ord(c) + 1) for c in s)
+def unmangle(s):
+ return ''.join(chr(ord(c) - 1) for c in s)
+
+def greet(repo, proto, name):
+ return mangle(repo.greet(unmangle(name)))
+
+wireproto.commands['greet'] = (greet, 'name',)
+
+srv = serverrepo()
+clt = clientrepo(srv)
+
+print clt.greet("Foobar")
+b = clt.batch()
+fs = [b.greet(s) for s in ["Fo, =;o", "Bar"]]
+b.submit()
+print [f.value for f in fs]