public function MessageSink($TimeStamp, $SenderID, $Message, $Data)
{
switch ($Message)
{
case VM_UPDATE:
if ($SenderID != $this->ReadPropertyInteger('VarID'))
break;
// $Data[0] Neuer Wert
// $Data[1] true/false ob Änderung oder Aktualisierung.
// $Data[2] Alter Wert
break;
}
}
Zum testen sollte dies reichen
Wichtig ist, dass du die Variablen-ID irgendwie (SetBuffer) merkst, damit wenn der User die Variable umkonfiguriert, du auch die alte VarID mit Unregistermessage wieder rauswirfst.
Ebenso wäre auch VM_DELETE nicht verkehrt, wenn die Variable gelöscht wurde.
danke für das Beispiel, aber ich hatte es auch schon hinbekommen.
Das mit dem Unregister ist gar nicht so verkehrt. Gibt es in der Konsole irgendwo eine Übersicht, was alles registriert ist?
ich frage mich nur wie ich mitbekomme, dass die Variable umkonfiguriert wird.
Mit VM_DELETE erkenne ich ja wenn eine gelöscht wird, dann kann ich ja an der Stelle unregisterMessage aufrufen, aber das mit dem umkonfigurieren, da hänge ich noch ein wenig fest.
?
Einfach in ApplyChanges immer erst unregister mit der alten ID aufrufen (Buffer) und dann neu registrieren.
Ob sie dann gleich oder anders ist, ist ja egal
Michael
da der Buffer ja nur so lange gültig ist bis IPS neugestartet wird, oder evtl. mal abstürzt, was passiert denn dann?
Wir bei einem Neustart von IPs die Registrierung sowieso aufgehoben?