[CalendarServer-changes] [12630] CalendarServer/trunk/calendarserver/webadmin/logs.py

source_changes at macosforge.org source_changes at macosforge.org
Wed Mar 12 11:24:14 PDT 2014


Revision: 12630
          http://trac.calendarserver.org//changeset/12630
Author:   wsanchez at apple.com
Date:     2014-02-09 19:53:34 -0800 (Sun, 09 Feb 2014)
Log Message:
-----------
Make a stream

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/webadmin/logs.py

Modified: CalendarServer/trunk/calendarserver/webadmin/logs.py
===================================================================
--- CalendarServer/trunk/calendarserver/webadmin/logs.py	2014-02-10 03:40:02 UTC (rev 12629)
+++ CalendarServer/trunk/calendarserver/webadmin/logs.py	2014-02-10 03:53:34 UTC (rev 12630)
@@ -24,7 +24,11 @@
     "LogEventsResource",
 ]
 
-from txweb2.stream import MemoryStream
+from zope.interface import implementer
+
+from twisted.internet.defer import succeed
+
+from txweb2.stream import IByteStream, fallbackSplit
 from txweb2.resource import Resource
 from txweb2.http_headers import MimeType
 from txweb2.http import Response
@@ -78,7 +82,7 @@
 
     def render(self, request):
         response = Response()
-        response.stream = MemoryStream(textAsEvent(u"Hello!"))
+        response.stream = LogObservingEventStream()
         response.headers.setHeader(
             "content-type", MimeType.fromString("text/event-stream")
         )
@@ -86,5 +90,35 @@
 
 
 
+ at implementer(IByteStream)
+class LogObservingEventStream(object):
+    """
+    L{IStream} that observes log events and streams them out as HTML5
+    EventSource events.
+    """
+
+    length = None
+
+
+    def __init__(self):
+        self._closed = False
+
+
+    def read(self):
+        if self._closed:
+            return None
+
+        return succeed(textAsEvent(u"Hello!"))
+
+
+    def split(self, point):
+        return fallbackSplit(self, point)
+
+
+    def close(self):
+        self._closed = True
+
+
+
 def textAsEvent(text):
     return u"data: {text}\n\n".format(text=text).encode("utf-8")
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/2049dc34/attachment.html>


More information about the calendarserver-changes mailing list