def __init__(self, item_id, name, reactor=None, adapter=None, parents=None): BaseItem.__init__(self, item_id, name, adapter=adapter, parents=parents) self._reactor = self._adapter.reactor if reactor is None else reactor self._msg_listeners = [] self._system_errors = [] self._system_events = [] self._timer = None self._auto_update_discovery = True #: If True auto update discovery with broadcast discovery messages self.discovery = {} #: The current discovery information to pull from self._message_id_generator = message_id_generator(65535, 100) # Add this listener so it will be first in the list to pickup errors, warnings and events. self.add_listener(self._system_listener) self.add_listener(self._discovery_request_listener) self._adapter.subscribe(self._discovery_broadcast_listener, type='DISCOVERY_BROADCAST')
def __init__(self, item_id, name, reactor=None, adapter=None): BaseItem.__init__(self, item_id, name, adapter=adapter) self._reactor = self._adapter.reactor if reactor is None else reactor self._msg_listeners = [] self._system_errors = [] self._system_events = [] self._timer = None self._auto_update_discovery = True #: If True auto update discovery with broadcast discovery messages self.discovery = {} #: The current discovery information to pull from self._message_id_generator = message_id_generator(65535, 100) # Add this listener so it will be first in the list to pickup errors, warnings and events. self.add_listener(self._system_listener) self.add_listener(self._discovery_request_listener) self._adapter.subscribe(self._discovery_broadcast_listener, type='DISCOVERY_BROADCAST')
def get_discovery(self): """ Discovery method. You can override this in a subclass if you want, but it will probably be easier to use the self.add_property and self.add_field helper methods and call this method like: def get_discovery(self): discovery = ParlayStandardItem.get_discovery(self) # do other stuff for subclass here return discovery """ # get from parent discovery = BaseItem.get_discovery(self) discovery["TOPIC_FIELDS"] = self._topic_fields discovery["CONTENT_FIELDS"] = self._content_fields discovery["PROPERTIES"] = sorted([x for x in self._properties.values()], key=lambda v: v['PROPERTY']) discovery["DATASTREAMS"] = sorted([x for x in self._datastreams.values()], key=lambda v: v['STREAM']) if self.item_type is not None: discovery["TYPE"] = self.item_type return discovery