opcua_types/service_types/
data_set_writer_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 service_types::enums::DataSetFieldContentMask,
18 extension_object::ExtensionObject,
19 service_types::KeyValuePair,
20};
21
22#[derive(Debug, Clone, PartialEq)]
23pub struct DataSetWriterDataType {
24 pub name: UAString,
25 pub enabled: bool,
26 pub data_set_writer_id: u16,
27 pub data_set_field_content_mask: DataSetFieldContentMask,
28 pub key_frame_count: u32,
29 pub data_set_name: UAString,
30 pub data_set_writer_properties: Option<Vec<KeyValuePair>>,
31 pub transport_settings: ExtensionObject,
32 pub message_settings: ExtensionObject,
33}
34
35impl MessageInfo for DataSetWriterDataType {
36 fn object_id(&self) -> ObjectId {
37 ObjectId::DataSetWriterDataType_Encoding_DefaultBinary
38 }
39}
40
41impl BinaryEncoder<DataSetWriterDataType> for DataSetWriterDataType {
42 fn byte_len(&self) -> usize {
43 let mut size = 0;
44 size += self.name.byte_len();
45 size += self.enabled.byte_len();
46 size += self.data_set_writer_id.byte_len();
47 size += self.data_set_field_content_mask.byte_len();
48 size += self.key_frame_count.byte_len();
49 size += self.data_set_name.byte_len();
50 size += byte_len_array(&self.data_set_writer_properties);
51 size += self.transport_settings.byte_len();
52 size += self.message_settings.byte_len();
53 size
54 }
55
56 #[allow(unused_variables)]
57 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
58 let mut size = 0;
59 size += self.name.encode(stream)?;
60 size += self.enabled.encode(stream)?;
61 size += self.data_set_writer_id.encode(stream)?;
62 size += self.data_set_field_content_mask.encode(stream)?;
63 size += self.key_frame_count.encode(stream)?;
64 size += self.data_set_name.encode(stream)?;
65 size += write_array(stream, &self.data_set_writer_properties)?;
66 size += self.transport_settings.encode(stream)?;
67 size += self.message_settings.encode(stream)?;
68 Ok(size)
69 }
70
71 #[allow(unused_variables)]
72 fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
73 let name = UAString::decode(stream, decoding_options)?;
74 let enabled = bool::decode(stream, decoding_options)?;
75 let data_set_writer_id = u16::decode(stream, decoding_options)?;
76 let data_set_field_content_mask = DataSetFieldContentMask::decode(stream, decoding_options)?;
77 let key_frame_count = u32::decode(stream, decoding_options)?;
78 let data_set_name = UAString::decode(stream, decoding_options)?;
79 let data_set_writer_properties: Option<Vec<KeyValuePair>> = read_array(stream, decoding_options)?;
80 let transport_settings = ExtensionObject::decode(stream, decoding_options)?;
81 let message_settings = ExtensionObject::decode(stream, decoding_options)?;
82 Ok(DataSetWriterDataType {
83 name,
84 enabled,
85 data_set_writer_id,
86 data_set_field_content_mask,
87 key_frame_count,
88 data_set_name,
89 data_set_writer_properties,
90 transport_settings,
91 message_settings,
92 })
93 }
94}