Namespaces

Namespaces are the basis for applications in devel.one. They register targets, services and threads.

Namespaces have their own ID of type IId, the namespace ID, or NID for short.

Each namespace has at least one message queue. These consist of a thread and a queue in which messages are waiting to be processed. Queues have an ID of type IId (QID).

A single target registry is used to manage the targets in the namespace. Targets must therefore all have different IDs. Or the other way round: Targets with the same TID can exist, but they have to be registered in a different namespace.

A service registry is used to register services. Services are also unique for their namespace and have a corresponding service ID (SID, type IId).

Namespaces have their own infrastructure with targets and services because they serve as a platform for applications. This is the only way to host multiple instances of the same application in a devel.one NODE.

The devel.one kernel provides a namespaceRegistry, in which namespaces are created and logged on. There are already some predefined namespaces:

SYSTEM Main namespace, created at startup.
TRANSPORT Created by the network plug-ins.
MONITOR Created by the monitor and tools.
TEST Created by the Test PlugIn.

If several threads are needed in a namespace, you can easily create them using a createAndStartAsyncQueue(...) method.

When registering targets, you can optionally specify a queue ID. If this is missing, the target is registered in the first thread of the namespace.  

Deleting a namespace also deletes all devel.one objects registered in the namespace.

Namespaces can optionally have their own data pool. This must be enabled in the configuration.

Furthermore, each namespace has a low-level notification service, the signal registry.