def get_actor_from_properties(self, prop): """ Devuelve un actor que pueda actuar para dispositivos con las propiedades espeficicadas en prop """ klass = None actor_klass = None # priority -> 1 2 3 4 5 priority_actors = [None, None, None, None, None] priority_counts = [0, 0, 0, 0, 0] import actors for klass in actors.ACTORSLIST: # Set priority to 3 if not in range if klass.__priority__ not in (1, 2, 3, 4, 5): klass.__priority__ = 3 kpriority = klass.__priority__ - 1 count = self.__count_equals(prop, klass.__required__) if count > priority_counts[kpriority]: priority_counts[kpriority] = count priority_actors[kpriority] = klass for i in (4, 3, 2, 1, 0): if priority_actors[i]: actor_klass = priority_actors[i] break actor = None udi = prop['info.udi'] if actor_klass: actor = actor_klass(self.message_render, prop) self.udi_dict[udi] = actor if not self.modify_handler_dict.has_key(udi): self.modify_handler_dict[ udi] = lambda *args: self.on_property_modified(udi, *args) self.bus.add_signal_receiver( self.modify_handler_dict[udi], dbus_interface='org.freedesktop.Hal.Device', signal_name="PropertyModified", path=udi) else: # Shorting logger setup (in module actors, logging.getLogger must be # invoked _after_ than in main function). from actors.deviceactor import DeviceActor actor = DeviceActor(self.message_render, prop) self.udi_dict[udi] = actor return actor
def add_actor_from_properties(self, prop): """ Devuelve un actor que pueda actuar para dispositivos con las propiedades espeficicadas en prop """ max = 0 klass = None actor_klass = None import actors for klass in actors.ACTORSLIST: count = self.__count_equals(prop, klass.__required__) if count > max: actor_klass = klass max = count actor = None udi = prop['info.udi'] if actor_klass: actor = actor_klass(self.message_render, prop) self.udi_dict[udi] = actor if not self.modify_handler_dict.has_key(udi): self.modify_handler_dict[ udi] = lambda *args: self.on_property_modified(udi, *args) self.bus.add_signal_receiver( self.modify_handler_dict[udi], dbus_interface='org.freedesktop.Hal.Device', signal_name="PropertyModified", path=udi) else: # Shorting logger setup (in module actors, logging.getLogger must be # invoked _after_ than in main function). from actors.deviceactor import DeviceActor actor = DeviceActor(self.message_render, prop) self.udi_dict[udi] = actor return actor
def get_actor_from_properties(self, prop): """ [es] Devuelve un actor que encaje con las propiedades espeficicadas en prop ----------------------------------------------------------------------- [en] Returns an actor that matches the especified properties in prop """ klass = None actor_klass = None # [es] prioridad -> 1 2 3 4 5 # [en] priority -> 1 2 3 4 5 priority_actors = [None, None, None, None, None] priority_counts = [0, 0, 0, 0, 0] import actors for klass in actors.ACTORSLIST: # [es] Ponemos prioridad a 3 si no esta entre 1 y 5 # [en] Set priority to 3 if not in 1 to 5 range if klass.__priority__ not in (1, 2, 3, 4, 5): klass.__priority__ = 3 kpriority = klass.__priority__ - 1 count = self.__count_equals(prop, klass.__required__) if count > priority_counts[kpriority]: priority_counts[kpriority] = count priority_actors[kpriority] = klass for i in (4, 3, 2, 1, 0): if priority_actors[i]: if priority_actors[i].__enabled__: actor_klass = priority_actors[i] else: # [es] Activamos el actor de nuevo para que pueda ser # comprobado en la proxima consulta # [en] Enable the actor again to check it in next polling priority_actors[i].__enabled__ = True break actor = None udi = prop['info.udi'] if actor_klass: actor = actor_klass(self.message_render, prop) self.udi_dict[udi] = actor if not self.modify_handler_dict.has_key(udi): self.modify_handler_dict[udi] = \ lambda *args: self.on_property_modified(udi, *args) self.bus.add_signal_receiver( self.modify_handler_dict[udi], dbus_interface='org.freedesktop.Hal.Device', signal_name="PropertyModified", path=udi) else: # [es] Configuracion del registro abreviada (en los actores, # logging.getLogger debe ser invocado tras la funcion main # [en] Shorting logger setup (in module actors, logging.getLogger # must be invoked _after_ than in main function). from actors.deviceactor import DeviceActor actor = DeviceActor(self.message_render, prop) self.udi_dict[udi] = actor return actor