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.