opcua_types/service_types/
query_first_request.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    request_header::RequestHeader,
17    service_types::ViewDescription,
18    service_types::NodeTypeDescription,
19    service_types::ContentFilter,
20};
21
22#[derive(Debug, Clone, PartialEq)]
23pub struct QueryFirstRequest {
24    pub request_header: RequestHeader,
25    pub view: ViewDescription,
26    pub node_types: Option<Vec<NodeTypeDescription>>,
27    pub filter: ContentFilter,
28    pub max_data_sets_to_return: u32,
29    pub max_references_to_return: u32,
30}
31
32impl MessageInfo for QueryFirstRequest {
33    fn object_id(&self) -> ObjectId {
34        ObjectId::QueryFirstRequest_Encoding_DefaultBinary
35    }
36}
37
38impl BinaryEncoder<QueryFirstRequest> for QueryFirstRequest {
39    fn byte_len(&self) -> usize {
40        let mut size = 0;
41        size += self.request_header.byte_len();
42        size += self.view.byte_len();
43        size += byte_len_array(&self.node_types);
44        size += self.filter.byte_len();
45        size += self.max_data_sets_to_return.byte_len();
46        size += self.max_references_to_return.byte_len();
47        size
48    }
49
50    #[allow(unused_variables)]
51    fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
52        let mut size = 0;
53        size += self.request_header.encode(stream)?;
54        size += self.view.encode(stream)?;
55        size += write_array(stream, &self.node_types)?;
56        size += self.filter.encode(stream)?;
57        size += self.max_data_sets_to_return.encode(stream)?;
58        size += self.max_references_to_return.encode(stream)?;
59        Ok(size)
60    }
61
62    #[allow(unused_variables)]
63    fn decode<S: Read>(stream: &mut S, decoding_options: &DecodingOptions) -> EncodingResult<Self> {
64        let request_header = RequestHeader::decode(stream, decoding_options)?;
65        let view = ViewDescription::decode(stream, decoding_options)?;
66        let node_types: Option<Vec<NodeTypeDescription>> = read_array(stream, decoding_options)?;
67        let filter = ContentFilter::decode(stream, decoding_options)?;
68        let max_data_sets_to_return = u32::decode(stream, decoding_options)?;
69        let max_references_to_return = u32::decode(stream, decoding_options)?;
70        Ok(QueryFirstRequest {
71            request_header,
72            view,
73            node_types,
74            filter,
75            max_data_sets_to_return,
76            max_references_to_return,
77        })
78    }
79}