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.
<uml> '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
</uml>
Details zu den SIGNALs und SLOTs siehe doxygen doku.