Skip to main content

Crate zerodds_web

Crate zerodds_web 

Source
Expand description

OMG DDS-WEB 1.0 — Web-Enabled DDS Object Model + REST PSM.

Crate zerodds-web. Safety classification: STANDARD. Spec formal/2014-12-01 (docs/standards/cache/omg/zerodds-web-1.0.pdf).

§Scope

We implement the WebDDS object model (Spec §7) and the REST PSM (Spec §8.3) as a pure-Rust no_std+alloc library:

  • WebDDS::Root singleton + Application + Client + AccessController + DomainParticipant (§7.3 object model).
  • ReturnStatus with all spec codes (§7.3.1 + §8.3.2 mapping to HTTP status).
  • RestRoute parser for all URI patterns from Spec §8.3.1 Tab 4 + §8.3.3 Tab 5 (all 30+ routes with parameter extraction).
  • Representation XML element-name registry (Spec §8.3.4 Tab 6).
  • Headers HTTP request/response header set (Spec §8.3.5 Tab 7+8).
  • SessionId authenticated-session tracking (§7.3.1.1).

§What is not covered

  • HTTP server implementation — caller layer (typically axum/hyper); this crate provides routing tables + status mapping, the caller binds to the HTTP stack.
  • XML body serialization — caller layer with the crates/xml/ loader + DDS-XTYPES type-definition reader; the XML element-name registry here provides the wire tags.
  • WebSocket push for DataReader notifications — see crates/websocket-bridge/; the caller wires it via a listener callback from crates/dcps/.
  • SOAP/WSDL-Platform (Spec §8.4) — n/a (REST ist mandatory, SOAP is optional + rarely used).

Re-exports§

pub use access_control::Decision;
pub use access_control::Operation;
pub use access_control::Permissions;
pub use access_control::Rule;
pub use bridge::BackendError;
pub use bridge::BackendResult;
pub use bridge::DdsBackend;
pub use bridge::enforce;
pub use headers::REQUEST_API_KEY;
pub use headers::RequestHeaders;
pub use headers::ResponseHeaders;
pub use model::Application;
pub use model::Client;
pub use model::DomainParticipant;
pub use model::WebDdsRoot;
pub use representation::ContentType;
pub use representation::RepresentationKind;
pub use representation::element_name;
pub use rest::REST_PREFIX;
pub use rest::RestMethod;
pub use rest::RestRoute;
pub use rest::parse_route;
pub use sample_selector::BoolOp;
pub use sample_selector::CompareOp;
pub use sample_selector::FilterExpression;
pub use sample_selector::InstanceStateMatch;
pub use sample_selector::Literal;
pub use sample_selector::MetadataExpression;
pub use sample_selector::ParseError as SampleSelectorParseError;
pub use sample_selector::SampleSelector;
pub use sample_selector::SampleStateMatch;
pub use sample_selector::ViewStateMatch;
pub use sample_selector::parse_sample_selector;
pub use session::SessionId;
pub use status::ReturnStatus;
pub use status::http_status_for;

Modules§

access_control
DDS-WEB Access Control Decision Engine — Spec §7.3.
bridge
DDS-WEB bridge to the DDS-DCPS public API — Spec §7.4.
headers
HTTP-Headers — Spec §8.3.5 Tab 7 + Tab 8.
model
WebDDS Object Model — Spec §7.
representation
XML Object-Representation Tags — Spec §8.3.4 Tab 6.
rest
REST-PSM URI-Routing — Spec §8.3.1 + §8.3.3.
sample_selector
DDS-WEB Sample Selector BNF Parser — Spec §7.4.8.
session
SessionId Authentifizierte Session — Spec §7.3.1.1.
status
ReturnStatus + HTTP-Status-Mapping — Spec §7.3 + §8.3.2.