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)