Mercurial > public > mercurial-scm > hg
comparison mercurial/wireproto.py @ 20906:7a634b34fc91
wireproto: add decorator for wire protocol command
Move move in the same direction we took for command line commands. each wire
protocol function will be decorated with its name and arguments.
Beside beside easier to read, this open the road to easily adding more metadata
(like security level or return type)
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Fri, 28 Mar 2014 14:30:11 -0700 |
parents | 167047ba3cfa |
children | aedec880e095 |
comparison
equal
deleted
inserted
replaced
20905:167047ba3cfa | 20906:7a634b34fc91 |
---|---|
469 if others: | 469 if others: |
470 sys.stderr.write("abort: %s got unexpected arguments %s\n" | 470 sys.stderr.write("abort: %s got unexpected arguments %s\n" |
471 % (cmd, ",".join(others))) | 471 % (cmd, ",".join(others))) |
472 return opts | 472 return opts |
473 | 473 |
474 # list of commands | |
475 commands = {} | |
476 | |
477 def wireprotocommand(name, args=''): | |
478 """decorator for wireprotocol command""" | |
479 def register(func): | |
480 commands[name] = (func, args) | |
481 return func | |
482 return register | |
483 | |
474 def batch(repo, proto, cmds, others): | 484 def batch(repo, proto, cmds, others): |
475 repo = repo.filtered("served") | 485 repo = repo.filtered("served") |
476 res = [] | 486 res = [] |
477 for pair in cmds.split(';'): | 487 for pair in cmds.split(';'): |
478 op, args = pair.split(' ', 1) | 488 op, args = pair.split(' ', 1) |
768 | 778 |
769 finally: | 779 finally: |
770 fp.close() | 780 fp.close() |
771 os.unlink(tempname) | 781 os.unlink(tempname) |
772 | 782 |
773 commands = { | 783 commands.update({ |
774 'batch': (batch, 'cmds *'), | 784 'batch': (batch, 'cmds *'), |
775 'between': (between, 'pairs'), | 785 'between': (between, 'pairs'), |
776 'branchmap': (branchmap, ''), | 786 'branchmap': (branchmap, ''), |
777 'branches': (branches, 'nodes'), | 787 'branches': (branches, 'nodes'), |
778 'capabilities': (capabilities, ''), | 788 'capabilities': (capabilities, ''), |
786 'listkeys': (listkeys, 'namespace'), | 796 'listkeys': (listkeys, 'namespace'), |
787 'lookup': (lookup, 'key'), | 797 'lookup': (lookup, 'key'), |
788 'pushkey': (pushkey, 'namespace key old new'), | 798 'pushkey': (pushkey, 'namespace key old new'), |
789 'stream_out': (stream, ''), | 799 'stream_out': (stream, ''), |
790 'unbundle': (unbundle, 'heads'), | 800 'unbundle': (unbundle, 'heads'), |
791 } | 801 }) |