Skip to main content

Crate mabi_opcua

Crate mabi_opcua 

Source
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: OpcUaSimulatorConfig and 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 authentication
  • config: Server configuration
  • device: Device trait implementation
  • compat-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§

ContentFilterElement
Content filter element — a single clause in the where clause.
DataChangeFilter
Data change filter configuration.
EventData
Parameters for firing an event.
EventFieldList
An event field list — the set of values for one event occurrence, corresponding 1:1 with the SelectClauses of the EventFilter.
EventFilter
EventFilter — selects which event fields to return and filters events.
EventManager
Manages event generation and distribution to subscriptions.
EventNotification
An event notification queued for delivery via Publish.
HistoricalDataPoint
A historical data point.
HistoryStore
Historical data store.
HistoryStoreConfig
Configuration for history store.
MonitoredItem
A monitored item instance.
MonitoredItemConfig
Monitored item configuration.
MonitoredItemNotification
Monitored item notification.
Session
A session instance.
SessionInfo
Session information.
SessionManager
Session manager.
SessionManagerConfig
Session manager configuration.
SimpleAttributeOperand
Simple attribute operand — specifies a path to an attribute of an event field relative to a type definition.
Subscription
A subscription instance.
SubscriptionConfig
Subscription configuration.
SubscriptionDurabilityConfig
SubscriptionManager
Subscription manager.
SubscriptionManagerConfig
Subscription manager configuration.

Enums§

AggregateType
Aggregate type for processed history.
DataChangeTrigger
Data change trigger type.
DeadbandType
Deadband type for filtering value changes.
FilterOperand
Filter operand — used in ContentFilter where clauses.
FilterOperator
Filter operators for ContentFilter elements.
MonitoringMode
Monitoring mode.
SubscriptionDurabilityMode
UserIdentity
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.