opcua_types/service_types/
program_diagnostic_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    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}