Namespaces

Namespaces sind logische Namensräume in devel.one. In ihnen werden Targets, Services und Threads registriert.

Namespaces haben eine eigene ID vom Typ IId, die Namespace-ID (NID.

Jeder Namespace verfügt über mindestens eine Message-Queue. Diese bestehen aus einem Thread und einer Warteschlange, in der Nachrichten auf ihre Bearbeitung warten. Queues besitzen eine ID vom Type IId (QID).

Eine einzelne Target-Registry dient zur Verwaltung der Targets im Namespace. Targets müssen daher alle unterschiedliche IDs bekommen. Oder anders herum: Es können Targets mit derselben TID existieren, nur müssen sie eben in einem anderen Namespace angemeldet werden.

Einer Service-Registry dient zur Anmelden von Services. Auch Services sind für ihren Namespace eindeutig und haben eine entsprechende Service-ID (SID, Typ IId).

Namespaces besitzen also eine eigene Infrastruktur mit Targets und Services, denn sie dienen als Untergrund von Applikationen. Nur so ist es möglich, mehrere Instanzen ein und derselben Applikation in einem devel.one-NODE zu hosten.

Der devel.one-Kernel enthält eine NamespaceRegistry, in der Namespaces erzeugt und angemeldet werden. Es existieren schon einige vordefinierte Namespaces:

SYSTEM Haupt-Namespace, wird beim StartUp erzeugt.
TRANSPORT Wird von den Network-PlugIns erstellt.
MONITOR Wird vom Monitor und den Tools erstellt.
TEST Wird vom Test-PlugIn erstellt.

Wenn mehrere Threads in einem Namespace benötigt werden, so können sie einfach durch eine Methode createAndStartAsyncQueue(...) erzeugt werden.

Beim Registrieren von Targets kann man optional eine Queue-ID angeben; fehlt diese, so wird das Target im ersten Thread des Namespaces angemeldet.  

Das Löschen eines Namespaces bewirkt auch das Löschen aller im Namespace registrierten devel.one-Objekte.

Namespaces können optional einen eigenen Datenpool besitzen. Dieser muss in der Konfiguration freigeschaltet werden.

Weiterhin besitzt jeder Namespace einen Low-Level Benachrichtigungsdienst, die Signal-Registry.