Event handler?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ruffy
User
Beiträge: 34
Registriert: Dienstag 2. Oktober 2012, 11:26

Hi,

Ich bin mir nicht ganz sicher ob das wirklich "Events" sind aber ich würde gerne ein kleines "script" schreiben welches über ein event system verfügt. Momentan sieht das ganze so aus, dass das script per WLAN mein Handy anpingt um zu checken ob ich mich im WLAN bereich aufhalte.

Nun soll wenn ich den wlan bereich verlasse eine reihe von Funktionen ausgeführt werden. PC in ruhezustand, lichter aus etc

Momentan mache ich das so dass ich per appsheduler alle 20 minuten checke ob eine Ping antwort kommt, wenn nicht werden eben diese befehle alle ausgeführt. Ich würde das aber nun gerne über plugins erweitern und evtl auch auf ein "wieder da" event.

daher dachte ich es wäre cool wenn man einen event handler hätte dem man in der art neue "plugins" zuweißen kann...

EVENT_HANDLER.onCheckin.append(FUNCTION) in dem oben genannten bsp wäre das also in etwa so

Code: Alles auswählen

EVENT_HANDLER.onCheckIn.append(checkMails)
EVENT_HANDLER.onCheckOut.append(turnLightsOff)
evtl das ganze noch mit einem offset, dass könnte man aber dann auch wieder durch das plugin/funktion lösen in dem man parameter übergibt.

die Frage ist nun, wie kann ich einen event handler basteln, der bei gewissen "events" in dem fall verlassen/betreten des WLAN Bereichs ausgelöst wird und dessen funktionen die dann ausgeführt werden einfach erweiterbar sind.

Ich hoffe ich konnte das einigermaßen verständlich erklären und würde mich freuen wenn mir jemand helfen könnte :)
grüße Ruffy
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Meinst Du sowas:

Code: Alles auswählen

class Event(object):                                                       
    def __init__(self):
        self.callbacks = set()

    def __call__(self, *args, **kwargs):
        for callback in self.callbacks:
            callback(*args, **kwargs)

    def add(self, listener):
        self.callbacks.add(listener)

    def remove(self, listener):
        self.callbacks.remove(listener)

def turn_light_on():
    print 'light is on'

def turn_light_off():
    print 'light is off'

def resume():
    print 'pc will resume from suspend mode'

def suspend():
    print 'pc will change in suspend mode'

Code: Alles auswählen

>>> scope_on = Event()
>>> scope_off = Event()
>>> scope_on.add(turn_light_on)
>>> scope_on.add(resume)
>>> scope_off.add(turn_light_off)
>>> scope_off.add(suspend)
>>> scope_on()
light is on
pc will resume from suspend mode
>>> scope_off()
pc will change in suspend mode
light is off
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Ruffy
User
Beiträge: 34
Registriert: Dienstag 2. Oktober 2012, 11:26

vielen dank ich glaube das dürfte es gewesen sein :)
Antworten