예제 #1
0
class ActionDifferee:
    """Cette classe permet de déclarer des actions différées.
    Ce sont des actions qui s'exécuteront plus tard. La méthode boucle du 
    module primaire diffact se charge d'exécuter ces actions différées au temps
    prévu. Une action différée contient :
    -   un nom identifiant (str)
    -   un temps d'échéance sous la forme d'un timestamp (float)
    -   une fonction telle que décrite dans bases.fonction avec une liste
        d'arguments
    
    """
    def __init__(self, nom, tps, ref_fonc, *args, **kwargs):
        """Constructeur de l'action différée."""
        self.nom = nom
        self.echeance = time.time() + tps
        self.fonction = Fonction(ref_fonc, *args, **kwargs)
    
    def doit_exec(self):
        """Return True si le temps d'échéance est passé, False sinon."""
        return time.time() >= self.echeance

    def executer(self):
        """Exécution de la fonction. On redirige simplement vers
        self.fonction.exec().
        
        """
        self.fonction.executer()
예제 #2
0
class ActionDifferee:

    """Cette classe permet de déclarer des actions différées.

    Ce sont des actions qui s'exécuteront plus tard. La méthode boucle du
    module primaire diffact se charge d'exécuter ces actions différées au temps
    prévu. Une action différée contient :
    -   un nom identifiant (str)
    -   un temps d'échéance sous la forme d'un timestamp (float)
    -   une fonction telle que décrite dans bases.fonction avec une liste
        d'arguments

    """

    def __init__(self, nom, tps, ref_fonc, *args, **kwargs):
        """Constructeur de l'action différée."""
        self.nom = nom
        self.echeance = time.time() + tps
        self.fonction = Fonction(ref_fonc, *args, **kwargs)

    def doit_exec(self):
        """Return True si le temps d'échéance est passé, False sinon."""
        return time.time() >= self.echeance

    def executer(self):
        """Exécution de la fonction. On redirige vers self.fonction.exec()."""
        debut = time.time()
        self.fonction.executer()
        fin = time.time()
        duree = fin - debut
        if duree > TEMPS_MAX:
            duree = round(duree, 3)
            importeur.diffact.logger.debug("L'action {} a mis {}s " \
                    "pour s'exécuter".format(self.nom, duree))

    def __le__(self, other):
        """Les actions différées sont ordonnées par leur échéance."""
        return self.echeance <= other.echeance

    def __gt__(self, other):
        """Les actions différées sont ordonnées par leur échéance."""
        return self.echeance > other.echeance
예제 #3
0
    def ajouter_evenement(self, fonction, *args, **kwargs):
        """Crée une fonction callback liée à l'évènement.

        Elle prend en paramètre :
            fonction : la fonction à appeler
            les paramètres nommés ou non à passer à cette fonction

        Note : lors de l'exécution du hook, les paramètres passés à
        la fonction sont ajoutés à ceux passés à la méthode Hook.executer.

        """
        callback = Fonction(fonction, *args, **kwargs)
        self.__evenements.append(callback)
예제 #4
0
 def __init__(self, nom, tps, ref_fonc, *args, **kwargs):
     """Constructeur de l'action différée."""
     self.nom = nom
     self.echeance = time.time() + tps
     self.fonction = Fonction(ref_fonc, *args, **kwargs)