zerodds_opcua_server/lib.rs
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! Native OPC-UA Client/Server (OPC Foundation **Part 4 — Services**) on top
5//! of the SecureChannel/UACP transport ([`zerodds-opcua-uacp`]).
6//!
7//! Crate `zerodds-opcua-server`. Safety classification: **STANDARD**.
8//!
9//! This is the request/response counterpart to the native UADP PubSub stack
10//! ([`zerodds-opcua-pubsub`]) — completing OPC-UA the same way ZeroDDS ships
11//! full CORBA/MQTT/AMQP stacks. It provides:
12//!
13//! - [`services`] — the service messages: Session lifecycle (CreateSession /
14//! ActivateSession / CloseSession) plus the Read, Write and Call service sets.
15//! - [`address_space`] — a small in-memory AddressSpace (node values + method
16//! handlers) the server serves.
17//! - [`server`] — an [`server::Server`] that runs the Hello→OpenSecureChannel→
18//! Session→service handshake and dispatches services against the
19//! AddressSpace.
20//! - [`client`] — an [`client::Client`] that drives the same handshake and
21//! calls services.
22//!
23//! SecurityMode `None` is implemented end to end; the secured SecurityPolicies
24//! (`crypto` feature of `zerodds-opcua-uacp`) layer on top.
25
26#![cfg_attr(not(feature = "std"), no_std)]
27#![forbid(unsafe_code)]
28#![warn(missing_docs)]
29#![cfg_attr(test, allow(clippy::expect_used, clippy::unwrap_used, clippy::panic))]
30
31extern crate alloc;
32
33pub mod address_space;
34pub mod client;
35pub mod server;
36pub mod services;
37mod wire;
38
39pub use address_space::{AddressSpace, MethodOutcome};
40pub use client::Client;
41pub use server::Server;