3. Configuration files¶
Discovery-server operation is managed from an XML configuration file that follows the Discovery Server XSD schema, which is an extension of the Fast DDS XML schema. The discovery-server main goals are:
Simplify the configuration of Fast DDS servers. Using a Fast DDS participant profile for each server is tiresome, given the large number of boilerplate code to move around. New XML syntax extensions are introduced to ease this task.
Provide a flexible testing tool for the Discovery Server discovery mechanism. Testing the discovery involves creating a large number of participants, publishers, subscribers that use specific topics and types (static or dynamic ones) over different transports. Besides, all these entities may be instantiated or removed at different times, giving the possibility to check the discovery status (collective participant knowledge) at any of these times.
The outermost XML tag is DS.
It admits an optional boolean attribute called user_shutdown that defaults to
true. By default, the discover-server binary runs indefinitely until the user decides to shutdown.
This default behavior is suitable for practical applications but not for testing.
Test XML files use user_shutdown="false", which grants that the discovery server is closed as soon as the test
is fulfilled. The DS tag can contain the following tags:
profiles: is plainly the Fast DDS profiles. It can be used to fine-tune the server operation. Please refer to the Fast DDS documentation for further information on theprofileselement.servers: is a list of servers that the discovery-server must create and setup. It must contain at least aservertag. Each server admits the following attributes:name: non-mandatory but advisable for debugging purposes.prefix: server unique identifier. It is optional because it may be specified in the profile. By using this attribute the generation of server profiles that only differ in prefix can be avoided.profile_name: identifies the profile associated with this server. It is a mandatory.persist: specifies if the participant is a SERVER) or a BACKUP.creation_time: specifies in seconds when a server must be created. It is introduced for testing purposes.removal_time: specifies in seconds when a server must be destroyed. It is introduced for testing purposes.
Each server element admits the following tags:
ListeningPorts: contains lists of locators where this server will listen for incoming client metatraffic.ServersList: contains at least oneRServertag that references the servers this one wants to link to.RServer: only has a prefix attribute. Based on this prefix the discover-server parser would search for the corresponding server locators within the config file.publisher: introduced for testing purposes. Creates a dummy publisher characterized byprofile_name,topic,creation_time, andremoval_time.subscriber: introduced for testing purposes. Creates a dummy publisher characterized byprofile_name,topic,creation_time, andremoval_time.
clientsintroduced for testing purposes. It is a list of dummy clients that the Discovery Server tool must create and set up. It must contain at least aclienttag. Each client admits the following attributes:name: non-mandatory but advisable for debugging purposes.profile_name: identifies the profile associated with this server is a mandatory one.serverspecifies the prefix of the server we want to link to. This optional attribute saves us the nuisance of creating aServerList(only if this client references a single server). Based on this prefix the Discovery Server parser would search for the corresponding server locators within the config file.listening_port: specifies a physical port where to listen for incoming traffic. This attribute is mandatory in TCP transport (client wouldn’t receive other clients traffic without it). When using theTCPv4the format is:[XXX.XXX.XXX.XXX:]XXXXwhere the IP address is the client’s WAN address that must be specified if the client has to be reachable from outside a local NAT.creation_time: specifies in seconds when a server must be created. It is introduced for testing purposes.removal_time: specifies in seconds when a server must be destroyed. It is introduced for testing purposes.
Each client element admits the following tags:
ServersListcontains at least oneRServertag that references the servers this one wants to link to.RServeronly has a prefix attribute. Based on this prefix the discover-server parser would search for the corresponding server locators within the config file.publisherintroduced for testing purposes. Creates a publisher characterized byprofile_name,topic,creation_time, andremoval_time.subscriberintroduced for testing purposes. Creates a publisher characterized byprofile_name,topic,creation_time, andremoval_time.
topic: is plainly the Fast DDS topics. It is introduced here for testing purposes to check how topic and type discovery info is handled by EDP. It is worth mentioning that only HelloWorld type is supported for now.types: configuration not supported for now. Please useHelloWorldtopic type.snapshots: containssnapshottags. Whenever a Discovery Server creates a participant (client or a server) it becomes its listener in the sense that all discovery info received by the participant is relayed to it. The reported discovery info is stored in a database. Asnapshotis a commit of this database in a given time point. Thesnapshotselement has afileattribute that must be filled with the filename of the XML results file. Thesnapshottag has a single mandatory attributetimewhich specifies when the snapshot must be taken.