opcua_types/service_types/
published_data_set_data_type.rs1#![allow(unused_attributes)]
9use std::io::{Read, Write};
10#[allow(unused_imports)]
11use crate::{
12 encoding::*,
13 basic_types::*,
14 service_types::impls::MessageInfo,
15 node_ids::ObjectId,
16 string::UAString,
17 extension_object::ExtensionObject,
18 service_types::DataSetMetaDataType,
19 service_types::KeyValuePair,
20};
21
22#[derive(Debug, Clone, PartialEq)]
23pub struct PublishedDataSetDataType {
24 pub name: UAString,
25 pub data_set_folder: Option<Vec<UAString>>,
26 pub data_set_meta_data: DataSetMetaDataType,
27 pub extension_fields: Option<Vec<KeyValuePair>>,
28 pub data_set_source: ExtensionObject,
29}
30
31impl MessageInfo for PublishedDataSetDataType {
32 fn object_id(&self) -> ObjectId {
33 ObjectId::PublishedDataSetDataType_Encoding_DefaultBinary
34 }
35}
36
37impl BinaryEncoder<PublishedDataSetDataType> for PublishedDataSetDataType {
38 fn byte_len(&self) -> usize {
39 let mut size = 0;
40 size += self.name.byte_len();
41 size += byte_len_array(&self.data_set_folder);
42 size += self.data_set_meta_data.byte_len();
43 size += byte_len_array(&self.extension_fields);
44 size += self.data_set_source.byte_len();
45 size
46 }
47
48 #[allow(unused_variables)]
49 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
50 let mut size = 0;
51 size += self.name.encode(stream)?;
52 size += write_array(stream, &self.data_set_folder)?;
53 size += self.data_set_meta_data.encode(stream)?;
54 size += write_array(stream, &self.extension_fields)?;
55 size += self.data_set_source.encode(stream)?;
56 Ok(size)
57 }
58
59 #[allow(unused_variables)]
60 fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
61 let name = UAString::decode(stream, decoding_options)?;
62 let data_set_folder: Option<Vec<UAString>> = read_array(stream, decoding_options)?;
63 let data_set_meta_data = DataSetMetaDataType::decode(stream, decoding_options)?;
64 let extension_fields: Option<Vec<KeyValuePair>> = read_array(stream, decoding_options)?;
65 let data_set_source = ExtensionObject::decode(stream, decoding_options)?;
66 Ok(PublishedDataSetDataType {
67 name,
68 data_set_folder,
69 data_set_meta_data,
70 extension_fields,
71 data_set_source,
72 })
73 }
74}