Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
|
mvw2:dev:threads [2011/06/16 08:34] Patrick Wacker kleine tests mit UML sequence diagram |
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) | + | |
| - | cdt1-->]: UDP dataChanged(state, table, id) | + | cdt -> obj1: changed(event, table, ID) |
| - | ' note right: Data send over the Network | + | 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. | ||