opcua_types/service_types/
data_change_notification.rs1#![allow(unused_attributes)]
9use std::io::{Read, Write};
10#[allow(unused_imports)]
11use crate::{
12 encoding::*,
13 basic_types::*,
14 diagnostic_info::DiagnosticInfo,
15 service_types::MonitoredItemNotification,
16};
17
18#[derive(Debug, Clone, PartialEq)]
19pub struct DataChangeNotification {
20 pub monitored_items: Option<Vec<MonitoredItemNotification>>,
21 pub diagnostic_infos: Option<Vec<DiagnosticInfo>>,
22}
23
24impl BinaryEncoder<DataChangeNotification> for DataChangeNotification {
25 fn byte_len(&self) -> usize {
26 let mut size = 0;
27 size += byte_len_array(&self.monitored_items);
28 size += byte_len_array(&self.diagnostic_infos);
29 size
30 }
31
32 #[allow(unused_variables)]
33 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
34 let mut size = 0;
35 size += write_array(stream, &self.monitored_items)?;
36 size += write_array(stream, &self.diagnostic_infos)?;
37 Ok(size)
38 }
39
40 #[allow(unused_variables)]
41 fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
42 let monitored_items: Option<Vec<MonitoredItemNotification>> = read_array(stream, decoding_options)?;
43 let diagnostic_infos: Option<Vec<DiagnosticInfo>> = read_array(stream, decoding_options)?;
44 Ok(DataChangeNotification {
45 monitored_items,
46 diagnostic_infos,
47 })
48 }
49}