# HG changeset patch # User Pierre-Yves David # Date 1393623959 28800 # Node ID bee5e1105e6cdb41c885362e562d26afd1837b00 # Parent 7671717afef85fa3eea326fa9496d1a973993388 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) diff -r 7671717afef8 -r bee5e1105e6c hgext/simple4server.py --- 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)