Revision: 12773 http://trac.calendarserver.org//changeset/12773 Author: wsanchez@apple.com Date: 2014-02-27 16:23:44 -0800 (Thu, 27 Feb 2014) Log Message: ----------- Send EOF when we run out of events; blocking doesn't work when run in server for some reason. Modified Paths: -------------- CalendarServer/trunk/calendarserver/webadmin/eventsource.py CalendarServer/trunk/calendarserver/webadmin/test/test_eventsource.py Modified: CalendarServer/trunk/calendarserver/webadmin/eventsource.py =================================================================== --- CalendarServer/trunk/calendarserver/webadmin/eventsource.py 2014-02-27 23:46:45 UTC (rev 12772) +++ CalendarServer/trunk/calendarserver/webadmin/eventsource.py 2014-02-28 00:23:44 UTC (rev 12773) @@ -153,9 +153,11 @@ ) # Keep track of the event streams - request.addResponseFilter( - lambda r: self._streams.remove(response.stream) - ) + def cleanupFilter(_request, _response): + self._streams.remove(response.stream) + return _response + + request.addResponseFilter(cleanupFilter) self._streams.add(response.stream) return response @@ -240,6 +242,10 @@ return succeed(b"") + # This causes the client to poll, which is undesirable, but the + # deferred below doesn't seem to work in real use... + return succeed(None) + d = Deferred() self._deferredRead = d return d Modified: CalendarServer/trunk/calendarserver/webadmin/test/test_eventsource.py =================================================================== --- CalendarServer/trunk/calendarserver/webadmin/test/test_eventsource.py 2014-02-27 23:46:45 UTC (rev 12772) +++ CalendarServer/trunk/calendarserver/webadmin/test/test_eventsource.py 2014-02-28 00:23:44 UTC (rev 12773) @@ -203,14 +203,25 @@ ) ) - # The next read should block on new events. + + @inlineCallbacks + def test_streamWaitForEvents(self): + """ + Stream reading blocks on additional events. + """ + resource = self.eventSourceResource() + response = self.render(resource) + + # Read should block on new events. d = response.stream.read() self.assertFalse(d.called) d.addErrback(lambda f: None) d.cancel() + test_streamWaitForEvents.todo = "Feature disabled; needs debugging" + @inlineCallbacks def test_streamNewEvents(self): """ @@ -260,6 +271,7 @@ d.addErrback(lambda f: None) d.cancel() + test_streamNewEvents.todo = "Feature disabled; needs debugging" @implementer(IEventDecoder)
participants (1)
-
source_changes@macosforge.org