Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/protocol.py @ 11623:31d0a6d50ee2
protocol: extract compression from streaming mechanics
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Fri, 16 Jul 2010 22:20:10 +0200 |
parents | 1d48681b17a4 |
children | cdeb861335d5 |
comparison
equal
deleted
inserted
replaced
11622:1d48681b17a4 | 11623:31d0a6d50ee2 |
---|---|
33 for s in util.filechunkiter(self.req, limit=length): | 33 for s in util.filechunkiter(self.req, limit=length): |
34 fp.write(s) | 34 fp.write(s) |
35 def redirect(self): | 35 def redirect(self): |
36 self.oldio = sys.stdout, sys.stderr | 36 self.oldio = sys.stdout, sys.stderr |
37 sys.stderr = sys.stdout = cStringIO.StringIO() | 37 sys.stderr = sys.stdout = cStringIO.StringIO() |
38 def sendresponse(self, s): | 38 def groupchunks(self, cg): |
39 self.req.respond(HTTP_OK, HGTYPE, length=len(s)) | |
40 self.response = s | |
41 def sendchangegroup(self, cg): | |
42 self.req.respond(HTTP_OK, HGTYPE) | |
43 z = zlib.compressobj() | 39 z = zlib.compressobj() |
44 while 1: | 40 while 1: |
45 chunk = cg.read(4096) | 41 chunk = cg.read(4096) |
46 if not chunk: | 42 if not chunk: |
47 break | 43 break |
48 self.req.write(z.compress(chunk)) | 44 yield z.compress(chunk) |
49 self.req.write(z.flush()) | 45 yield z.flush() |
46 def sendresponse(self, s): | |
47 self.req.respond(HTTP_OK, HGTYPE, length=len(s)) | |
48 self.response = s | |
50 def sendstream(self, source): | 49 def sendstream(self, source): |
51 self.req.respond(HTTP_OK, HGTYPE) | 50 self.req.respond(HTTP_OK, HGTYPE) |
52 for chunk in source: | 51 for chunk in source: |
53 self.req.write(chunk) | 52 self.req.write(str(chunk)) |
54 def sendpushresponse(self, ret): | 53 def sendpushresponse(self, ret): |
55 val = sys.stdout.getvalue() | 54 val = sys.stdout.getvalue() |
56 sys.stdout, sys.stderr = self.oldio | 55 sys.stdout, sys.stderr = self.oldio |
57 self.req.respond(HTTP_OK, HGTYPE) | 56 self.req.respond(HTTP_OK, HGTYPE) |
58 self.response = '%d\n%s' % (ret, val) | 57 self.response = '%d\n%s' % (ret, val) |