opcua_types/service_types/
program_diagnostic_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 node_id::NodeId,
17 string::UAString,
18 date_time::DateTime,
19 service_types::Argument,
20 service_types::StatusResult,
21};
22
23#[derive(Debug, Clone, PartialEq)]
24pub struct ProgramDiagnosticDataType {
25 pub create_session_id: NodeId,
26 pub create_client_name: UAString,
27 pub invocation_creation_time: DateTime,
28 pub last_transition_time: DateTime,
29 pub last_method_call: UAString,
30 pub last_method_session_id: NodeId,
31 pub last_method_input_arguments: Option<Vec<Argument>>,
32 pub last_method_output_arguments: Option<Vec<Argument>>,
33 pub last_method_call_time: DateTime,
34 pub last_method_return_status: StatusResult,
35}
36
37impl MessageInfo for ProgramDiagnosticDataType {
38 fn object_id(&self) -> ObjectId {
39 ObjectId::ProgramDiagnosticDataType_Encoding_DefaultBinary
40 }
41}
42
43impl BinaryEncoder<ProgramDiagnosticDataType> for ProgramDiagnosticDataType {
44 fn byte_len(&self) -> usize {
45 let mut size = 0;
46 size += self.create_session_id.byte_len();
47 size += self.create_client_name.byte_len();
48 size += self.invocation_creation_time.byte_len();
49 size += self.last_transition_time.byte_len();
50 size += self.last_method_call.byte_len();
51 size += self.last_method_session_id.byte_len();
52 size += byte_len_array(&self.last_method_input_arguments);
53 size += byte_len_array(&self.last_method_output_arguments);
54 size += self.last_method_call_time.byte_len();
55 size += self.last_method_return_status.byte_len();
56 size
57 }
58
59 #[allow(unused_variables)]
60 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
61 let mut size = 0;
62 size += self.create_session_id.encode(stream)?;
63 size += self.create_client_name.encode(stream)?;
64 size += self.invocation_creation_time.encode(stream)?;
65 size += self.last_transition_time.encode(stream)?;
66 size += self.last_method_call.encode(stream)?;
67 size += self.last_method_session_id.encode(stream)?;
68 size += write_array(stream, &self.last_method_input_arguments)?;
69 size += write_array(stream, &self.last_method_output_arguments)?;
70 size += self.last_method_call_time.encode(stream)?;
71 size += self.last_method_return_status.encode(stream)?;
72 Ok(size)
73 }
74
75 #[allow(unused_variables)]
76 fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
77 let create_session_id = NodeId::decode(stream, decoding_options)?;
78 let create_client_name = UAString::decode(stream, decoding_options)?;
79 let invocation_creation_time = DateTime::decode(stream, decoding_options)?;
80 let last_transition_time = DateTime::decode(stream, decoding_options)?;
81 let last_method_call = UAString::decode(stream, decoding_options)?;
82 let last_method_session_id = NodeId::decode(stream, decoding_options)?;
83 let last_method_input_arguments: Option<Vec<Argument>> = read_array(stream, decoding_options)?;
84 let last_method_output_arguments: Option<Vec<Argument>> = read_array(stream, decoding_options)?;
85 let last_method_call_time = DateTime::decode(stream, decoding_options)?;
86 let last_method_return_status = StatusResult::decode(stream, decoding_options)?;
87 Ok(ProgramDiagnosticDataType {
88 create_session_id,
89 create_client_name,
90 invocation_creation_time,
91 last_transition_time,
92 last_method_call,
93 last_method_session_id,
94 last_method_input_arguments,
95 last_method_output_arguments,
96 last_method_call_time,
97 last_method_return_status,
98 })
99 }
100}