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.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…
Bonjour,
Très beau boulot. Une question toutefois : cette partie de PixLib ne ferait-elle pas double-emploi avec le framework de signalling de django ?
http://code.djangoproject.com/wiki/Signals