1mod abort_function_call;
2mod add_bus_listener_filter;
3mod add_channel_capacity;
4mod bus_listener_current_finished;
5mod call_function;
6mod call_function2;
7mod call_function_reply;
8mod channel_end_claimed;
9mod channel_end_closed;
10mod claim_channel_end;
11mod claim_channel_end_reply;
12mod clear_bus_listener_filters;
13mod close_channel_end;
14mod close_channel_end_reply;
15mod connect;
16mod connect2;
17mod connect_reply;
18mod connect_reply2;
19mod create_bus_listener;
20mod create_bus_listener_reply;
21mod create_channel;
22mod create_channel_reply;
23mod create_object;
24mod create_object_reply;
25mod create_service;
26mod create_service2;
27mod create_service_reply;
28mod deserializer;
29mod destroy_bus_listener;
30mod destroy_bus_listener_reply;
31mod destroy_object;
32mod destroy_object_reply;
33mod destroy_service;
34mod destroy_service_reply;
35mod emit_bus_event;
36mod emit_event;
37mod error;
38mod item_received;
39mod kind;
40mod packetizer;
41mod query_introspection;
42mod query_introspection_reply;
43mod query_service_info;
44mod query_service_info_reply;
45mod query_service_version;
46mod query_service_version_reply;
47mod register_introspection;
48mod remove_bus_listener_filter;
49mod send_item;
50mod serializer;
51mod service_destroyed;
52mod shutdown;
53mod start_bus_listener;
54mod start_bus_listener_reply;
55mod stop_bus_listener;
56mod stop_bus_listener_reply;
57mod subscribe_all_events;
58mod subscribe_all_events_reply;
59mod subscribe_event;
60mod subscribe_event_reply;
61mod subscribe_service;
62mod subscribe_service_reply;
63mod sync;
64mod sync_reply;
65#[cfg(test)]
66mod test;
67mod unsubscribe_all_events;
68mod unsubscribe_all_events_reply;
69mod unsubscribe_event;
70mod unsubscribe_service;
71
72use crate::{
73 convert_value, ProtocolVersion, SerializedValue, SerializedValueSlice, ValueConversionError,
74};
75use bytes::BytesMut;
76use num_enum::{IntoPrimitive, TryFromPrimitive};
77
78pub(crate) use deserializer::{MessageWithValueDeserializer, MessageWithoutValueDeserializer};
79pub(crate) use serializer::MessageSerializer;
80
81pub use abort_function_call::AbortFunctionCall;
82pub use add_bus_listener_filter::AddBusListenerFilter;
83pub use add_channel_capacity::AddChannelCapacity;
84pub use bus_listener_current_finished::BusListenerCurrentFinished;
85pub use call_function::CallFunction;
86pub use call_function2::CallFunction2;
87pub use call_function_reply::{CallFunctionReply, CallFunctionResult};
88pub use channel_end_claimed::ChannelEndClaimed;
89pub use channel_end_closed::ChannelEndClosed;
90pub use claim_channel_end::ClaimChannelEnd;
91pub use claim_channel_end_reply::{ClaimChannelEndReply, ClaimChannelEndResult};
92pub use clear_bus_listener_filters::ClearBusListenerFilters;
93pub use close_channel_end::CloseChannelEnd;
94pub use close_channel_end_reply::{CloseChannelEndReply, CloseChannelEndResult};
95pub use connect::Connect;
96pub use connect2::{Connect2, ConnectData};
97pub use connect_reply::ConnectReply;
98pub use connect_reply2::{ConnectReply2, ConnectReplyData, ConnectResult};
99pub use create_bus_listener::CreateBusListener;
100pub use create_bus_listener_reply::CreateBusListenerReply;
101pub use create_channel::CreateChannel;
102pub use create_channel_reply::CreateChannelReply;
103pub use create_object::CreateObject;
104pub use create_object_reply::{CreateObjectReply, CreateObjectResult};
105pub use create_service::CreateService;
106pub use create_service2::CreateService2;
107pub use create_service_reply::{CreateServiceReply, CreateServiceResult};
108pub use destroy_bus_listener::DestroyBusListener;
109pub use destroy_bus_listener_reply::{DestroyBusListenerReply, DestroyBusListenerResult};
110pub use destroy_object::DestroyObject;
111pub use destroy_object_reply::{DestroyObjectReply, DestroyObjectResult};
112pub use destroy_service::DestroyService;
113pub use destroy_service_reply::{DestroyServiceReply, DestroyServiceResult};
114pub use emit_bus_event::EmitBusEvent;
115pub use emit_event::EmitEvent;
116pub use error::{MessageDeserializeError, MessageSerializeError};
117pub use item_received::ItemReceived;
118pub use kind::MessageKind;
119pub use packetizer::Packetizer;
120pub use query_introspection::QueryIntrospection;
121pub use query_introspection_reply::{QueryIntrospectionReply, QueryIntrospectionResult};
122pub use query_service_info::QueryServiceInfo;
123pub use query_service_info_reply::{QueryServiceInfoReply, QueryServiceInfoResult};
124pub use query_service_version::QueryServiceVersion;
125pub use query_service_version_reply::{QueryServiceVersionReply, QueryServiceVersionResult};
126pub use register_introspection::RegisterIntrospection;
127pub use remove_bus_listener_filter::RemoveBusListenerFilter;
128pub use send_item::SendItem;
129pub use service_destroyed::ServiceDestroyed;
130pub use shutdown::Shutdown;
131pub use start_bus_listener::StartBusListener;
132pub use start_bus_listener_reply::{StartBusListenerReply, StartBusListenerResult};
133pub use stop_bus_listener::StopBusListener;
134pub use stop_bus_listener_reply::{StopBusListenerReply, StopBusListenerResult};
135pub use subscribe_all_events::SubscribeAllEvents;
136pub use subscribe_all_events_reply::{SubscribeAllEventsReply, SubscribeAllEventsResult};
137pub use subscribe_event::SubscribeEvent;
138pub use subscribe_event_reply::{SubscribeEventReply, SubscribeEventResult};
139pub use subscribe_service::SubscribeService;
140pub use subscribe_service_reply::{SubscribeServiceReply, SubscribeServiceResult};
141pub use sync::Sync;
142pub use sync_reply::SyncReply;
143pub use unsubscribe_all_events::UnsubscribeAllEvents;
144pub use unsubscribe_all_events_reply::{UnsubscribeAllEventsReply, UnsubscribeAllEventsResult};
145pub use unsubscribe_event::UnsubscribeEvent;
146pub use unsubscribe_service::UnsubscribeService;
147
148mod message_ops {
149 #[allow(unnameable_types)]
150 pub trait Sealed {}
151}
152
153pub trait MessageOps: Sized + message_ops::Sealed {
154 fn kind(&self) -> MessageKind;
155 fn serialize_message(self) -> Result<BytesMut, MessageSerializeError>;
156 fn deserialize_message(buf: BytesMut) -> Result<Self, MessageDeserializeError>;
157 fn value(&self) -> Option<&SerializedValueSlice>;
158 fn value_mut(&mut self) -> Option<&mut SerializedValue>;
159
160 fn convert_value(
161 &mut self,
162 from: Option<ProtocolVersion>,
163 to: ProtocolVersion,
164 ) -> Result<(), ValueConversionError> {
165 convert_value::convert_in_message(self, from, to)
166 }
167}
168
169#[derive(Debug, Clone, PartialEq, Eq)]
170#[cfg_attr(feature = "fuzzing", derive(arbitrary::Arbitrary))]
171pub enum Message {
172 Connect(Connect),
173 ConnectReply(ConnectReply),
174 Shutdown(Shutdown),
175 CreateObject(CreateObject),
176 CreateObjectReply(CreateObjectReply),
177 DestroyObject(DestroyObject),
178 DestroyObjectReply(DestroyObjectReply),
179 CreateService(CreateService),
180 CreateServiceReply(CreateServiceReply),
181 DestroyService(DestroyService),
182 DestroyServiceReply(DestroyServiceReply),
183 CallFunction(CallFunction),
184 CallFunctionReply(CallFunctionReply),
185 SubscribeEvent(SubscribeEvent),
186 SubscribeEventReply(SubscribeEventReply),
187 UnsubscribeEvent(UnsubscribeEvent),
188 EmitEvent(EmitEvent),
189 QueryServiceVersion(QueryServiceVersion),
190 QueryServiceVersionReply(QueryServiceVersionReply),
191 CreateChannel(CreateChannel),
192 CreateChannelReply(CreateChannelReply),
193 CloseChannelEnd(CloseChannelEnd),
194 CloseChannelEndReply(CloseChannelEndReply),
195 ChannelEndClosed(ChannelEndClosed),
196 ClaimChannelEnd(ClaimChannelEnd),
197 ClaimChannelEndReply(ClaimChannelEndReply),
198 ChannelEndClaimed(ChannelEndClaimed),
199 SendItem(SendItem),
200 ItemReceived(ItemReceived),
201 AddChannelCapacity(AddChannelCapacity),
202 Sync(Sync),
203 SyncReply(SyncReply),
204 ServiceDestroyed(ServiceDestroyed),
205 CreateBusListener(CreateBusListener),
206 CreateBusListenerReply(CreateBusListenerReply),
207 DestroyBusListener(DestroyBusListener),
208 DestroyBusListenerReply(DestroyBusListenerReply),
209 AddBusListenerFilter(AddBusListenerFilter),
210 RemoveBusListenerFilter(RemoveBusListenerFilter),
211 ClearBusListenerFilters(ClearBusListenerFilters),
212 StartBusListener(StartBusListener),
213 StartBusListenerReply(StartBusListenerReply),
214 StopBusListener(StopBusListener),
215 StopBusListenerReply(StopBusListenerReply),
216 EmitBusEvent(EmitBusEvent),
217 BusListenerCurrentFinished(BusListenerCurrentFinished),
218 Connect2(Connect2),
219 ConnectReply2(ConnectReply2),
220 AbortFunctionCall(AbortFunctionCall),
221 RegisterIntrospection(RegisterIntrospection),
222 QueryIntrospection(QueryIntrospection),
223 QueryIntrospectionReply(QueryIntrospectionReply),
224 CreateService2(CreateService2),
225 QueryServiceInfo(QueryServiceInfo),
226 QueryServiceInfoReply(QueryServiceInfoReply),
227 SubscribeService(SubscribeService),
228 SubscribeServiceReply(SubscribeServiceReply),
229 UnsubscribeService(UnsubscribeService),
230 SubscribeAllEvents(SubscribeAllEvents),
231 SubscribeAllEventsReply(SubscribeAllEventsReply),
232 UnsubscribeAllEvents(UnsubscribeAllEvents),
233 UnsubscribeAllEventsReply(UnsubscribeAllEventsReply),
234 CallFunction2(CallFunction2),
235}
236
237impl MessageOps for Message {
238 fn kind(&self) -> MessageKind {
239 match self {
240 Self::Connect(_) => MessageKind::Connect,
241 Self::ConnectReply(_) => MessageKind::ConnectReply,
242 Self::Shutdown(_) => MessageKind::Shutdown,
243 Self::CreateObject(_) => MessageKind::CreateObject,
244 Self::CreateObjectReply(_) => MessageKind::CreateObjectReply,
245 Self::DestroyObject(_) => MessageKind::DestroyObject,
246 Self::DestroyObjectReply(_) => MessageKind::DestroyObjectReply,
247 Self::CreateService(_) => MessageKind::CreateService,
248 Self::CreateServiceReply(_) => MessageKind::CreateServiceReply,
249 Self::DestroyService(_) => MessageKind::DestroyService,
250 Self::DestroyServiceReply(_) => MessageKind::DestroyServiceReply,
251 Self::CallFunction(_) => MessageKind::CallFunction,
252 Self::CallFunctionReply(_) => MessageKind::CallFunctionReply,
253 Self::SubscribeEvent(_) => MessageKind::SubscribeEvent,
254 Self::SubscribeEventReply(_) => MessageKind::SubscribeEventReply,
255 Self::UnsubscribeEvent(_) => MessageKind::UnsubscribeEvent,
256 Self::EmitEvent(_) => MessageKind::EmitEvent,
257 Self::QueryServiceVersion(_) => MessageKind::QueryServiceVersion,
258 Self::QueryServiceVersionReply(_) => MessageKind::QueryServiceVersionReply,
259 Self::CreateChannel(_) => MessageKind::CreateChannel,
260 Self::CreateChannelReply(_) => MessageKind::CreateChannelReply,
261 Self::CloseChannelEnd(_) => MessageKind::CloseChannelEnd,
262 Self::CloseChannelEndReply(_) => MessageKind::CloseChannelEndReply,
263 Self::ChannelEndClosed(_) => MessageKind::ChannelEndClosed,
264 Self::ClaimChannelEnd(_) => MessageKind::ClaimChannelEnd,
265 Self::ClaimChannelEndReply(_) => MessageKind::ClaimChannelEndReply,
266 Self::ChannelEndClaimed(_) => MessageKind::ChannelEndClaimed,
267 Self::SendItem(_) => MessageKind::SendItem,
268 Self::ItemReceived(_) => MessageKind::ItemReceived,
269 Self::AddChannelCapacity(_) => MessageKind::AddChannelCapacity,
270 Self::Sync(_) => MessageKind::Sync,
271 Self::SyncReply(_) => MessageKind::SyncReply,
272 Self::ServiceDestroyed(_) => MessageKind::ServiceDestroyed,
273 Self::CreateBusListener(_) => MessageKind::CreateBusListener,
274 Self::CreateBusListenerReply(_) => MessageKind::CreateBusListenerReply,
275 Self::DestroyBusListener(_) => MessageKind::DestroyBusListener,
276 Self::DestroyBusListenerReply(_) => MessageKind::DestroyBusListenerReply,
277 Self::AddBusListenerFilter(_) => MessageKind::AddBusListenerFilter,
278 Self::RemoveBusListenerFilter(_) => MessageKind::RemoveBusListenerFilter,
279 Self::ClearBusListenerFilters(_) => MessageKind::ClearBusListenerFilters,
280 Self::StartBusListener(_) => MessageKind::StartBusListener,
281 Self::StartBusListenerReply(_) => MessageKind::StartBusListenerReply,
282 Self::StopBusListener(_) => MessageKind::StopBusListener,
283 Self::StopBusListenerReply(_) => MessageKind::StopBusListenerReply,
284 Self::EmitBusEvent(_) => MessageKind::EmitBusEvent,
285 Self::BusListenerCurrentFinished(_) => MessageKind::BusListenerCurrentFinished,
286 Self::Connect2(_) => MessageKind::Connect2,
287 Self::ConnectReply2(_) => MessageKind::ConnectReply2,
288 Self::AbortFunctionCall(_) => MessageKind::AbortFunctionCall,
289 Self::RegisterIntrospection(_) => MessageKind::RegisterIntrospection,
290 Self::QueryIntrospection(_) => MessageKind::QueryIntrospection,
291 Self::QueryIntrospectionReply(_) => MessageKind::QueryIntrospectionReply,
292 Self::CreateService2(_) => MessageKind::CreateService2,
293 Self::QueryServiceInfo(_) => MessageKind::QueryServiceInfo,
294 Self::QueryServiceInfoReply(_) => MessageKind::QueryServiceInfoReply,
295 Self::SubscribeService(_) => MessageKind::SubscribeService,
296 Self::SubscribeServiceReply(_) => MessageKind::SubscribeServiceReply,
297 Self::UnsubscribeService(_) => MessageKind::UnsubscribeService,
298 Self::SubscribeAllEvents(_) => MessageKind::SubscribeAllEvents,
299 Self::SubscribeAllEventsReply(_) => MessageKind::SubscribeAllEventsReply,
300 Self::UnsubscribeAllEvents(_) => MessageKind::UnsubscribeAllEvents,
301 Self::UnsubscribeAllEventsReply(_) => MessageKind::UnsubscribeAllEventsReply,
302 Self::CallFunction2(_) => MessageKind::CallFunction2,
303 }
304 }
305
306 fn serialize_message(self) -> Result<BytesMut, MessageSerializeError> {
307 match self {
308 Self::Connect(msg) => msg.serialize_message(),
309 Self::ConnectReply(msg) => msg.serialize_message(),
310 Self::Shutdown(msg) => msg.serialize_message(),
311 Self::CreateObject(msg) => msg.serialize_message(),
312 Self::CreateObjectReply(msg) => msg.serialize_message(),
313 Self::DestroyObject(msg) => msg.serialize_message(),
314 Self::DestroyObjectReply(msg) => msg.serialize_message(),
315 Self::CreateService(msg) => msg.serialize_message(),
316 Self::CreateServiceReply(msg) => msg.serialize_message(),
317 Self::DestroyService(msg) => msg.serialize_message(),
318 Self::DestroyServiceReply(msg) => msg.serialize_message(),
319 Self::CallFunction(msg) => msg.serialize_message(),
320 Self::CallFunctionReply(msg) => msg.serialize_message(),
321 Self::SubscribeEvent(msg) => msg.serialize_message(),
322 Self::SubscribeEventReply(msg) => msg.serialize_message(),
323 Self::UnsubscribeEvent(msg) => msg.serialize_message(),
324 Self::EmitEvent(msg) => msg.serialize_message(),
325 Self::QueryServiceVersion(msg) => msg.serialize_message(),
326 Self::QueryServiceVersionReply(msg) => msg.serialize_message(),
327 Self::CreateChannel(msg) => msg.serialize_message(),
328 Self::CreateChannelReply(msg) => msg.serialize_message(),
329 Self::CloseChannelEnd(msg) => msg.serialize_message(),
330 Self::CloseChannelEndReply(msg) => msg.serialize_message(),
331 Self::ChannelEndClosed(msg) => msg.serialize_message(),
332 Self::ClaimChannelEnd(msg) => msg.serialize_message(),
333 Self::ClaimChannelEndReply(msg) => msg.serialize_message(),
334 Self::ChannelEndClaimed(msg) => msg.serialize_message(),
335 Self::SendItem(msg) => msg.serialize_message(),
336 Self::ItemReceived(msg) => msg.serialize_message(),
337 Self::AddChannelCapacity(msg) => msg.serialize_message(),
338 Self::Sync(msg) => msg.serialize_message(),
339 Self::SyncReply(msg) => msg.serialize_message(),
340 Self::ServiceDestroyed(msg) => msg.serialize_message(),
341 Self::CreateBusListener(msg) => msg.serialize_message(),
342 Self::CreateBusListenerReply(msg) => msg.serialize_message(),
343 Self::DestroyBusListener(msg) => msg.serialize_message(),
344 Self::DestroyBusListenerReply(msg) => msg.serialize_message(),
345 Self::AddBusListenerFilter(msg) => msg.serialize_message(),
346 Self::RemoveBusListenerFilter(msg) => msg.serialize_message(),
347 Self::ClearBusListenerFilters(msg) => msg.serialize_message(),
348 Self::StartBusListener(msg) => msg.serialize_message(),
349 Self::StartBusListenerReply(msg) => msg.serialize_message(),
350 Self::StopBusListener(msg) => msg.serialize_message(),
351 Self::StopBusListenerReply(msg) => msg.serialize_message(),
352 Self::EmitBusEvent(msg) => msg.serialize_message(),
353 Self::BusListenerCurrentFinished(msg) => msg.serialize_message(),
354 Self::Connect2(msg) => msg.serialize_message(),
355 Self::ConnectReply2(msg) => msg.serialize_message(),
356 Self::AbortFunctionCall(msg) => msg.serialize_message(),
357 Self::RegisterIntrospection(msg) => msg.serialize_message(),
358 Self::QueryIntrospection(msg) => msg.serialize_message(),
359 Self::QueryIntrospectionReply(msg) => msg.serialize_message(),
360 Self::CreateService2(msg) => msg.serialize_message(),
361 Self::QueryServiceInfo(msg) => msg.serialize_message(),
362 Self::QueryServiceInfoReply(msg) => msg.serialize_message(),
363 Self::SubscribeService(msg) => msg.serialize_message(),
364 Self::SubscribeServiceReply(msg) => msg.serialize_message(),
365 Self::UnsubscribeService(msg) => msg.serialize_message(),
366 Self::SubscribeAllEvents(msg) => msg.serialize_message(),
367 Self::SubscribeAllEventsReply(msg) => msg.serialize_message(),
368 Self::UnsubscribeAllEvents(msg) => msg.serialize_message(),
369 Self::UnsubscribeAllEventsReply(msg) => msg.serialize_message(),
370 Self::CallFunction2(msg) => msg.serialize_message(),
371 }
372 }
373
374 fn deserialize_message(buf: BytesMut) -> Result<Self, MessageDeserializeError> {
375 if buf.len() < 5 {
376 return Err(MessageDeserializeError::UnexpectedEoi);
377 }
378
379 let kind = buf[4]
380 .try_into()
381 .map_err(|_| MessageDeserializeError::InvalidSerialization)?;
382
383 match kind {
384 MessageKind::Connect => Connect::deserialize_message(buf).map(Self::Connect),
385
386 MessageKind::ConnectReply => {
387 ConnectReply::deserialize_message(buf).map(Self::ConnectReply)
388 }
389
390 MessageKind::Shutdown => Shutdown::deserialize_message(buf).map(Self::Shutdown),
391
392 MessageKind::CreateObject => {
393 CreateObject::deserialize_message(buf).map(Self::CreateObject)
394 }
395
396 MessageKind::CreateObjectReply => {
397 CreateObjectReply::deserialize_message(buf).map(Self::CreateObjectReply)
398 }
399
400 MessageKind::DestroyObject => {
401 DestroyObject::deserialize_message(buf).map(Self::DestroyObject)
402 }
403
404 MessageKind::DestroyObjectReply => {
405 DestroyObjectReply::deserialize_message(buf).map(Self::DestroyObjectReply)
406 }
407
408 MessageKind::CreateService => {
409 CreateService::deserialize_message(buf).map(Self::CreateService)
410 }
411
412 MessageKind::CreateServiceReply => {
413 CreateServiceReply::deserialize_message(buf).map(Self::CreateServiceReply)
414 }
415
416 MessageKind::DestroyService => {
417 DestroyService::deserialize_message(buf).map(Self::DestroyService)
418 }
419
420 MessageKind::DestroyServiceReply => {
421 DestroyServiceReply::deserialize_message(buf).map(Self::DestroyServiceReply)
422 }
423
424 MessageKind::CallFunction => {
425 CallFunction::deserialize_message(buf).map(Self::CallFunction)
426 }
427
428 MessageKind::CallFunctionReply => {
429 CallFunctionReply::deserialize_message(buf).map(Self::CallFunctionReply)
430 }
431
432 MessageKind::SubscribeEvent => {
433 SubscribeEvent::deserialize_message(buf).map(Self::SubscribeEvent)
434 }
435
436 MessageKind::SubscribeEventReply => {
437 SubscribeEventReply::deserialize_message(buf).map(Self::SubscribeEventReply)
438 }
439
440 MessageKind::UnsubscribeEvent => {
441 UnsubscribeEvent::deserialize_message(buf).map(Self::UnsubscribeEvent)
442 }
443
444 MessageKind::EmitEvent => EmitEvent::deserialize_message(buf).map(Self::EmitEvent),
445
446 MessageKind::QueryServiceVersion => {
447 QueryServiceVersion::deserialize_message(buf).map(Self::QueryServiceVersion)
448 }
449
450 MessageKind::QueryServiceVersionReply => {
451 QueryServiceVersionReply::deserialize_message(buf)
452 .map(Self::QueryServiceVersionReply)
453 }
454
455 MessageKind::CreateChannel => {
456 CreateChannel::deserialize_message(buf).map(Self::CreateChannel)
457 }
458
459 MessageKind::CreateChannelReply => {
460 CreateChannelReply::deserialize_message(buf).map(Self::CreateChannelReply)
461 }
462
463 MessageKind::CloseChannelEnd => {
464 CloseChannelEnd::deserialize_message(buf).map(Self::CloseChannelEnd)
465 }
466
467 MessageKind::CloseChannelEndReply => {
468 CloseChannelEndReply::deserialize_message(buf).map(Self::CloseChannelEndReply)
469 }
470
471 MessageKind::ChannelEndClosed => {
472 ChannelEndClosed::deserialize_message(buf).map(Self::ChannelEndClosed)
473 }
474
475 MessageKind::ClaimChannelEnd => {
476 ClaimChannelEnd::deserialize_message(buf).map(Self::ClaimChannelEnd)
477 }
478
479 MessageKind::ClaimChannelEndReply => {
480 ClaimChannelEndReply::deserialize_message(buf).map(Self::ClaimChannelEndReply)
481 }
482
483 MessageKind::ChannelEndClaimed => {
484 ChannelEndClaimed::deserialize_message(buf).map(Self::ChannelEndClaimed)
485 }
486
487 MessageKind::SendItem => SendItem::deserialize_message(buf).map(Self::SendItem),
488
489 MessageKind::ItemReceived => {
490 ItemReceived::deserialize_message(buf).map(Self::ItemReceived)
491 }
492
493 MessageKind::AddChannelCapacity => {
494 AddChannelCapacity::deserialize_message(buf).map(Self::AddChannelCapacity)
495 }
496
497 MessageKind::Sync => Sync::deserialize_message(buf).map(Self::Sync),
498 MessageKind::SyncReply => SyncReply::deserialize_message(buf).map(Self::SyncReply),
499
500 MessageKind::ServiceDestroyed => {
501 ServiceDestroyed::deserialize_message(buf).map(Self::ServiceDestroyed)
502 }
503
504 MessageKind::CreateBusListener => {
505 CreateBusListener::deserialize_message(buf).map(Self::CreateBusListener)
506 }
507
508 MessageKind::CreateBusListenerReply => {
509 CreateBusListenerReply::deserialize_message(buf).map(Self::CreateBusListenerReply)
510 }
511
512 MessageKind::DestroyBusListener => {
513 DestroyBusListener::deserialize_message(buf).map(Self::DestroyBusListener)
514 }
515
516 MessageKind::DestroyBusListenerReply => {
517 DestroyBusListenerReply::deserialize_message(buf).map(Self::DestroyBusListenerReply)
518 }
519
520 MessageKind::AddBusListenerFilter => {
521 AddBusListenerFilter::deserialize_message(buf).map(Self::AddBusListenerFilter)
522 }
523
524 MessageKind::RemoveBusListenerFilter => {
525 RemoveBusListenerFilter::deserialize_message(buf).map(Self::RemoveBusListenerFilter)
526 }
527
528 MessageKind::ClearBusListenerFilters => {
529 ClearBusListenerFilters::deserialize_message(buf).map(Self::ClearBusListenerFilters)
530 }
531
532 MessageKind::StartBusListener => {
533 StartBusListener::deserialize_message(buf).map(Self::StartBusListener)
534 }
535
536 MessageKind::StartBusListenerReply => {
537 StartBusListenerReply::deserialize_message(buf).map(Self::StartBusListenerReply)
538 }
539
540 MessageKind::StopBusListener => {
541 StopBusListener::deserialize_message(buf).map(Self::StopBusListener)
542 }
543
544 MessageKind::StopBusListenerReply => {
545 StopBusListenerReply::deserialize_message(buf).map(Self::StopBusListenerReply)
546 }
547
548 MessageKind::EmitBusEvent => {
549 EmitBusEvent::deserialize_message(buf).map(Self::EmitBusEvent)
550 }
551
552 MessageKind::BusListenerCurrentFinished => {
553 BusListenerCurrentFinished::deserialize_message(buf)
554 .map(Self::BusListenerCurrentFinished)
555 }
556
557 MessageKind::Connect2 => Connect2::deserialize_message(buf).map(Self::Connect2),
558
559 MessageKind::ConnectReply2 => {
560 ConnectReply2::deserialize_message(buf).map(Self::ConnectReply2)
561 }
562
563 MessageKind::AbortFunctionCall => {
564 AbortFunctionCall::deserialize_message(buf).map(Self::AbortFunctionCall)
565 }
566
567 MessageKind::RegisterIntrospection => {
568 RegisterIntrospection::deserialize_message(buf).map(Self::RegisterIntrospection)
569 }
570
571 MessageKind::QueryIntrospection => {
572 QueryIntrospection::deserialize_message(buf).map(Self::QueryIntrospection)
573 }
574
575 MessageKind::QueryIntrospectionReply => {
576 QueryIntrospectionReply::deserialize_message(buf).map(Self::QueryIntrospectionReply)
577 }
578
579 MessageKind::CreateService2 => {
580 CreateService2::deserialize_message(buf).map(Self::CreateService2)
581 }
582
583 MessageKind::QueryServiceInfo => {
584 QueryServiceInfo::deserialize_message(buf).map(Self::QueryServiceInfo)
585 }
586
587 MessageKind::QueryServiceInfoReply => {
588 QueryServiceInfoReply::deserialize_message(buf).map(Self::QueryServiceInfoReply)
589 }
590
591 MessageKind::SubscribeService => {
592 SubscribeService::deserialize_message(buf).map(Self::SubscribeService)
593 }
594
595 MessageKind::SubscribeServiceReply => {
596 SubscribeServiceReply::deserialize_message(buf).map(Self::SubscribeServiceReply)
597 }
598
599 MessageKind::UnsubscribeService => {
600 UnsubscribeService::deserialize_message(buf).map(Self::UnsubscribeService)
601 }
602
603 MessageKind::SubscribeAllEvents => {
604 SubscribeAllEvents::deserialize_message(buf).map(Self::SubscribeAllEvents)
605 }
606
607 MessageKind::SubscribeAllEventsReply => {
608 SubscribeAllEventsReply::deserialize_message(buf).map(Self::SubscribeAllEventsReply)
609 }
610
611 MessageKind::UnsubscribeAllEvents => {
612 UnsubscribeAllEvents::deserialize_message(buf).map(Self::UnsubscribeAllEvents)
613 }
614
615 MessageKind::UnsubscribeAllEventsReply => {
616 UnsubscribeAllEventsReply::deserialize_message(buf)
617 .map(Self::UnsubscribeAllEventsReply)
618 }
619
620 MessageKind::CallFunction2 => {
621 CallFunction2::deserialize_message(buf).map(Self::CallFunction2)
622 }
623 }
624 }
625
626 fn value(&self) -> Option<&SerializedValueSlice> {
627 match self {
628 Self::Connect(msg) => msg.value(),
629 Self::ConnectReply(msg) => msg.value(),
630 Self::Shutdown(msg) => msg.value(),
631 Self::CreateObject(msg) => msg.value(),
632 Self::CreateObjectReply(msg) => msg.value(),
633 Self::DestroyObject(msg) => msg.value(),
634 Self::DestroyObjectReply(msg) => msg.value(),
635 Self::CreateService(msg) => msg.value(),
636 Self::CreateServiceReply(msg) => msg.value(),
637 Self::DestroyService(msg) => msg.value(),
638 Self::DestroyServiceReply(msg) => msg.value(),
639 Self::CallFunction(msg) => msg.value(),
640 Self::CallFunctionReply(msg) => msg.value(),
641 Self::SubscribeEvent(msg) => msg.value(),
642 Self::SubscribeEventReply(msg) => msg.value(),
643 Self::UnsubscribeEvent(msg) => msg.value(),
644 Self::EmitEvent(msg) => msg.value(),
645 Self::QueryServiceVersion(msg) => msg.value(),
646 Self::QueryServiceVersionReply(msg) => msg.value(),
647 Self::CreateChannel(msg) => msg.value(),
648 Self::CreateChannelReply(msg) => msg.value(),
649 Self::CloseChannelEnd(msg) => msg.value(),
650 Self::CloseChannelEndReply(msg) => msg.value(),
651 Self::ChannelEndClosed(msg) => msg.value(),
652 Self::ClaimChannelEnd(msg) => msg.value(),
653 Self::ClaimChannelEndReply(msg) => msg.value(),
654 Self::ChannelEndClaimed(msg) => msg.value(),
655 Self::SendItem(msg) => msg.value(),
656 Self::ItemReceived(msg) => msg.value(),
657 Self::AddChannelCapacity(msg) => msg.value(),
658 Self::Sync(msg) => msg.value(),
659 Self::SyncReply(msg) => msg.value(),
660 Self::ServiceDestroyed(msg) => msg.value(),
661 Self::CreateBusListener(msg) => msg.value(),
662 Self::CreateBusListenerReply(msg) => msg.value(),
663 Self::DestroyBusListener(msg) => msg.value(),
664 Self::DestroyBusListenerReply(msg) => msg.value(),
665 Self::AddBusListenerFilter(msg) => msg.value(),
666 Self::RemoveBusListenerFilter(msg) => msg.value(),
667 Self::ClearBusListenerFilters(msg) => msg.value(),
668 Self::StartBusListener(msg) => msg.value(),
669 Self::StartBusListenerReply(msg) => msg.value(),
670 Self::StopBusListener(msg) => msg.value(),
671 Self::StopBusListenerReply(msg) => msg.value(),
672 Self::EmitBusEvent(msg) => msg.value(),
673 Self::BusListenerCurrentFinished(msg) => msg.value(),
674 Self::Connect2(msg) => msg.value(),
675 Self::ConnectReply2(msg) => msg.value(),
676 Self::AbortFunctionCall(msg) => msg.value(),
677 Self::RegisterIntrospection(msg) => msg.value(),
678 Self::QueryIntrospection(msg) => msg.value(),
679 Self::QueryIntrospectionReply(msg) => msg.value(),
680 Self::CreateService2(msg) => msg.value(),
681 Self::QueryServiceInfo(msg) => msg.value(),
682 Self::QueryServiceInfoReply(msg) => msg.value(),
683 Self::SubscribeService(msg) => msg.value(),
684 Self::SubscribeServiceReply(msg) => msg.value(),
685 Self::UnsubscribeService(msg) => msg.value(),
686 Self::SubscribeAllEvents(msg) => msg.value(),
687 Self::SubscribeAllEventsReply(msg) => msg.value(),
688 Self::UnsubscribeAllEvents(msg) => msg.value(),
689 Self::UnsubscribeAllEventsReply(msg) => msg.value(),
690 Self::CallFunction2(msg) => msg.value(),
691 }
692 }
693 fn value_mut(&mut self) -> Option<&mut SerializedValue> {
694 match self {
695 Self::Connect(msg) => msg.value_mut(),
696 Self::ConnectReply(msg) => msg.value_mut(),
697 Self::Shutdown(msg) => msg.value_mut(),
698 Self::CreateObject(msg) => msg.value_mut(),
699 Self::CreateObjectReply(msg) => msg.value_mut(),
700 Self::DestroyObject(msg) => msg.value_mut(),
701 Self::DestroyObjectReply(msg) => msg.value_mut(),
702 Self::CreateService(msg) => msg.value_mut(),
703 Self::CreateServiceReply(msg) => msg.value_mut(),
704 Self::DestroyService(msg) => msg.value_mut(),
705 Self::DestroyServiceReply(msg) => msg.value_mut(),
706 Self::CallFunction(msg) => msg.value_mut(),
707 Self::CallFunctionReply(msg) => msg.value_mut(),
708 Self::SubscribeEvent(msg) => msg.value_mut(),
709 Self::SubscribeEventReply(msg) => msg.value_mut(),
710 Self::UnsubscribeEvent(msg) => msg.value_mut(),
711 Self::EmitEvent(msg) => msg.value_mut(),
712 Self::QueryServiceVersion(msg) => msg.value_mut(),
713 Self::QueryServiceVersionReply(msg) => msg.value_mut(),
714 Self::CreateChannel(msg) => msg.value_mut(),
715 Self::CreateChannelReply(msg) => msg.value_mut(),
716 Self::CloseChannelEnd(msg) => msg.value_mut(),
717 Self::CloseChannelEndReply(msg) => msg.value_mut(),
718 Self::ChannelEndClosed(msg) => msg.value_mut(),
719 Self::ClaimChannelEnd(msg) => msg.value_mut(),
720 Self::ClaimChannelEndReply(msg) => msg.value_mut(),
721 Self::ChannelEndClaimed(msg) => msg.value_mut(),
722 Self::SendItem(msg) => msg.value_mut(),
723 Self::ItemReceived(msg) => msg.value_mut(),
724 Self::AddChannelCapacity(msg) => msg.value_mut(),
725 Self::Sync(msg) => msg.value_mut(),
726 Self::SyncReply(msg) => msg.value_mut(),
727 Self::ServiceDestroyed(msg) => msg.value_mut(),
728 Self::CreateBusListener(msg) => msg.value_mut(),
729 Self::CreateBusListenerReply(msg) => msg.value_mut(),
730 Self::DestroyBusListener(msg) => msg.value_mut(),
731 Self::DestroyBusListenerReply(msg) => msg.value_mut(),
732 Self::AddBusListenerFilter(msg) => msg.value_mut(),
733 Self::RemoveBusListenerFilter(msg) => msg.value_mut(),
734 Self::ClearBusListenerFilters(msg) => msg.value_mut(),
735 Self::StartBusListener(msg) => msg.value_mut(),
736 Self::StartBusListenerReply(msg) => msg.value_mut(),
737 Self::StopBusListener(msg) => msg.value_mut(),
738 Self::StopBusListenerReply(msg) => msg.value_mut(),
739 Self::EmitBusEvent(msg) => msg.value_mut(),
740 Self::BusListenerCurrentFinished(msg) => msg.value_mut(),
741 Self::Connect2(msg) => msg.value_mut(),
742 Self::ConnectReply2(msg) => msg.value_mut(),
743 Self::AbortFunctionCall(msg) => msg.value_mut(),
744 Self::RegisterIntrospection(msg) => msg.value_mut(),
745 Self::QueryIntrospection(msg) => msg.value_mut(),
746 Self::QueryIntrospectionReply(msg) => msg.value_mut(),
747 Self::CreateService2(msg) => msg.value_mut(),
748 Self::QueryServiceInfo(msg) => msg.value_mut(),
749 Self::QueryServiceInfoReply(msg) => msg.value_mut(),
750 Self::SubscribeService(msg) => msg.value_mut(),
751 Self::SubscribeServiceReply(msg) => msg.value_mut(),
752 Self::UnsubscribeService(msg) => msg.value_mut(),
753 Self::SubscribeAllEvents(msg) => msg.value_mut(),
754 Self::SubscribeAllEventsReply(msg) => msg.value_mut(),
755 Self::UnsubscribeAllEvents(msg) => msg.value_mut(),
756 Self::UnsubscribeAllEventsReply(msg) => msg.value_mut(),
757 Self::CallFunction2(msg) => msg.value_mut(),
758 }
759 }
760}
761
762impl message_ops::Sealed for Message {}
763
764#[derive(Debug, Copy, Clone, PartialEq, Eq, IntoPrimitive, TryFromPrimitive)]
765#[repr(u8)]
766enum OptionKind {
767 None = 0,
768 Some = 1,
769}