opcua_types/service_types/
published_data_set_data_type.rs

1// OPCUA for Rust
2// SPDX-License-Identifier: MPL-2.0
3// Copyright (C) 2017-2022 Adam Lock
4//
5// This file was autogenerated from Opc.Ua.Types.bsd by tools/schema/gen_types.js
6//
7// DO NOT EDIT THIS FILE
8#![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}