exchange: add the pullmarker wireproto command to simple4server
This will allow simple server side support.
(yes, code duplication is bad I already told you I won't do it too much mom)
--- a/hgext/simple4server.py Fri Feb 28 13:44:37 2014 -0800
+++ b/hgext/simple4server.py Fri Feb 28 13:45:59 2014 -0800
@@ -33,13 +33,28 @@
lock.release()
return wireproto.pushres(0)
+def srv_pullobsmarkers(repo, proto, others):
+ opts = wireproto.options('', ['heads', 'common'], others)
+ for k, v in opts.iteritems():
+ if k in ('heads', 'common'):
+ opts[k] = wireproto.decodelist(v)
+ obsdata = _getobsmarkersstream(repo, **opts)
+ length = '%20i' % len(obsdata.getvalue())
+ def data():
+ yield length
+ for c in proto.groupchunks(obsdata):
+ yield c
+ return wireproto.streamres(data())
+
def capabilities(orig, repo, proto):
"""wrapper to advertise new capability"""
caps = orig(repo, proto)
if obsolete._enabled:
caps += ' _evoext_pushobsmarkers_0'
+ caps += ' _evoext_pullobsmarkers_0'
return caps
def extsetup(ui):
wireproto.commands['evoext_pushobsmarkers_0'] = (srv_pushobsmarkers, '')
+ wireproto.commands['evoext_pullobsmarkers_0'] = (srv_pullobsmarkers, '*')
extensions.wrapfunction(wireproto, 'capabilities', capabilities)