[Pyxoo] Petit exemple rapide d’utilisation de la classe EventBroadcaster

30 juillet 2007, 2 Commentaires »

Afin de compléter mon précédent billet concernant Pyxoo je vous livre ici un premier exemple concernant l’utilisation de la classe EventBroadcaster.

from Pyxoo.events.broadcaster import EventBroadcaster
from Pyxoo.events.event import StringEvent
import sys

# création de listeners proposant une méthode onLog

class LogListener:
def onLog(self, event):
raise NotImplementedError

class TextFileLogger(LogListener):
def __init__(self):
self.__file = open("mylogs.log", "w+")
def onLog(self, event):
self.__file.write(event.getString()+"\n")

class StdOutLogger(LogListener):
def onLog(self, event):
sys.stdout.write(event.getString()+"\n")

log1 = TextFileLogger()
log2 = StdOutLogger()
EVENT_TYPE = "onLog"

eventBroadcaster = EventBroadcaster()
# on ajoute un listener associé à un type d'événement
# dans l'eventBroadcaster
eventBroadcaster.addEventListener( EVENT_TYPE, log1 )
eventBroadcaster.addEventListener( EVENT_TYPE, log2 )

# création d'un événement avec pour eventType "onLog"
event1 = StringEvent( EVENT_TYPE, "Bonjour" )
event2 = StringEvent( EVENT_TYPE, "Au revoir" )

# diffusion de l'événement. Tous les listeners associés
# à l'événement "onLog" reçoivent l'événement et le traitent.
eventBroadcaster.broadcastEvent( event1 )
eventBroadcaster.broadcastEvent( event2 )

Bien sûr ce n’est qu’un exemple très simple de l’utilisation de la classe. On peut imaginer de nombreux types d’utilisation dans des contextes différents : gestion des événements d’une application Pygame, d’événements provenant d’une socket, etc…

Recherche

Nuage de tags :

No tags.

Blogoliste

Publicité solidaire