Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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