Exemple #1
0
 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()
Exemple #2
0
 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)
Exemple #3
0
 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()))
Exemple #4
0
 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()
Exemple #5
0
 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()
Exemple #6
0
 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
Exemple #7
0
 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
Exemple #8
0
 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
Exemple #9
0
 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
Exemple #10
0
 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
Exemple #11
0
 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
Exemple #12
0
 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
Exemple #13
0
 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()
Exemple #14
0
 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)
Exemple #15
0
 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
Exemple #18
0
 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
Exemple #19
0
 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)