def event_subscribe(self, *args): self._subscribe_lock.acquire() try: self._subscribed += 1 EventProducerMixin.event_subscribe(self, *args) if self._cached_result is None: last_value = None else: last_value = self._cached_result.value try: self.get() # throw away except: pass # generate initial event self._trigger_cov(last_value) if self._subscribed == 1: # initial subscription address = self._device_node.address cmd = self._msg_req_type callback = self.update self._protocol_node.register( address, cmd, callback, self.ttl / 2 ) finally: self._subscribe_lock.release()
def event_subscribe(self, *args): EventProducerMixin.event_subscribe(self, *args) self.old_value = self.get() # generate initial event self.event_generate( ChangeOfValueEvent(self, self.old_value, self.old_value, time.time())) self.cache.add_callback((self.group_id, self.addr), self._trigger_cov)
def event_subscribe(self, *args): EventProducerMixin.event_subscribe(self, *args) try: self._last_value = self.get() except: self._last_value = None # generate initial event self.event_generate(ChangeOfValueEvent(self, self._last_value, self._last_value, time.time()))
def event_unsubscribe(self, *args): self._subscribe_lock.acquire() try: assert self._subscribed >= 0 self._subscribed -= 1 EventProducerMixin.event_subscribe(self, *args) if self._subscribed == 0: address = self._device_node.address cmd = self._msg_req_type callback = self.update self._protocol_node.unregister(address, cmd, callback) finally: self._subscribe_lock.release()
def event_unsubscribe(self, *args): self._subscribe_lock.acquire() try: assert self._subscribed >= 0 self._subscribed -= 1 EventProducerMixin.event_subscribe(self, *args) if self._subscribed == 0: address = self._device_node.address cmd = self._msg_req_type callback = self.update self._protocol_node.unregister(address, cmd, callback) finally: self._subscribe_lock.release()
def _event_subscribe(self, consumer, event, **keywords): EventProducerMixin.event_subscribe(self, consumer, event, **keywords) if event is ChangeOfValueEvent: if self.is_bound_proxy(): # Cheesy HACK that ensures COV callback for bound points. self._line_handler.register_bound_proxy(self) else: self.__cov_lock.acquire() try: # Always _request_cov_callbacks because we rely on the # initial callback to generate an initial event. self._request_cov_callbacks() self.__cov_count += 1 finally: self.__cov_lock.release() return
def event_subscribe(self, consumer, event, **keywords): self.__cov_lock.acquire() try: EventProducerMixin.event_subscribe(self, consumer, event, **keywords) if event is ChangeOfValueEvent: if self.__cov_count == 0: self.__parent.event_subscribe(self, event, **keywords) else: # Force initial COV value on parent. Oh what a tangled # web. self.__parent._request_cov_callbacks() self.__cov_count += 1 finally: self.__cov_lock.release() return
def event_subscribe(self, consumer, event, **keywords): self.__cov_lock.acquire() try: EventProducerMixin.event_subscribe(self, consumer, event, **keywords) if event is ChangeOfValueEvent: if self.__cov_count == 0: self.__parent.event_subscribe(self, event, **keywords) else: # Force initial COV value on parent. Oh what a tangled # web. self.__parent._request_cov_callbacks() self.__cov_count += 1 finally: self.__cov_lock.release() return
def event_subscribe(self, *args): self._subscription_lock.acquire() try: already_subscribed = self.event_has_subscribers() EventProducerMixin.event_subscribe(self, *args) if self.parent.can_bundle() and self.bundle: self.parent.subscribe(self.prop_name, self.update_cache) elif not already_subscribed: self.update_continuous(None) if self._cached_result and \ (uptime.secs() - self._cached_result.timestamp) < self.ttl: self._trigger_cov(self._cached_result.value, self._cached_result.value, time.time()) finally: self._subscription_lock.release() return
def _event_subscribe(self, consumer, event, **keywords): EventProducerMixin.event_subscribe(self, consumer, event, **keywords) if event is ChangeOfValueEvent: if self.is_bound_proxy(): # Cheesy HACK that ensures COV callback for bound points. self._line_handler.register_bound_proxy(self) else: self.__cov_lock.acquire() try: # Always _request_cov_callbacks because we rely on the # initial callback to generate an initial event. self._request_cov_callbacks() self.__cov_count += 1 finally: self.__cov_lock.release() return
def event_subscribe(self, *args): self._subscription_lock.acquire() try: already_subscribed = self.event_has_subscribers() EventProducerMixin.event_subscribe(self, *args) if self.parent.can_bundle() and self.bundle: self.parent.subscribe(self.prop_name, self.update_cache) elif not already_subscribed: self.update_continuous(None) if self._cached_result and \ (uptime.secs() - self._cached_result.timestamp) < self.ttl: self._trigger_cov( self._cached_result.value, self._cached_result.value, time.time() ) finally: self._subscription_lock.release() return
def event_subscribe(self, *args): self._subscription_lock.acquire() try: already_subscribed = self.event_has_subscribers() result = EventProducerMixin.event_subscribe(self, *args) self._subscribers += 1 finally: self._subscription_lock.release() if not already_subscribed and self._cached_result: value = self._cached_result.value self._trigger_cov(value, value, time.time()) return result
def event_subscribe(self, *args): self._subscribe_lock.acquire() try: self._subscribed += 1 EventProducerMixin.event_subscribe(self, *args) if self._cached_result is None: last_value = None else: last_value = self._cached_result.value try: self.get() # throw away except: pass # generate initial event self._trigger_cov(last_value) if self._subscribed == 1: # initial subscription address = self._device_node.address cmd = self._msg_req_type callback = self.update self._protocol_node.register(address, cmd, callback, self.ttl / 2) finally: self._subscribe_lock.release()
def event_subscribe(self, *args): # called for a new event subscription EventProducerMixin.event_subscribe(self, *args) # trigger initial value update to get things started self._trigger_cov(self.value, None)
def event_subscribe(self, *args): # called for a new event subscription EventProducerMixin.event_subscribe(self, *args) # trigger initial value update to get things started self._trigger_cov(self.value, None)
def event_subscribe(self, *args): result = EventProducerMixin.event_subscribe(self, *args) # @note: COV model REQUIRES generating an initial event. self.event_generate( ChangeOfValueEvent(self, self.get(), self.get(), time.time())) return result
def event_subscribe(self, *args): result = EventProducerMixin.event_subscribe(self, *args) # @note: COV model REQUIRES generating an initial event. self.event_generate(ChangeOfValueEvent(self, self.get(), self.get(), time.time())) return result
def event_subscribe(self, *args): result = EventProducerMixin.event_subscribe(self, *args) event = ChangeOfValueEvent(self, self.get(), self.get(), time.time()) self.event_generate(event) return result
def event_subscribe(self, *args): EventProducerMixin.event_subscribe(self, *args) self.old_value = self.get() # generate initial event self.event_generate(ChangeOfValueEvent(self, self.old_value, self.old_value, time.time())) self.cache.add_callback((self.group_id, self.addr), self._trigger_cov)