[Buildbot-commits] buildbot/buildbot/status html.py,1.45,1.46
Brian Warner
warner at users.sourceforge.net
Wed Nov 24 03:35:07 UTC 2004
Update of /cvsroot/buildbot/buildbot/buildbot/status
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20994/buildbot/status
Modified Files:
html.py
Log Message:
(TextLog.resumeProducing): fix the "as text" link, handle client
disconnects that occur while we're still sending old chunks.
Index: html.py
===================================================================
RCS file: /cvsroot/buildbot/buildbot/buildbot/status/html.py,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- html.py 24 Nov 2004 02:41:21 -0000 1.45
+++ html.py 24 Nov 2004 03:35:05 -0000 1.46
@@ -475,11 +475,11 @@
data += "<pre>\n"
return data
- def content(self, entries, asText):
+ def content(self, entries):
spanfmt = '<span class="%s">%s</span>'
data = ""
for type, entry in entries:
- if asText:
+ if self.asText:
if type != builder.HEADER:
data += entry
else:
@@ -493,8 +493,7 @@
return data
def render_HEAD(self, request):
- asText = request.args.get("text", None)
- if asText:
+ if request.args.has_key("text"):
request.setHeader("content-type", "text/plain")
else:
request.setHeader("content-type", "text/html")
@@ -504,23 +503,32 @@
return ''
def resumeProducing(self):
- if self.chunkNumber < len(self.original.entries):
+ while self.chunkNumber < len(self.original.entries):
chunk = self.original.entries[self.chunkNumber]
self.chunkNumber += 1
- self.req.write(self.content([chunk], self.asText))
- return
+ data = self.content([chunk])
+ if data:
+ self.req.write(data)
+ return
# now send all of .runEntries in a batch
- data = self.content(self.original.runEntries, self.asText)
- self.req.write(data)
+ data = self.content(self.original.runEntries)
+ if data:
+ self.req.write(data)
self.req.unregisterProducer()
# then see if there is more to come
self.original.subscribe(self, False)
+ self.subscribed = True
d = self.original.waitUntilFinished()
d.addCallback(self.finished)
+ def stopProducing(self):
+ pass
+
def render_GET(self, req):
self.req = req
- self.asText = self.req.args.get("text", None)
+ self.asText = False
+ if self.req.args.has_key("text"):
+ self.asText = True
if self.asText:
req.setHeader("content-type", "text/plain")
@@ -531,19 +539,22 @@
req.write(self.htmlHeader(req))
self.chunkNumber = 0
+ self.subscribed = False
req.registerProducer(self, False)
d = req.notifyFinish()
d.addErrback(self.stop)
return server.NOT_DONE_YET
def stop(self, why):
- self.original.unsubscribe(self)
+ if self.subscribed:
+ self.original.unsubscribe(self)
+ self.subscribed = False
self.req.unregisterProducer()
# our .finished callback may still be fired
self.req = None
def logChunk(self, build, step, log, channel, text):
- output = self.content([(channel, text)], self.asText)
+ output = self.content([(channel, text)])
try:
self.req.write(output)
except pb.DeadReferenceError:
More information about the Commits
mailing list