NAME

zerodds-webdds-bridged - OMG Web-Enabled DDS 1.0 gateway daemon (REST + SOAP)

SYNOPSIS

zerodds-webdds-bridged [--config FILE] [--listen ADDR] [--domain ID] [--type NAME=FILE]... [-V | -h]

DESCRIPTION

zerodds-webdds-bridged exposes DDS applications, participants, topics, publishers, subscribers, data writers and data readers as HTTP resources, per OMG Web-Enabled DDS 1.0. Serves the REST PSM under /dds/rest1, the SIMPLE-WSDL-SOAP PSM under /soap, and the WSDL description of both the fixed object-model operations and any config-named IDL interface under /wsdl, all on the one HTTP port.

A topic's wire type is resolved from a config-named .idl file (types:) or from a peer's TypeLookup discovery — never from an opaque byte guess. Sample bodies (write/read) are the DDS-WEB XML representation, converted through the type's own descriptor.

Every REST request needs an Accept header naming application/dds-web+xml (exactly — DDS-WEB 1.0 defines no other representation): missing is 400, one naming none of it is 406, and a Content-Type naming anything else is 415.

A create_participant/create_publisher/create_subscriber body, and its update_* counterpart, may carry nested publishers/subscribers/data_writers/data_readers (OMG DDS-WEB 1.0 §7.4.3.1/§7.4.3.2/§7.4.4.7/§7.4.4.8/ §7.4.4.11/§7.4.4.12): the daemon reconciles the live DCPS entities against them by name on every call. A qos or qos_profile element inside any of them, and any top-level update_* body, resolves the same way: an inline <qos> merges onto the entity's current QoS, and a <qos_profile>name</qos_profile> reference resolves through the daemon's own QosLibrary/QosProfile metadata first, with an inline <qos> present alongside it overriding the named profile's values. On update_*, an absent container element (no <publishers>, say) leaves that kind of contained entity untouched; an empty one deletes every one of them.

Implements OMG Web-Enabled DDS 1.0, formal/2014-12-01.

OPTIONS

--config=FILE

Path to the config file (YAML). See zerodds-webdds-bridged.yaml(5).

--listen=ADDR

HTTP bind address. Default: 127.0.0.1:8080.

--domain=ID

DDS domain ID. Default: 0.

--type=NAME=FILE

Type source override (repeatable): NAME is the IDL scoped name (Mod::Type), also the DDS wire type name; FILE is the .idl file it is declared in.

--tls-cert=FILE

TLS server cert, PEM; enables https://.

--tls-key=FILE

TLS server key, PEM.

--auth-token=SECRET

Bearer token auth.

--log-level=LEVEL

One of trace, debug, info, warn, error.

--metrics=ADDR

Prometheus listener (/metrics).

-V, --version

Version info.

-h, --help

Show the option synopsis.

--set PATH=VALUE

One setting above every file, repeatable; +PATH=VALUE appends to a list.

--check-config

Validate and print the effective configuration with the origin of every value, then exit: 0 valid, 1 invalid value or unknown key, 2 unreadable file, syntax error or include cycle.

SIGNALS

SIGTERM stops the daemon: new connections stop being accepted, an open connection finishes its current request/response and closes.

SIGHUP reads the configuration again: the per-Application ACL and the auth settings apply from then on, TLS cert/key material is re-read from its configured path. Changed listen address or domain need a restart and are logged. A configuration that does not load changes nothing.

ENVIRONMENT

OTEL_EXPORTER_OTLP_ENDPOINT

Optional OTLP endpoint, such as http://localhost:4318.

EXIT STATUS

0

Normal shutdown.

1

Configuration error.

2

Bind error — address in use.

3

DDS discovery error.

4

TLS setup error.

FILES

/etc/zerodds/webdds-bridged.yaml .

SEE ALSO

zerodds-webdds-bridged.yaml(5). OMG Web-Enabled DDS 1.0, formal/2014-12-01.

AUTHORS

ZeroDDS Contributors.

BEZEICHNUNG

zerodds-webdds-bridged - Gateway-Daemon für OMG Web-Enabled DDS 1.0 (REST + SOAP)

ÜBERSICHT

zerodds-webdds-bridged [--config DATEI] [--listen ADR] [--domain ID] [--type NAME=DATEI]... [-V | -h]

BESCHREIBUNG

zerodds-webdds-bridged stellt DDS-Applications, Participants, Topics, Publisher, Subscriber, Data Writer und Data Reader als HTTP-Ressourcen bereit, nach OMG Web-Enabled DDS 1.0. Bedient das REST-PSM unter /dds/rest1, das SIMPLE-WSDL-SOAP-PSM unter /soap und die WSDL-Beschreibung sowohl der festen Operationen des Objektmodells als auch jedes in der Konfiguration genannten IDL- interface unter /wsdl, alles auf dem einen HTTP-Port.

Der Wire-Typ eines Topics wird aus einer in der Konfiguration genannten .idl-Datei (types:) aufgelöst oder aus der TypeLookup-Discovery eines Gegenübers — nie durch Raten aus opaken Bytes. Sample-Inhalte (write/read) sind die XML-Darstellung aus DDS-WEB, konvertiert über den eigenen Deskriptor des Typs.

Jeder REST-Request braucht einen Accept-Header, der application/dds-web+xml nennt (genau diesen — DDS-WEB 1.0 definiert keine andere Darstellung): fehlt er, ist das 400, nennt er nichts davon, 406, und ein Content-Type, der etwas anderes nennt, ist 415.

Ein Inhalt von create_participant/create_publisher/create_subscriber und sein Gegenstück update_* kann verschachtelte publishers/subscribers/data_writers/data_readers tragen (OMG DDS-WEB 1.0 §7.4.3.1/§7.4.3.2/§7.4.4.7/§7.4.4.8/ §7.4.4.11/§7.4.4.12): Der Daemon gleicht die lebenden DCPS-Entitäten bei jedem Aufruf über den Namen mit ihnen ab. Ein Element qos oder qos_profile in irgendeinem davon und jeder Inhalt von update_* auf oberster Ebene werden auf dieselbe Weise aufgelöst: Ein Inline- <qos> wird mit der aktuellen QoS der Entität zusammengeführt, und ein Verweis <qos_profile>name</qos_profile> wird zuerst über die eigenen QosLibrary/QosProfile-Metadaten des Daemons aufgelöst, wobei ein daneben vorhandenes Inline- <qos> die Werte des genannten Profils überschreibt. Bei update_* lässt ein fehlendes Container-Element (etwa kein <publishers>) diese Art enthaltener Entitäten unberührt; ein leeres löscht jede davon.

Implementiert OMG Web-Enabled DDS 1.0, formal/2014-12-01.

OPTIONEN

--config=DATEI

Pfad zur Konfigurationsdatei (YAML). Siehe zerodds-webdds-bridged.yaml(5).

--listen=ADR

HTTP-Bind-Adresse. Standard: 127.0.0.1:8080.

--domain=ID

DDS-Domain-ID. Standard: 0.

--type=NAME=DATEI

Überschreibung der Typquelle (wiederholbar): NAME ist der IDL-Scoped-Name (Mod::Type), zugleich der Name des DDS-Wire-Typs; DATEI ist die .idl-Datei, in der er deklariert ist.

--tls-cert=DATEI

TLS-Server-Zertifikat, PEM; schaltet https:// ein.

--tls-key=DATEI

TLS-Server-Schlüssel, PEM.

--auth-token=GEHEIMNIS

Authentifizierung mit Bearer-Token.

--log-level=STUFE

Eine von trace, debug, info, warn, error.

--metrics=ADR

Listener für Prometheus (/metrics).

-V, --version

Versionsangabe.

-h, --help

Zeigt die Übersicht der Optionen.

--set PFAD=WERT

Eine Einstellung über allen Dateien, wiederholbar; +PFAD=WERT hängt an eine Liste an.

--check-config

Prüft die wirksame Konfiguration und gibt sie mit der Herkunft jedes Werts aus, dann Ende: 0 gültig, 1 ungültiger Wert oder unbekannter Schlüssel, 2 nicht lesbare Datei, Syntaxfehler oder Include-Zyklus.

SIGNALE

SIGTERM beendet den Daemon: Neue Verbindungen werden nicht mehr angenommen, eine offene Verbindung beendet ihren aktuellen Request/Response und schließt.

SIGHUP liest die Konfiguration neu: Die ACL je Application und die Authentifizierungs-Einstellungen gelten ab dann, TLS-Zertifikat und -Schlüssel werden vom konfigurierten Pfad neu gelesen. Geänderte Listen-Adresse oder Domäne brauchen einen Neustart und werden protokolliert. Eine Konfiguration, die nicht lädt, ändert nichts.

UMGEBUNGSVARIABLEN

OTEL_EXPORTER_OTLP_ENDPOINT

Optionaler OTLP-Endpunkt, etwa http://localhost:4318.

EXIT-STATUS

0

Normales Beenden.

1

Konfigurationsfehler.

2

Bind-Fehler — Adresse belegt.

3

Fehler bei der DDS-Discovery.

4

Fehler beim Einrichten von TLS.

DATEIEN

/etc/zerodds/webdds-bridged.yaml .

SIEHE AUCH

zerodds-webdds-bridged.yaml(5). OMG Web-Enabled DDS 1.0, formal/2014-12-01.

AUTOREN

ZeroDDS Contributors.