Functorfrage (nochmal)
-
Hi,
bin jetzt fast fertig mit meinen Functor/Event/Listener-System, nur noch ein Problem: Ein Event kann mehrere Listeners registrieren (Listener = Functor) und die können natürlich auch einen Rückgabewert haben. Welchen Rückgabewert soll die CallAll()-Funktion eines Events haben, wenn mehrere Listeners registriert sind?
void fände ich extrem nervig, weil man dann evtl. Fehlerwerte nicht mitkriegt, ein vector mit den Rückgabewerten ist wohl zu langsam und der Rückgabewert des letzten Listeners bevorzugt dann ja den letzten ListenerChrisM
-
void natürlich
-
Und wie soll man dann Fehlerwerte mitkriegen?
ChrisM
-
Original erstellt von ChrisM:
Und wie soll man dann Fehlerwerte mitkriegen?
ChrisMfehler? so echte fehler?
-
exception
-
Ja, Exceptions verwend ich sowieso, aber wenn der Eventverteiler eh immer void zurückliefert (bzw. nicht zurückliefert :D) hat der Rückgabewert ja wohl keinen Sinn.
ChrisM
-
Du kannst ja auch das Konzept des Haupt-Handlers einführen - sollte ein Rückgabewert erwünscht sein. (Immer der als letztes registrierte Haupt-Handler zählt - Implementation per deque)
-
So werd ich es auch machen, ein Listener ist immer der Primärlistener, der dann auch als erster aufgerufen wird und die anderen sind nur Co-Listener (klingt scheisse, aber egal)
ChrisM
-
Und damit das ganze elegant geht, ist der Primär-Listenere schlicht und einfach das erste Element in der deque.
-
einer macht ergebnis und die anderen nicht? klingt schlimm. klingt ganz schlimm irgendwie. klingt einfach nicht gut. hab da so meine bedenken. fühlt sich nicht gut an. könnte designfehler sein. würde noch mal länger drüber nachdenken. ich melde mal vorbehalte an. ich zweifle da. ihr versteht?
-
Ja, aber was soll ich dann machen? Einen ganzen vector mit den Rückgabewerten zurückgeben?
ChrisM
-
überhaupt nicht mit rückgabewerten arbeiten. die brauch niemand
-
Original erstellt von ChrisM:
Ja, aber was soll ich dann machen? Einen ganzen vector mit den Rückgabewerten zurückgeben?
ChrisMmach mal beispiel, wo ein rüchgabewert gebraucht wird.
für so ne handler-chain isses oft sinnvoll, wenn bool gegeben wird, ob man selber das event abschließend verarbeiten konnte, oder ob der nächste drankommen darf.
-
Nur ein Beispiel, eine Buttonklasse und die Notifier returnen true/false, je nach dem, ob sie das Klickevent verarbeiten konnten.
Klar könnte ich das Event-Template fest auf bool verdrahten und bei einem false überall false zurückgeben, aber das ist ja auch net Sinn der Sache...ChrisM