def eventSourceResource(self, request: IRequest) -> KleinRenderable: """ HTML5 EventSource endpoint. """ self._log.debug("Event source connected: {id}", id=id(request)) request.setHeader( HeaderName.contentType.value, ContentType.eventStream.value ) self.storeObserver.addListener(request) def disconnected(f: Failure) -> None: f.trap(ConnectionDone) self._log.debug("Event source disconnected: {id}", id=id(request)) self.storeObserver.removeListener(request) def finished(_: Any) -> None: # We don't expect anything to fire the returned deferred, so # this should never happen. self.storeObserver.removeListener(request) raise AssertionError("This was not expected") # Handle disconnect request.notifyFinish().addCallbacks(finished, disconnected) # Return an unfired deferred, so the connection doesn't close on this # end... return Deferred()
def eventSourceResource(self, request: IRequest) -> KleinRenderable: """ HTML5 EventSource endpoint. """ self._log.debug("Event source connected: {id}", id=id(request)) request.setHeader( HeaderName.contentType.value, ContentType.eventStream.value ) self.storeObserver.addListener(request) def disconnected(f: Failure) -> None: f.trap(ConnectionDone) self._log.debug("Event source disconnected: {id}", id=id(request)) self.storeObserver.removeListener(request) def finished(_: Any) -> None: # We don't expect anything to fire the returned deferred, so # this should never happen. self.storeObserver.removeListener(request) raise AssertionError("This was not expected") # Handle disconnect request.notifyFinish().addCallbacks(finished, disconnected) # Return an unfired deferred, so the connection doesn't close on this # end... return Deferred()
def __init__(self, request: IRequest, frameAncestors: str, userAgent: UserAgent): super().__init__(request, frameAncestors, userAgent) # Present entire page before deciding whether and how to send it # to the client. self.__buffer = BytesIO() self.__writeBytes = self.__buffer.write self.__connectionLostFailure: Optional[Failure] = None d = request.notifyFinish() d.addErrback(self.__connectionLost)