opcua_types/service_types/
reference_type_attributes.rs1#![allow(unused_attributes)]
9use std::io::{Read, Write};
10#[allow(unused_imports)]
11use crate::{
12 encoding::*,
13 basic_types::*,
14 localized_text::LocalizedText,
15};
16
17#[derive(Debug, Clone, PartialEq)]
18pub struct ReferenceTypeAttributes {
19 pub specified_attributes: u32,
20 pub display_name: LocalizedText,
21 pub description: LocalizedText,
22 pub write_mask: u32,
23 pub user_write_mask: u32,
24 pub is_abstract: bool,
25 pub symmetric: bool,
26 pub inverse_name: LocalizedText,
27}
28
29impl BinaryEncoder<ReferenceTypeAttributes> for ReferenceTypeAttributes {
30 fn byte_len(&self) -> usize {
31 let mut size = 0;
32 size += self.specified_attributes.byte_len();
33 size += self.display_name.byte_len();
34 size += self.description.byte_len();
35 size += self.write_mask.byte_len();
36 size += self.user_write_mask.byte_len();
37 size += self.is_abstract.byte_len();
38 size += self.symmetric.byte_len();
39 size += self.inverse_name.byte_len();
40 size
41 }
42
43 #[allow(unused_variables)]
44 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
45 let mut size = 0;
46 size += self.specified_attributes.encode(stream)?;
47 size += self.display_name.encode(stream)?;
48 size += self.description.encode(stream)?;
49 size += self.write_mask.encode(stream)?;
50 size += self.user_write_mask.encode(stream)?;
51 size += self.is_abstract.encode(stream)?;
52 size += self.symmetric.encode(stream)?;
53 size += self.inverse_name.encode(stream)?;
54 Ok(size)
55 }
56
57 #[allow(unused_variables)]
58 fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
59 let specified_attributes = u32::decode(stream, decoding_options)?;
60 let display_name = LocalizedText::decode(stream, decoding_options)?;
61 let description = LocalizedText::decode(stream, decoding_options)?;
62 let write_mask = u32::decode(stream, decoding_options)?;
63 let user_write_mask = u32::decode(stream, decoding_options)?;
64 let is_abstract = bool::decode(stream, decoding_options)?;
65 let symmetric = bool::decode(stream, decoding_options)?;
66 let inverse_name = LocalizedText::decode(stream, decoding_options)?;
67 Ok(ReferenceTypeAttributes {
68 specified_attributes,
69 display_name,
70 description,
71 write_mask,
72 user_write_mask,
73 is_abstract,
74 symmetric,
75 inverse_name,
76 })
77 }
78}