Show More
@@ -1,48 +1,48 b'' | |||||
1 | from mercurial import wireproto |
|
1 | from mercurial import wireproto | |
2 |
|
2 | |||
3 | class proto(object): |
|
3 | class proto(object): | |
4 | def __init__(self, args): |
|
4 | def __init__(self, args): | |
5 | self.args = args |
|
5 | self.args = args | |
6 | def getargs(self, spec): |
|
6 | def getargs(self, spec): | |
7 | args = self.args |
|
7 | args = self.args | |
8 | args.setdefault('*', {}) |
|
8 | args.setdefault('*', {}) | |
9 | names = spec.split() |
|
9 | names = spec.split() | |
10 | return [args[n] for n in names] |
|
10 | return [args[n] for n in names] | |
11 |
|
11 | |||
12 | class clientpeer(wireproto.wirepeer): |
|
12 | class clientpeer(wireproto.wirepeer): | |
13 | def __init__(self, serverrepo): |
|
13 | def __init__(self, serverrepo): | |
14 | self.serverrepo = serverrepo |
|
14 | self.serverrepo = serverrepo | |
15 | def _call(self, cmd, **args): |
|
15 | def _call(self, cmd, **args): | |
16 | return wireproto.dispatch(self.serverrepo, proto(args), cmd) |
|
16 | return wireproto.dispatch(self.serverrepo, proto(args), cmd) | |
17 |
|
17 | |||
18 | @wireproto.batchable |
|
18 | @wireproto.batchable | |
19 | def greet(self, name): |
|
19 | def greet(self, name): | |
20 | f = wireproto.future() |
|
20 | f = wireproto.future() | |
21 |
yield |
|
21 | yield {'name': mangle(name)}, f | |
22 | yield unmangle(f.value) |
|
22 | yield unmangle(f.value) | |
23 |
|
23 | |||
24 | class serverrepo(object): |
|
24 | class serverrepo(object): | |
25 | def greet(self, name): |
|
25 | def greet(self, name): | |
26 | return "Hello, " + name |
|
26 | return "Hello, " + name | |
27 |
|
27 | |||
28 | def filtered(self, name): |
|
28 | def filtered(self, name): | |
29 | return self |
|
29 | return self | |
30 |
|
30 | |||
31 | def mangle(s): |
|
31 | def mangle(s): | |
32 | return ''.join(chr(ord(c) + 1) for c in s) |
|
32 | return ''.join(chr(ord(c) + 1) for c in s) | |
33 | def unmangle(s): |
|
33 | def unmangle(s): | |
34 | return ''.join(chr(ord(c) - 1) for c in s) |
|
34 | return ''.join(chr(ord(c) - 1) for c in s) | |
35 |
|
35 | |||
36 | def greet(repo, proto, name): |
|
36 | def greet(repo, proto, name): | |
37 | return mangle(repo.greet(unmangle(name))) |
|
37 | return mangle(repo.greet(unmangle(name))) | |
38 |
|
38 | |||
39 | wireproto.commands['greet'] = (greet, 'name',) |
|
39 | wireproto.commands['greet'] = (greet, 'name',) | |
40 |
|
40 | |||
41 | srv = serverrepo() |
|
41 | srv = serverrepo() | |
42 | clt = clientpeer(srv) |
|
42 | clt = clientpeer(srv) | |
43 |
|
43 | |||
44 | print clt.greet("Foobar") |
|
44 | print clt.greet("Foobar") | |
45 | b = clt.batch() |
|
45 | b = clt.batch() | |
46 | fs = [b.greet(s) for s in ["Fo, =;o", "Bar"]] |
|
46 | fs = [b.greet(s) for s in ["Fo, =;o", "Bar"]] | |
47 | b.submit() |
|
47 | b.submit() | |
48 | print [f.value for f in fs] |
|
48 | print [f.value for f in fs] |
General Comments 0
You need to be logged in to leave comments.
Login now