open62541/ua/
data_types.rs

1//! Thin wrappers for OPC UA data types from [`open62541_sys`].
2
3mod aggregate_filter;
4mod anonymous_identity_token;
5mod application_description;
6mod application_type;
7mod argument;
8mod attribute_id;
9mod attribute_operand;
10mod browse_description;
11mod browse_direction;
12mod browse_next_request;
13mod browse_next_response;
14mod browse_path;
15mod browse_path_result;
16mod browse_path_target;
17mod browse_request;
18mod browse_response;
19mod browse_result;
20mod build_info;
21mod byte_string;
22mod call_method_request;
23mod call_method_result;
24mod call_request;
25mod call_response;
26mod content_filter;
27mod content_filter_element;
28mod create_monitored_items_request;
29mod create_monitored_items_response;
30mod create_subscription_request;
31mod create_subscription_respones;
32mod data_change_filter;
33mod data_value;
34mod date_time;
35mod delete_monitored_items_request;
36mod delete_monitored_items_response;
37mod delete_subscriptions_request;
38mod delete_subscriptions_response;
39mod element_operand;
40mod endpoint_description;
41mod enum_definition;
42mod enum_field;
43mod enumeration;
44mod eu_information;
45mod event_filter;
46mod expanded_node_id;
47mod extension_object;
48mod filter_operator;
49mod guid;
50mod issued_identity_token;
51mod literal_operand;
52mod localized_text;
53mod message_security_mode;
54mod monitored_item_create_request;
55mod monitored_item_create_result;
56mod monitoring_mode;
57mod monitoring_parameters;
58mod node_attributes;
59mod node_class;
60mod node_id;
61mod node_id_type;
62mod qualified_name;
63mod range;
64mod read_request;
65mod read_response;
66mod read_value_id;
67mod reference_description;
68mod relative_path;
69mod relative_path_element;
70mod request_header;
71mod response_header;
72mod server_state;
73mod server_status_data_type;
74mod simple_attribute_operand;
75mod status_code;
76mod string;
77mod structure_definition;
78mod timestamps_to_return;
79mod user_name_identity_token;
80mod variant;
81mod write_request;
82mod write_response;
83mod write_value;
84mod x509_identity_token;
85
86pub use self::{
87    aggregate_filter::AggregateFilter,
88    anonymous_identity_token::AnonymousIdentityToken,
89    application_description::ApplicationDescription,
90    application_type::ApplicationType,
91    argument::Argument,
92    attribute_id::AttributeId,
93    attribute_operand::AttributeOperand,
94    browse_description::BrowseDescription,
95    browse_direction::BrowseDirection,
96    browse_next_request::BrowseNextRequest,
97    browse_next_response::BrowseNextResponse,
98    browse_path::BrowsePath,
99    browse_path_result::BrowsePathResult,
100    browse_path_target::BrowsePathTarget,
101    browse_request::BrowseRequest,
102    browse_response::BrowseResponse,
103    browse_result::BrowseResult,
104    build_info::BuildInfo,
105    byte_string::ByteString,
106    call_method_request::CallMethodRequest,
107    call_method_result::CallMethodResult,
108    call_request::CallRequest,
109    call_response::CallResponse,
110    content_filter::ContentFilter,
111    content_filter_element::ContentFilterElement,
112    create_monitored_items_request::CreateMonitoredItemsRequest,
113    create_monitored_items_response::CreateMonitoredItemsResponse,
114    create_subscription_request::CreateSubscriptionRequest,
115    create_subscription_respones::CreateSubscriptionResponse,
116    data_change_filter::DataChangeFilter,
117    data_value::DataValue,
118    date_time::DateTime,
119    delete_monitored_items_request::DeleteMonitoredItemsRequest,
120    delete_monitored_items_response::DeleteMonitoredItemsResponse,
121    delete_subscriptions_request::DeleteSubscriptionsRequest,
122    delete_subscriptions_response::DeleteSubscriptionsResponse,
123    element_operand::ElementOperand,
124    endpoint_description::EndpointDescription,
125    enum_definition::EnumDefinition,
126    enum_field::EnumField,
127    enumeration::Enumeration,
128    eu_information::EUInformation,
129    event_filter::EventFilter,
130    expanded_node_id::ExpandedNodeId,
131    extension_object::ExtensionObject,
132    filter_operator::FilterOperator,
133    guid::Guid,
134    issued_identity_token::IssuedIdentityToken,
135    literal_operand::LiteralOperand,
136    localized_text::LocalizedText,
137    message_security_mode::MessageSecurityMode,
138    monitored_item_create_request::MonitoredItemCreateRequest,
139    monitored_item_create_result::MonitoredItemCreateResult,
140    monitoring_mode::MonitoringMode,
141    monitoring_parameters::MonitoringParameters,
142    node_attributes::{
143        DataTypeAttributes, MethodAttributes, NodeAttributes, ObjectAttributes,
144        ObjectTypeAttributes, ReferenceTypeAttributes, VariableAttributes, VariableTypeAttributes,
145        ViewAttributes,
146    },
147    node_class::NodeClass,
148    node_id::NodeId,
149    node_id_type::NodeIdType,
150    qualified_name::QualifiedName,
151    range::Range,
152    read_request::ReadRequest,
153    read_response::ReadResponse,
154    read_value_id::ReadValueId,
155    reference_description::ReferenceDescription,
156    relative_path::RelativePath,
157    relative_path_element::RelativePathElement,
158    request_header::RequestHeader,
159    response_header::ResponseHeader,
160    server_state::ServerState,
161    server_status_data_type::ServerStatusDataType,
162    simple_attribute_operand::SimpleAttributeOperand,
163    status_code::StatusCode,
164    string::String,
165    structure_definition::StructureDefinition,
166    timestamps_to_return::TimestampsToReturn,
167    user_name_identity_token::UserNameIdentityToken,
168    variant::Variant,
169    write_request::WriteRequest,
170    write_response::WriteResponse,
171    write_value::WriteValue,
172    x509_identity_token::X509IdentityToken,
173};
174
175macro_rules! primitive {
176    ($( ($name:ident, $type:ty) ),* $(,)?) => {
177        $(
178            $crate::data_type!($name);
179
180            impl $name {
181                #[must_use]
182                pub const fn new(value: $type) -> Self {
183                    $name(value)
184                }
185
186                #[must_use]
187                pub const fn value(&self) -> $type {
188                    self.0
189                }
190            }
191
192            #[cfg(feature = "serde")]
193            impl serde::Serialize for $name {
194                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
195                where
196                    S: serde::Serializer,
197                {
198                    paste::paste! {
199                        serializer.[<serialize_ $type>](self.0)
200                    }
201                }
202            }
203        )*
204    };
205}
206
207primitive!(
208    (Boolean, bool), // Data type ns=0;i=1
209    (SByte, i8),     // Data type ns=0;i=2
210    (Byte, u8),      // Data type ns=0;i=3
211    (Int16, i16),    // Data type ns=0;i=4
212    (UInt16, u16),   // Data type ns=0;i=5
213    (Int32, i32),    // Data type ns=0;i=6
214    (UInt32, u32),   // Data type ns=0;i=7
215    (Int64, i64),    // Data type ns=0;i=8
216    (UInt64, u64),   // Data type ns=0;i=9
217    (Float, f32),    // Data type ns=0;i=10
218    (Double, f64),   // Data type ns=0;i=11
219);