Expand description
§trap-sim-opcua
OPC UA server simulator for the TRAP protocol simulator.
This crate provides a comprehensive OPC UA server simulation capability with:
- Canonical Modeling Surface:
OpcUaSimulatorConfigand named session compilation - Server Configuration: Flexible server setup with security policies and endpoints
- Address Space Management: Hierarchical node organization with 100,000+ node support
- Node Types: Full support for Objects, Variables, Methods, and Type nodes
- Subscriptions: Data change monitoring with 10,000+ concurrent subscription support
- Historical Access: Raw and aggregated historical data with configurable retention
- High Performance: LRU caching, concurrent access, and efficient memory management
§Canonical Surface
The preferred architecture-facing surface is:
Builder-oriented node creation and legacy numeric serve flows have been retired from the public surface. Internally, runtime entry converges on compiled named sessions and the canonical config/session/control path is now the only supported architecture-facing API. Migration documentation remains available through the current release line and the remaining legacy migration breadcrumbs are scheduled for removal in the next major release.
§Architecture
┌─────────────────────────────────────────────────────────┐
│ OPC UA Server │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐ │
│ │ Session │ │ Subscription │ │ History │ │
│ │ Manager │ │ Manager │ │ Store │ │
│ └─────────────┘ └──────────────┘ └───────────────┘ │
├─────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────┐│
│ │ Address Space (Nodes) ││
│ │ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌───────────┐ ││
│ │ │ Objects │ │ Variables│ │ Methods│ │ Types │ ││
│ │ └─────────┘ └──────────┘ └────────┘ └───────────┘ ││
│ └─────────────────────────────────────────────────────┘│
├─────────────────────────────────────────────────────────┤
│ ┌───────────────┐ ┌──────────────────────────────────┐│
│ │ Node Cache │ │ Variable Factory ││
│ │ (LRU) │ │ (Analog, Discrete, Batch) ││
│ └───────────────┘ └──────────────────────────────────┘│
└─────────────────────────────────────────────────────────┘§Quick Start
use std::path::Path;
use mabi_opcua::{
compile_session, AddressSpace, AddressSpaceConfig, OpcUaSimulatorConfig, Variant,
};
let config = OpcUaSimulatorConfig::from_path(Path::new("simulator/opcua.yaml"))?;
let compiled = compile_session(&config, "default", Some(Path::new(".")))?;
// Canonical runtime path materializes a generated node catalog into the address space.
let address_space = AddressSpace::new(AddressSpaceConfig::default());
compiled
.catalog
.materialize(&address_space)
.expect("catalog materialization");
let namespace_summary = compiled.catalog.namespace_summary();
assert!(!namespace_summary.is_empty());
let _ = Variant::Null;ⓘ
use mabi_opcua::compat::VariableBuilder;§Module Organization
types: Core OPC UA types (NodeId, Variant, DataValue, etc.)nodes: Node classes and address space management- Root re-exports: Session, subscription, history, and event runtime types
security: Security policies, certificates, encryption, and authenticationconfig: Server configurationdevice: Device trait implementationcompat-migration.md: migration mapping for removed builder/factory flows
Re-exports§
pub use config::EndpointConfig;pub use config::MessageSecurityMode;pub use config::OpcUaServerConfig;pub use config::SecurityPolicy;pub use config::TransportConnectionMode;pub use config::TransportProtocol;pub use config::UserTokenConfig;pub use control::NodeCatalogPort;pub use control::NodeDescriptor;pub use control::NodeTarget;pub use control::NodeValueControlPort;pub use control::OpcUaControlSession;pub use control::SecurityControlPort;pub use control::SecurityControlStatus;pub use control::SessionControlPort;pub use control::SessionSnapshot;pub use control::SessionStatus;pub use device::OpcUaDevice;pub use error::OpcUaError;pub use error::OpcUaResult;pub use modeling::compile_session;pub use modeling::compile_session_with_report;pub use modeling::generate_types;pub use modeling::generate_types_with_report;pub use modeling::inspect_summary;pub use modeling::load_simulator_config;pub use modeling::schema_summary;pub use modeling::CompanionModelRef;pub use modeling::CompanionPackDefinition;pub use modeling::CompilationCacheReport;pub use modeling::CompiledDeviceDefinition;pub use modeling::CompiledOpcUaSession;pub use modeling::CompiledPointBinding;pub use modeling::CompiledSecurityProfile;pub use modeling::DeviceDefinition;pub use modeling::GeneratedNodeCatalog;pub use modeling::GeneratedRustModule;pub use modeling::GeneratedTypeCatalog;pub use modeling::GeneratedTypesConfig;pub use modeling::ModelDefinition;pub use modeling::NamespaceCompilationPlan;pub use modeling::NodeSetSource;pub use modeling::OpcUaConfigSummary;pub use modeling::OpcUaSchemaSummary;pub use modeling::OpcUaSessionSummary;pub use modeling::OpcUaSimulatorConfig;pub use modeling::PresetDefinition;pub use modeling::SecurityProfileDefinition;pub use modeling::SessionControlConfig;pub use modeling::SessionDefinition;pub use modeling::SessionRuntimeConfig;pub use server::OpcUaServer;pub use server::OpcUaServerBuilder;pub use server::ServerEvent;pub use server::ServerState;pub use server::ServerStats;pub use types::AccessLevel;pub use types::AttributeId;pub use types::DataTypeId;pub use types::DataValue;pub use types::NodeId;pub use types::StatusCode;pub use types::Variant;pub use nodes::AddressSpace;pub use nodes::AddressSpaceConfig;pub use nodes::AnalogVariable;pub use nodes::AsyncPrefetchWorker;pub use nodes::BatchConfig;pub use nodes::BatchNodeCreator;pub use nodes::BatchProgress;pub use nodes::BrowseDirection;pub use nodes::BrowseResult;pub use nodes::CacheStats;pub use nodes::DiscreteVariable;pub use nodes::LocalizedText;pub use nodes::MethodNode;pub use nodes::Node;pub use nodes::NodeBase;pub use nodes::NodeCache;pub use nodes::NodeCacheConfig;pub use nodes::NodeClass;pub use nodes::NodePrefetcher;pub use nodes::NodeStoreStats;pub use nodes::ObjectNode;pub use nodes::ObjectTemplate;pub use nodes::PrefetchConfig;pub use nodes::PrefetchStats;pub use nodes::ProgressCallback;pub use nodes::QualifiedName;pub use nodes::Reference;pub use nodes::ReferenceTypeId;pub use nodes::ValueGeneratorType;pub use nodes::VariableNode;pub use nodes::VariableTemplate;pub use runtime::descriptor;pub use runtime::driver;pub use security::AsymmetricAlgorithm;pub use security::AuthenticationResult;pub use security::Certificate;pub use security::CertificateManager;pub use security::CertificateManagerConfig;pub use security::CertificateStore;pub use security::CertificateValidator;pub use security::CryptoProvider;pub use security::CryptoProviderConfig;pub use security::DecryptionResult;pub use security::DeprecatedPolicyHandling;pub use security::EncryptionResult;pub use security::HashAlgorithm;pub use security::RoleMappingRule;pub use security::SecurityAuditSinkConfig;pub use security::SecurityAuditSinkKind;pub use security::SecurityContext;pub use security::SecurityManager;pub use security::SecurityManagerConfig;pub use security::SecurityPolicyConfig;pub use security::SecurityPolicyProvider;pub use security::SignatureResult;pub use security::SymmetricAlgorithm;pub use security::UserAuthConfig;pub use security::UserAuthenticator;pub use security::UserCredentials;pub use security::UserToken;pub use security::ValidationResult;
Modules§
- channel
- OPC UA Secure Channel Layer.
- codec
- OPC UA Binary Encoding/Decoding.
- config
- OPC UA configuration types.
- control
- In-process control-plane surface for compiled OPC UA simulator sessions.
- device
- OPC UA device implementation (placeholder).
- error
- OPC UA error types.
- modeling
- Canonical session-centric modeling surface for the OPC UA simulator.
- nodes
- OPC UA Node system.
- runtime
- security
- OPC UA Security Module.
- server
- OPC UA server implementation.
- transport
- OPC UA transport adapters and shared runtime.
- types
- OPC UA type system.
Structs§
- Content
Filter Element - Content filter element — a single clause in the where clause.
- Data
Change Filter - Data change filter configuration.
- Event
Data - Parameters for firing an event.
- Event
Field List - An event field list — the set of values for one event occurrence, corresponding 1:1 with the SelectClauses of the EventFilter.
- Event
Filter - EventFilter — selects which event fields to return and filters events.
- Event
Manager - Manages event generation and distribution to subscriptions.
- Event
Notification - An event notification queued for delivery via Publish.
- Historical
Data Point - A historical data point.
- History
Store - Historical data store.
- History
Store Config - Configuration for history store.
- Monitored
Item - A monitored item instance.
- Monitored
Item Config - Monitored item configuration.
- Monitored
Item Notification - Monitored item notification.
- Session
- A session instance.
- Session
Info - Session information.
- Session
Manager - Session manager.
- Session
Manager Config - Session manager configuration.
- Simple
Attribute Operand - Simple attribute operand — specifies a path to an attribute of an event field relative to a type definition.
- Subscription
- A subscription instance.
- Subscription
Config - Subscription configuration.
- Subscription
Durability Config - Subscription
Manager - Subscription manager.
- Subscription
Manager Config - Subscription manager configuration.
Enums§
- Aggregate
Type - Aggregate type for processed history.
- Data
Change Trigger - Data change trigger type.
- Deadband
Type - Deadband type for filtering value changes.
- Filter
Operand - Filter operand — used in ContentFilter where clauses.
- Filter
Operator - Filter operators for ContentFilter elements.
- Monitoring
Mode - Monitoring mode.
- Subscription
Durability Mode - User
Identity - User identity type.
Constants§
- MAX_
RECOMMENDED_ NODES - Maximum recommended nodes for optimal performance.
- MAX_
RECOMMENDED_ SUBSCRIPTIONS - Maximum recommended subscriptions for optimal performance.
- OPCUA_
SPEC_ VERSION - OPC UA specification version supported.
- VERSION
- Crate version.
Type Aliases§
- Builder
- Canonical builder surface for architecture-level composition.
- Config
- Canonical configuration surface for architecture-level composition.
- Device
- Canonical device surface for architecture-level composition.
- Error
- Canonical error surface for architecture-level composition.
- Result
- Canonical result surface for architecture-level composition.
- Server
- Canonical server surface for architecture-level composition.
- Stats
- Canonical stats surface for architecture-level composition.