====== Threads die in der MVW2 verwendet werden können ====== ===== changedDataThread ===== Dieser Thread lauscht auf einem UDP Socket und Informiert andere Instanzen über Änderungen am Datenbestand Über den Slot changed() kann diesem Thread mitgeteilt werden welche Daten wie geändert wurden. Der Thread kümmert sich dann darum das alle anderen Instanzen über die Änderung informiert werden. Dies wird über das Netzwerk per UDP-Telegram erledigt. Ausserdem lauscht er auf einem UDP Socket auf Änderungen von anderen Instanzen und informiert über das Signal changeAt() alle Objekte die auf dieses Signal reagieren. 'skinparam monochrome true hide footbox title Ablauf für Informationen über geänderte Daten in der Datenbank box "MVW2 Programm Instanz" #Lightcyan participant Object1 as obj1 participant Object2 as obj2 participant Object3 as obj3 participant changedDataThread as cdt end box cdt -> cdt: load instances from database activate cdt obj1 -> cdt: connect(cdt.changeAt(), this.change()) obj2 -> cdt: changed(event, table, ID) cdt -> obj1: changeAt(event, table, ID) cdt ->]:changed(event, table, ID) note left Info an alle andere Instanzen über das Netzwerk end note obj2 -> cdt: connect(cdt.changeAt(), this.change()) note left: Obj2 auch über Ändergungen Informieren cdt <-]: changeAt(event, table, ID) note left: Info einer anderen Instanz cdt -> obj1: changed(event, table, ID) cdt -> obj2: changed(event, table, ID) obj3 -> cdt: changed(event, table, ID) note left: Obj3 teilt Änderungen mit cdt -> obj1: changed(event, table, ID) cdt -> obj2: changed(event, table, ID) cdt ->]: changed(event, table, ID) obj1 -> cdt: disconnect(SIGNAL,SLOT) obj2 -> cdt: disconnect(SIGNAL,SLOT) ...Programm wird beendet... cdt -> cdt: deleteInstance note left Instanz-Eintrag aus der Datenbank löschen end note cdt ->]: changed(delete, Instances, [ID]) note left andere Instanzen über löschung informieren end note deactivate cdt Details zu den SIGNALs und SLOTs siehe doxygen doku.