FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: geek am 05 Januar 2015, 23:21:59

Titel: Modul: fhem backend für AnyEvent
Beitrag von: geek am 05 Januar 2015, 23:21:59
Hallo,

Problem bei den meisten "normalen" CPAN Modulen ist, daß sie für non-blocking Einsatz wie in fhem nicht taugen. Mit  Aufwand kann man die Problem zwar vermeiden oder Umschiffen (wie zb: mit BlockingCall) - es geht aber auch eleganter:

AnyEvent ist ein universeller Adapter um Module auf einer beliebigen Event Loop laufen zu lassen:
http://search.cpan.org/~mlehmann/AnyEvent-7.08/lib/AnyEvent.pm (http://search.cpan.org/~mlehmann/AnyEvent-7.08/lib/AnyEvent.pm)

Module für AnyEvent sind in der Regel non-blocking. AnyEvent bringt auch viele Helferlein (AnyEvent::Handle) mit, die es sehr einfach machen neue Protokolle non-blocking anzubinden. Das erspart einem, das Rad immer wieder (ggf. nur für fhem) neu erfinden zu müssen.  Für diverse Protokolle gibt es fertige Module die AnyEvent nutzen (HTTP, MQTT, Websocket, IRC, XMPP, SNMP, Ping, FTP, Twitter, SMTP, SSH, DBI,  ...). Auch "moderne" Arbeitserleichterungen wie Promises http://search.cpan.org/dist/Promises/lib/Promises.pm (http://search.cpan.org/dist/Promises/lib/Promises.pm) oder Future http://search.cpan.org/dist/AnyEvent-Future/lib/AnyEvent/Future.pm (http://search.cpan.org/dist/AnyEvent-Future/lib/AnyEvent/Future.pm) können auf AnyEvent aufsetzen.

Das angehängte Module dient als Backend für AnyEvent in fhem. Damit können auf  AnyEvent basierende Module auch in fhem genutzt werden. Das hat auch den Vorteil das ggf. neu geschriebende AnyEvent Module auch ausserhalb von fhem genutzt werden können.

Ich nutze das für

Die Verwendung ist im Modul als POD beschrieben - ebenso wie die Grenzen der Implementierung.

Rainer
Titel: Antw:Modul: fhem backend für AnyEvent
Beitrag von: geek am 11 September 2015, 13:38:38
Hi,

sorry für die lange Pause.

Anbei findet sich eine Version mit kleineren Korrekturen.

ACHTUNG: Das ist nicht mit einem aktuellen fhem getestet! Meiner läuft leider noch auf nem Stand vom Frühling... also... Vorsicht!

Rainer