Mercurial > hg
changeset 11585:5d907fbb9703
protocol: unify stream_out command
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 14 Jul 2010 16:19:27 -0500 |
parents | 1af96b090116 |
children | ddaaaa23bb8f |
files | mercurial/hgweb/hgweb_mod.py mercurial/hgweb/protocol.py mercurial/sshserver.py mercurial/wireproto.py |
diffstat | 4 files changed, 17 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/hgweb/hgweb_mod.py Wed Jul 14 15:43:20 2010 -0500 +++ b/mercurial/hgweb/hgweb_mod.py Wed Jul 14 16:19:27 2010 -0500 @@ -49,7 +49,10 @@ break self.req.write(z.compress(chunk)) self.req.write(z.flush()) - + def sendstream(self, source): + self.req.respond(HTTP_OK, HGTYPE) + for chunk in source: + self.req.write(chunk) def respond(self, s): self.req.respond(HTTP_OK, HGTYPE, length=len(s)) self.response = s
--- a/mercurial/hgweb/protocol.py Wed Jul 14 15:43:20 2010 -0500 +++ b/mercurial/hgweb/protocol.py Wed Jul 14 16:19:27 2010 -0500 @@ -114,11 +114,3 @@ finally: fp.close() os.unlink(tempname) - -def stream_out(repo, req): - req.respond(HTTP_OK, HGTYPE) - try: - for chunk in streamclone.stream_out(repo): - yield chunk - except streamclone.StreamException, inst: - yield str(inst)
--- a/mercurial/sshserver.py Wed Jul 14 15:43:20 2010 -0500 +++ b/mercurial/sshserver.py Wed Jul 14 16:19:27 2010 -0500 @@ -67,6 +67,11 @@ self.fout.flush() + def sendstream(self, source): + for chunk in source: + self.fout.write(chunk) + self.fout.flush() + def serve_forever(self): try: while self.serve_one(): @@ -177,12 +182,3 @@ finally: fp.close() os.unlink(tempname) - - def do_stream_out(self): - try: - for chunk in streamclone.stream_out(self.repo): - self.fout.write(chunk) - self.fout.flush() - except streamclone.StreamException, inst: - self.fout.write(str(inst)) - self.fout.flush()
--- a/mercurial/wireproto.py Wed Jul 14 15:43:20 2010 -0500 +++ b/mercurial/wireproto.py Wed Jul 14 16:19:27 2010 -0500 @@ -7,7 +7,7 @@ from i18n import _ from node import bin, hex -import urllib +import urllib, streamclone import pushkey as pushkey_ def dispatch(repo, proto, command): @@ -77,6 +77,12 @@ r = pushkey_.push(repo, namespace, key, old, new) return '%s\n' % int(r) +def stream(repo, proto): + try: + proto.sendstream(streamclone.stream_out(repo)) + except streamclone.StreamException, inst: + return str(inst) + commands = { 'between': (between, 'pairs'), 'branchmap': (branchmap, ''), @@ -87,4 +93,5 @@ 'listkeys': (listkeys, 'namespace'), 'lookup': (lookup, 'key'), 'pushkey': (pushkey, 'namespace key old new'), + 'stream_out': (stream, ''), }