User Tools

Site Tools


de:doc:rfc_onion

Die Zwiebel Datenstruktur

Um alle verschiedenen Typen von Datenflüssen in einem Programm zusammenzuführen, wurde ein generischer Datentyp definiert. Es ist in eine verschachtelte Feldstruktur, die sogenannte Zwiebel.

Diese Seite führt die verschiedenen Schlüssel und Ihre Bedeutungen zusammen.

Das Prinzip

Eine “Zwiebel” ist eine Ansammlung von Pfaden und deren Werten. Alle diese Pfade beginnen bei der “Zwiebelwurzel”, was bedeutet das relative Pfadbezeichnungen nicht erlaubt sind. Diese Pfade werden aus einer Liste von Namen der verschiedenen Ebenen zusammengestellt und durch ein “/” aufgeteilt. Dies bedeutet, es sieht dem Verzeichnispfad sehr ähnlich:

dies/ist/ein/möglicher/Pfad

Im Gegensatz zu einem gültigen Verzeichnispfad, darf die “Zwiebelstruktur” nicht mit einem führenden “/” beginnen.

Jeder Pfad beinhaltet einen Wert.

Dieser Wert kann entweder ein Basistyp wie eine Zeichenfolge, ein Integer, boolscher Wert oder eine Fließkommazahl, eine Ansammlung von “Zwiebeln” oder einer (Sub)-“Zwiebelstruktur” sein. Eine “Zwiebelklasse” unterstützt Methoden um die Werte zu erhalten, zu setzen und zu löschen.

Weil der Wert dieses Pfads eine “Zwiebel” sein kann, kann der Pfad aufgeteilt werden in einen nach links zeigenden Pfad, welcher eine (Sub)-“Zwiebelstruktur” als Wert zurückgibt, wobei diese (Sub)-“Zwiebelstruktur” dann den verbleibenden (rechten) Teil des Pfades enthält.

Das bedeutet wenn man z. Bsp. “Dies/ist” von dem Pfad “Dies/ist/ein/möglicher/Pfad” wegnimmt, gibt dies eine “Zwiebelstruktur” zurück, welche selbst den Inhalt von “ein/Möglicher/Pfad” enthält. Dies wird benutzt, um sehr einfach Unterteile in eine “zwiebelstruktur” einzubinden oder aus Ihr auszulagern.

Die Namenskonvention

Ein Teil eines solchen Pfades, besteht aus den folgenden Zeichen [a-zA-Z0-9_-] und muss mit einem Buchstaben starten. Normale Teile werden in Kleinschreibweise geschrieben, Wurzelbereiche in Großschreibweise (siehe unten) geschrieben. Sammlungen die intern als Schlüssel/Wert eines Hasharrays dargestellt werden, sind indiziert mit einem führenden “_”, gefolgt von einem kontinuierlich erhöhten Integerwert welcher mit 0 startet. Die Anzahl der eingebundenen Elemente ist ein Integerwert, indiziert mit “_nr”

Die Wurzelnamen

Wie es ihre Absicht ist, vermögen “Zwiebeln” eine breite Palette von möglichen Datensätzen darzustellen. Diese Datensätze ähneln dem was in C einen Struktur oder ein Datensatz in Pascal ist: Eine Struktur von verschiedenen statischen Daten, welche auch andere Sub-Strukturen enthalten können.

Um nun die Handhabung einfacher zu machen, muss folgende Konvention beachtet werden:

Der Name dieser Struktur wird als Wurzelteil des Pfades benutzt, in Großbuchstaben geschrieben. Als ein Beispiel, wie wir die Datenstruktur nutzen, betrachten wir zunächst die Implementation in C:

struct date{
   year : integer = 2010;
   month : integer = 1 ;
   day   : integer = 11 ;
   dayofweek : string = "Monday ";
}

Dies würde in der “Zwiebel” Syntax folgendermassen geschrieben werden

DATE/year = 2010
DATE/month = 1
DATE/day = 1
DATE/dayofweek = "Monday"

Die verschiedenen Wurzeln (Datentypen)

Um eine nahtlose Zusammenarbeit, zwischen all den verschiedenen internen Programmmodulen zu garantieren, muß folgenden Datenstrukturdefinitionen gefolgt werden:

ID

Die ID Struktur umfasst alle Daten, um ein Modul in einem System zu identifizieren.

Details die definiert werden müssen

Name Typ opt. Bedeutung
name Zeichenkette Id des Moduls

CONFIG

Die CONFIG Struktur wird benutzt, um den Kern in die Lage zu versetzen, den Nutzer etwas konfigurieren zu lassen

Name Typ opt. Bedeutung
Eigentümer ID Id des sendenden Moduls
Parameter Kollektion von Parametern setzen von Parametern

PARAMSET

Die PARAMSET Struktur wird benutzt, um dem Modul mitzuteilen, ein Set von gegebenen Parametern zu nutzen. Dies kann zum einen, daß Ergebnis einer CONFIG Anfrage oder einer Startkonfiguration sein, welche durch den Kern aus den Einstellungen gelesen wird und zu den Modulen während der Hochlaufphase gesendet wird.

Name Typ opt. Bedeutung
Eigentümer ID
Parameter Kollektion von Parametern setzen von Parametern

PARAM

Die PARAM Struktur wird benutzt, um Konfigurationsdaten zu transferieren. Die optionellen Daten helfen die Nutzerschnittstelle für das Konfigurationsfenster zu definieren. Sie wird nicht gebraucht, wenn einige Konfigurationsdaten zu einem Modul gesendet werden.

Name Typ opt. Bedeutung
name Zeichenkette Name dieses Parameters
typ Zeichenkette x f=Fließkommazahl, i = Integer , s = Zeichenkette , sf = Dateiname , c = Combobox , radiobutton = Wie eine Combobox, aber mit einer anderen Präsentation, cm = Combobox mit Mehrfachauswahl, b = Boolscher Wert (checkbox), a = Alarm
actValue base type Repräsentation des aktuellen Werte(s), unterteilt durch ; im Fall eines Mehrfachauswahlelements
loRange base Type x niedrigster Wert eines erlaubten Bereiches. Für Comboboxen, enthält dieses Feld die mögliche Auswahl, getrennt durch |. Für Zeichenketten kann dieses einen RegEx enthalten, welcher das erlaubte Ergebis beschreibt. Für Alarme, kann dies die Texte der Antwortknöpfe enthalten, getrennt durch |.
upRange Basistyp x höchster Wert eines erlaubten Bereiches
tooltip Zeichenkette x zusätzlicher Text welcher dem Nutzer einen Hinweis oder Hilfe für diesen Parameter gibt
fileexist Boolscher Wert x Im Fall das typ=fn für FileSelectDialogs: Die Datei muss schon existieren, um sie öffnen zu können

VALUE

Die VALUE Struktur enthält einen Anzeigewert

Name Typ opt. Bedeutung
Sender ID Sender dieses Wertes
to ID Empfänger dieses Wertes
typ Zeichenkette f=Fließkommazahl, i = Integer , s = Zeichenkette , c = Combobox , Radiobutton = wie eine Combobox, aber mit einer anderen Präsentation, cm = Combobox mit einer Mehrfachauswahl, b = Boolscher Wert (Checkbox)
rawValue Basistyp Repräsentation der(s) aktuellen Werte(s), unterteilt durch ; Im Fall eines Mehrfachauswahlelements
Unit Zeichenkette Einheit des Wertes
ValueString Zeichenkette Zeichenkettendarstellung des Wertes + Einheit
loRange Basistyp x Niedrigster Wert eines erlaubten Bereiches. Für Comboboxen, enthält dieses Feld die Auswahlmöglichkeiten, getrennt mit |. Für Zeichenketten kann dieses einen RegEx enthalten, welcher das erlaubte Ergebis beschreibt
upRange Basistyp x Höchster Wert eines erlaubten Bereiches
step Basistyp x Schrittweite in der der Wert geändert werden kann (z.Bsp. für Boxen mit Schieber)

PAGE

Die PAGE Struktur wird benutzt, um vom UI (Userinterface) eine “Landefläche” zu erzeugen, auf der dann die Visualisierer plaziert werden.

Name Typ opt. Bedeutung
Eigentümer ID Id des sendenden Moduls
name Zeichenkette Titel der angeforderten Seite (Landefäche)

PAGEDONE

Die PAGEDONE Struktur wird benutzt, um dem UI mitzuteilen, daß das Plazieren der Visualisierer abgeschlossen ist.

Name Typ opt. Bedeutung
Eigentümer ID Id des sendenden Moduls

UPDATE

Die UPDATE Struktur teilt dem Eigentümer eines Visualisierers mit, daß der Nutzer eine Aktualisierung angefragt hat, z. Bsp. mit dem Drücken eines Knopfes oder dem Doppelklick auf einen Wert

Name Typ opt. Bedeutung
vis ID Id des sendenden Visualisierers
to ID Name vom Eigentümer des Visualisierers
actValue Zeichenkette aktuell angezeigter Wert
updType int Aktualisierungstyp (wie eine Anforderung die vom Nutzer kam oder eine periodische Aktualisierung)
optid Zeichenkette X optionale ID als zusätzliche Identifikation, falls benötigt

UPDEVENT

Die UPDEVENT Struktur teilt dem Visualisierer mit, welchen Ereignissen es erlaubt ist, eine Aktualisierung auszulösen. Falls es nicht gesetzt ist, erfährt der Visualisierer nur eine Aktualisierung, wenn dies durch den Nutzer manuell initiert wurde. UPDEVENT ist ein Set von Ereignissen, welche unterteilt sind durch |

Ereignis Bedeutung
UPDATE Die Aktualisierungsanfrage wird ausgelöst, wenn der Nutzer eine globale Listenaktualisierung anfragt
TIMER Die Aktualisierungsanfrage wird in einem Intervall ausgelöst, in dem der globale Zeitgeber aktiv ist

VISUALIZE

Die VISUALIZE Struktur wird benutzt, um vom UI das Erzeugen eines Visualisierers zu initiieren. Es ist dann von der Imlementierung abhängig, einen bereits existierenden Visualisierer (Listenansicht) hinzuzufügen oder ein neues Objekt( z.Bsp ein Knopf) zu erzeugen

Name Typ opt. Bedeutung
Eigentümer ID Id des sendenden Moduls
name Zeichenkette Name des angeforderten Visualisierers
type Zeichenkette Typ des angeforderten Visualisierers
theme Zeichenkette x Name des Motivs welches benutzt werden soll, falls es nicht mit dem Standartmotiv übereinstimmt
canvas Zeichenkette Name der Flächen auf denen der Visualisierer erscheinen sollte
value VALUE Startwert
tooltip Zeichenkette zusätzlicher Text, der eine Information über diesen Wert transportiert
updevent UPDEVENT x erlaubte Aktualisierungsereignisse für den Visualisierer
optid Zeichenkette x optionale ID als zusätzliche Identifikation, falls benötigt
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
de/doc/rfc_onion.txt · Last modified: 2014/09/28 09:14 by wsauer