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