Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
mvw2:dev:threads [2011/06/16 07:49] Patrick Wacker angelegt |
mvw2:dev:threads [2011/06/16 18:35] (aktuell) Patrick Wacker [changedDataThread] Beschreibung vervollständigt |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
===== changedDataThread ===== | ===== changedDataThread ===== | ||
- | UML Anfang der Beschreibung | + | Dieser Thread lauscht auf einem UDP Socket und Informiert andere Instanzen über Änderungen am Datenbestand |
- | Dieser Text Links vom Diagram? | + | Ü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. |
- | <uml> | + | Dies wird über das Netzwerk per UDP-Telegram erledigt. |
- | skinparam monochrome true | + | 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. |
- | box "MVW2 Program Instance 1" #LightBlue | ||
- | participant object as obj1 | ||
- | participant changedDataThread as cdt1 | ||
- | end box | ||
- | box "MVW2 Program Instance 2" #LightBlue | + | <uml> |
- | participant changedDataThread as cdt2 | + | 'skinparam monochrome true |
- | participant object as obj2 | + | 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 | end box | ||
- | 'box "MVW2 Network connection" #LightYellow | ||
- | ' participant cdt1 | ||
- | ' participant cdt2 | ||
- | 'end box | ||
+ | cdt -> cdt: load instances from database | ||
+ | activate cdt | ||
- | obj1->cdt1: register | + | obj1 -> cdt: connect(cdt.changeAt(), this.change()) |
+ | obj2 -> cdt: changed(event, table, ID) | ||
- | obj2->cdt2: register | + | cdt -> obj1: changeAt(event, table, ID) |
+ | cdt ->]:changed(event, table, ID) | ||
+ | note left | ||
+ | Info an alle andere Instanzen | ||
+ | über das Netzwerk | ||
+ | end note | ||
- | obj1->cdt1: SLOT changed(table, id) | + | obj2 -> cdt: connect(cdt.changeAt(), this.change()) |
+ | note left: Obj2 auch über Ändergungen Informieren | ||
- | group UDP Network Telegrams | + | cdt <-]: changeAt(event, table, ID) |
- | cdt1->cdt2: chanded(table, id) | + | note left: Info einer anderen Instanz |
- | note right: Send over the Network\nas an UDP telegram | + | |
- | end | + | |
- | + | ||
- | cdt2->obj2: SIGNAL dataChanged(table, id) | + | |
+ | 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> | </uml> | ||
- | wo schreibt der diesen Text? rechts?? | + | |
+ | Details zu den SIGNALs und SLOTs siehe doxygen doku. |