opcua_types/service_types/
enum_description.rs1#![allow(unused_attributes)]
9use std::io::{Read, Write};
10#[allow(unused_imports)]
11use crate::{
12 encoding::*,
13 basic_types::*,
14 node_id::NodeId,
15 qualified_name::QualifiedName,
16 service_types::EnumDefinition,
17};
18
19#[derive(Debug, Clone, PartialEq)]
20pub struct EnumDescription {
21 pub data_type_id: NodeId,
22 pub name: QualifiedName,
23 pub enum_definition: EnumDefinition,
24 pub built_in_type: u8,
25}
26
27impl BinaryEncoder<EnumDescription> for EnumDescription {
28 fn byte_len(&self) -> usize {
29 let mut size = 0;
30 size += self.data_type_id.byte_len();
31 size += self.name.byte_len();
32 size += self.enum_definition.byte_len();
33 size += self.built_in_type.byte_len();
34 size
35 }
36
37 #[allow(unused_variables)]
38 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
39 let mut size = 0;
40 size += self.data_type_id.encode(stream)?;
41 size += self.name.encode(stream)?;
42 size += self.enum_definition.encode(stream)?;
43 size += self.built_in_type.encode(stream)?;
44 Ok(size)
45 }
46
47 #[allow(unused_variables)]
48 fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
49 let data_type_id = NodeId::decode(stream, decoding_options)?;
50 let name = QualifiedName::decode(stream, decoding_options)?;
51 let enum_definition = EnumDefinition::decode(stream, decoding_options)?;
52 let built_in_type = u8::decode(stream, decoding_options)?;
53 Ok(EnumDescription {
54 data_type_id,
55 name,
56 enum_definition,
57 built_in_type,
58 })
59 }
60}