Beispiel #1
0
class EventDispatcher(object):
    __SIGNALS__ = SignalStorage

    def __init__(self):
        self.__JUGGERNAUT__ = Juggernaut()

    @classmethod
    def subscribe(cls, signal_name, callback, caller):
        try:
            signal_model = cls.__SIGNALS__.get(signal_name=signal_name)
        except NotFoundException:
            signal_model = cls.__SIGNALS__(signal_name=signal_name)
            signal_model.callback_list = []
        callback_model = Callback(
                           caller_id=caller._id,
                           caller_class=caller.__class__.__name__,
                           callback=callback.__name__
                         )
        callback_model.save()
        signal_model.callback_list.append(callback_model._id)
        signal_model.save()

    def main_loop(self):
        for signal_name, data in self.__JUGGERNAUT__.subscribe_listen():
            for callback_model in self.__SIGNALS__.callbacks(signal_name):
                caller_class = globals().get(callback_model.caller_class)
                caller_object = caller_class.get(_id=callback_model.caller_id)
                getattr(caller_object, callback_model.callback)(**data)
Beispiel #2
0
Datei: 2.py Projekt: woto/EPC
import pdb
from juggernaut import Juggernaut
import redis

r = redis.Redis('192.168.2.3')
jug = Juggernaut(r)
pdb.set_trace()
for event, data in jug.subscribe_listen():
    print event
    if event == 'subscribe':
        print 'subscribe'
    elif event == 'unsubscribe':
        print 'unsubscribe'
    elif event == 'custom':
        print 'custom_event'