Hallo,
ich habe da mal wieder eine Verständnisfrage.
In einigen Modulen habe ich eine Möglichkeit eingebaut, die Instanz mittels einer Property zu deaktivieren.
Da ich frühestens in ApplyChanges() an den Wert der Property dran komme, kann ich auch erst ab dort den Status der Instanz zwischen 102 und 104 ändern, je nach gewünschter Einstellung.
Nun ist es so, dass ApplyChanges() ja auch beim Laden des Moduls aus Create() heraus aufgerufen wird. Während dieses ersten Aufrufs von ApplyChanges() hat die Instanz aber noch den Status 101, weil dieser offensichtlich erst ganz zum Schluss durch Create() auf 102 gesetzt wird.
Bisher habe ich mich nicht weiter darum gekümmert und den Status einfach ganz frech in ApplyChanges() überschrieben. Das funktioniert auch und ich konnte noch keine Probleme dadurch feststellen.
Nun stelle ich mir jedoch die Frage, ob das nicht vielleicht doch irgendwelche Auswirkungen haben kann, wenn ich einfach in die Statusübergänge, die von IPSModule gesteuert werden, eingreife.
Ich bin dann irgendwann dazu übergegangen, mich mit RegisterMessage() an Änderungen des Instanzstatus zu hängen und greife erst in den Status ein, wenn dieser nach dem Laden 102 ist.
Das finde ich aber auch recht umständlich und ein Stück weit von hinten durch die Brust ins Auge, zumal ich gerne in ApplyChanges() schon gewisse Dinge in Abhängigkeit des jeweiligen Instanzstatus tun will, was aber beim Laden des Moduls aufgrund von Status 101 auch wieder alles etwas komplizierter macht.
Daher die Frage:
Kann ich den Status 101 einfach wie bisher überschreiben oder sollte ich das besser nicht tun?
Mit der ganzen Thematik, was ich in welchem Kernel- und Instanzstatus tun sollte und was nicht, stehe ich immer noch etwas auf Kriegsfuß. Insgesamt tue ich mich nach wie vor mit dem Zusammenspiel von Create() und ApplyChanges() schwer, weil man in Create() eben vieles noch nicht tun kann, ich aber manchmal Dinge nur beim Laden des Moduls tun möchte und nicht beim normalen Übernehmen der Einstellungen.
Vielleicht wären Create(), ApplyChanges(), Destroy(), __construct() und Co. sowie die Kernel- und Instanzzustände und die sich daraus resultierenden Einschränkungen beim Laden des Moduls / Neustarten des Dienstes mal ein Thema für ein Webinar.
Es funktioniert zwar immer alles bei mir, aber das muss ja nicht heißen, dass es gut/richtig ist. Irgendwie ist IPSModule für mich nach wie vor eine große Blackbox.