1#![allow(unused_attributes)]
8
9use std::io::{Read, Write};
10
11use crate::types::{
12 encoding::*, node_id::NodeId, node_ids::ObjectId, request_header::RequestHeader,
13 response_header::ResponseHeader, service_types::*,
14};
15
16pub use crate::core::comms::tcp_types::AcknowledgeMessage;
17
18macro_rules! supported_messages_enum {
22 [ $( $x:ident, ) * ] => (supported_messages_enum![ $( $x ),* ];);
23 [ $( $x:ident ), * ] => {
24 #[derive(Debug, PartialEq, Clone)]
25 pub enum SupportedMessage {
26 Invalid(ObjectId),
28 AcknowledgeMessage(Box<AcknowledgeMessage>),
30 $( $x(Box<$x>), )*
32 }
33
34 impl BinaryEncoder <SupportedMessage> for SupportedMessage {
35 fn byte_len(&self) -> usize {
36 match self {
37 SupportedMessage::Invalid(object_id) => {
38 panic!("Unsupported message byte_len {:?}", object_id);
39 },
40 SupportedMessage::AcknowledgeMessage(value) => value.byte_len(),
41 $( SupportedMessage::$x(value) => value.byte_len(), )*
42 }
43 }
44
45 fn encode<S: Write>(&self, stream: &mut S) -> EncodingResult<usize> {
46 match self {
47 SupportedMessage::Invalid(object_id) => {
48 panic!("Unsupported message encode {:?}", object_id);
49 },
50 SupportedMessage::AcknowledgeMessage(value) => value.encode(stream),
51 $( SupportedMessage::$x(value) => value.encode(stream), )*
52 }
53 }
54
55 fn decode<S: Read>(_: &mut S, _: &DecodingOptions) -> EncodingResult<Self> {
56 panic!("Cannot decode a stream to a supported message type");
58 }
59 }
60
61 impl Into<SupportedMessage> for AcknowledgeMessage{
62 fn into(self) -> SupportedMessage { SupportedMessage::AcknowledgeMessage(Box::new(self)) }
63 }
64
65 $(
66 impl Into<SupportedMessage> for $x {
67 fn into(self) -> SupportedMessage { SupportedMessage::$x(Box::new(self)) }
68 }
69 )*
70
71 impl SupportedMessage {
72 pub fn node_id(&self) -> NodeId {
73 match self {
74 SupportedMessage::Invalid(object_id) => {
75 panic!("Unsupported message invalid, node_id {:?}", object_id);
76 },
77 SupportedMessage::AcknowledgeMessage(value) => {
78 panic!("Unsupported message node_id {:?}", value);
79 },
80 $( SupportedMessage::$x(value) => value.object_id().into(), )*
81 }
82 }
83 }
84 }
85}
86
87impl SupportedMessage {
88 pub fn request_handle(&self) -> u32 {
89 if self.is_request() {
90 self.request_header().request_handle
91 } else if self.is_response() {
92 self.response_header().request_handle
93 } else {
94 0
95 }
96 }
97
98 pub fn is_request(&self) -> bool {
99 match self {
100 SupportedMessage::OpenSecureChannelRequest(_) => true,
101 SupportedMessage::CloseSecureChannelRequest(_) => true,
102 SupportedMessage::GetEndpointsRequest(_) => true,
103 SupportedMessage::FindServersRequest(_) => true,
104 SupportedMessage::RegisterServerRequest(_) => true,
105 SupportedMessage::RegisterServer2Request(_) => true,
106 SupportedMessage::CreateSessionRequest(_) => true,
107 SupportedMessage::CloseSessionRequest(_) => true,
108 SupportedMessage::CancelRequest(_) => true,
109 SupportedMessage::ActivateSessionRequest(_) => true,
110 SupportedMessage::AddNodesRequest(_) => true,
111 SupportedMessage::AddReferencesRequest(_) => true,
112 SupportedMessage::DeleteNodesRequest(_) => true,
113 SupportedMessage::DeleteReferencesRequest(_) => true,
114 SupportedMessage::CreateMonitoredItemsRequest(_) => true,
115 SupportedMessage::ModifyMonitoredItemsRequest(_) => true,
116 SupportedMessage::DeleteMonitoredItemsRequest(_) => true,
117 SupportedMessage::SetMonitoringModeRequest(_) => true,
118 SupportedMessage::SetTriggeringRequest(_) => true,
119 SupportedMessage::CreateSubscriptionRequest(_) => true,
120 SupportedMessage::ModifySubscriptionRequest(_) => true,
121 SupportedMessage::DeleteSubscriptionsRequest(_) => true,
122 SupportedMessage::TransferSubscriptionsRequest(_) => true,
123 SupportedMessage::SetPublishingModeRequest(_) => true,
124 SupportedMessage::QueryFirstRequest(_) => true,
125 SupportedMessage::QueryNextRequest(_) => true,
126 SupportedMessage::BrowseRequest(_) => true,
127 SupportedMessage::BrowseNextRequest(_) => true,
128 SupportedMessage::PublishRequest(_) => true,
129 SupportedMessage::RepublishRequest(_) => true,
130 SupportedMessage::TranslateBrowsePathsToNodeIdsRequest(_) => true,
131 SupportedMessage::RegisterNodesRequest(_) => true,
132 SupportedMessage::UnregisterNodesRequest(_) => true,
133 SupportedMessage::ReadRequest(_) => true,
134 SupportedMessage::HistoryReadRequest(_) => true,
135 SupportedMessage::WriteRequest(_) => true,
136 SupportedMessage::HistoryUpdateRequest(_) => true,
137 SupportedMessage::CallRequest(_) => true,
138 _ => false,
139 }
140 }
141
142 pub fn request_header(&self) -> &RequestHeader {
143 match self {
144 SupportedMessage::OpenSecureChannelRequest(r) => &r.request_header,
145 SupportedMessage::CloseSecureChannelRequest(r) => &r.request_header,
146 SupportedMessage::GetEndpointsRequest(r) => &r.request_header,
147 SupportedMessage::FindServersRequest(r) => &r.request_header,
148 SupportedMessage::RegisterServerRequest(r) => &r.request_header,
149 SupportedMessage::RegisterServer2Request(r) => &r.request_header,
150 SupportedMessage::CreateSessionRequest(r) => &r.request_header,
151 SupportedMessage::CloseSessionRequest(r) => &r.request_header,
152 SupportedMessage::CancelRequest(r) => &r.request_header,
153 SupportedMessage::ActivateSessionRequest(r) => &r.request_header,
154 SupportedMessage::AddNodesRequest(r) => &r.request_header,
155 SupportedMessage::AddReferencesRequest(r) => &r.request_header,
156 SupportedMessage::DeleteNodesRequest(r) => &r.request_header,
157 SupportedMessage::DeleteReferencesRequest(r) => &r.request_header,
158 SupportedMessage::CreateMonitoredItemsRequest(r) => &r.request_header,
159 SupportedMessage::ModifyMonitoredItemsRequest(r) => &r.request_header,
160 SupportedMessage::DeleteMonitoredItemsRequest(r) => &r.request_header,
161 SupportedMessage::SetMonitoringModeRequest(r) => &r.request_header,
162 SupportedMessage::SetTriggeringRequest(r) => &r.request_header,
163 SupportedMessage::CreateSubscriptionRequest(r) => &r.request_header,
164 SupportedMessage::ModifySubscriptionRequest(r) => &r.request_header,
165 SupportedMessage::DeleteSubscriptionsRequest(r) => &r.request_header,
166 SupportedMessage::TransferSubscriptionsRequest(r) => &r.request_header,
167 SupportedMessage::SetPublishingModeRequest(r) => &r.request_header,
168 SupportedMessage::QueryFirstRequest(r) => &r.request_header,
169 SupportedMessage::QueryNextRequest(r) => &r.request_header,
170 SupportedMessage::BrowseRequest(r) => &r.request_header,
171 SupportedMessage::BrowseNextRequest(r) => &r.request_header,
172 SupportedMessage::PublishRequest(r) => &r.request_header,
173 SupportedMessage::RepublishRequest(r) => &r.request_header,
174 SupportedMessage::TranslateBrowsePathsToNodeIdsRequest(r) => &r.request_header,
175 SupportedMessage::RegisterNodesRequest(r) => &r.request_header,
176 SupportedMessage::UnregisterNodesRequest(r) => &r.request_header,
177 SupportedMessage::ReadRequest(r) => &r.request_header,
178 SupportedMessage::HistoryReadRequest(r) => &r.request_header,
179 SupportedMessage::WriteRequest(r) => &r.request_header,
180 SupportedMessage::HistoryUpdateRequest(r) => &r.request_header,
181 SupportedMessage::CallRequest(r) => &r.request_header,
182 _ => panic!(),
183 }
184 }
185
186 pub fn is_response(&self) -> bool {
187 match self {
188 SupportedMessage::ServiceFault(_) => true,
189 SupportedMessage::OpenSecureChannelResponse(_) => true,
190 SupportedMessage::CloseSecureChannelResponse(_) => true,
191 SupportedMessage::GetEndpointsResponse(_) => true,
192 SupportedMessage::FindServersResponse(_) => true,
193 SupportedMessage::RegisterServerResponse(_) => true,
194 SupportedMessage::RegisterServer2Response(_) => true,
195 SupportedMessage::CreateSessionResponse(_) => true,
196 SupportedMessage::CloseSessionResponse(_) => true,
197 SupportedMessage::CancelResponse(_) => true,
198 SupportedMessage::ActivateSessionResponse(_) => true,
199 SupportedMessage::AddNodesResponse(_) => true,
200 SupportedMessage::AddReferencesResponse(_) => true,
201 SupportedMessage::DeleteNodesResponse(_) => true,
202 SupportedMessage::DeleteReferencesResponse(_) => true,
203 SupportedMessage::CreateMonitoredItemsResponse(_) => true,
204 SupportedMessage::ModifyMonitoredItemsResponse(_) => true,
205 SupportedMessage::DeleteMonitoredItemsResponse(_) => true,
206 SupportedMessage::SetMonitoringModeResponse(_) => true,
207 SupportedMessage::SetTriggeringResponse(_) => true,
208 SupportedMessage::CreateSubscriptionResponse(_) => true,
209 SupportedMessage::ModifySubscriptionResponse(_) => true,
210 SupportedMessage::DeleteSubscriptionsResponse(_) => true,
211 SupportedMessage::TransferSubscriptionsResponse(_) => true,
212 SupportedMessage::SetPublishingModeResponse(_) => true,
213 SupportedMessage::QueryFirstResponse(_) => true,
214 SupportedMessage::QueryNextResponse(_) => true,
215 SupportedMessage::BrowseResponse(_) => true,
216 SupportedMessage::BrowseNextResponse(_) => true,
217 SupportedMessage::PublishResponse(_) => true,
218 SupportedMessage::RepublishResponse(_) => true,
219 SupportedMessage::TranslateBrowsePathsToNodeIdsResponse(_) => true,
220 SupportedMessage::RegisterNodesResponse(_) => true,
221 SupportedMessage::UnregisterNodesResponse(_) => true,
222 SupportedMessage::ReadResponse(_) => true,
223 SupportedMessage::HistoryReadResponse(_) => true,
224 SupportedMessage::WriteResponse(_) => true,
225 SupportedMessage::HistoryUpdateResponse(_) => true,
226 SupportedMessage::CallResponse(_) => true,
227 _ => false,
228 }
229 }
230
231 pub fn response_header(&self) -> &ResponseHeader {
232 match self {
233 SupportedMessage::ServiceFault(r) => &r.response_header,
234 SupportedMessage::OpenSecureChannelResponse(r) => &r.response_header,
235 SupportedMessage::CloseSecureChannelResponse(r) => &r.response_header,
236 SupportedMessage::GetEndpointsResponse(r) => &r.response_header,
237 SupportedMessage::FindServersResponse(r) => &r.response_header,
238 SupportedMessage::RegisterServerResponse(r) => &r.response_header,
239 SupportedMessage::RegisterServer2Response(r) => &r.response_header,
240 SupportedMessage::CreateSessionResponse(r) => &r.response_header,
241 SupportedMessage::CloseSessionResponse(r) => &r.response_header,
242 SupportedMessage::CancelResponse(r) => &r.response_header,
243 SupportedMessage::ActivateSessionResponse(r) => &r.response_header,
244 SupportedMessage::AddNodesResponse(r) => &r.response_header,
245 SupportedMessage::AddReferencesResponse(r) => &r.response_header,
246 SupportedMessage::DeleteNodesResponse(r) => &r.response_header,
247 SupportedMessage::DeleteReferencesResponse(r) => &r.response_header,
248 SupportedMessage::CreateMonitoredItemsResponse(r) => &r.response_header,
249 SupportedMessage::ModifyMonitoredItemsResponse(r) => &r.response_header,
250 SupportedMessage::DeleteMonitoredItemsResponse(r) => &r.response_header,
251 SupportedMessage::SetMonitoringModeResponse(r) => &r.response_header,
252 SupportedMessage::SetTriggeringResponse(r) => &r.response_header,
253 SupportedMessage::CreateSubscriptionResponse(r) => &r.response_header,
254 SupportedMessage::ModifySubscriptionResponse(r) => &r.response_header,
255 SupportedMessage::DeleteSubscriptionsResponse(r) => &r.response_header,
256 SupportedMessage::TransferSubscriptionsResponse(r) => &r.response_header,
257 SupportedMessage::SetPublishingModeResponse(r) => &r.response_header,
258 SupportedMessage::QueryFirstResponse(r) => &r.response_header,
259 SupportedMessage::QueryNextResponse(r) => &r.response_header,
260 SupportedMessage::BrowseResponse(r) => &r.response_header,
261 SupportedMessage::BrowseNextResponse(r) => &r.response_header,
262 SupportedMessage::PublishResponse(r) => &r.response_header,
263 SupportedMessage::RepublishResponse(r) => &r.response_header,
264 SupportedMessage::TranslateBrowsePathsToNodeIdsResponse(r) => &r.response_header,
265 SupportedMessage::RegisterNodesResponse(r) => &r.response_header,
266 SupportedMessage::UnregisterNodesResponse(r) => &r.response_header,
267 SupportedMessage::ReadResponse(r) => &r.response_header,
268 SupportedMessage::HistoryReadResponse(r) => &r.response_header,
269 SupportedMessage::WriteResponse(r) => &r.response_header,
270 SupportedMessage::HistoryUpdateResponse(r) => &r.response_header,
271 SupportedMessage::CallResponse(r) => &r.response_header,
272 _ => panic!(),
273 }
274 }
275
276 pub fn decode_by_object_id<S: Read>(
277 stream: &mut S,
278 object_id: ObjectId,
279 decoding_options: &DecodingOptions,
280 ) -> EncodingResult<Self> {
281 trace!("decoding object_id {:?}", object_id);
282 let decoded_message = match object_id {
283 ObjectId::ServiceFault_Encoding_DefaultBinary => {
284 ServiceFault::decode(stream, decoding_options)?.into()
285 }
286 ObjectId::OpenSecureChannelRequest_Encoding_DefaultBinary => {
287 OpenSecureChannelRequest::decode(stream, decoding_options)?.into()
288 }
289 ObjectId::OpenSecureChannelResponse_Encoding_DefaultBinary => {
290 OpenSecureChannelResponse::decode(stream, decoding_options)?.into()
291 }
292 ObjectId::CloseSecureChannelRequest_Encoding_DefaultBinary => {
293 CloseSecureChannelRequest::decode(stream, decoding_options)?.into()
294 }
295 ObjectId::CloseSecureChannelResponse_Encoding_DefaultBinary => {
296 CloseSecureChannelResponse::decode(stream, decoding_options)?.into()
297 }
298 ObjectId::GetEndpointsRequest_Encoding_DefaultBinary => {
299 GetEndpointsRequest::decode(stream, decoding_options)?.into()
300 }
301 ObjectId::GetEndpointsResponse_Encoding_DefaultBinary => {
302 GetEndpointsResponse::decode(stream, decoding_options)?.into()
303 }
304 ObjectId::FindServersRequest_Encoding_DefaultBinary => {
305 FindServersRequest::decode(stream, decoding_options)?.into()
306 }
307 ObjectId::FindServersResponse_Encoding_DefaultBinary => {
308 FindServersResponse::decode(stream, decoding_options)?.into()
309 }
310 ObjectId::RegisterServerRequest_Encoding_DefaultBinary => {
311 RegisterServerRequest::decode(stream, decoding_options)?.into()
312 }
313 ObjectId::RegisterServerResponse_Encoding_DefaultBinary => {
314 RegisterServerResponse::decode(stream, decoding_options)?.into()
315 }
316 ObjectId::RegisterServer2Request_Encoding_DefaultBinary => {
317 RegisterServer2Request::decode(stream, decoding_options)?.into()
318 }
319 ObjectId::RegisterServer2Response_Encoding_DefaultBinary => {
320 RegisterServer2Response::decode(stream, decoding_options)?.into()
321 }
322 ObjectId::CreateSessionRequest_Encoding_DefaultBinary => {
323 CreateSessionRequest::decode(stream, decoding_options)?.into()
324 }
325 ObjectId::CreateSessionResponse_Encoding_DefaultBinary => {
326 CreateSessionResponse::decode(stream, decoding_options)?.into()
327 }
328 ObjectId::CloseSessionRequest_Encoding_DefaultBinary => {
329 CloseSessionRequest::decode(stream, decoding_options)?.into()
330 }
331 ObjectId::CloseSessionResponse_Encoding_DefaultBinary => {
332 CloseSessionResponse::decode(stream, decoding_options)?.into()
333 }
334 ObjectId::CancelRequest_Encoding_DefaultBinary => {
335 CancelRequest::decode(stream, decoding_options)?.into()
336 }
337 ObjectId::CancelResponse_Encoding_DefaultBinary => {
338 CancelResponse::decode(stream, decoding_options)?.into()
339 }
340 ObjectId::ActivateSessionRequest_Encoding_DefaultBinary => {
341 ActivateSessionRequest::decode(stream, decoding_options)?.into()
342 }
343 ObjectId::ActivateSessionResponse_Encoding_DefaultBinary => {
344 ActivateSessionResponse::decode(stream, decoding_options)?.into()
345 }
346 ObjectId::AddNodesRequest_Encoding_DefaultBinary => {
347 AddNodesRequest::decode(stream, decoding_options)?.into()
348 }
349 ObjectId::AddNodesResponse_Encoding_DefaultBinary => {
350 AddNodesResponse::decode(stream, decoding_options)?.into()
351 }
352 ObjectId::AddReferencesRequest_Encoding_DefaultBinary => {
353 AddReferencesRequest::decode(stream, decoding_options)?.into()
354 }
355 ObjectId::AddReferencesResponse_Encoding_DefaultBinary => {
356 AddReferencesResponse::decode(stream, decoding_options)?.into()
357 }
358 ObjectId::DeleteNodesRequest_Encoding_DefaultBinary => {
359 DeleteNodesRequest::decode(stream, decoding_options)?.into()
360 }
361 ObjectId::DeleteNodesResponse_Encoding_DefaultBinary => {
362 DeleteNodesResponse::decode(stream, decoding_options)?.into()
363 }
364 ObjectId::DeleteReferencesRequest_Encoding_DefaultBinary => {
365 DeleteReferencesRequest::decode(stream, decoding_options)?.into()
366 }
367 ObjectId::DeleteReferencesResponse_Encoding_DefaultBinary => {
368 DeleteReferencesResponse::decode(stream, decoding_options)?.into()
369 }
370 ObjectId::CreateMonitoredItemsRequest_Encoding_DefaultBinary => {
371 CreateMonitoredItemsRequest::decode(stream, decoding_options)?.into()
372 }
373 ObjectId::CreateMonitoredItemsResponse_Encoding_DefaultBinary => {
374 CreateMonitoredItemsResponse::decode(stream, decoding_options)?.into()
375 }
376 ObjectId::ModifyMonitoredItemsRequest_Encoding_DefaultBinary => {
377 ModifyMonitoredItemsRequest::decode(stream, decoding_options)?.into()
378 }
379 ObjectId::ModifyMonitoredItemsResponse_Encoding_DefaultBinary => {
380 ModifyMonitoredItemsResponse::decode(stream, decoding_options)?.into()
381 }
382 ObjectId::DeleteMonitoredItemsRequest_Encoding_DefaultBinary => {
383 DeleteMonitoredItemsRequest::decode(stream, decoding_options)?.into()
384 }
385 ObjectId::DeleteMonitoredItemsResponse_Encoding_DefaultBinary => {
386 DeleteMonitoredItemsResponse::decode(stream, decoding_options)?.into()
387 }
388 ObjectId::SetMonitoringModeRequest_Encoding_DefaultBinary => {
389 SetMonitoringModeRequest::decode(stream, decoding_options)?.into()
390 }
391 ObjectId::SetMonitoringModeResponse_Encoding_DefaultBinary => {
392 SetMonitoringModeResponse::decode(stream, decoding_options)?.into()
393 }
394 ObjectId::SetTriggeringRequest_Encoding_DefaultBinary => {
395 SetTriggeringRequest::decode(stream, decoding_options)?.into()
396 }
397 ObjectId::SetTriggeringResponse_Encoding_DefaultBinary => {
398 SetTriggeringResponse::decode(stream, decoding_options)?.into()
399 }
400 ObjectId::CreateSubscriptionRequest_Encoding_DefaultBinary => {
401 CreateSubscriptionRequest::decode(stream, decoding_options)?.into()
402 }
403 ObjectId::CreateSubscriptionResponse_Encoding_DefaultBinary => {
404 CreateSubscriptionResponse::decode(stream, decoding_options)?.into()
405 }
406 ObjectId::ModifySubscriptionRequest_Encoding_DefaultBinary => {
407 ModifySubscriptionRequest::decode(stream, decoding_options)?.into()
408 }
409 ObjectId::ModifySubscriptionResponse_Encoding_DefaultBinary => {
410 ModifySubscriptionResponse::decode(stream, decoding_options)?.into()
411 }
412 ObjectId::DeleteSubscriptionsRequest_Encoding_DefaultBinary => {
413 DeleteSubscriptionsRequest::decode(stream, decoding_options)?.into()
414 }
415 ObjectId::DeleteSubscriptionsResponse_Encoding_DefaultBinary => {
416 DeleteSubscriptionsResponse::decode(stream, decoding_options)?.into()
417 }
418 ObjectId::TransferSubscriptionsRequest_Encoding_DefaultBinary => {
419 TransferSubscriptionsRequest::decode(stream, decoding_options)?.into()
420 }
421 ObjectId::TransferSubscriptionsResponse_Encoding_DefaultBinary => {
422 TransferSubscriptionsResponse::decode(stream, decoding_options)?.into()
423 }
424 ObjectId::SetPublishingModeRequest_Encoding_DefaultBinary => {
425 SetPublishingModeRequest::decode(stream, decoding_options)?.into()
426 }
427 ObjectId::SetPublishingModeResponse_Encoding_DefaultBinary => {
428 SetPublishingModeResponse::decode(stream, decoding_options)?.into()
429 }
430 ObjectId::QueryFirstRequest_Encoding_DefaultBinary => {
431 QueryFirstRequest::decode(stream, decoding_options)?.into()
432 }
433 ObjectId::QueryFirstResponse_Encoding_DefaultBinary => {
434 QueryFirstResponse::decode(stream, decoding_options)?.into()
435 }
436 ObjectId::QueryNextRequest_Encoding_DefaultBinary => {
437 QueryNextRequest::decode(stream, decoding_options)?.into()
438 }
439 ObjectId::QueryNextResponse_Encoding_DefaultBinary => {
440 QueryNextResponse::decode(stream, decoding_options)?.into()
441 }
442 ObjectId::BrowseRequest_Encoding_DefaultBinary => {
443 BrowseRequest::decode(stream, decoding_options)?.into()
444 }
445 ObjectId::BrowseResponse_Encoding_DefaultBinary => {
446 BrowseResponse::decode(stream, decoding_options)?.into()
447 }
448 ObjectId::BrowseNextRequest_Encoding_DefaultBinary => {
449 BrowseNextRequest::decode(stream, decoding_options)?.into()
450 }
451 ObjectId::BrowseNextResponse_Encoding_DefaultBinary => {
452 BrowseNextResponse::decode(stream, decoding_options)?.into()
453 }
454 ObjectId::PublishRequest_Encoding_DefaultBinary => {
455 PublishRequest::decode(stream, decoding_options)?.into()
456 }
457 ObjectId::PublishResponse_Encoding_DefaultBinary => {
458 PublishResponse::decode(stream, decoding_options)?.into()
459 }
460 ObjectId::RepublishRequest_Encoding_DefaultBinary => {
461 RepublishRequest::decode(stream, decoding_options)?.into()
462 }
463 ObjectId::RepublishResponse_Encoding_DefaultBinary => {
464 RepublishResponse::decode(stream, decoding_options)?.into()
465 }
466 ObjectId::TranslateBrowsePathsToNodeIdsRequest_Encoding_DefaultBinary => {
467 TranslateBrowsePathsToNodeIdsRequest::decode(stream, decoding_options)?.into()
468 }
469 ObjectId::TranslateBrowsePathsToNodeIdsResponse_Encoding_DefaultBinary => {
470 TranslateBrowsePathsToNodeIdsResponse::decode(stream, decoding_options)?.into()
471 }
472 ObjectId::RegisterNodesRequest_Encoding_DefaultBinary => {
473 RegisterNodesRequest::decode(stream, decoding_options)?.into()
474 }
475 ObjectId::RegisterNodesResponse_Encoding_DefaultBinary => {
476 RegisterNodesResponse::decode(stream, decoding_options)?.into()
477 }
478 ObjectId::UnregisterNodesRequest_Encoding_DefaultBinary => {
479 UnregisterNodesRequest::decode(stream, decoding_options)?.into()
480 }
481 ObjectId::UnregisterNodesResponse_Encoding_DefaultBinary => {
482 UnregisterNodesResponse::decode(stream, decoding_options)?.into()
483 }
484 ObjectId::ReadRequest_Encoding_DefaultBinary => {
485 ReadRequest::decode(stream, decoding_options)?.into()
486 }
487 ObjectId::ReadResponse_Encoding_DefaultBinary => {
488 ReadResponse::decode(stream, decoding_options)?.into()
489 }
490 ObjectId::HistoryReadRequest_Encoding_DefaultBinary => {
491 HistoryReadRequest::decode(stream, decoding_options)?.into()
492 }
493 ObjectId::HistoryReadResponse_Encoding_DefaultBinary => {
494 HistoryReadResponse::decode(stream, decoding_options)?.into()
495 }
496 ObjectId::WriteRequest_Encoding_DefaultBinary => {
497 WriteRequest::decode(stream, decoding_options)?.into()
498 }
499 ObjectId::WriteResponse_Encoding_DefaultBinary => {
500 WriteResponse::decode(stream, decoding_options)?.into()
501 }
502 ObjectId::HistoryUpdateRequest_Encoding_DefaultBinary => {
503 HistoryUpdateRequest::decode(stream, decoding_options)?.into()
504 }
505 ObjectId::HistoryUpdateResponse_Encoding_DefaultBinary => {
506 HistoryUpdateResponse::decode(stream, decoding_options)?.into()
507 }
508 ObjectId::CallRequest_Encoding_DefaultBinary => {
509 CallRequest::decode(stream, decoding_options)?.into()
510 }
511 ObjectId::CallResponse_Encoding_DefaultBinary => {
512 CallResponse::decode(stream, decoding_options)?.into()
513 }
514 _ => {
515 debug!("decoding unsupported for object id {:?}", object_id);
516 SupportedMessage::Invalid(object_id)
517 }
518 };
519 Ok(decoded_message)
520 }
521}
522
523supported_messages_enum![
525 ServiceFault,
526 OpenSecureChannelRequest,
527 OpenSecureChannelResponse,
528 CloseSecureChannelRequest,
529 CloseSecureChannelResponse,
530 GetEndpointsRequest,
531 GetEndpointsResponse,
532 FindServersRequest,
533 FindServersResponse,
534 RegisterServerRequest,
535 RegisterServerResponse,
536 RegisterServer2Request,
537 RegisterServer2Response,
538 CreateSessionRequest,
539 CreateSessionResponse,
540 CloseSessionRequest,
541 CloseSessionResponse,
542 CancelRequest,
543 CancelResponse,
544 ActivateSessionRequest,
545 ActivateSessionResponse,
546 AddNodesRequest,
547 AddNodesResponse,
548 AddReferencesRequest,
549 AddReferencesResponse,
550 DeleteNodesRequest,
551 DeleteNodesResponse,
552 DeleteReferencesRequest,
553 DeleteReferencesResponse,
554 CreateMonitoredItemsRequest,
555 CreateMonitoredItemsResponse,
556 ModifyMonitoredItemsRequest,
557 ModifyMonitoredItemsResponse,
558 DeleteMonitoredItemsRequest,
559 DeleteMonitoredItemsResponse,
560 SetMonitoringModeRequest,
561 SetMonitoringModeResponse,
562 SetTriggeringRequest,
563 SetTriggeringResponse,
564 CreateSubscriptionRequest,
565 CreateSubscriptionResponse,
566 ModifySubscriptionRequest,
567 ModifySubscriptionResponse,
568 DeleteSubscriptionsRequest,
569 DeleteSubscriptionsResponse,
570 TransferSubscriptionsRequest,
571 TransferSubscriptionsResponse,
572 SetPublishingModeRequest,
573 SetPublishingModeResponse,
574 QueryFirstRequest,
575 QueryFirstResponse,
576 QueryNextRequest,
577 QueryNextResponse,
578 BrowseRequest,
579 BrowseResponse,
580 BrowseNextRequest,
581 BrowseNextResponse,
582 PublishRequest,
583 PublishResponse,
584 RepublishRequest,
585 RepublishResponse,
586 TranslateBrowsePathsToNodeIdsRequest,
587 TranslateBrowsePathsToNodeIdsResponse,
588 RegisterNodesRequest,
589 RegisterNodesResponse,
590 UnregisterNodesRequest,
591 UnregisterNodesResponse,
592 ReadRequest,
593 ReadResponse,
594 HistoryReadRequest,
595 HistoryReadResponse,
596 WriteRequest,
597 WriteResponse,
598 HistoryUpdateRequest,
599 HistoryUpdateResponse,
600 CallRequest,
601 CallResponse,
602];