def _listen(self, uuid=None, session=None): """ Listen a connection uuid """ if session: from .nurest_session import _NURESTSessionCurrentContext _NURESTSessionCurrentContext.session = session if self.url is None: raise Exception("NURESTPushCenter needs to have a valid URL. please use setURL: before starting it.") events_url = "%s/events" % self.url if uuid: events_url = "%s?uuid=%s" % (events_url, uuid) request = NURESTRequest(method='GET', url=events_url) # Force async to False so the push center will have only 1 thread running connection = NURESTConnection(request=request, async=True, callback=self._did_receive_event, root_object=self._root_object) if self._timeout: if int(time()) - self._start_time >= self._timeout: pushcenter_logger.debug("[NURESTPushCenter] Timeout (timeout=%ss)." % self._timeout) return else: connection.timeout = self._timeout pushcenter_logger.info('Bambou Sending >>>>>>\n%s %s' % (request.method, request.url)) # connection.ignore_request_idle = True connection.start()
def start(self, timeout=None, root_object=None): """ Starts listening to events. Args: timeout (int): number of seconds before timeout. Used for testing purpose only. root_object (bambou.NURESTRootObject): NURESTRootObject object that is listening. Used for testing purpose only. """ if self._is_running: return if timeout: self._timeout = timeout self._start_time = int(time()) pushcenter_logger.debug("[NURESTPushCenter] Starting push center on url %s ..." % self.url) self._is_running = True self.__root_object = root_object from .nurest_session import NURESTSession current_session = NURESTSession.get_current_session() args_session = {'session': current_session} self._thread = StoppableThread(target=self._listen, name='push-center', kwargs=args_session) self._thread.daemon = True self._thread.start()
def start(self, timeout=None, root_object=None): """ Starts listening to events. Args: timeout (int): number of seconds before timeout. Used for testing purpose only. root_object (bambou.NURESTRootObject): NURESTRootObject object that is listening. Used for testing purpose only. """ if self._is_running: return if timeout: self._timeout = timeout self._start_time = int(time()) pushcenter_logger.debug( "[NURESTPushCenter] Starting push center on url %s ..." % self.url) self._is_running = True self.__root_object = root_object from .nurest_session import NURESTSession current_session = NURESTSession.get_current_session() args_session = {'session': current_session} self._thread = StoppableThread(target=self._listen, name='push-center', kwargs=args_session) self._thread.daemon = True self._thread.start()
def _listen(self, uuid=None, session=None): """ Listen a connection uuid """ if self.url is None: raise Exception( "NURESTPushCenter needs to have a valid URL. please use setURL: before starting it." ) events_url = "%s/events" % self.url if uuid: events_url = "%s?uuid=%s" % (events_url, uuid) request = NURESTRequest(method='GET', url=events_url) # Force async to False so the push center will have only 1 thread running connection = NURESTConnection(request=request, async=True, callback=self._did_receive_event, root_object=self._root_object) if self._timeout: if int(time()) - self._start_time >= self._timeout: pushcenter_logger.debug( "[NURESTPushCenter] Timeout (timeout=%ss)." % self._timeout) return else: connection.timeout = self._timeout pushcenter_logger.info('Bambou Sending >>>>>>\n%s %s' % (request.method, request.url)) # connection.ignore_request_idle = True connection.start()
def stop(self): """ Stops listening for events. """ if not self._is_running: return pushcenter_logger.debug("[NURESTPushCenter] Stopping...") self._thread.stop() self._thread.join() self._is_running = False self._current_connection = None self._start_time = None self._timeout = None