Hallo rudi,
in dem Thread Link (http://forum.fhem.de/index.php?topic=11788.0) wurde ich darauf Aufmerksam gemacht, dass wenn die BlockingFn aufgrund einer Timeout-Überschreitung gekillt wird, dass dann die FinishFn in einem solchen Fall nicht aufgerufen wird.
Dies ist bei PRESENCE aber essentiell, da ich mit der FinishFn den nächsten Durchlauf via InternalTimer schedule. Dies ist wichtig um sicherzustellen, dass erst nach dem beenden eines Threads ein neuer erzeugt wird und so immer nur ein Thread laufen kann. Damit wird ein aufschaukeln von gleichzeitigen Child-Prozessen verhindert.
Daher würde ich folgende Möglichkeiten anbieten:
1. MöglichkeitZitat von: Mattias schrieb am Di, 19 März 2013 20:41Vorschlag: BlockingCall um einen (optionalen) Parameter erweitert werden sollte. Diese "OnTimeout"-Funktion sollte im Timeout-Fall, nach dem Kill des Befehls, aufgerufen werden. Presence könnte so sicherstellen, dass die Überprüfung fortgesetzt wird oder eine verständliche Logmeldung ausgeben.
2. MöglichkeitSofern eine FinishFn gesetzt ist, diese in so einem Fall mit undef als Argument aufrufen.
Währe super, wenn wir diesen Fall so umsetzen können, damit ich auch in einem solchen Fall sichergehen kann, dass ein nächster Durchgang gescheduled wird.
Vielen Dank
Gruß
Markus