1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_driver_framework__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct DriverStartRequest {
16 pub start_args: DriverStartArgs,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartRequest {}
20
21#[derive(Debug, PartialEq)]
22pub struct NodeAddChildRequest {
23 pub args: NodeAddArgs,
24 pub controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
25 pub node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
26}
27
28impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddChildRequest {}
29
30#[derive(Debug, Default, PartialEq)]
31pub struct DevfsAddArgs {
32 pub connector: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
36 pub class_name: Option<String>,
41 pub inspect: Option<fidl::Vmo>,
44 pub connector_supports: Option<fidl_fuchsia_device_fs::ConnectionType>,
49 pub controller_connector:
55 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
56 #[doc(hidden)]
57 pub __source_breaking: fidl::marker::SourceBreaking,
58}
59
60impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {}
61
62#[derive(Debug, Default, PartialEq)]
64pub struct DriverStartArgs {
65 pub node: Option<fidl::endpoints::ClientEnd<NodeMarker>>,
67 pub symbols: Option<Vec<NodeSymbol>>,
71 pub url: Option<String>,
74 pub program: Option<fidl_fuchsia_data::Dictionary>,
90 pub incoming: Option<Vec<fidl_fuchsia_component_runner::ComponentNamespaceEntry>>,
92 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
94 pub config: Option<fidl::Vmo>,
96 pub node_name: Option<String>,
98 pub node_properties: Option<Vec<NodePropertyEntry>>,
107 pub node_offers: Option<Vec<Offer>>,
109 pub node_token: Option<fidl::Event>,
112 pub node_properties_2: Option<Vec<NodePropertyEntry2>>,
113 pub vmar: Option<fidl::Vmar>,
116 pub power_element_args: Option<PowerElementArgs>,
123 #[doc(hidden)]
124 pub __source_breaking: fidl::marker::SourceBreaking,
125}
126
127impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartArgs {}
128
129#[derive(Debug, Default, PartialEq)]
131pub struct NodeAddArgs {
132 pub name: Option<String>,
134 pub symbols: Option<Vec<NodeSymbol>>,
136 pub properties: Option<Vec<NodeProperty>>,
139 pub devfs_args: Option<DevfsAddArgs>,
141 pub offers2: Option<Vec<Offer>>,
146 pub bus_info: Option<BusInfo>,
149 pub properties2: Option<Vec<NodeProperty2>>,
152 pub offers_dictionary: Option<fidl_fuchsia_component_sandbox::DictionaryRef>,
156 pub driver_host: Option<String>,
163 #[doc(hidden)]
164 pub __source_breaking: fidl::marker::SourceBreaking,
165}
166
167impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {}
168
169#[derive(Debug, Default, PartialEq)]
170pub struct NodeControllerOnBindRequest {
171 pub node_token: Option<fidl::Event>,
174 #[doc(hidden)]
175 pub __source_breaking: fidl::marker::SourceBreaking,
176}
177
178impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
179 for NodeControllerOnBindRequest
180{
181}
182
183#[derive(Debug, Default, PartialEq)]
184pub struct PowerElementArgs {
185 pub control_client:
186 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>>,
187 pub runner_server:
188 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>>,
189 pub lessor_client: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>>,
190 pub token: Option<fidl::Event>,
191 #[doc(hidden)]
192 pub __source_breaking: fidl::marker::SourceBreaking,
193}
194
195impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PowerElementArgs {}
196
197#[derive(Debug)]
198pub enum DriverResult {
199 DriverStartedNodeToken(fidl::Event),
201 MatchError(i32),
203 StartError(i32),
205 #[doc(hidden)]
206 __SourceBreaking { unknown_ordinal: u64 },
207}
208
209#[macro_export]
211macro_rules! DriverResultUnknown {
212 () => {
213 _
214 };
215}
216
217impl PartialEq for DriverResult {
219 fn eq(&self, other: &Self) -> bool {
220 match (self, other) {
221 (Self::DriverStartedNodeToken(x), Self::DriverStartedNodeToken(y)) => *x == *y,
222 (Self::MatchError(x), Self::MatchError(y)) => *x == *y,
223 (Self::StartError(x), Self::StartError(y)) => *x == *y,
224 _ => false,
225 }
226 }
227}
228
229impl DriverResult {
230 #[inline]
231 pub fn ordinal(&self) -> u64 {
232 match *self {
233 Self::DriverStartedNodeToken(_) => 1,
234 Self::MatchError(_) => 2,
235 Self::StartError(_) => 3,
236 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
237 }
238 }
239
240 #[inline]
241 pub fn unknown_variant_for_testing() -> Self {
242 Self::__SourceBreaking { unknown_ordinal: 0 }
243 }
244
245 #[inline]
246 pub fn is_unknown(&self) -> bool {
247 match self {
248 Self::__SourceBreaking { .. } => true,
249 _ => false,
250 }
251 }
252}
253
254impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {}
255
256#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
257pub struct CompositeNodeManagerMarker;
258
259impl fidl::endpoints::ProtocolMarker for CompositeNodeManagerMarker {
260 type Proxy = CompositeNodeManagerProxy;
261 type RequestStream = CompositeNodeManagerRequestStream;
262 #[cfg(target_os = "fuchsia")]
263 type SynchronousProxy = CompositeNodeManagerSynchronousProxy;
264
265 const DEBUG_NAME: &'static str = "fuchsia.driver.framework.CompositeNodeManager";
266}
267impl fidl::endpoints::DiscoverableProtocolMarker for CompositeNodeManagerMarker {}
268pub type CompositeNodeManagerAddSpecResult = Result<(), CompositeNodeSpecError>;
269
270pub trait CompositeNodeManagerProxyInterface: Send + Sync {
271 type AddSpecResponseFut: std::future::Future<Output = Result<CompositeNodeManagerAddSpecResult, fidl::Error>>
272 + Send;
273 fn r#add_spec(&self, payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut;
274}
275#[derive(Debug)]
276#[cfg(target_os = "fuchsia")]
277pub struct CompositeNodeManagerSynchronousProxy {
278 client: fidl::client::sync::Client,
279}
280
281#[cfg(target_os = "fuchsia")]
282impl fidl::endpoints::SynchronousProxy for CompositeNodeManagerSynchronousProxy {
283 type Proxy = CompositeNodeManagerProxy;
284 type Protocol = CompositeNodeManagerMarker;
285
286 fn from_channel(inner: fidl::Channel) -> Self {
287 Self::new(inner)
288 }
289
290 fn into_channel(self) -> fidl::Channel {
291 self.client.into_channel()
292 }
293
294 fn as_channel(&self) -> &fidl::Channel {
295 self.client.as_channel()
296 }
297}
298
299#[cfg(target_os = "fuchsia")]
300impl CompositeNodeManagerSynchronousProxy {
301 pub fn new(channel: fidl::Channel) -> Self {
302 let protocol_name =
303 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
304 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
305 }
306
307 pub fn into_channel(self) -> fidl::Channel {
308 self.client.into_channel()
309 }
310
311 pub fn wait_for_event(
314 &self,
315 deadline: zx::MonotonicInstant,
316 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
317 CompositeNodeManagerEvent::decode(self.client.wait_for_event(deadline)?)
318 }
319
320 pub fn r#add_spec(
322 &self,
323 mut payload: &CompositeNodeSpec,
324 ___deadline: zx::MonotonicInstant,
325 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
326 let _response =
327 self.client
328 .send_query::<CompositeNodeSpec, fidl::encoding::FlexibleResultType<
329 fidl::encoding::EmptyStruct,
330 CompositeNodeSpecError,
331 >>(
332 payload,
333 0x524e353c8130cc74,
334 fidl::encoding::DynamicFlags::FLEXIBLE,
335 ___deadline,
336 )?
337 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
338 Ok(_response.map(|x| x))
339 }
340}
341
342#[cfg(target_os = "fuchsia")]
343impl From<CompositeNodeManagerSynchronousProxy> for zx::NullableHandle {
344 fn from(value: CompositeNodeManagerSynchronousProxy) -> Self {
345 value.into_channel().into()
346 }
347}
348
349#[cfg(target_os = "fuchsia")]
350impl From<fidl::Channel> for CompositeNodeManagerSynchronousProxy {
351 fn from(value: fidl::Channel) -> Self {
352 Self::new(value)
353 }
354}
355
356#[cfg(target_os = "fuchsia")]
357impl fidl::endpoints::FromClient for CompositeNodeManagerSynchronousProxy {
358 type Protocol = CompositeNodeManagerMarker;
359
360 fn from_client(value: fidl::endpoints::ClientEnd<CompositeNodeManagerMarker>) -> Self {
361 Self::new(value.into_channel())
362 }
363}
364
365#[derive(Debug, Clone)]
366pub struct CompositeNodeManagerProxy {
367 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
368}
369
370impl fidl::endpoints::Proxy for CompositeNodeManagerProxy {
371 type Protocol = CompositeNodeManagerMarker;
372
373 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
374 Self::new(inner)
375 }
376
377 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
378 self.client.into_channel().map_err(|client| Self { client })
379 }
380
381 fn as_channel(&self) -> &::fidl::AsyncChannel {
382 self.client.as_channel()
383 }
384}
385
386impl CompositeNodeManagerProxy {
387 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
389 let protocol_name =
390 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
391 Self { client: fidl::client::Client::new(channel, protocol_name) }
392 }
393
394 pub fn take_event_stream(&self) -> CompositeNodeManagerEventStream {
400 CompositeNodeManagerEventStream { event_receiver: self.client.take_event_receiver() }
401 }
402
403 pub fn r#add_spec(
405 &self,
406 mut payload: &CompositeNodeSpec,
407 ) -> fidl::client::QueryResponseFut<
408 CompositeNodeManagerAddSpecResult,
409 fidl::encoding::DefaultFuchsiaResourceDialect,
410 > {
411 CompositeNodeManagerProxyInterface::r#add_spec(self, payload)
412 }
413}
414
415impl CompositeNodeManagerProxyInterface for CompositeNodeManagerProxy {
416 type AddSpecResponseFut = fidl::client::QueryResponseFut<
417 CompositeNodeManagerAddSpecResult,
418 fidl::encoding::DefaultFuchsiaResourceDialect,
419 >;
420 fn r#add_spec(&self, mut payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut {
421 fn _decode(
422 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
423 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
424 let _response = fidl::client::decode_transaction_body::<
425 fidl::encoding::FlexibleResultType<
426 fidl::encoding::EmptyStruct,
427 CompositeNodeSpecError,
428 >,
429 fidl::encoding::DefaultFuchsiaResourceDialect,
430 0x524e353c8130cc74,
431 >(_buf?)?
432 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
433 Ok(_response.map(|x| x))
434 }
435 self.client.send_query_and_decode::<CompositeNodeSpec, CompositeNodeManagerAddSpecResult>(
436 payload,
437 0x524e353c8130cc74,
438 fidl::encoding::DynamicFlags::FLEXIBLE,
439 _decode,
440 )
441 }
442}
443
444pub struct CompositeNodeManagerEventStream {
445 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
446}
447
448impl std::marker::Unpin for CompositeNodeManagerEventStream {}
449
450impl futures::stream::FusedStream for CompositeNodeManagerEventStream {
451 fn is_terminated(&self) -> bool {
452 self.event_receiver.is_terminated()
453 }
454}
455
456impl futures::Stream for CompositeNodeManagerEventStream {
457 type Item = Result<CompositeNodeManagerEvent, fidl::Error>;
458
459 fn poll_next(
460 mut self: std::pin::Pin<&mut Self>,
461 cx: &mut std::task::Context<'_>,
462 ) -> std::task::Poll<Option<Self::Item>> {
463 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
464 &mut self.event_receiver,
465 cx
466 )?) {
467 Some(buf) => std::task::Poll::Ready(Some(CompositeNodeManagerEvent::decode(buf))),
468 None => std::task::Poll::Ready(None),
469 }
470 }
471}
472
473#[derive(Debug)]
474pub enum CompositeNodeManagerEvent {
475 #[non_exhaustive]
476 _UnknownEvent {
477 ordinal: u64,
479 },
480}
481
482impl CompositeNodeManagerEvent {
483 fn decode(
485 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
486 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
487 let (bytes, _handles) = buf.split_mut();
488 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
489 debug_assert_eq!(tx_header.tx_id, 0);
490 match tx_header.ordinal {
491 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
492 Ok(CompositeNodeManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
493 }
494 _ => Err(fidl::Error::UnknownOrdinal {
495 ordinal: tx_header.ordinal,
496 protocol_name:
497 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
498 }),
499 }
500 }
501}
502
503pub struct CompositeNodeManagerRequestStream {
505 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
506 is_terminated: bool,
507}
508
509impl std::marker::Unpin for CompositeNodeManagerRequestStream {}
510
511impl futures::stream::FusedStream for CompositeNodeManagerRequestStream {
512 fn is_terminated(&self) -> bool {
513 self.is_terminated
514 }
515}
516
517impl fidl::endpoints::RequestStream for CompositeNodeManagerRequestStream {
518 type Protocol = CompositeNodeManagerMarker;
519 type ControlHandle = CompositeNodeManagerControlHandle;
520
521 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
522 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
523 }
524
525 fn control_handle(&self) -> Self::ControlHandle {
526 CompositeNodeManagerControlHandle { inner: self.inner.clone() }
527 }
528
529 fn into_inner(
530 self,
531 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
532 {
533 (self.inner, self.is_terminated)
534 }
535
536 fn from_inner(
537 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
538 is_terminated: bool,
539 ) -> Self {
540 Self { inner, is_terminated }
541 }
542}
543
544impl futures::Stream for CompositeNodeManagerRequestStream {
545 type Item = Result<CompositeNodeManagerRequest, fidl::Error>;
546
547 fn poll_next(
548 mut self: std::pin::Pin<&mut Self>,
549 cx: &mut std::task::Context<'_>,
550 ) -> std::task::Poll<Option<Self::Item>> {
551 let this = &mut *self;
552 if this.inner.check_shutdown(cx) {
553 this.is_terminated = true;
554 return std::task::Poll::Ready(None);
555 }
556 if this.is_terminated {
557 panic!("polled CompositeNodeManagerRequestStream after completion");
558 }
559 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
560 |bytes, handles| {
561 match this.inner.channel().read_etc(cx, bytes, handles) {
562 std::task::Poll::Ready(Ok(())) => {}
563 std::task::Poll::Pending => return std::task::Poll::Pending,
564 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
565 this.is_terminated = true;
566 return std::task::Poll::Ready(None);
567 }
568 std::task::Poll::Ready(Err(e)) => {
569 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
570 e.into(),
571 ))));
572 }
573 }
574
575 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
577
578 std::task::Poll::Ready(Some(match header.ordinal {
579 0x524e353c8130cc74 => {
580 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
581 let mut req = fidl::new_empty!(CompositeNodeSpec, fidl::encoding::DefaultFuchsiaResourceDialect);
582 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CompositeNodeSpec>(&header, _body_bytes, handles, &mut req)?;
583 let control_handle = CompositeNodeManagerControlHandle {
584 inner: this.inner.clone(),
585 };
586 Ok(CompositeNodeManagerRequest::AddSpec {payload: req,
587 responder: CompositeNodeManagerAddSpecResponder {
588 control_handle: std::mem::ManuallyDrop::new(control_handle),
589 tx_id: header.tx_id,
590 },
591 })
592 }
593 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
594 Ok(CompositeNodeManagerRequest::_UnknownMethod {
595 ordinal: header.ordinal,
596 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
597 method_type: fidl::MethodType::OneWay,
598 })
599 }
600 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
601 this.inner.send_framework_err(
602 fidl::encoding::FrameworkErr::UnknownMethod,
603 header.tx_id,
604 header.ordinal,
605 header.dynamic_flags(),
606 (bytes, handles),
607 )?;
608 Ok(CompositeNodeManagerRequest::_UnknownMethod {
609 ordinal: header.ordinal,
610 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
611 method_type: fidl::MethodType::TwoWay,
612 })
613 }
614 _ => Err(fidl::Error::UnknownOrdinal {
615 ordinal: header.ordinal,
616 protocol_name: <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
617 }),
618 }))
619 },
620 )
621 }
622}
623
624#[derive(Debug)]
630pub enum CompositeNodeManagerRequest {
631 AddSpec { payload: CompositeNodeSpec, responder: CompositeNodeManagerAddSpecResponder },
633 #[non_exhaustive]
635 _UnknownMethod {
636 ordinal: u64,
638 control_handle: CompositeNodeManagerControlHandle,
639 method_type: fidl::MethodType,
640 },
641}
642
643impl CompositeNodeManagerRequest {
644 #[allow(irrefutable_let_patterns)]
645 pub fn into_add_spec(
646 self,
647 ) -> Option<(CompositeNodeSpec, CompositeNodeManagerAddSpecResponder)> {
648 if let CompositeNodeManagerRequest::AddSpec { payload, responder } = self {
649 Some((payload, responder))
650 } else {
651 None
652 }
653 }
654
655 pub fn method_name(&self) -> &'static str {
657 match *self {
658 CompositeNodeManagerRequest::AddSpec { .. } => "add_spec",
659 CompositeNodeManagerRequest::_UnknownMethod {
660 method_type: fidl::MethodType::OneWay,
661 ..
662 } => "unknown one-way method",
663 CompositeNodeManagerRequest::_UnknownMethod {
664 method_type: fidl::MethodType::TwoWay,
665 ..
666 } => "unknown two-way method",
667 }
668 }
669}
670
671#[derive(Debug, Clone)]
672pub struct CompositeNodeManagerControlHandle {
673 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
674}
675
676impl fidl::endpoints::ControlHandle for CompositeNodeManagerControlHandle {
677 fn shutdown(&self) {
678 self.inner.shutdown()
679 }
680
681 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
682 self.inner.shutdown_with_epitaph(status)
683 }
684
685 fn is_closed(&self) -> bool {
686 self.inner.channel().is_closed()
687 }
688 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
689 self.inner.channel().on_closed()
690 }
691
692 #[cfg(target_os = "fuchsia")]
693 fn signal_peer(
694 &self,
695 clear_mask: zx::Signals,
696 set_mask: zx::Signals,
697 ) -> Result<(), zx_status::Status> {
698 use fidl::Peered;
699 self.inner.channel().signal_peer(clear_mask, set_mask)
700 }
701}
702
703impl CompositeNodeManagerControlHandle {}
704
705#[must_use = "FIDL methods require a response to be sent"]
706#[derive(Debug)]
707pub struct CompositeNodeManagerAddSpecResponder {
708 control_handle: std::mem::ManuallyDrop<CompositeNodeManagerControlHandle>,
709 tx_id: u32,
710}
711
712impl std::ops::Drop for CompositeNodeManagerAddSpecResponder {
716 fn drop(&mut self) {
717 self.control_handle.shutdown();
718 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
720 }
721}
722
723impl fidl::endpoints::Responder for CompositeNodeManagerAddSpecResponder {
724 type ControlHandle = CompositeNodeManagerControlHandle;
725
726 fn control_handle(&self) -> &CompositeNodeManagerControlHandle {
727 &self.control_handle
728 }
729
730 fn drop_without_shutdown(mut self) {
731 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
733 std::mem::forget(self);
735 }
736}
737
738impl CompositeNodeManagerAddSpecResponder {
739 pub fn send(self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
743 let _result = self.send_raw(result);
744 if _result.is_err() {
745 self.control_handle.shutdown();
746 }
747 self.drop_without_shutdown();
748 _result
749 }
750
751 pub fn send_no_shutdown_on_err(
753 self,
754 mut result: Result<(), CompositeNodeSpecError>,
755 ) -> Result<(), fidl::Error> {
756 let _result = self.send_raw(result);
757 self.drop_without_shutdown();
758 _result
759 }
760
761 fn send_raw(&self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
762 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
763 fidl::encoding::EmptyStruct,
764 CompositeNodeSpecError,
765 >>(
766 fidl::encoding::FlexibleResult::new(result),
767 self.tx_id,
768 0x524e353c8130cc74,
769 fidl::encoding::DynamicFlags::FLEXIBLE,
770 )
771 }
772}
773
774#[cfg(feature = "driver")]
775#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
776pub struct DriverMarker;
777
778#[cfg(feature = "driver")]
779impl fidl_driver::endpoints::DriverProtocolMarker for DriverMarker {
780 const DEBUG_NAME: &'static str = "(anonymous) Driver";
781}
782pub type DriverStartResult = Result<(), i32>;
783
784#[cfg(feature = "driver")]
792#[derive(Debug)]
793pub enum DriverRequest {
794 Start { start_args: DriverStartArgs, responder: DriverStartResponder },
808 Stop {},
813 #[non_exhaustive]
815 _UnknownMethod {
816 ordinal: u64,
818 method_type: fidl::MethodType,
819 },
820}
821
822#[cfg(feature = "driver")]
823impl DriverRequest {
824 #[allow(irrefutable_let_patterns)]
825 pub fn into_start(self) -> Option<(DriverStartArgs, DriverStartResponder)> {
826 if let DriverRequest::Start { start_args, responder } = self {
827 Some((start_args, responder))
828 } else {
829 None
830 }
831 }
832
833 #[allow(irrefutable_let_patterns)]
834 pub fn into_stop(self) -> Option<()> {
835 if let DriverRequest::Stop {} = self { Some(()) } else { None }
836 }
837
838 pub fn new_start(self, start_args: DriverStartArgs, tx_id: u32) -> Self {
839 Self::Start { start_args, responder: DriverStartResponder { tx_id } }
840 }
841
842 pub fn new_stop(self) -> Self {
843 Self::Stop {}
844 }
845
846 pub fn r#start_as_message(
847 arena: fdf::Arena,
848 mut start_args: DriverStartArgs,
849 tx_id: u32,
850 ) -> Result<fdf::Message<[u8]>, fidl::Error> {
851 let ordinal = 0x27be00ae42aa60c2;
852 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
853 let body = (&mut start_args,);
854 let msg = fidl::encoding::TransactionMessage {
855 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
856 body,
857 };
858 fidl::encoding::with_tls_encoded::<
859 fidl::encoding::TransactionMessageType<DriverStartRequest>,
860 fidl::encoding::DefaultFuchsiaResourceDialect,
861 fdf::Message<[u8]>,
862 >(msg, |bytes, mut handles| {
863 let handles = arena.insert_from_iter(
864 std::mem::take(handles)
865 .into_iter()
866 .map(fidl_driver::encoding::mixed_from_handle_disposition),
867 );
868 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
869 })
870 }
871
872 pub fn r#stop_as_message(arena: fdf::Arena) -> Result<fdf::Message<[u8]>, fidl::Error> {
873 let tx_id = 0;
874 let ordinal = 0x4b96c67e29b3843d;
875 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
876 let body = ();
877 let msg = fidl::encoding::TransactionMessage {
878 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
879 body,
880 };
881 fidl::encoding::with_tls_encoded::<
882 fidl::encoding::TransactionMessageType<fidl::encoding::EmptyPayload>,
883 fidl::encoding::DefaultFuchsiaResourceDialect,
884 fdf::Message<[u8]>,
885 >(msg, |bytes, mut handles| {
886 let handles = arena.insert_from_iter(
887 std::mem::take(handles)
888 .into_iter()
889 .map(fidl_driver::encoding::mixed_from_handle_disposition),
890 );
891 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
892 })
893 }
894
895 #[allow(irrefutable_let_patterns)]
896 pub fn read_from(bytes: &[u8], _handles: &mut [zx::HandleInfo]) -> Result<Self, fidl::Error> {
897 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
898
899 match header.ordinal {
900 0x27be00ae42aa60c2 => {
901 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
902 let mut req = fidl::new_empty!(
903 DriverStartRequest,
904 fidl::encoding::DefaultFuchsiaResourceDialect
905 );
906 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverStartRequest>(&header, _body_bytes, _handles, &mut req)?;
907 Ok(DriverRequest::Start {
908 start_args: req.start_args,
909
910 responder: DriverStartResponder { tx_id: header.tx_id },
911 })
912 }
913 0x4b96c67e29b3843d => {
914 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
915 let mut req = fidl::new_empty!(
916 fidl::encoding::EmptyPayload,
917 fidl::encoding::DefaultFuchsiaResourceDialect
918 );
919 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, _handles, &mut req)?;
920 Ok(DriverRequest::Stop {})
921 }
922 _ if header.tx_id == 0
923 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
924 {
925 Ok(DriverRequest::_UnknownMethod {
926 ordinal: header.ordinal,
927 method_type: fidl::MethodType::OneWay,
928 })
929 }
930 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
931 Ok(DriverRequest::_UnknownMethod {
932 ordinal: header.ordinal,
933 method_type: fidl::MethodType::TwoWay,
934 })
935 }
936 _ => Err(fidl::Error::UnknownOrdinal {
937 ordinal: header.ordinal,
938 protocol_name:
939 <DriverMarker as fidl_driver::endpoints::DriverProtocolMarker>::DEBUG_NAME,
940 }),
941 }
942 }
943
944 pub fn read_from_message(
945 mut message: fdf::Message<[u8]>,
946 ) -> Result<(fdf::Arena, Self), fidl::Error> {
947 let (arena, Some(body), handles) = message.take_arena_boxes() else {
948 return Err(fidl::Error::Invalid);
949 };
950 let mut handles =
951 handles
952 .map(|handles| {
953 arena.try_insert_from_iter(handles.into_iter().map(|handle| unsafe {
954 fidl_driver::encoding::mixed_into_handle_info(handle)
955 }))
956 })
957 .transpose();
958 let res = match handles {
959 Ok(ref mut handles) => {
960 Self::read_from(&*body, handles.as_deref_mut().unwrap_or(&mut []))?
961 }
962 Err(_) => return Err(fidl::Error::Invalid),
963 };
964 std::mem::drop((body, handles));
965 Ok((message.take_arena(), res))
966 }
967
968 pub fn method_name(&self) -> &'static str {
970 match *self {
971 DriverRequest::Start { .. } => "start",
972 DriverRequest::Stop { .. } => "stop",
973 DriverRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
974 "unknown one-way method"
975 }
976 DriverRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
977 "unknown two-way method"
978 }
979 }
980 }
981}
982
983#[cfg(feature = "driver")]
985impl std::convert::TryFrom<fdf::Message<[u8]>> for DriverRequest {
986 type Error = fidl::Error;
987 fn try_from(msg: fdf::Message<[u8]>) -> Result<DriverRequest, fidl::Error> {
988 Ok(DriverRequest::read_from_message(msg)?.1)
989 }
990}
991
992#[must_use = "FIDL methods require a response to be sent"]
993#[cfg(feature = "driver")]
994#[derive(Debug)]
995pub struct DriverStartResponder {
996 tx_id: u32,
997}
998
999#[cfg(feature = "driver")]
1000impl DriverStartResponder {
1001 pub fn send_response(
1002 &self,
1003 server_handle: &fdf::Channel<[u8]>,
1004 mut result: Result<(), i32>,
1005 ) -> Result<(), fidl::Error> {
1006 let msg = fidl::encoding::TransactionMessage {
1007 header: fidl::encoding::TransactionHeader::new(
1008 self.tx_id,
1009 0x27be00ae42aa60c2,
1010 fidl::encoding::DynamicFlags::FLEXIBLE,
1011 ),
1012 body: fidl::encoding::FlexibleResult::new(result),
1013 };
1014 fidl::encoding::with_tls_encoded::<
1015 fidl::encoding::TransactionMessageType<
1016 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1017 >,
1018 fidl::encoding::DefaultFuchsiaResourceDialect,
1019 (),
1020 >(msg, |body, _handles| {
1021 server_handle
1022 .write_with_data(fdf::Arena::new(), |arena| arena.insert_slice(&body))
1023 .unwrap();
1024 Ok(())
1025 })
1026 }
1027}
1028
1029#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1030pub struct NodeMarker;
1031
1032impl fidl::endpoints::ProtocolMarker for NodeMarker {
1033 type Proxy = NodeProxy;
1034 type RequestStream = NodeRequestStream;
1035 #[cfg(target_os = "fuchsia")]
1036 type SynchronousProxy = NodeSynchronousProxy;
1037
1038 const DEBUG_NAME: &'static str = "(anonymous) Node";
1039}
1040pub type NodeAddChildResult = Result<(), NodeError>;
1041
1042pub trait NodeProxyInterface: Send + Sync {
1043 type AddChildResponseFut: std::future::Future<Output = Result<NodeAddChildResult, fidl::Error>>
1044 + Send;
1045 fn r#add_child(
1046 &self,
1047 args: NodeAddArgs,
1048 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1049 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1050 ) -> Self::AddChildResponseFut;
1051}
1052#[derive(Debug)]
1053#[cfg(target_os = "fuchsia")]
1054pub struct NodeSynchronousProxy {
1055 client: fidl::client::sync::Client,
1056}
1057
1058#[cfg(target_os = "fuchsia")]
1059impl fidl::endpoints::SynchronousProxy for NodeSynchronousProxy {
1060 type Proxy = NodeProxy;
1061 type Protocol = NodeMarker;
1062
1063 fn from_channel(inner: fidl::Channel) -> Self {
1064 Self::new(inner)
1065 }
1066
1067 fn into_channel(self) -> fidl::Channel {
1068 self.client.into_channel()
1069 }
1070
1071 fn as_channel(&self) -> &fidl::Channel {
1072 self.client.as_channel()
1073 }
1074}
1075
1076#[cfg(target_os = "fuchsia")]
1077impl NodeSynchronousProxy {
1078 pub fn new(channel: fidl::Channel) -> Self {
1079 let protocol_name = <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1080 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1081 }
1082
1083 pub fn into_channel(self) -> fidl::Channel {
1084 self.client.into_channel()
1085 }
1086
1087 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<NodeEvent, fidl::Error> {
1090 NodeEvent::decode(self.client.wait_for_event(deadline)?)
1091 }
1092
1093 pub fn r#add_child(
1099 &self,
1100 mut args: NodeAddArgs,
1101 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1102 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1103 ___deadline: zx::MonotonicInstant,
1104 ) -> Result<NodeAddChildResult, fidl::Error> {
1105 let _response = self.client.send_query::<
1106 NodeAddChildRequest,
1107 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1108 >(
1109 (&mut args, controller, node,),
1110 0x77d10dff3c1ea129,
1111 fidl::encoding::DynamicFlags::FLEXIBLE,
1112 ___deadline,
1113 )?
1114 .into_result::<NodeMarker>("add_child")?;
1115 Ok(_response.map(|x| x))
1116 }
1117}
1118
1119#[cfg(target_os = "fuchsia")]
1120impl From<NodeSynchronousProxy> for zx::NullableHandle {
1121 fn from(value: NodeSynchronousProxy) -> Self {
1122 value.into_channel().into()
1123 }
1124}
1125
1126#[cfg(target_os = "fuchsia")]
1127impl From<fidl::Channel> for NodeSynchronousProxy {
1128 fn from(value: fidl::Channel) -> Self {
1129 Self::new(value)
1130 }
1131}
1132
1133#[cfg(target_os = "fuchsia")]
1134impl fidl::endpoints::FromClient for NodeSynchronousProxy {
1135 type Protocol = NodeMarker;
1136
1137 fn from_client(value: fidl::endpoints::ClientEnd<NodeMarker>) -> Self {
1138 Self::new(value.into_channel())
1139 }
1140}
1141
1142#[derive(Debug, Clone)]
1143pub struct NodeProxy {
1144 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1145}
1146
1147impl fidl::endpoints::Proxy for NodeProxy {
1148 type Protocol = NodeMarker;
1149
1150 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1151 Self::new(inner)
1152 }
1153
1154 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1155 self.client.into_channel().map_err(|client| Self { client })
1156 }
1157
1158 fn as_channel(&self) -> &::fidl::AsyncChannel {
1159 self.client.as_channel()
1160 }
1161}
1162
1163impl NodeProxy {
1164 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1166 let protocol_name = <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1167 Self { client: fidl::client::Client::new(channel, protocol_name) }
1168 }
1169
1170 pub fn take_event_stream(&self) -> NodeEventStream {
1176 NodeEventStream { event_receiver: self.client.take_event_receiver() }
1177 }
1178
1179 pub fn r#add_child(
1185 &self,
1186 mut args: NodeAddArgs,
1187 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1188 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1189 ) -> fidl::client::QueryResponseFut<
1190 NodeAddChildResult,
1191 fidl::encoding::DefaultFuchsiaResourceDialect,
1192 > {
1193 NodeProxyInterface::r#add_child(self, args, controller, node)
1194 }
1195}
1196
1197impl NodeProxyInterface for NodeProxy {
1198 type AddChildResponseFut = fidl::client::QueryResponseFut<
1199 NodeAddChildResult,
1200 fidl::encoding::DefaultFuchsiaResourceDialect,
1201 >;
1202 fn r#add_child(
1203 &self,
1204 mut args: NodeAddArgs,
1205 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1206 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1207 ) -> Self::AddChildResponseFut {
1208 fn _decode(
1209 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1210 ) -> Result<NodeAddChildResult, fidl::Error> {
1211 let _response = fidl::client::decode_transaction_body::<
1212 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1213 fidl::encoding::DefaultFuchsiaResourceDialect,
1214 0x77d10dff3c1ea129,
1215 >(_buf?)?
1216 .into_result::<NodeMarker>("add_child")?;
1217 Ok(_response.map(|x| x))
1218 }
1219 self.client.send_query_and_decode::<NodeAddChildRequest, NodeAddChildResult>(
1220 (&mut args, controller, node),
1221 0x77d10dff3c1ea129,
1222 fidl::encoding::DynamicFlags::FLEXIBLE,
1223 _decode,
1224 )
1225 }
1226}
1227
1228pub struct NodeEventStream {
1229 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1230}
1231
1232impl std::marker::Unpin for NodeEventStream {}
1233
1234impl futures::stream::FusedStream for NodeEventStream {
1235 fn is_terminated(&self) -> bool {
1236 self.event_receiver.is_terminated()
1237 }
1238}
1239
1240impl futures::Stream for NodeEventStream {
1241 type Item = Result<NodeEvent, fidl::Error>;
1242
1243 fn poll_next(
1244 mut self: std::pin::Pin<&mut Self>,
1245 cx: &mut std::task::Context<'_>,
1246 ) -> std::task::Poll<Option<Self::Item>> {
1247 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1248 &mut self.event_receiver,
1249 cx
1250 )?) {
1251 Some(buf) => std::task::Poll::Ready(Some(NodeEvent::decode(buf))),
1252 None => std::task::Poll::Ready(None),
1253 }
1254 }
1255}
1256
1257#[derive(Debug)]
1258pub enum NodeEvent {
1259 #[non_exhaustive]
1260 _UnknownEvent {
1261 ordinal: u64,
1263 },
1264}
1265
1266impl NodeEvent {
1267 fn decode(
1269 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1270 ) -> Result<NodeEvent, fidl::Error> {
1271 let (bytes, _handles) = buf.split_mut();
1272 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1273 debug_assert_eq!(tx_header.tx_id, 0);
1274 match tx_header.ordinal {
1275 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1276 Ok(NodeEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1277 }
1278 _ => Err(fidl::Error::UnknownOrdinal {
1279 ordinal: tx_header.ordinal,
1280 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1281 }),
1282 }
1283 }
1284}
1285
1286pub struct NodeRequestStream {
1288 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1289 is_terminated: bool,
1290}
1291
1292impl std::marker::Unpin for NodeRequestStream {}
1293
1294impl futures::stream::FusedStream for NodeRequestStream {
1295 fn is_terminated(&self) -> bool {
1296 self.is_terminated
1297 }
1298}
1299
1300impl fidl::endpoints::RequestStream for NodeRequestStream {
1301 type Protocol = NodeMarker;
1302 type ControlHandle = NodeControlHandle;
1303
1304 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1305 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1306 }
1307
1308 fn control_handle(&self) -> Self::ControlHandle {
1309 NodeControlHandle { inner: self.inner.clone() }
1310 }
1311
1312 fn into_inner(
1313 self,
1314 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1315 {
1316 (self.inner, self.is_terminated)
1317 }
1318
1319 fn from_inner(
1320 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1321 is_terminated: bool,
1322 ) -> Self {
1323 Self { inner, is_terminated }
1324 }
1325}
1326
1327impl futures::Stream for NodeRequestStream {
1328 type Item = Result<NodeRequest, fidl::Error>;
1329
1330 fn poll_next(
1331 mut self: std::pin::Pin<&mut Self>,
1332 cx: &mut std::task::Context<'_>,
1333 ) -> std::task::Poll<Option<Self::Item>> {
1334 let this = &mut *self;
1335 if this.inner.check_shutdown(cx) {
1336 this.is_terminated = true;
1337 return std::task::Poll::Ready(None);
1338 }
1339 if this.is_terminated {
1340 panic!("polled NodeRequestStream after completion");
1341 }
1342 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1343 |bytes, handles| {
1344 match this.inner.channel().read_etc(cx, bytes, handles) {
1345 std::task::Poll::Ready(Ok(())) => {}
1346 std::task::Poll::Pending => return std::task::Poll::Pending,
1347 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1348 this.is_terminated = true;
1349 return std::task::Poll::Ready(None);
1350 }
1351 std::task::Poll::Ready(Err(e)) => {
1352 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1353 e.into(),
1354 ))));
1355 }
1356 }
1357
1358 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1360
1361 std::task::Poll::Ready(Some(match header.ordinal {
1362 0x77d10dff3c1ea129 => {
1363 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1364 let mut req = fidl::new_empty!(
1365 NodeAddChildRequest,
1366 fidl::encoding::DefaultFuchsiaResourceDialect
1367 );
1368 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeAddChildRequest>(&header, _body_bytes, handles, &mut req)?;
1369 let control_handle = NodeControlHandle { inner: this.inner.clone() };
1370 Ok(NodeRequest::AddChild {
1371 args: req.args,
1372 controller: req.controller,
1373 node: req.node,
1374
1375 responder: NodeAddChildResponder {
1376 control_handle: std::mem::ManuallyDrop::new(control_handle),
1377 tx_id: header.tx_id,
1378 },
1379 })
1380 }
1381 _ if header.tx_id == 0
1382 && header
1383 .dynamic_flags()
1384 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1385 {
1386 Ok(NodeRequest::_UnknownMethod {
1387 ordinal: header.ordinal,
1388 control_handle: NodeControlHandle { inner: this.inner.clone() },
1389 method_type: fidl::MethodType::OneWay,
1390 })
1391 }
1392 _ if header
1393 .dynamic_flags()
1394 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1395 {
1396 this.inner.send_framework_err(
1397 fidl::encoding::FrameworkErr::UnknownMethod,
1398 header.tx_id,
1399 header.ordinal,
1400 header.dynamic_flags(),
1401 (bytes, handles),
1402 )?;
1403 Ok(NodeRequest::_UnknownMethod {
1404 ordinal: header.ordinal,
1405 control_handle: NodeControlHandle { inner: this.inner.clone() },
1406 method_type: fidl::MethodType::TwoWay,
1407 })
1408 }
1409 _ => Err(fidl::Error::UnknownOrdinal {
1410 ordinal: header.ordinal,
1411 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1412 }),
1413 }))
1414 },
1415 )
1416 }
1417}
1418
1419#[derive(Debug)]
1427pub enum NodeRequest {
1428 AddChild {
1434 args: NodeAddArgs,
1435 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1436 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1437 responder: NodeAddChildResponder,
1438 },
1439 #[non_exhaustive]
1441 _UnknownMethod {
1442 ordinal: u64,
1444 control_handle: NodeControlHandle,
1445 method_type: fidl::MethodType,
1446 },
1447}
1448
1449impl NodeRequest {
1450 #[allow(irrefutable_let_patterns)]
1451 pub fn into_add_child(
1452 self,
1453 ) -> Option<(
1454 NodeAddArgs,
1455 fidl::endpoints::ServerEnd<NodeControllerMarker>,
1456 Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1457 NodeAddChildResponder,
1458 )> {
1459 if let NodeRequest::AddChild { args, controller, node, responder } = self {
1460 Some((args, controller, node, responder))
1461 } else {
1462 None
1463 }
1464 }
1465
1466 pub fn method_name(&self) -> &'static str {
1468 match *self {
1469 NodeRequest::AddChild { .. } => "add_child",
1470 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1471 "unknown one-way method"
1472 }
1473 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1474 "unknown two-way method"
1475 }
1476 }
1477 }
1478}
1479
1480#[derive(Debug, Clone)]
1481pub struct NodeControlHandle {
1482 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1483}
1484
1485impl fidl::endpoints::ControlHandle for NodeControlHandle {
1486 fn shutdown(&self) {
1487 self.inner.shutdown()
1488 }
1489
1490 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1491 self.inner.shutdown_with_epitaph(status)
1492 }
1493
1494 fn is_closed(&self) -> bool {
1495 self.inner.channel().is_closed()
1496 }
1497 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1498 self.inner.channel().on_closed()
1499 }
1500
1501 #[cfg(target_os = "fuchsia")]
1502 fn signal_peer(
1503 &self,
1504 clear_mask: zx::Signals,
1505 set_mask: zx::Signals,
1506 ) -> Result<(), zx_status::Status> {
1507 use fidl::Peered;
1508 self.inner.channel().signal_peer(clear_mask, set_mask)
1509 }
1510}
1511
1512impl NodeControlHandle {}
1513
1514#[must_use = "FIDL methods require a response to be sent"]
1515#[derive(Debug)]
1516pub struct NodeAddChildResponder {
1517 control_handle: std::mem::ManuallyDrop<NodeControlHandle>,
1518 tx_id: u32,
1519}
1520
1521impl std::ops::Drop for NodeAddChildResponder {
1525 fn drop(&mut self) {
1526 self.control_handle.shutdown();
1527 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1529 }
1530}
1531
1532impl fidl::endpoints::Responder for NodeAddChildResponder {
1533 type ControlHandle = NodeControlHandle;
1534
1535 fn control_handle(&self) -> &NodeControlHandle {
1536 &self.control_handle
1537 }
1538
1539 fn drop_without_shutdown(mut self) {
1540 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1542 std::mem::forget(self);
1544 }
1545}
1546
1547impl NodeAddChildResponder {
1548 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1552 let _result = self.send_raw(result);
1553 if _result.is_err() {
1554 self.control_handle.shutdown();
1555 }
1556 self.drop_without_shutdown();
1557 _result
1558 }
1559
1560 pub fn send_no_shutdown_on_err(
1562 self,
1563 mut result: Result<(), NodeError>,
1564 ) -> Result<(), fidl::Error> {
1565 let _result = self.send_raw(result);
1566 self.drop_without_shutdown();
1567 _result
1568 }
1569
1570 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1571 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1572 fidl::encoding::EmptyStruct,
1573 NodeError,
1574 >>(
1575 fidl::encoding::FlexibleResult::new(result),
1576 self.tx_id,
1577 0x77d10dff3c1ea129,
1578 fidl::encoding::DynamicFlags::FLEXIBLE,
1579 )
1580 }
1581}
1582
1583#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1584pub struct NodeControllerMarker;
1585
1586impl fidl::endpoints::ProtocolMarker for NodeControllerMarker {
1587 type Proxy = NodeControllerProxy;
1588 type RequestStream = NodeControllerRequestStream;
1589 #[cfg(target_os = "fuchsia")]
1590 type SynchronousProxy = NodeControllerSynchronousProxy;
1591
1592 const DEBUG_NAME: &'static str = "(anonymous) NodeController";
1593}
1594pub type NodeControllerRequestBindResult = Result<(), i32>;
1595pub type NodeControllerWaitForDriverResult = Result<DriverResult, i32>;
1596
1597pub trait NodeControllerProxyInterface: Send + Sync {
1598 fn r#remove(&self) -> Result<(), fidl::Error>;
1599 type RequestBindResponseFut: std::future::Future<Output = Result<NodeControllerRequestBindResult, fidl::Error>>
1600 + Send;
1601 fn r#request_bind(
1602 &self,
1603 payload: &NodeControllerRequestBindRequest,
1604 ) -> Self::RequestBindResponseFut;
1605 type WaitForDriverResponseFut: std::future::Future<Output = Result<NodeControllerWaitForDriverResult, fidl::Error>>
1606 + Send;
1607 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut;
1608}
1609#[derive(Debug)]
1610#[cfg(target_os = "fuchsia")]
1611pub struct NodeControllerSynchronousProxy {
1612 client: fidl::client::sync::Client,
1613}
1614
1615#[cfg(target_os = "fuchsia")]
1616impl fidl::endpoints::SynchronousProxy for NodeControllerSynchronousProxy {
1617 type Proxy = NodeControllerProxy;
1618 type Protocol = NodeControllerMarker;
1619
1620 fn from_channel(inner: fidl::Channel) -> Self {
1621 Self::new(inner)
1622 }
1623
1624 fn into_channel(self) -> fidl::Channel {
1625 self.client.into_channel()
1626 }
1627
1628 fn as_channel(&self) -> &fidl::Channel {
1629 self.client.as_channel()
1630 }
1631}
1632
1633#[cfg(target_os = "fuchsia")]
1634impl NodeControllerSynchronousProxy {
1635 pub fn new(channel: fidl::Channel) -> Self {
1636 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1637 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1638 }
1639
1640 pub fn into_channel(self) -> fidl::Channel {
1641 self.client.into_channel()
1642 }
1643
1644 pub fn wait_for_event(
1647 &self,
1648 deadline: zx::MonotonicInstant,
1649 ) -> Result<NodeControllerEvent, fidl::Error> {
1650 NodeControllerEvent::decode(self.client.wait_for_event(deadline)?)
1651 }
1652
1653 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1655 self.client.send::<fidl::encoding::EmptyPayload>(
1656 (),
1657 0x54fa8b3dfe7bb341,
1658 fidl::encoding::DynamicFlags::FLEXIBLE,
1659 )
1660 }
1661
1662 pub fn r#request_bind(
1669 &self,
1670 mut payload: &NodeControllerRequestBindRequest,
1671 ___deadline: zx::MonotonicInstant,
1672 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1673 let _response = self.client.send_query::<
1674 NodeControllerRequestBindRequest,
1675 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1676 >(
1677 payload,
1678 0x41b954726b13508f,
1679 fidl::encoding::DynamicFlags::FLEXIBLE,
1680 ___deadline,
1681 )?
1682 .into_result::<NodeControllerMarker>("request_bind")?;
1683 Ok(_response.map(|x| x))
1684 }
1685
1686 pub fn r#wait_for_driver(
1693 &self,
1694 ___deadline: zx::MonotonicInstant,
1695 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1696 let _response = self.client.send_query::<
1697 fidl::encoding::EmptyPayload,
1698 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1699 >(
1700 (),
1701 0x69f7106e47d81387,
1702 fidl::encoding::DynamicFlags::FLEXIBLE,
1703 ___deadline,
1704 )?
1705 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1706 Ok(_response.map(|x| x))
1707 }
1708}
1709
1710#[cfg(target_os = "fuchsia")]
1711impl From<NodeControllerSynchronousProxy> for zx::NullableHandle {
1712 fn from(value: NodeControllerSynchronousProxy) -> Self {
1713 value.into_channel().into()
1714 }
1715}
1716
1717#[cfg(target_os = "fuchsia")]
1718impl From<fidl::Channel> for NodeControllerSynchronousProxy {
1719 fn from(value: fidl::Channel) -> Self {
1720 Self::new(value)
1721 }
1722}
1723
1724#[cfg(target_os = "fuchsia")]
1725impl fidl::endpoints::FromClient for NodeControllerSynchronousProxy {
1726 type Protocol = NodeControllerMarker;
1727
1728 fn from_client(value: fidl::endpoints::ClientEnd<NodeControllerMarker>) -> Self {
1729 Self::new(value.into_channel())
1730 }
1731}
1732
1733#[derive(Debug, Clone)]
1734pub struct NodeControllerProxy {
1735 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1736}
1737
1738impl fidl::endpoints::Proxy for NodeControllerProxy {
1739 type Protocol = NodeControllerMarker;
1740
1741 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1742 Self::new(inner)
1743 }
1744
1745 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1746 self.client.into_channel().map_err(|client| Self { client })
1747 }
1748
1749 fn as_channel(&self) -> &::fidl::AsyncChannel {
1750 self.client.as_channel()
1751 }
1752}
1753
1754impl NodeControllerProxy {
1755 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1757 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1758 Self { client: fidl::client::Client::new(channel, protocol_name) }
1759 }
1760
1761 pub fn take_event_stream(&self) -> NodeControllerEventStream {
1767 NodeControllerEventStream { event_receiver: self.client.take_event_receiver() }
1768 }
1769
1770 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1772 NodeControllerProxyInterface::r#remove(self)
1773 }
1774
1775 pub fn r#request_bind(
1782 &self,
1783 mut payload: &NodeControllerRequestBindRequest,
1784 ) -> fidl::client::QueryResponseFut<
1785 NodeControllerRequestBindResult,
1786 fidl::encoding::DefaultFuchsiaResourceDialect,
1787 > {
1788 NodeControllerProxyInterface::r#request_bind(self, payload)
1789 }
1790
1791 pub fn r#wait_for_driver(
1798 &self,
1799 ) -> fidl::client::QueryResponseFut<
1800 NodeControllerWaitForDriverResult,
1801 fidl::encoding::DefaultFuchsiaResourceDialect,
1802 > {
1803 NodeControllerProxyInterface::r#wait_for_driver(self)
1804 }
1805}
1806
1807impl NodeControllerProxyInterface for NodeControllerProxy {
1808 fn r#remove(&self) -> Result<(), fidl::Error> {
1809 self.client.send::<fidl::encoding::EmptyPayload>(
1810 (),
1811 0x54fa8b3dfe7bb341,
1812 fidl::encoding::DynamicFlags::FLEXIBLE,
1813 )
1814 }
1815
1816 type RequestBindResponseFut = fidl::client::QueryResponseFut<
1817 NodeControllerRequestBindResult,
1818 fidl::encoding::DefaultFuchsiaResourceDialect,
1819 >;
1820 fn r#request_bind(
1821 &self,
1822 mut payload: &NodeControllerRequestBindRequest,
1823 ) -> Self::RequestBindResponseFut {
1824 fn _decode(
1825 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1826 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1827 let _response = fidl::client::decode_transaction_body::<
1828 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1829 fidl::encoding::DefaultFuchsiaResourceDialect,
1830 0x41b954726b13508f,
1831 >(_buf?)?
1832 .into_result::<NodeControllerMarker>("request_bind")?;
1833 Ok(_response.map(|x| x))
1834 }
1835 self.client.send_query_and_decode::<
1836 NodeControllerRequestBindRequest,
1837 NodeControllerRequestBindResult,
1838 >(
1839 payload,
1840 0x41b954726b13508f,
1841 fidl::encoding::DynamicFlags::FLEXIBLE,
1842 _decode,
1843 )
1844 }
1845
1846 type WaitForDriverResponseFut = fidl::client::QueryResponseFut<
1847 NodeControllerWaitForDriverResult,
1848 fidl::encoding::DefaultFuchsiaResourceDialect,
1849 >;
1850 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut {
1851 fn _decode(
1852 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1853 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1854 let _response = fidl::client::decode_transaction_body::<
1855 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1856 fidl::encoding::DefaultFuchsiaResourceDialect,
1857 0x69f7106e47d81387,
1858 >(_buf?)?
1859 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1860 Ok(_response.map(|x| x))
1861 }
1862 self.client.send_query_and_decode::<
1863 fidl::encoding::EmptyPayload,
1864 NodeControllerWaitForDriverResult,
1865 >(
1866 (),
1867 0x69f7106e47d81387,
1868 fidl::encoding::DynamicFlags::FLEXIBLE,
1869 _decode,
1870 )
1871 }
1872}
1873
1874pub struct NodeControllerEventStream {
1875 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1876}
1877
1878impl std::marker::Unpin for NodeControllerEventStream {}
1879
1880impl futures::stream::FusedStream for NodeControllerEventStream {
1881 fn is_terminated(&self) -> bool {
1882 self.event_receiver.is_terminated()
1883 }
1884}
1885
1886impl futures::Stream for NodeControllerEventStream {
1887 type Item = Result<NodeControllerEvent, fidl::Error>;
1888
1889 fn poll_next(
1890 mut self: std::pin::Pin<&mut Self>,
1891 cx: &mut std::task::Context<'_>,
1892 ) -> std::task::Poll<Option<Self::Item>> {
1893 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1894 &mut self.event_receiver,
1895 cx
1896 )?) {
1897 Some(buf) => std::task::Poll::Ready(Some(NodeControllerEvent::decode(buf))),
1898 None => std::task::Poll::Ready(None),
1899 }
1900 }
1901}
1902
1903#[derive(Debug)]
1904pub enum NodeControllerEvent {
1905 OnBind {
1906 payload: NodeControllerOnBindRequest,
1907 },
1908 #[non_exhaustive]
1909 _UnknownEvent {
1910 ordinal: u64,
1912 },
1913}
1914
1915impl NodeControllerEvent {
1916 #[allow(irrefutable_let_patterns)]
1917 pub fn into_on_bind(self) -> Option<NodeControllerOnBindRequest> {
1918 if let NodeControllerEvent::OnBind { payload } = self { Some((payload)) } else { None }
1919 }
1920
1921 fn decode(
1923 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1924 ) -> Result<NodeControllerEvent, fidl::Error> {
1925 let (bytes, _handles) = buf.split_mut();
1926 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1927 debug_assert_eq!(tx_header.tx_id, 0);
1928 match tx_header.ordinal {
1929 0x51f4165bc5ea202a => {
1930 let mut out = fidl::new_empty!(
1931 NodeControllerOnBindRequest,
1932 fidl::encoding::DefaultFuchsiaResourceDialect
1933 );
1934 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerOnBindRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
1935 Ok((NodeControllerEvent::OnBind { payload: out }))
1936 }
1937 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1938 Ok(NodeControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1939 }
1940 _ => Err(fidl::Error::UnknownOrdinal {
1941 ordinal: tx_header.ordinal,
1942 protocol_name:
1943 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1944 }),
1945 }
1946 }
1947}
1948
1949pub struct NodeControllerRequestStream {
1951 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1952 is_terminated: bool,
1953}
1954
1955impl std::marker::Unpin for NodeControllerRequestStream {}
1956
1957impl futures::stream::FusedStream for NodeControllerRequestStream {
1958 fn is_terminated(&self) -> bool {
1959 self.is_terminated
1960 }
1961}
1962
1963impl fidl::endpoints::RequestStream for NodeControllerRequestStream {
1964 type Protocol = NodeControllerMarker;
1965 type ControlHandle = NodeControllerControlHandle;
1966
1967 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1968 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1969 }
1970
1971 fn control_handle(&self) -> Self::ControlHandle {
1972 NodeControllerControlHandle { inner: self.inner.clone() }
1973 }
1974
1975 fn into_inner(
1976 self,
1977 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1978 {
1979 (self.inner, self.is_terminated)
1980 }
1981
1982 fn from_inner(
1983 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1984 is_terminated: bool,
1985 ) -> Self {
1986 Self { inner, is_terminated }
1987 }
1988}
1989
1990impl futures::Stream for NodeControllerRequestStream {
1991 type Item = Result<NodeControllerRequest, fidl::Error>;
1992
1993 fn poll_next(
1994 mut self: std::pin::Pin<&mut Self>,
1995 cx: &mut std::task::Context<'_>,
1996 ) -> std::task::Poll<Option<Self::Item>> {
1997 let this = &mut *self;
1998 if this.inner.check_shutdown(cx) {
1999 this.is_terminated = true;
2000 return std::task::Poll::Ready(None);
2001 }
2002 if this.is_terminated {
2003 panic!("polled NodeControllerRequestStream after completion");
2004 }
2005 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2006 |bytes, handles| {
2007 match this.inner.channel().read_etc(cx, bytes, handles) {
2008 std::task::Poll::Ready(Ok(())) => {}
2009 std::task::Poll::Pending => return std::task::Poll::Pending,
2010 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2011 this.is_terminated = true;
2012 return std::task::Poll::Ready(None);
2013 }
2014 std::task::Poll::Ready(Err(e)) => {
2015 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2016 e.into(),
2017 ))));
2018 }
2019 }
2020
2021 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2023
2024 std::task::Poll::Ready(Some(match header.ordinal {
2025 0x54fa8b3dfe7bb341 => {
2026 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2027 let mut req = fidl::new_empty!(
2028 fidl::encoding::EmptyPayload,
2029 fidl::encoding::DefaultFuchsiaResourceDialect
2030 );
2031 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2032 let control_handle =
2033 NodeControllerControlHandle { inner: this.inner.clone() };
2034 Ok(NodeControllerRequest::Remove { control_handle })
2035 }
2036 0x41b954726b13508f => {
2037 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2038 let mut req = fidl::new_empty!(
2039 NodeControllerRequestBindRequest,
2040 fidl::encoding::DefaultFuchsiaResourceDialect
2041 );
2042 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerRequestBindRequest>(&header, _body_bytes, handles, &mut req)?;
2043 let control_handle =
2044 NodeControllerControlHandle { inner: this.inner.clone() };
2045 Ok(NodeControllerRequest::RequestBind {
2046 payload: req,
2047 responder: NodeControllerRequestBindResponder {
2048 control_handle: std::mem::ManuallyDrop::new(control_handle),
2049 tx_id: header.tx_id,
2050 },
2051 })
2052 }
2053 0x69f7106e47d81387 => {
2054 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2055 let mut req = fidl::new_empty!(
2056 fidl::encoding::EmptyPayload,
2057 fidl::encoding::DefaultFuchsiaResourceDialect
2058 );
2059 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2060 let control_handle =
2061 NodeControllerControlHandle { inner: this.inner.clone() };
2062 Ok(NodeControllerRequest::WaitForDriver {
2063 responder: NodeControllerWaitForDriverResponder {
2064 control_handle: std::mem::ManuallyDrop::new(control_handle),
2065 tx_id: header.tx_id,
2066 },
2067 })
2068 }
2069 _ if header.tx_id == 0
2070 && header
2071 .dynamic_flags()
2072 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2073 {
2074 Ok(NodeControllerRequest::_UnknownMethod {
2075 ordinal: header.ordinal,
2076 control_handle: NodeControllerControlHandle {
2077 inner: this.inner.clone(),
2078 },
2079 method_type: fidl::MethodType::OneWay,
2080 })
2081 }
2082 _ if header
2083 .dynamic_flags()
2084 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2085 {
2086 this.inner.send_framework_err(
2087 fidl::encoding::FrameworkErr::UnknownMethod,
2088 header.tx_id,
2089 header.ordinal,
2090 header.dynamic_flags(),
2091 (bytes, handles),
2092 )?;
2093 Ok(NodeControllerRequest::_UnknownMethod {
2094 ordinal: header.ordinal,
2095 control_handle: NodeControllerControlHandle {
2096 inner: this.inner.clone(),
2097 },
2098 method_type: fidl::MethodType::TwoWay,
2099 })
2100 }
2101 _ => Err(fidl::Error::UnknownOrdinal {
2102 ordinal: header.ordinal,
2103 protocol_name:
2104 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2105 }),
2106 }))
2107 },
2108 )
2109 }
2110}
2111
2112#[derive(Debug)]
2114pub enum NodeControllerRequest {
2115 Remove { control_handle: NodeControllerControlHandle },
2117 RequestBind {
2124 payload: NodeControllerRequestBindRequest,
2125 responder: NodeControllerRequestBindResponder,
2126 },
2127 WaitForDriver { responder: NodeControllerWaitForDriverResponder },
2134 #[non_exhaustive]
2136 _UnknownMethod {
2137 ordinal: u64,
2139 control_handle: NodeControllerControlHandle,
2140 method_type: fidl::MethodType,
2141 },
2142}
2143
2144impl NodeControllerRequest {
2145 #[allow(irrefutable_let_patterns)]
2146 pub fn into_remove(self) -> Option<(NodeControllerControlHandle)> {
2147 if let NodeControllerRequest::Remove { control_handle } = self {
2148 Some((control_handle))
2149 } else {
2150 None
2151 }
2152 }
2153
2154 #[allow(irrefutable_let_patterns)]
2155 pub fn into_request_bind(
2156 self,
2157 ) -> Option<(NodeControllerRequestBindRequest, NodeControllerRequestBindResponder)> {
2158 if let NodeControllerRequest::RequestBind { payload, responder } = self {
2159 Some((payload, responder))
2160 } else {
2161 None
2162 }
2163 }
2164
2165 #[allow(irrefutable_let_patterns)]
2166 pub fn into_wait_for_driver(self) -> Option<(NodeControllerWaitForDriverResponder)> {
2167 if let NodeControllerRequest::WaitForDriver { responder } = self {
2168 Some((responder))
2169 } else {
2170 None
2171 }
2172 }
2173
2174 pub fn method_name(&self) -> &'static str {
2176 match *self {
2177 NodeControllerRequest::Remove { .. } => "remove",
2178 NodeControllerRequest::RequestBind { .. } => "request_bind",
2179 NodeControllerRequest::WaitForDriver { .. } => "wait_for_driver",
2180 NodeControllerRequest::_UnknownMethod {
2181 method_type: fidl::MethodType::OneWay, ..
2182 } => "unknown one-way method",
2183 NodeControllerRequest::_UnknownMethod {
2184 method_type: fidl::MethodType::TwoWay, ..
2185 } => "unknown two-way method",
2186 }
2187 }
2188}
2189
2190#[derive(Debug, Clone)]
2191pub struct NodeControllerControlHandle {
2192 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2193}
2194
2195impl fidl::endpoints::ControlHandle for NodeControllerControlHandle {
2196 fn shutdown(&self) {
2197 self.inner.shutdown()
2198 }
2199
2200 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2201 self.inner.shutdown_with_epitaph(status)
2202 }
2203
2204 fn is_closed(&self) -> bool {
2205 self.inner.channel().is_closed()
2206 }
2207 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2208 self.inner.channel().on_closed()
2209 }
2210
2211 #[cfg(target_os = "fuchsia")]
2212 fn signal_peer(
2213 &self,
2214 clear_mask: zx::Signals,
2215 set_mask: zx::Signals,
2216 ) -> Result<(), zx_status::Status> {
2217 use fidl::Peered;
2218 self.inner.channel().signal_peer(clear_mask, set_mask)
2219 }
2220}
2221
2222impl NodeControllerControlHandle {
2223 pub fn send_on_bind(
2224 &self,
2225 mut payload: NodeControllerOnBindRequest,
2226 ) -> Result<(), fidl::Error> {
2227 self.inner.send::<NodeControllerOnBindRequest>(
2228 &mut payload,
2229 0,
2230 0x51f4165bc5ea202a,
2231 fidl::encoding::DynamicFlags::FLEXIBLE,
2232 )
2233 }
2234}
2235
2236#[must_use = "FIDL methods require a response to be sent"]
2237#[derive(Debug)]
2238pub struct NodeControllerRequestBindResponder {
2239 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2240 tx_id: u32,
2241}
2242
2243impl std::ops::Drop for NodeControllerRequestBindResponder {
2247 fn drop(&mut self) {
2248 self.control_handle.shutdown();
2249 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2251 }
2252}
2253
2254impl fidl::endpoints::Responder for NodeControllerRequestBindResponder {
2255 type ControlHandle = NodeControllerControlHandle;
2256
2257 fn control_handle(&self) -> &NodeControllerControlHandle {
2258 &self.control_handle
2259 }
2260
2261 fn drop_without_shutdown(mut self) {
2262 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2264 std::mem::forget(self);
2266 }
2267}
2268
2269impl NodeControllerRequestBindResponder {
2270 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2274 let _result = self.send_raw(result);
2275 if _result.is_err() {
2276 self.control_handle.shutdown();
2277 }
2278 self.drop_without_shutdown();
2279 _result
2280 }
2281
2282 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2284 let _result = self.send_raw(result);
2285 self.drop_without_shutdown();
2286 _result
2287 }
2288
2289 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2290 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2291 fidl::encoding::EmptyStruct,
2292 i32,
2293 >>(
2294 fidl::encoding::FlexibleResult::new(result),
2295 self.tx_id,
2296 0x41b954726b13508f,
2297 fidl::encoding::DynamicFlags::FLEXIBLE,
2298 )
2299 }
2300}
2301
2302#[must_use = "FIDL methods require a response to be sent"]
2303#[derive(Debug)]
2304pub struct NodeControllerWaitForDriverResponder {
2305 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2306 tx_id: u32,
2307}
2308
2309impl std::ops::Drop for NodeControllerWaitForDriverResponder {
2313 fn drop(&mut self) {
2314 self.control_handle.shutdown();
2315 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2317 }
2318}
2319
2320impl fidl::endpoints::Responder for NodeControllerWaitForDriverResponder {
2321 type ControlHandle = NodeControllerControlHandle;
2322
2323 fn control_handle(&self) -> &NodeControllerControlHandle {
2324 &self.control_handle
2325 }
2326
2327 fn drop_without_shutdown(mut self) {
2328 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2330 std::mem::forget(self);
2332 }
2333}
2334
2335impl NodeControllerWaitForDriverResponder {
2336 pub fn send(self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2340 let _result = self.send_raw(result);
2341 if _result.is_err() {
2342 self.control_handle.shutdown();
2343 }
2344 self.drop_without_shutdown();
2345 _result
2346 }
2347
2348 pub fn send_no_shutdown_on_err(
2350 self,
2351 mut result: Result<DriverResult, i32>,
2352 ) -> Result<(), fidl::Error> {
2353 let _result = self.send_raw(result);
2354 self.drop_without_shutdown();
2355 _result
2356 }
2357
2358 fn send_raw(&self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2359 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<DriverResult, i32>>(
2360 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
2361 self.tx_id,
2362 0x69f7106e47d81387,
2363 fidl::encoding::DynamicFlags::FLEXIBLE,
2364 )
2365 }
2366}
2367
2368mod internal {
2369 use super::*;
2370
2371 impl fidl::encoding::ResourceTypeMarker for DriverStartRequest {
2372 type Borrowed<'a> = &'a mut Self;
2373 fn take_or_borrow<'a>(
2374 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2375 ) -> Self::Borrowed<'a> {
2376 value
2377 }
2378 }
2379
2380 unsafe impl fidl::encoding::TypeMarker for DriverStartRequest {
2381 type Owned = Self;
2382
2383 #[inline(always)]
2384 fn inline_align(_context: fidl::encoding::Context) -> usize {
2385 8
2386 }
2387
2388 #[inline(always)]
2389 fn inline_size(_context: fidl::encoding::Context) -> usize {
2390 16
2391 }
2392 }
2393
2394 unsafe impl
2395 fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2396 for &mut DriverStartRequest
2397 {
2398 #[inline]
2399 unsafe fn encode(
2400 self,
2401 encoder: &mut fidl::encoding::Encoder<
2402 '_,
2403 fidl::encoding::DefaultFuchsiaResourceDialect,
2404 >,
2405 offset: usize,
2406 _depth: fidl::encoding::Depth,
2407 ) -> fidl::Result<()> {
2408 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2409 fidl::encoding::Encode::<
2411 DriverStartRequest,
2412 fidl::encoding::DefaultFuchsiaResourceDialect,
2413 >::encode(
2414 (<DriverStartArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2415 &mut self.start_args,
2416 ),),
2417 encoder,
2418 offset,
2419 _depth,
2420 )
2421 }
2422 }
2423 unsafe impl<
2424 T0: fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2425 > fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2426 for (T0,)
2427 {
2428 #[inline]
2429 unsafe fn encode(
2430 self,
2431 encoder: &mut fidl::encoding::Encoder<
2432 '_,
2433 fidl::encoding::DefaultFuchsiaResourceDialect,
2434 >,
2435 offset: usize,
2436 depth: fidl::encoding::Depth,
2437 ) -> fidl::Result<()> {
2438 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2439 self.0.encode(encoder, offset + 0, depth)?;
2443 Ok(())
2444 }
2445 }
2446
2447 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2448 for DriverStartRequest
2449 {
2450 #[inline(always)]
2451 fn new_empty() -> Self {
2452 Self {
2453 start_args: fidl::new_empty!(
2454 DriverStartArgs,
2455 fidl::encoding::DefaultFuchsiaResourceDialect
2456 ),
2457 }
2458 }
2459
2460 #[inline]
2461 unsafe fn decode(
2462 &mut self,
2463 decoder: &mut fidl::encoding::Decoder<
2464 '_,
2465 fidl::encoding::DefaultFuchsiaResourceDialect,
2466 >,
2467 offset: usize,
2468 _depth: fidl::encoding::Depth,
2469 ) -> fidl::Result<()> {
2470 decoder.debug_check_bounds::<Self>(offset);
2471 fidl::decode!(
2473 DriverStartArgs,
2474 fidl::encoding::DefaultFuchsiaResourceDialect,
2475 &mut self.start_args,
2476 decoder,
2477 offset + 0,
2478 _depth
2479 )?;
2480 Ok(())
2481 }
2482 }
2483
2484 impl fidl::encoding::ResourceTypeMarker for NodeAddChildRequest {
2485 type Borrowed<'a> = &'a mut Self;
2486 fn take_or_borrow<'a>(
2487 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2488 ) -> Self::Borrowed<'a> {
2489 value
2490 }
2491 }
2492
2493 unsafe impl fidl::encoding::TypeMarker for NodeAddChildRequest {
2494 type Owned = Self;
2495
2496 #[inline(always)]
2497 fn inline_align(_context: fidl::encoding::Context) -> usize {
2498 8
2499 }
2500
2501 #[inline(always)]
2502 fn inline_size(_context: fidl::encoding::Context) -> usize {
2503 24
2504 }
2505 }
2506
2507 unsafe impl
2508 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2509 for &mut NodeAddChildRequest
2510 {
2511 #[inline]
2512 unsafe fn encode(
2513 self,
2514 encoder: &mut fidl::encoding::Encoder<
2515 '_,
2516 fidl::encoding::DefaultFuchsiaResourceDialect,
2517 >,
2518 offset: usize,
2519 _depth: fidl::encoding::Depth,
2520 ) -> fidl::Result<()> {
2521 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2522 fidl::encoding::Encode::<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2524 (
2525 <NodeAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.args),
2526 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
2527 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node),
2528 ),
2529 encoder, offset, _depth
2530 )
2531 }
2532 }
2533 unsafe impl<
2534 T0: fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2535 T1: fidl::encoding::Encode<
2536 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2537 fidl::encoding::DefaultFuchsiaResourceDialect,
2538 >,
2539 T2: fidl::encoding::Encode<
2540 fidl::encoding::Optional<
2541 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2542 >,
2543 fidl::encoding::DefaultFuchsiaResourceDialect,
2544 >,
2545 > fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2546 for (T0, T1, T2)
2547 {
2548 #[inline]
2549 unsafe fn encode(
2550 self,
2551 encoder: &mut fidl::encoding::Encoder<
2552 '_,
2553 fidl::encoding::DefaultFuchsiaResourceDialect,
2554 >,
2555 offset: usize,
2556 depth: fidl::encoding::Depth,
2557 ) -> fidl::Result<()> {
2558 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2559 self.0.encode(encoder, offset + 0, depth)?;
2563 self.1.encode(encoder, offset + 16, depth)?;
2564 self.2.encode(encoder, offset + 20, depth)?;
2565 Ok(())
2566 }
2567 }
2568
2569 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2570 for NodeAddChildRequest
2571 {
2572 #[inline(always)]
2573 fn new_empty() -> Self {
2574 Self {
2575 args: fidl::new_empty!(NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect),
2576 controller: fidl::new_empty!(
2577 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2578 fidl::encoding::DefaultFuchsiaResourceDialect
2579 ),
2580 node: fidl::new_empty!(
2581 fidl::encoding::Optional<
2582 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2583 >,
2584 fidl::encoding::DefaultFuchsiaResourceDialect
2585 ),
2586 }
2587 }
2588
2589 #[inline]
2590 unsafe fn decode(
2591 &mut self,
2592 decoder: &mut fidl::encoding::Decoder<
2593 '_,
2594 fidl::encoding::DefaultFuchsiaResourceDialect,
2595 >,
2596 offset: usize,
2597 _depth: fidl::encoding::Depth,
2598 ) -> fidl::Result<()> {
2599 decoder.debug_check_bounds::<Self>(offset);
2600 fidl::decode!(
2602 NodeAddArgs,
2603 fidl::encoding::DefaultFuchsiaResourceDialect,
2604 &mut self.args,
2605 decoder,
2606 offset + 0,
2607 _depth
2608 )?;
2609 fidl::decode!(
2610 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2611 fidl::encoding::DefaultFuchsiaResourceDialect,
2612 &mut self.controller,
2613 decoder,
2614 offset + 16,
2615 _depth
2616 )?;
2617 fidl::decode!(
2618 fidl::encoding::Optional<
2619 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2620 >,
2621 fidl::encoding::DefaultFuchsiaResourceDialect,
2622 &mut self.node,
2623 decoder,
2624 offset + 20,
2625 _depth
2626 )?;
2627 Ok(())
2628 }
2629 }
2630
2631 impl DevfsAddArgs {
2632 #[inline(always)]
2633 fn max_ordinal_present(&self) -> u64 {
2634 if let Some(_) = self.controller_connector {
2635 return 5;
2636 }
2637 if let Some(_) = self.connector_supports {
2638 return 4;
2639 }
2640 if let Some(_) = self.inspect {
2641 return 3;
2642 }
2643 if let Some(_) = self.class_name {
2644 return 2;
2645 }
2646 if let Some(_) = self.connector {
2647 return 1;
2648 }
2649 0
2650 }
2651 }
2652
2653 impl fidl::encoding::ResourceTypeMarker for DevfsAddArgs {
2654 type Borrowed<'a> = &'a mut Self;
2655 fn take_or_borrow<'a>(
2656 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2657 ) -> Self::Borrowed<'a> {
2658 value
2659 }
2660 }
2661
2662 unsafe impl fidl::encoding::TypeMarker for DevfsAddArgs {
2663 type Owned = Self;
2664
2665 #[inline(always)]
2666 fn inline_align(_context: fidl::encoding::Context) -> usize {
2667 8
2668 }
2669
2670 #[inline(always)]
2671 fn inline_size(_context: fidl::encoding::Context) -> usize {
2672 16
2673 }
2674 }
2675
2676 unsafe impl fidl::encoding::Encode<DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
2677 for &mut DevfsAddArgs
2678 {
2679 unsafe fn encode(
2680 self,
2681 encoder: &mut fidl::encoding::Encoder<
2682 '_,
2683 fidl::encoding::DefaultFuchsiaResourceDialect,
2684 >,
2685 offset: usize,
2686 mut depth: fidl::encoding::Depth,
2687 ) -> fidl::Result<()> {
2688 encoder.debug_check_bounds::<DevfsAddArgs>(offset);
2689 let max_ordinal: u64 = self.max_ordinal_present();
2691 encoder.write_num(max_ordinal, offset);
2692 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2693 if max_ordinal == 0 {
2695 return Ok(());
2696 }
2697 depth.increment()?;
2698 let envelope_size = 8;
2699 let bytes_len = max_ordinal as usize * envelope_size;
2700 #[allow(unused_variables)]
2701 let offset = encoder.out_of_line_offset(bytes_len);
2702 let mut _prev_end_offset: usize = 0;
2703 if 1 > max_ordinal {
2704 return Ok(());
2705 }
2706
2707 let cur_offset: usize = (1 - 1) * envelope_size;
2710
2711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2713
2714 fidl::encoding::encode_in_envelope_optional::<
2719 fidl::encoding::Endpoint<
2720 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2721 >,
2722 fidl::encoding::DefaultFuchsiaResourceDialect,
2723 >(
2724 self.connector.as_mut().map(
2725 <fidl::encoding::Endpoint<
2726 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2727 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2728 ),
2729 encoder,
2730 offset + cur_offset,
2731 depth,
2732 )?;
2733
2734 _prev_end_offset = cur_offset + envelope_size;
2735 if 2 > max_ordinal {
2736 return Ok(());
2737 }
2738
2739 let cur_offset: usize = (2 - 1) * envelope_size;
2742
2743 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2745
2746 fidl::encoding::encode_in_envelope_optional::<
2751 fidl::encoding::BoundedString<255>,
2752 fidl::encoding::DefaultFuchsiaResourceDialect,
2753 >(
2754 self.class_name.as_ref().map(
2755 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
2756 ),
2757 encoder,
2758 offset + cur_offset,
2759 depth,
2760 )?;
2761
2762 _prev_end_offset = cur_offset + envelope_size;
2763 if 3 > max_ordinal {
2764 return Ok(());
2765 }
2766
2767 let cur_offset: usize = (3 - 1) * envelope_size;
2770
2771 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2773
2774 fidl::encoding::encode_in_envelope_optional::<
2779 fidl::encoding::HandleType<
2780 fidl::Vmo,
2781 { fidl::ObjectType::VMO.into_raw() },
2782 2147483648,
2783 >,
2784 fidl::encoding::DefaultFuchsiaResourceDialect,
2785 >(
2786 self.inspect.as_mut().map(
2787 <fidl::encoding::HandleType<
2788 fidl::Vmo,
2789 { fidl::ObjectType::VMO.into_raw() },
2790 2147483648,
2791 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2792 ),
2793 encoder,
2794 offset + cur_offset,
2795 depth,
2796 )?;
2797
2798 _prev_end_offset = cur_offset + envelope_size;
2799 if 4 > max_ordinal {
2800 return Ok(());
2801 }
2802
2803 let cur_offset: usize = (4 - 1) * envelope_size;
2806
2807 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2809
2810 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_device_fs::ConnectionType, fidl::encoding::DefaultFuchsiaResourceDialect>(
2815 self.connector_supports.as_ref().map(<fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::ValueTypeMarker>::borrow),
2816 encoder, offset + cur_offset, depth
2817 )?;
2818
2819 _prev_end_offset = cur_offset + envelope_size;
2820 if 5 > max_ordinal {
2821 return Ok(());
2822 }
2823
2824 let cur_offset: usize = (5 - 1) * envelope_size;
2827
2828 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2830
2831 fidl::encoding::encode_in_envelope_optional::<
2836 fidl::encoding::Endpoint<
2837 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2838 >,
2839 fidl::encoding::DefaultFuchsiaResourceDialect,
2840 >(
2841 self.controller_connector.as_mut().map(
2842 <fidl::encoding::Endpoint<
2843 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2844 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2845 ),
2846 encoder,
2847 offset + cur_offset,
2848 depth,
2849 )?;
2850
2851 _prev_end_offset = cur_offset + envelope_size;
2852
2853 Ok(())
2854 }
2855 }
2856
2857 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {
2858 #[inline(always)]
2859 fn new_empty() -> Self {
2860 Self::default()
2861 }
2862
2863 unsafe fn decode(
2864 &mut self,
2865 decoder: &mut fidl::encoding::Decoder<
2866 '_,
2867 fidl::encoding::DefaultFuchsiaResourceDialect,
2868 >,
2869 offset: usize,
2870 mut depth: fidl::encoding::Depth,
2871 ) -> fidl::Result<()> {
2872 decoder.debug_check_bounds::<Self>(offset);
2873 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2874 None => return Err(fidl::Error::NotNullable),
2875 Some(len) => len,
2876 };
2877 if len == 0 {
2879 return Ok(());
2880 };
2881 depth.increment()?;
2882 let envelope_size = 8;
2883 let bytes_len = len * envelope_size;
2884 let offset = decoder.out_of_line_offset(bytes_len)?;
2885 let mut _next_ordinal_to_read = 0;
2887 let mut next_offset = offset;
2888 let end_offset = offset + bytes_len;
2889 _next_ordinal_to_read += 1;
2890 if next_offset >= end_offset {
2891 return Ok(());
2892 }
2893
2894 while _next_ordinal_to_read < 1 {
2896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2897 _next_ordinal_to_read += 1;
2898 next_offset += envelope_size;
2899 }
2900
2901 let next_out_of_line = decoder.next_out_of_line();
2902 let handles_before = decoder.remaining_handles();
2903 if let Some((inlined, num_bytes, num_handles)) =
2904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2905 {
2906 let member_inline_size = <fidl::encoding::Endpoint<
2907 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2908 > as fidl::encoding::TypeMarker>::inline_size(
2909 decoder.context
2910 );
2911 if inlined != (member_inline_size <= 4) {
2912 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2913 }
2914 let inner_offset;
2915 let mut inner_depth = depth.clone();
2916 if inlined {
2917 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2918 inner_offset = next_offset;
2919 } else {
2920 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2921 inner_depth.increment()?;
2922 }
2923 let val_ref = self.connector.get_or_insert_with(|| {
2924 fidl::new_empty!(
2925 fidl::encoding::Endpoint<
2926 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2927 >,
2928 fidl::encoding::DefaultFuchsiaResourceDialect
2929 )
2930 });
2931 fidl::decode!(
2932 fidl::encoding::Endpoint<
2933 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2934 >,
2935 fidl::encoding::DefaultFuchsiaResourceDialect,
2936 val_ref,
2937 decoder,
2938 inner_offset,
2939 inner_depth
2940 )?;
2941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2942 {
2943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2944 }
2945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2947 }
2948 }
2949
2950 next_offset += envelope_size;
2951 _next_ordinal_to_read += 1;
2952 if next_offset >= end_offset {
2953 return Ok(());
2954 }
2955
2956 while _next_ordinal_to_read < 2 {
2958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2959 _next_ordinal_to_read += 1;
2960 next_offset += envelope_size;
2961 }
2962
2963 let next_out_of_line = decoder.next_out_of_line();
2964 let handles_before = decoder.remaining_handles();
2965 if let Some((inlined, num_bytes, num_handles)) =
2966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2967 {
2968 let member_inline_size =
2969 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2970 decoder.context,
2971 );
2972 if inlined != (member_inline_size <= 4) {
2973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2974 }
2975 let inner_offset;
2976 let mut inner_depth = depth.clone();
2977 if inlined {
2978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2979 inner_offset = next_offset;
2980 } else {
2981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2982 inner_depth.increment()?;
2983 }
2984 let val_ref = self.class_name.get_or_insert_with(|| {
2985 fidl::new_empty!(
2986 fidl::encoding::BoundedString<255>,
2987 fidl::encoding::DefaultFuchsiaResourceDialect
2988 )
2989 });
2990 fidl::decode!(
2991 fidl::encoding::BoundedString<255>,
2992 fidl::encoding::DefaultFuchsiaResourceDialect,
2993 val_ref,
2994 decoder,
2995 inner_offset,
2996 inner_depth
2997 )?;
2998 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2999 {
3000 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3001 }
3002 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3003 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3004 }
3005 }
3006
3007 next_offset += envelope_size;
3008 _next_ordinal_to_read += 1;
3009 if next_offset >= end_offset {
3010 return Ok(());
3011 }
3012
3013 while _next_ordinal_to_read < 3 {
3015 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3016 _next_ordinal_to_read += 1;
3017 next_offset += envelope_size;
3018 }
3019
3020 let next_out_of_line = decoder.next_out_of_line();
3021 let handles_before = decoder.remaining_handles();
3022 if let Some((inlined, num_bytes, num_handles)) =
3023 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3024 {
3025 let member_inline_size = <fidl::encoding::HandleType<
3026 fidl::Vmo,
3027 { fidl::ObjectType::VMO.into_raw() },
3028 2147483648,
3029 > as fidl::encoding::TypeMarker>::inline_size(
3030 decoder.context
3031 );
3032 if inlined != (member_inline_size <= 4) {
3033 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3034 }
3035 let inner_offset;
3036 let mut inner_depth = depth.clone();
3037 if inlined {
3038 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3039 inner_offset = next_offset;
3040 } else {
3041 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3042 inner_depth.increment()?;
3043 }
3044 let val_ref =
3045 self.inspect.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3046 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3047 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3048 {
3049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3050 }
3051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3053 }
3054 }
3055
3056 next_offset += envelope_size;
3057 _next_ordinal_to_read += 1;
3058 if next_offset >= end_offset {
3059 return Ok(());
3060 }
3061
3062 while _next_ordinal_to_read < 4 {
3064 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3065 _next_ordinal_to_read += 1;
3066 next_offset += envelope_size;
3067 }
3068
3069 let next_out_of_line = decoder.next_out_of_line();
3070 let handles_before = decoder.remaining_handles();
3071 if let Some((inlined, num_bytes, num_handles)) =
3072 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3073 {
3074 let member_inline_size = <fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3075 if inlined != (member_inline_size <= 4) {
3076 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3077 }
3078 let inner_offset;
3079 let mut inner_depth = depth.clone();
3080 if inlined {
3081 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3082 inner_offset = next_offset;
3083 } else {
3084 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3085 inner_depth.increment()?;
3086 }
3087 let val_ref = self.connector_supports.get_or_insert_with(|| {
3088 fidl::new_empty!(
3089 fidl_fuchsia_device_fs::ConnectionType,
3090 fidl::encoding::DefaultFuchsiaResourceDialect
3091 )
3092 });
3093 fidl::decode!(
3094 fidl_fuchsia_device_fs::ConnectionType,
3095 fidl::encoding::DefaultFuchsiaResourceDialect,
3096 val_ref,
3097 decoder,
3098 inner_offset,
3099 inner_depth
3100 )?;
3101 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3102 {
3103 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3104 }
3105 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3106 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3107 }
3108 }
3109
3110 next_offset += envelope_size;
3111 _next_ordinal_to_read += 1;
3112 if next_offset >= end_offset {
3113 return Ok(());
3114 }
3115
3116 while _next_ordinal_to_read < 5 {
3118 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3119 _next_ordinal_to_read += 1;
3120 next_offset += envelope_size;
3121 }
3122
3123 let next_out_of_line = decoder.next_out_of_line();
3124 let handles_before = decoder.remaining_handles();
3125 if let Some((inlined, num_bytes, num_handles)) =
3126 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3127 {
3128 let member_inline_size = <fidl::encoding::Endpoint<
3129 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3130 > as fidl::encoding::TypeMarker>::inline_size(
3131 decoder.context
3132 );
3133 if inlined != (member_inline_size <= 4) {
3134 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3135 }
3136 let inner_offset;
3137 let mut inner_depth = depth.clone();
3138 if inlined {
3139 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3140 inner_offset = next_offset;
3141 } else {
3142 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3143 inner_depth.increment()?;
3144 }
3145 let val_ref = self.controller_connector.get_or_insert_with(|| {
3146 fidl::new_empty!(
3147 fidl::encoding::Endpoint<
3148 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3149 >,
3150 fidl::encoding::DefaultFuchsiaResourceDialect
3151 )
3152 });
3153 fidl::decode!(
3154 fidl::encoding::Endpoint<
3155 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3156 >,
3157 fidl::encoding::DefaultFuchsiaResourceDialect,
3158 val_ref,
3159 decoder,
3160 inner_offset,
3161 inner_depth
3162 )?;
3163 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3164 {
3165 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3166 }
3167 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3168 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3169 }
3170 }
3171
3172 next_offset += envelope_size;
3173
3174 while next_offset < end_offset {
3176 _next_ordinal_to_read += 1;
3177 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3178 next_offset += envelope_size;
3179 }
3180
3181 Ok(())
3182 }
3183 }
3184
3185 impl DriverStartArgs {
3186 #[inline(always)]
3187 fn max_ordinal_present(&self) -> u64 {
3188 if let Some(_) = self.power_element_args {
3189 return 14;
3190 }
3191 if let Some(_) = self.vmar {
3192 return 13;
3193 }
3194 if let Some(_) = self.node_properties_2 {
3195 return 12;
3196 }
3197 if let Some(_) = self.node_token {
3198 return 11;
3199 }
3200 if let Some(_) = self.node_offers {
3201 return 10;
3202 }
3203 if let Some(_) = self.node_properties {
3204 return 9;
3205 }
3206 if let Some(_) = self.node_name {
3207 return 8;
3208 }
3209 if let Some(_) = self.config {
3210 return 7;
3211 }
3212 if let Some(_) = self.outgoing_dir {
3213 return 6;
3214 }
3215 if let Some(_) = self.incoming {
3216 return 5;
3217 }
3218 if let Some(_) = self.program {
3219 return 4;
3220 }
3221 if let Some(_) = self.url {
3222 return 3;
3223 }
3224 if let Some(_) = self.symbols {
3225 return 2;
3226 }
3227 if let Some(_) = self.node {
3228 return 1;
3229 }
3230 0
3231 }
3232 }
3233
3234 impl fidl::encoding::ResourceTypeMarker for DriverStartArgs {
3235 type Borrowed<'a> = &'a mut Self;
3236 fn take_or_borrow<'a>(
3237 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3238 ) -> Self::Borrowed<'a> {
3239 value
3240 }
3241 }
3242
3243 unsafe impl fidl::encoding::TypeMarker for DriverStartArgs {
3244 type Owned = Self;
3245
3246 #[inline(always)]
3247 fn inline_align(_context: fidl::encoding::Context) -> usize {
3248 8
3249 }
3250
3251 #[inline(always)]
3252 fn inline_size(_context: fidl::encoding::Context) -> usize {
3253 16
3254 }
3255 }
3256
3257 unsafe impl
3258 fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
3259 for &mut DriverStartArgs
3260 {
3261 unsafe fn encode(
3262 self,
3263 encoder: &mut fidl::encoding::Encoder<
3264 '_,
3265 fidl::encoding::DefaultFuchsiaResourceDialect,
3266 >,
3267 offset: usize,
3268 mut depth: fidl::encoding::Depth,
3269 ) -> fidl::Result<()> {
3270 encoder.debug_check_bounds::<DriverStartArgs>(offset);
3271 let max_ordinal: u64 = self.max_ordinal_present();
3273 encoder.write_num(max_ordinal, offset);
3274 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3275 if max_ordinal == 0 {
3277 return Ok(());
3278 }
3279 depth.increment()?;
3280 let envelope_size = 8;
3281 let bytes_len = max_ordinal as usize * envelope_size;
3282 #[allow(unused_variables)]
3283 let offset = encoder.out_of_line_offset(bytes_len);
3284 let mut _prev_end_offset: usize = 0;
3285 if 1 > max_ordinal {
3286 return Ok(());
3287 }
3288
3289 let cur_offset: usize = (1 - 1) * envelope_size;
3292
3293 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3295
3296 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3301 self.node.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3302 encoder, offset + cur_offset, depth
3303 )?;
3304
3305 _prev_end_offset = cur_offset + envelope_size;
3306 if 2 > max_ordinal {
3307 return Ok(());
3308 }
3309
3310 let cur_offset: usize = (2 - 1) * envelope_size;
3313
3314 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3316
3317 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3322 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3323 encoder, offset + cur_offset, depth
3324 )?;
3325
3326 _prev_end_offset = cur_offset + envelope_size;
3327 if 3 > max_ordinal {
3328 return Ok(());
3329 }
3330
3331 let cur_offset: usize = (3 - 1) * envelope_size;
3334
3335 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3337
3338 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3343 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3344 encoder, offset + cur_offset, depth
3345 )?;
3346
3347 _prev_end_offset = cur_offset + envelope_size;
3348 if 4 > max_ordinal {
3349 return Ok(());
3350 }
3351
3352 let cur_offset: usize = (4 - 1) * envelope_size;
3355
3356 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3358
3359 fidl::encoding::encode_in_envelope_optional::<
3364 fidl_fuchsia_data::Dictionary,
3365 fidl::encoding::DefaultFuchsiaResourceDialect,
3366 >(
3367 self.program.as_ref().map(
3368 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
3369 ),
3370 encoder,
3371 offset + cur_offset,
3372 depth,
3373 )?;
3374
3375 _prev_end_offset = cur_offset + envelope_size;
3376 if 5 > max_ordinal {
3377 return Ok(());
3378 }
3379
3380 let cur_offset: usize = (5 - 1) * envelope_size;
3383
3384 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3386
3387 fidl::encoding::encode_in_envelope_optional::<
3392 fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>,
3393 fidl::encoding::DefaultFuchsiaResourceDialect,
3394 >(
3395 self.incoming.as_mut().map(
3396 <fidl::encoding::Vector<
3397 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3398 32,
3399 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3400 ),
3401 encoder,
3402 offset + cur_offset,
3403 depth,
3404 )?;
3405
3406 _prev_end_offset = cur_offset + envelope_size;
3407 if 6 > max_ordinal {
3408 return Ok(());
3409 }
3410
3411 let cur_offset: usize = (6 - 1) * envelope_size;
3414
3415 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3417
3418 fidl::encoding::encode_in_envelope_optional::<
3423 fidl::encoding::Endpoint<
3424 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3425 >,
3426 fidl::encoding::DefaultFuchsiaResourceDialect,
3427 >(
3428 self.outgoing_dir.as_mut().map(
3429 <fidl::encoding::Endpoint<
3430 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3431 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3432 ),
3433 encoder,
3434 offset + cur_offset,
3435 depth,
3436 )?;
3437
3438 _prev_end_offset = cur_offset + envelope_size;
3439 if 7 > max_ordinal {
3440 return Ok(());
3441 }
3442
3443 let cur_offset: usize = (7 - 1) * envelope_size;
3446
3447 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3449
3450 fidl::encoding::encode_in_envelope_optional::<
3455 fidl::encoding::HandleType<
3456 fidl::Vmo,
3457 { fidl::ObjectType::VMO.into_raw() },
3458 2147483648,
3459 >,
3460 fidl::encoding::DefaultFuchsiaResourceDialect,
3461 >(
3462 self.config.as_mut().map(
3463 <fidl::encoding::HandleType<
3464 fidl::Vmo,
3465 { fidl::ObjectType::VMO.into_raw() },
3466 2147483648,
3467 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3468 ),
3469 encoder,
3470 offset + cur_offset,
3471 depth,
3472 )?;
3473
3474 _prev_end_offset = cur_offset + envelope_size;
3475 if 8 > max_ordinal {
3476 return Ok(());
3477 }
3478
3479 let cur_offset: usize = (8 - 1) * envelope_size;
3482
3483 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3485
3486 fidl::encoding::encode_in_envelope_optional::<
3491 fidl::encoding::UnboundedString,
3492 fidl::encoding::DefaultFuchsiaResourceDialect,
3493 >(
3494 self.node_name.as_ref().map(
3495 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3496 ),
3497 encoder,
3498 offset + cur_offset,
3499 depth,
3500 )?;
3501
3502 _prev_end_offset = cur_offset + envelope_size;
3503 if 9 > max_ordinal {
3504 return Ok(());
3505 }
3506
3507 let cur_offset: usize = (9 - 1) * envelope_size;
3510
3511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3513
3514 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3519 self.node_properties.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::ValueTypeMarker>::borrow),
3520 encoder, offset + cur_offset, depth
3521 )?;
3522
3523 _prev_end_offset = cur_offset + envelope_size;
3524 if 10 > max_ordinal {
3525 return Ok(());
3526 }
3527
3528 let cur_offset: usize = (10 - 1) * envelope_size;
3531
3532 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3534
3535 fidl::encoding::encode_in_envelope_optional::<
3540 fidl::encoding::Vector<Offer, 128>,
3541 fidl::encoding::DefaultFuchsiaResourceDialect,
3542 >(
3543 self.node_offers.as_ref().map(
3544 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
3545 ),
3546 encoder,
3547 offset + cur_offset,
3548 depth,
3549 )?;
3550
3551 _prev_end_offset = cur_offset + envelope_size;
3552 if 11 > max_ordinal {
3553 return Ok(());
3554 }
3555
3556 let cur_offset: usize = (11 - 1) * envelope_size;
3559
3560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3562
3563 fidl::encoding::encode_in_envelope_optional::<
3568 fidl::encoding::HandleType<
3569 fidl::Event,
3570 { fidl::ObjectType::EVENT.into_raw() },
3571 2147483648,
3572 >,
3573 fidl::encoding::DefaultFuchsiaResourceDialect,
3574 >(
3575 self.node_token.as_mut().map(
3576 <fidl::encoding::HandleType<
3577 fidl::Event,
3578 { fidl::ObjectType::EVENT.into_raw() },
3579 2147483648,
3580 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3581 ),
3582 encoder,
3583 offset + cur_offset,
3584 depth,
3585 )?;
3586
3587 _prev_end_offset = cur_offset + envelope_size;
3588 if 12 > max_ordinal {
3589 return Ok(());
3590 }
3591
3592 let cur_offset: usize = (12 - 1) * envelope_size;
3595
3596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3598
3599 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry2>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3604 self.node_properties_2.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::ValueTypeMarker>::borrow),
3605 encoder, offset + cur_offset, depth
3606 )?;
3607
3608 _prev_end_offset = cur_offset + envelope_size;
3609 if 13 > max_ordinal {
3610 return Ok(());
3611 }
3612
3613 let cur_offset: usize = (13 - 1) * envelope_size;
3616
3617 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3619
3620 fidl::encoding::encode_in_envelope_optional::<
3625 fidl::encoding::HandleType<
3626 fidl::Vmar,
3627 { fidl::ObjectType::VMAR.into_raw() },
3628 2147483648,
3629 >,
3630 fidl::encoding::DefaultFuchsiaResourceDialect,
3631 >(
3632 self.vmar.as_mut().map(
3633 <fidl::encoding::HandleType<
3634 fidl::Vmar,
3635 { fidl::ObjectType::VMAR.into_raw() },
3636 2147483648,
3637 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3638 ),
3639 encoder,
3640 offset + cur_offset,
3641 depth,
3642 )?;
3643
3644 _prev_end_offset = cur_offset + envelope_size;
3645 if 14 > max_ordinal {
3646 return Ok(());
3647 }
3648
3649 let cur_offset: usize = (14 - 1) * envelope_size;
3652
3653 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3655
3656 fidl::encoding::encode_in_envelope_optional::<
3661 PowerElementArgs,
3662 fidl::encoding::DefaultFuchsiaResourceDialect,
3663 >(
3664 self.power_element_args
3665 .as_mut()
3666 .map(<PowerElementArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3667 encoder,
3668 offset + cur_offset,
3669 depth,
3670 )?;
3671
3672 _prev_end_offset = cur_offset + envelope_size;
3673
3674 Ok(())
3675 }
3676 }
3677
3678 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3679 for DriverStartArgs
3680 {
3681 #[inline(always)]
3682 fn new_empty() -> Self {
3683 Self::default()
3684 }
3685
3686 unsafe fn decode(
3687 &mut self,
3688 decoder: &mut fidl::encoding::Decoder<
3689 '_,
3690 fidl::encoding::DefaultFuchsiaResourceDialect,
3691 >,
3692 offset: usize,
3693 mut depth: fidl::encoding::Depth,
3694 ) -> fidl::Result<()> {
3695 decoder.debug_check_bounds::<Self>(offset);
3696 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3697 None => return Err(fidl::Error::NotNullable),
3698 Some(len) => len,
3699 };
3700 if len == 0 {
3702 return Ok(());
3703 };
3704 depth.increment()?;
3705 let envelope_size = 8;
3706 let bytes_len = len * envelope_size;
3707 let offset = decoder.out_of_line_offset(bytes_len)?;
3708 let mut _next_ordinal_to_read = 0;
3710 let mut next_offset = offset;
3711 let end_offset = offset + bytes_len;
3712 _next_ordinal_to_read += 1;
3713 if next_offset >= end_offset {
3714 return Ok(());
3715 }
3716
3717 while _next_ordinal_to_read < 1 {
3719 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3720 _next_ordinal_to_read += 1;
3721 next_offset += envelope_size;
3722 }
3723
3724 let next_out_of_line = decoder.next_out_of_line();
3725 let handles_before = decoder.remaining_handles();
3726 if let Some((inlined, num_bytes, num_handles)) =
3727 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3728 {
3729 let member_inline_size = <fidl::encoding::Endpoint<
3730 fidl::endpoints::ClientEnd<NodeMarker>,
3731 > as fidl::encoding::TypeMarker>::inline_size(
3732 decoder.context
3733 );
3734 if inlined != (member_inline_size <= 4) {
3735 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3736 }
3737 let inner_offset;
3738 let mut inner_depth = depth.clone();
3739 if inlined {
3740 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3741 inner_offset = next_offset;
3742 } else {
3743 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3744 inner_depth.increment()?;
3745 }
3746 let val_ref = self.node.get_or_insert_with(|| {
3747 fidl::new_empty!(
3748 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
3749 fidl::encoding::DefaultFuchsiaResourceDialect
3750 )
3751 });
3752 fidl::decode!(
3753 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
3754 fidl::encoding::DefaultFuchsiaResourceDialect,
3755 val_ref,
3756 decoder,
3757 inner_offset,
3758 inner_depth
3759 )?;
3760 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3761 {
3762 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3763 }
3764 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3765 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3766 }
3767 }
3768
3769 next_offset += envelope_size;
3770 _next_ordinal_to_read += 1;
3771 if next_offset >= end_offset {
3772 return Ok(());
3773 }
3774
3775 while _next_ordinal_to_read < 2 {
3777 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3778 _next_ordinal_to_read += 1;
3779 next_offset += envelope_size;
3780 }
3781
3782 let next_out_of_line = decoder.next_out_of_line();
3783 let handles_before = decoder.remaining_handles();
3784 if let Some((inlined, num_bytes, num_handles)) =
3785 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3786 {
3787 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3788 if inlined != (member_inline_size <= 4) {
3789 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3790 }
3791 let inner_offset;
3792 let mut inner_depth = depth.clone();
3793 if inlined {
3794 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3795 inner_offset = next_offset;
3796 } else {
3797 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3798 inner_depth.increment()?;
3799 }
3800 let val_ref =
3801 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
3802 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3803 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3804 {
3805 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3806 }
3807 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3808 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3809 }
3810 }
3811
3812 next_offset += envelope_size;
3813 _next_ordinal_to_read += 1;
3814 if next_offset >= end_offset {
3815 return Ok(());
3816 }
3817
3818 while _next_ordinal_to_read < 3 {
3820 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3821 _next_ordinal_to_read += 1;
3822 next_offset += envelope_size;
3823 }
3824
3825 let next_out_of_line = decoder.next_out_of_line();
3826 let handles_before = decoder.remaining_handles();
3827 if let Some((inlined, num_bytes, num_handles)) =
3828 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3829 {
3830 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3831 if inlined != (member_inline_size <= 4) {
3832 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3833 }
3834 let inner_offset;
3835 let mut inner_depth = depth.clone();
3836 if inlined {
3837 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3838 inner_offset = next_offset;
3839 } else {
3840 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3841 inner_depth.increment()?;
3842 }
3843 let val_ref = self.url.get_or_insert_with(|| {
3844 fidl::new_empty!(
3845 fidl::encoding::BoundedString<4096>,
3846 fidl::encoding::DefaultFuchsiaResourceDialect
3847 )
3848 });
3849 fidl::decode!(
3850 fidl::encoding::BoundedString<4096>,
3851 fidl::encoding::DefaultFuchsiaResourceDialect,
3852 val_ref,
3853 decoder,
3854 inner_offset,
3855 inner_depth
3856 )?;
3857 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3858 {
3859 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3860 }
3861 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3862 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3863 }
3864 }
3865
3866 next_offset += envelope_size;
3867 _next_ordinal_to_read += 1;
3868 if next_offset >= end_offset {
3869 return Ok(());
3870 }
3871
3872 while _next_ordinal_to_read < 4 {
3874 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3875 _next_ordinal_to_read += 1;
3876 next_offset += envelope_size;
3877 }
3878
3879 let next_out_of_line = decoder.next_out_of_line();
3880 let handles_before = decoder.remaining_handles();
3881 if let Some((inlined, num_bytes, num_handles)) =
3882 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3883 {
3884 let member_inline_size =
3885 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
3886 decoder.context,
3887 );
3888 if inlined != (member_inline_size <= 4) {
3889 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3890 }
3891 let inner_offset;
3892 let mut inner_depth = depth.clone();
3893 if inlined {
3894 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3895 inner_offset = next_offset;
3896 } else {
3897 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3898 inner_depth.increment()?;
3899 }
3900 let val_ref = self.program.get_or_insert_with(|| {
3901 fidl::new_empty!(
3902 fidl_fuchsia_data::Dictionary,
3903 fidl::encoding::DefaultFuchsiaResourceDialect
3904 )
3905 });
3906 fidl::decode!(
3907 fidl_fuchsia_data::Dictionary,
3908 fidl::encoding::DefaultFuchsiaResourceDialect,
3909 val_ref,
3910 decoder,
3911 inner_offset,
3912 inner_depth
3913 )?;
3914 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3915 {
3916 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3917 }
3918 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3919 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3920 }
3921 }
3922
3923 next_offset += envelope_size;
3924 _next_ordinal_to_read += 1;
3925 if next_offset >= end_offset {
3926 return Ok(());
3927 }
3928
3929 while _next_ordinal_to_read < 5 {
3931 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3932 _next_ordinal_to_read += 1;
3933 next_offset += envelope_size;
3934 }
3935
3936 let next_out_of_line = decoder.next_out_of_line();
3937 let handles_before = decoder.remaining_handles();
3938 if let Some((inlined, num_bytes, num_handles)) =
3939 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3940 {
3941 let member_inline_size = <fidl::encoding::Vector<
3942 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3943 32,
3944 > as fidl::encoding::TypeMarker>::inline_size(
3945 decoder.context
3946 );
3947 if inlined != (member_inline_size <= 4) {
3948 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3949 }
3950 let inner_offset;
3951 let mut inner_depth = depth.clone();
3952 if inlined {
3953 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3954 inner_offset = next_offset;
3955 } else {
3956 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3957 inner_depth.increment()?;
3958 }
3959 let val_ref =
3960 self.incoming.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
3961 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3962 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3963 {
3964 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3965 }
3966 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3967 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3968 }
3969 }
3970
3971 next_offset += envelope_size;
3972 _next_ordinal_to_read += 1;
3973 if next_offset >= end_offset {
3974 return Ok(());
3975 }
3976
3977 while _next_ordinal_to_read < 6 {
3979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3980 _next_ordinal_to_read += 1;
3981 next_offset += envelope_size;
3982 }
3983
3984 let next_out_of_line = decoder.next_out_of_line();
3985 let handles_before = decoder.remaining_handles();
3986 if let Some((inlined, num_bytes, num_handles)) =
3987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3988 {
3989 let member_inline_size = <fidl::encoding::Endpoint<
3990 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3991 > as fidl::encoding::TypeMarker>::inline_size(
3992 decoder.context
3993 );
3994 if inlined != (member_inline_size <= 4) {
3995 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3996 }
3997 let inner_offset;
3998 let mut inner_depth = depth.clone();
3999 if inlined {
4000 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4001 inner_offset = next_offset;
4002 } else {
4003 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4004 inner_depth.increment()?;
4005 }
4006 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
4007 fidl::new_empty!(
4008 fidl::encoding::Endpoint<
4009 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4010 >,
4011 fidl::encoding::DefaultFuchsiaResourceDialect
4012 )
4013 });
4014 fidl::decode!(
4015 fidl::encoding::Endpoint<
4016 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4017 >,
4018 fidl::encoding::DefaultFuchsiaResourceDialect,
4019 val_ref,
4020 decoder,
4021 inner_offset,
4022 inner_depth
4023 )?;
4024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4025 {
4026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4027 }
4028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4030 }
4031 }
4032
4033 next_offset += envelope_size;
4034 _next_ordinal_to_read += 1;
4035 if next_offset >= end_offset {
4036 return Ok(());
4037 }
4038
4039 while _next_ordinal_to_read < 7 {
4041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4042 _next_ordinal_to_read += 1;
4043 next_offset += envelope_size;
4044 }
4045
4046 let next_out_of_line = decoder.next_out_of_line();
4047 let handles_before = decoder.remaining_handles();
4048 if let Some((inlined, num_bytes, num_handles)) =
4049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4050 {
4051 let member_inline_size = <fidl::encoding::HandleType<
4052 fidl::Vmo,
4053 { fidl::ObjectType::VMO.into_raw() },
4054 2147483648,
4055 > as fidl::encoding::TypeMarker>::inline_size(
4056 decoder.context
4057 );
4058 if inlined != (member_inline_size <= 4) {
4059 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4060 }
4061 let inner_offset;
4062 let mut inner_depth = depth.clone();
4063 if inlined {
4064 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4065 inner_offset = next_offset;
4066 } else {
4067 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4068 inner_depth.increment()?;
4069 }
4070 let val_ref =
4071 self.config.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4072 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4073 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4074 {
4075 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4076 }
4077 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4078 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4079 }
4080 }
4081
4082 next_offset += envelope_size;
4083 _next_ordinal_to_read += 1;
4084 if next_offset >= end_offset {
4085 return Ok(());
4086 }
4087
4088 while _next_ordinal_to_read < 8 {
4090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4091 _next_ordinal_to_read += 1;
4092 next_offset += envelope_size;
4093 }
4094
4095 let next_out_of_line = decoder.next_out_of_line();
4096 let handles_before = decoder.remaining_handles();
4097 if let Some((inlined, num_bytes, num_handles)) =
4098 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4099 {
4100 let member_inline_size =
4101 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4102 decoder.context,
4103 );
4104 if inlined != (member_inline_size <= 4) {
4105 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4106 }
4107 let inner_offset;
4108 let mut inner_depth = depth.clone();
4109 if inlined {
4110 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4111 inner_offset = next_offset;
4112 } else {
4113 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4114 inner_depth.increment()?;
4115 }
4116 let val_ref = self.node_name.get_or_insert_with(|| {
4117 fidl::new_empty!(
4118 fidl::encoding::UnboundedString,
4119 fidl::encoding::DefaultFuchsiaResourceDialect
4120 )
4121 });
4122 fidl::decode!(
4123 fidl::encoding::UnboundedString,
4124 fidl::encoding::DefaultFuchsiaResourceDialect,
4125 val_ref,
4126 decoder,
4127 inner_offset,
4128 inner_depth
4129 )?;
4130 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4131 {
4132 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4133 }
4134 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4135 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4136 }
4137 }
4138
4139 next_offset += envelope_size;
4140 _next_ordinal_to_read += 1;
4141 if next_offset >= end_offset {
4142 return Ok(());
4143 }
4144
4145 while _next_ordinal_to_read < 9 {
4147 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4148 _next_ordinal_to_read += 1;
4149 next_offset += envelope_size;
4150 }
4151
4152 let next_out_of_line = decoder.next_out_of_line();
4153 let handles_before = decoder.remaining_handles();
4154 if let Some((inlined, num_bytes, num_handles)) =
4155 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4156 {
4157 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4158 if inlined != (member_inline_size <= 4) {
4159 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4160 }
4161 let inner_offset;
4162 let mut inner_depth = depth.clone();
4163 if inlined {
4164 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4165 inner_offset = next_offset;
4166 } else {
4167 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4168 inner_depth.increment()?;
4169 }
4170 let val_ref = self.node_properties.get_or_insert_with(|| {
4171 fidl::new_empty!(
4172 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4173 fidl::encoding::DefaultFuchsiaResourceDialect
4174 )
4175 });
4176 fidl::decode!(
4177 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4178 fidl::encoding::DefaultFuchsiaResourceDialect,
4179 val_ref,
4180 decoder,
4181 inner_offset,
4182 inner_depth
4183 )?;
4184 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4185 {
4186 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4187 }
4188 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4189 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4190 }
4191 }
4192
4193 next_offset += envelope_size;
4194 _next_ordinal_to_read += 1;
4195 if next_offset >= end_offset {
4196 return Ok(());
4197 }
4198
4199 while _next_ordinal_to_read < 10 {
4201 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4202 _next_ordinal_to_read += 1;
4203 next_offset += envelope_size;
4204 }
4205
4206 let next_out_of_line = decoder.next_out_of_line();
4207 let handles_before = decoder.remaining_handles();
4208 if let Some((inlined, num_bytes, num_handles)) =
4209 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4210 {
4211 let member_inline_size =
4212 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
4213 decoder.context,
4214 );
4215 if inlined != (member_inline_size <= 4) {
4216 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4217 }
4218 let inner_offset;
4219 let mut inner_depth = depth.clone();
4220 if inlined {
4221 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4222 inner_offset = next_offset;
4223 } else {
4224 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4225 inner_depth.increment()?;
4226 }
4227 let val_ref =
4228 self.node_offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
4229 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4230 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4231 {
4232 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4233 }
4234 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4235 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4236 }
4237 }
4238
4239 next_offset += envelope_size;
4240 _next_ordinal_to_read += 1;
4241 if next_offset >= end_offset {
4242 return Ok(());
4243 }
4244
4245 while _next_ordinal_to_read < 11 {
4247 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4248 _next_ordinal_to_read += 1;
4249 next_offset += envelope_size;
4250 }
4251
4252 let next_out_of_line = decoder.next_out_of_line();
4253 let handles_before = decoder.remaining_handles();
4254 if let Some((inlined, num_bytes, num_handles)) =
4255 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4256 {
4257 let member_inline_size = <fidl::encoding::HandleType<
4258 fidl::Event,
4259 { fidl::ObjectType::EVENT.into_raw() },
4260 2147483648,
4261 > as fidl::encoding::TypeMarker>::inline_size(
4262 decoder.context
4263 );
4264 if inlined != (member_inline_size <= 4) {
4265 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4266 }
4267 let inner_offset;
4268 let mut inner_depth = depth.clone();
4269 if inlined {
4270 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4271 inner_offset = next_offset;
4272 } else {
4273 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4274 inner_depth.increment()?;
4275 }
4276 let val_ref =
4277 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4278 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4280 {
4281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4282 }
4283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4285 }
4286 }
4287
4288 next_offset += envelope_size;
4289 _next_ordinal_to_read += 1;
4290 if next_offset >= end_offset {
4291 return Ok(());
4292 }
4293
4294 while _next_ordinal_to_read < 12 {
4296 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4297 _next_ordinal_to_read += 1;
4298 next_offset += envelope_size;
4299 }
4300
4301 let next_out_of_line = decoder.next_out_of_line();
4302 let handles_before = decoder.remaining_handles();
4303 if let Some((inlined, num_bytes, num_handles)) =
4304 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4305 {
4306 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4307 if inlined != (member_inline_size <= 4) {
4308 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4309 }
4310 let inner_offset;
4311 let mut inner_depth = depth.clone();
4312 if inlined {
4313 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4314 inner_offset = next_offset;
4315 } else {
4316 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4317 inner_depth.increment()?;
4318 }
4319 let val_ref = self.node_properties_2.get_or_insert_with(|| {
4320 fidl::new_empty!(
4321 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4322 fidl::encoding::DefaultFuchsiaResourceDialect
4323 )
4324 });
4325 fidl::decode!(
4326 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4327 fidl::encoding::DefaultFuchsiaResourceDialect,
4328 val_ref,
4329 decoder,
4330 inner_offset,
4331 inner_depth
4332 )?;
4333 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4334 {
4335 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4336 }
4337 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4338 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4339 }
4340 }
4341
4342 next_offset += envelope_size;
4343 _next_ordinal_to_read += 1;
4344 if next_offset >= end_offset {
4345 return Ok(());
4346 }
4347
4348 while _next_ordinal_to_read < 13 {
4350 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4351 _next_ordinal_to_read += 1;
4352 next_offset += envelope_size;
4353 }
4354
4355 let next_out_of_line = decoder.next_out_of_line();
4356 let handles_before = decoder.remaining_handles();
4357 if let Some((inlined, num_bytes, num_handles)) =
4358 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4359 {
4360 let member_inline_size = <fidl::encoding::HandleType<
4361 fidl::Vmar,
4362 { fidl::ObjectType::VMAR.into_raw() },
4363 2147483648,
4364 > as fidl::encoding::TypeMarker>::inline_size(
4365 decoder.context
4366 );
4367 if inlined != (member_inline_size <= 4) {
4368 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4369 }
4370 let inner_offset;
4371 let mut inner_depth = depth.clone();
4372 if inlined {
4373 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4374 inner_offset = next_offset;
4375 } else {
4376 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4377 inner_depth.increment()?;
4378 }
4379 let val_ref =
4380 self.vmar.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4381 fidl::decode!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4382 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4383 {
4384 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4385 }
4386 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4387 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4388 }
4389 }
4390
4391 next_offset += envelope_size;
4392 _next_ordinal_to_read += 1;
4393 if next_offset >= end_offset {
4394 return Ok(());
4395 }
4396
4397 while _next_ordinal_to_read < 14 {
4399 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4400 _next_ordinal_to_read += 1;
4401 next_offset += envelope_size;
4402 }
4403
4404 let next_out_of_line = decoder.next_out_of_line();
4405 let handles_before = decoder.remaining_handles();
4406 if let Some((inlined, num_bytes, num_handles)) =
4407 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4408 {
4409 let member_inline_size =
4410 <PowerElementArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4411 if inlined != (member_inline_size <= 4) {
4412 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4413 }
4414 let inner_offset;
4415 let mut inner_depth = depth.clone();
4416 if inlined {
4417 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4418 inner_offset = next_offset;
4419 } else {
4420 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4421 inner_depth.increment()?;
4422 }
4423 let val_ref = self.power_element_args.get_or_insert_with(|| {
4424 fidl::new_empty!(
4425 PowerElementArgs,
4426 fidl::encoding::DefaultFuchsiaResourceDialect
4427 )
4428 });
4429 fidl::decode!(
4430 PowerElementArgs,
4431 fidl::encoding::DefaultFuchsiaResourceDialect,
4432 val_ref,
4433 decoder,
4434 inner_offset,
4435 inner_depth
4436 )?;
4437 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4438 {
4439 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4440 }
4441 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4442 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4443 }
4444 }
4445
4446 next_offset += envelope_size;
4447
4448 while next_offset < end_offset {
4450 _next_ordinal_to_read += 1;
4451 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4452 next_offset += envelope_size;
4453 }
4454
4455 Ok(())
4456 }
4457 }
4458
4459 impl NodeAddArgs {
4460 #[inline(always)]
4461 fn max_ordinal_present(&self) -> u64 {
4462 if let Some(_) = self.driver_host {
4463 return 10;
4464 }
4465 if let Some(_) = self.offers_dictionary {
4466 return 9;
4467 }
4468 if let Some(_) = self.properties2 {
4469 return 8;
4470 }
4471 if let Some(_) = self.bus_info {
4472 return 7;
4473 }
4474 if let Some(_) = self.offers2 {
4475 return 6;
4476 }
4477 if let Some(_) = self.devfs_args {
4478 return 5;
4479 }
4480 if let Some(_) = self.properties {
4481 return 4;
4482 }
4483 if let Some(_) = self.symbols {
4484 return 3;
4485 }
4486 if let Some(_) = self.name {
4487 return 1;
4488 }
4489 0
4490 }
4491 }
4492
4493 impl fidl::encoding::ResourceTypeMarker for NodeAddArgs {
4494 type Borrowed<'a> = &'a mut Self;
4495 fn take_or_borrow<'a>(
4496 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4497 ) -> Self::Borrowed<'a> {
4498 value
4499 }
4500 }
4501
4502 unsafe impl fidl::encoding::TypeMarker for NodeAddArgs {
4503 type Owned = Self;
4504
4505 #[inline(always)]
4506 fn inline_align(_context: fidl::encoding::Context) -> usize {
4507 8
4508 }
4509
4510 #[inline(always)]
4511 fn inline_size(_context: fidl::encoding::Context) -> usize {
4512 16
4513 }
4514 }
4515
4516 unsafe impl fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
4517 for &mut NodeAddArgs
4518 {
4519 unsafe fn encode(
4520 self,
4521 encoder: &mut fidl::encoding::Encoder<
4522 '_,
4523 fidl::encoding::DefaultFuchsiaResourceDialect,
4524 >,
4525 offset: usize,
4526 mut depth: fidl::encoding::Depth,
4527 ) -> fidl::Result<()> {
4528 encoder.debug_check_bounds::<NodeAddArgs>(offset);
4529 let max_ordinal: u64 = self.max_ordinal_present();
4531 encoder.write_num(max_ordinal, offset);
4532 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4533 if max_ordinal == 0 {
4535 return Ok(());
4536 }
4537 depth.increment()?;
4538 let envelope_size = 8;
4539 let bytes_len = max_ordinal as usize * envelope_size;
4540 #[allow(unused_variables)]
4541 let offset = encoder.out_of_line_offset(bytes_len);
4542 let mut _prev_end_offset: usize = 0;
4543 if 1 > max_ordinal {
4544 return Ok(());
4545 }
4546
4547 let cur_offset: usize = (1 - 1) * envelope_size;
4550
4551 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4553
4554 fidl::encoding::encode_in_envelope_optional::<
4559 fidl::encoding::BoundedString<128>,
4560 fidl::encoding::DefaultFuchsiaResourceDialect,
4561 >(
4562 self.name.as_ref().map(
4563 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
4564 ),
4565 encoder,
4566 offset + cur_offset,
4567 depth,
4568 )?;
4569
4570 _prev_end_offset = cur_offset + envelope_size;
4571 if 3 > max_ordinal {
4572 return Ok(());
4573 }
4574
4575 let cur_offset: usize = (3 - 1) * envelope_size;
4578
4579 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4581
4582 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4587 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4588 encoder, offset + cur_offset, depth
4589 )?;
4590
4591 _prev_end_offset = cur_offset + envelope_size;
4592 if 4 > max_ordinal {
4593 return Ok(());
4594 }
4595
4596 let cur_offset: usize = (4 - 1) * envelope_size;
4599
4600 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4602
4603 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4608 self.properties.as_ref().map(<fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4609 encoder, offset + cur_offset, depth
4610 )?;
4611
4612 _prev_end_offset = cur_offset + envelope_size;
4613 if 5 > max_ordinal {
4614 return Ok(());
4615 }
4616
4617 let cur_offset: usize = (5 - 1) * envelope_size;
4620
4621 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4623
4624 fidl::encoding::encode_in_envelope_optional::<
4629 DevfsAddArgs,
4630 fidl::encoding::DefaultFuchsiaResourceDialect,
4631 >(
4632 self.devfs_args
4633 .as_mut()
4634 .map(<DevfsAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4635 encoder,
4636 offset + cur_offset,
4637 depth,
4638 )?;
4639
4640 _prev_end_offset = cur_offset + envelope_size;
4641 if 6 > max_ordinal {
4642 return Ok(());
4643 }
4644
4645 let cur_offset: usize = (6 - 1) * envelope_size;
4648
4649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4651
4652 fidl::encoding::encode_in_envelope_optional::<
4657 fidl::encoding::Vector<Offer, 128>,
4658 fidl::encoding::DefaultFuchsiaResourceDialect,
4659 >(
4660 self.offers2.as_ref().map(
4661 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
4662 ),
4663 encoder,
4664 offset + cur_offset,
4665 depth,
4666 )?;
4667
4668 _prev_end_offset = cur_offset + envelope_size;
4669 if 7 > max_ordinal {
4670 return Ok(());
4671 }
4672
4673 let cur_offset: usize = (7 - 1) * envelope_size;
4676
4677 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4679
4680 fidl::encoding::encode_in_envelope_optional::<
4685 BusInfo,
4686 fidl::encoding::DefaultFuchsiaResourceDialect,
4687 >(
4688 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
4689 encoder,
4690 offset + cur_offset,
4691 depth,
4692 )?;
4693
4694 _prev_end_offset = cur_offset + envelope_size;
4695 if 8 > max_ordinal {
4696 return Ok(());
4697 }
4698
4699 let cur_offset: usize = (8 - 1) * envelope_size;
4702
4703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4705
4706 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4711 self.properties2.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4712 encoder, offset + cur_offset, depth
4713 )?;
4714
4715 _prev_end_offset = cur_offset + envelope_size;
4716 if 9 > max_ordinal {
4717 return Ok(());
4718 }
4719
4720 let cur_offset: usize = (9 - 1) * envelope_size;
4723
4724 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4726
4727 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
4732 self.offers_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4733 encoder, offset + cur_offset, depth
4734 )?;
4735
4736 _prev_end_offset = cur_offset + envelope_size;
4737 if 10 > max_ordinal {
4738 return Ok(());
4739 }
4740
4741 let cur_offset: usize = (10 - 1) * envelope_size;
4744
4745 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4747
4748 fidl::encoding::encode_in_envelope_optional::<
4753 fidl::encoding::BoundedString<128>,
4754 fidl::encoding::DefaultFuchsiaResourceDialect,
4755 >(
4756 self.driver_host.as_ref().map(
4757 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
4758 ),
4759 encoder,
4760 offset + cur_offset,
4761 depth,
4762 )?;
4763
4764 _prev_end_offset = cur_offset + envelope_size;
4765
4766 Ok(())
4767 }
4768 }
4769
4770 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {
4771 #[inline(always)]
4772 fn new_empty() -> Self {
4773 Self::default()
4774 }
4775
4776 unsafe fn decode(
4777 &mut self,
4778 decoder: &mut fidl::encoding::Decoder<
4779 '_,
4780 fidl::encoding::DefaultFuchsiaResourceDialect,
4781 >,
4782 offset: usize,
4783 mut depth: fidl::encoding::Depth,
4784 ) -> fidl::Result<()> {
4785 decoder.debug_check_bounds::<Self>(offset);
4786 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4787 None => return Err(fidl::Error::NotNullable),
4788 Some(len) => len,
4789 };
4790 if len == 0 {
4792 return Ok(());
4793 };
4794 depth.increment()?;
4795 let envelope_size = 8;
4796 let bytes_len = len * envelope_size;
4797 let offset = decoder.out_of_line_offset(bytes_len)?;
4798 let mut _next_ordinal_to_read = 0;
4800 let mut next_offset = offset;
4801 let end_offset = offset + bytes_len;
4802 _next_ordinal_to_read += 1;
4803 if next_offset >= end_offset {
4804 return Ok(());
4805 }
4806
4807 while _next_ordinal_to_read < 1 {
4809 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4810 _next_ordinal_to_read += 1;
4811 next_offset += envelope_size;
4812 }
4813
4814 let next_out_of_line = decoder.next_out_of_line();
4815 let handles_before = decoder.remaining_handles();
4816 if let Some((inlined, num_bytes, num_handles)) =
4817 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4818 {
4819 let member_inline_size =
4820 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
4821 decoder.context,
4822 );
4823 if inlined != (member_inline_size <= 4) {
4824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4825 }
4826 let inner_offset;
4827 let mut inner_depth = depth.clone();
4828 if inlined {
4829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4830 inner_offset = next_offset;
4831 } else {
4832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4833 inner_depth.increment()?;
4834 }
4835 let val_ref = self.name.get_or_insert_with(|| {
4836 fidl::new_empty!(
4837 fidl::encoding::BoundedString<128>,
4838 fidl::encoding::DefaultFuchsiaResourceDialect
4839 )
4840 });
4841 fidl::decode!(
4842 fidl::encoding::BoundedString<128>,
4843 fidl::encoding::DefaultFuchsiaResourceDialect,
4844 val_ref,
4845 decoder,
4846 inner_offset,
4847 inner_depth
4848 )?;
4849 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4850 {
4851 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4852 }
4853 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4854 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4855 }
4856 }
4857
4858 next_offset += envelope_size;
4859 _next_ordinal_to_read += 1;
4860 if next_offset >= end_offset {
4861 return Ok(());
4862 }
4863
4864 while _next_ordinal_to_read < 3 {
4866 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4867 _next_ordinal_to_read += 1;
4868 next_offset += envelope_size;
4869 }
4870
4871 let next_out_of_line = decoder.next_out_of_line();
4872 let handles_before = decoder.remaining_handles();
4873 if let Some((inlined, num_bytes, num_handles)) =
4874 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4875 {
4876 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4877 if inlined != (member_inline_size <= 4) {
4878 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4879 }
4880 let inner_offset;
4881 let mut inner_depth = depth.clone();
4882 if inlined {
4883 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4884 inner_offset = next_offset;
4885 } else {
4886 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4887 inner_depth.increment()?;
4888 }
4889 let val_ref =
4890 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4891 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4892 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4893 {
4894 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4895 }
4896 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4897 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4898 }
4899 }
4900
4901 next_offset += envelope_size;
4902 _next_ordinal_to_read += 1;
4903 if next_offset >= end_offset {
4904 return Ok(());
4905 }
4906
4907 while _next_ordinal_to_read < 4 {
4909 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4910 _next_ordinal_to_read += 1;
4911 next_offset += envelope_size;
4912 }
4913
4914 let next_out_of_line = decoder.next_out_of_line();
4915 let handles_before = decoder.remaining_handles();
4916 if let Some((inlined, num_bytes, num_handles)) =
4917 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4918 {
4919 let member_inline_size = <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4920 if inlined != (member_inline_size <= 4) {
4921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4922 }
4923 let inner_offset;
4924 let mut inner_depth = depth.clone();
4925 if inlined {
4926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4927 inner_offset = next_offset;
4928 } else {
4929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4930 inner_depth.increment()?;
4931 }
4932 let val_ref =
4933 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4934 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4935 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4936 {
4937 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4938 }
4939 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4940 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4941 }
4942 }
4943
4944 next_offset += envelope_size;
4945 _next_ordinal_to_read += 1;
4946 if next_offset >= end_offset {
4947 return Ok(());
4948 }
4949
4950 while _next_ordinal_to_read < 5 {
4952 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4953 _next_ordinal_to_read += 1;
4954 next_offset += envelope_size;
4955 }
4956
4957 let next_out_of_line = decoder.next_out_of_line();
4958 let handles_before = decoder.remaining_handles();
4959 if let Some((inlined, num_bytes, num_handles)) =
4960 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4961 {
4962 let member_inline_size =
4963 <DevfsAddArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4964 if inlined != (member_inline_size <= 4) {
4965 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4966 }
4967 let inner_offset;
4968 let mut inner_depth = depth.clone();
4969 if inlined {
4970 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4971 inner_offset = next_offset;
4972 } else {
4973 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4974 inner_depth.increment()?;
4975 }
4976 let val_ref = self.devfs_args.get_or_insert_with(|| {
4977 fidl::new_empty!(DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect)
4978 });
4979 fidl::decode!(
4980 DevfsAddArgs,
4981 fidl::encoding::DefaultFuchsiaResourceDialect,
4982 val_ref,
4983 decoder,
4984 inner_offset,
4985 inner_depth
4986 )?;
4987 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4988 {
4989 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4990 }
4991 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4992 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4993 }
4994 }
4995
4996 next_offset += envelope_size;
4997 _next_ordinal_to_read += 1;
4998 if next_offset >= end_offset {
4999 return Ok(());
5000 }
5001
5002 while _next_ordinal_to_read < 6 {
5004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5005 _next_ordinal_to_read += 1;
5006 next_offset += envelope_size;
5007 }
5008
5009 let next_out_of_line = decoder.next_out_of_line();
5010 let handles_before = decoder.remaining_handles();
5011 if let Some((inlined, num_bytes, num_handles)) =
5012 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5013 {
5014 let member_inline_size =
5015 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
5016 decoder.context,
5017 );
5018 if inlined != (member_inline_size <= 4) {
5019 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5020 }
5021 let inner_offset;
5022 let mut inner_depth = depth.clone();
5023 if inlined {
5024 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5025 inner_offset = next_offset;
5026 } else {
5027 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5028 inner_depth.increment()?;
5029 }
5030 let val_ref =
5031 self.offers2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
5032 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5033 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5034 {
5035 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5036 }
5037 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5038 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5039 }
5040 }
5041
5042 next_offset += envelope_size;
5043 _next_ordinal_to_read += 1;
5044 if next_offset >= end_offset {
5045 return Ok(());
5046 }
5047
5048 while _next_ordinal_to_read < 7 {
5050 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5051 _next_ordinal_to_read += 1;
5052 next_offset += envelope_size;
5053 }
5054
5055 let next_out_of_line = decoder.next_out_of_line();
5056 let handles_before = decoder.remaining_handles();
5057 if let Some((inlined, num_bytes, num_handles)) =
5058 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5059 {
5060 let member_inline_size =
5061 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5062 if inlined != (member_inline_size <= 4) {
5063 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5064 }
5065 let inner_offset;
5066 let mut inner_depth = depth.clone();
5067 if inlined {
5068 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5069 inner_offset = next_offset;
5070 } else {
5071 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5072 inner_depth.increment()?;
5073 }
5074 let val_ref = self.bus_info.get_or_insert_with(|| {
5075 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
5076 });
5077 fidl::decode!(
5078 BusInfo,
5079 fidl::encoding::DefaultFuchsiaResourceDialect,
5080 val_ref,
5081 decoder,
5082 inner_offset,
5083 inner_depth
5084 )?;
5085 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5086 {
5087 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5088 }
5089 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5090 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5091 }
5092 }
5093
5094 next_offset += envelope_size;
5095 _next_ordinal_to_read += 1;
5096 if next_offset >= end_offset {
5097 return Ok(());
5098 }
5099
5100 while _next_ordinal_to_read < 8 {
5102 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5103 _next_ordinal_to_read += 1;
5104 next_offset += envelope_size;
5105 }
5106
5107 let next_out_of_line = decoder.next_out_of_line();
5108 let handles_before = decoder.remaining_handles();
5109 if let Some((inlined, num_bytes, num_handles)) =
5110 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5111 {
5112 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5113 if inlined != (member_inline_size <= 4) {
5114 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5115 }
5116 let inner_offset;
5117 let mut inner_depth = depth.clone();
5118 if inlined {
5119 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5120 inner_offset = next_offset;
5121 } else {
5122 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5123 inner_depth.increment()?;
5124 }
5125 let val_ref =
5126 self.properties2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5127 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5128 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5129 {
5130 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5131 }
5132 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5133 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5134 }
5135 }
5136
5137 next_offset += envelope_size;
5138 _next_ordinal_to_read += 1;
5139 if next_offset >= end_offset {
5140 return Ok(());
5141 }
5142
5143 while _next_ordinal_to_read < 9 {
5145 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5146 _next_ordinal_to_read += 1;
5147 next_offset += envelope_size;
5148 }
5149
5150 let next_out_of_line = decoder.next_out_of_line();
5151 let handles_before = decoder.remaining_handles();
5152 if let Some((inlined, num_bytes, num_handles)) =
5153 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5154 {
5155 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5156 if inlined != (member_inline_size <= 4) {
5157 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5158 }
5159 let inner_offset;
5160 let mut inner_depth = depth.clone();
5161 if inlined {
5162 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5163 inner_offset = next_offset;
5164 } else {
5165 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5166 inner_depth.increment()?;
5167 }
5168 let val_ref = self.offers_dictionary.get_or_insert_with(|| {
5169 fidl::new_empty!(
5170 fidl_fuchsia_component_sandbox::DictionaryRef,
5171 fidl::encoding::DefaultFuchsiaResourceDialect
5172 )
5173 });
5174 fidl::decode!(
5175 fidl_fuchsia_component_sandbox::DictionaryRef,
5176 fidl::encoding::DefaultFuchsiaResourceDialect,
5177 val_ref,
5178 decoder,
5179 inner_offset,
5180 inner_depth
5181 )?;
5182 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5183 {
5184 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5185 }
5186 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5187 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5188 }
5189 }
5190
5191 next_offset += envelope_size;
5192 _next_ordinal_to_read += 1;
5193 if next_offset >= end_offset {
5194 return Ok(());
5195 }
5196
5197 while _next_ordinal_to_read < 10 {
5199 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5200 _next_ordinal_to_read += 1;
5201 next_offset += envelope_size;
5202 }
5203
5204 let next_out_of_line = decoder.next_out_of_line();
5205 let handles_before = decoder.remaining_handles();
5206 if let Some((inlined, num_bytes, num_handles)) =
5207 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5208 {
5209 let member_inline_size =
5210 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5211 decoder.context,
5212 );
5213 if inlined != (member_inline_size <= 4) {
5214 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5215 }
5216 let inner_offset;
5217 let mut inner_depth = depth.clone();
5218 if inlined {
5219 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5220 inner_offset = next_offset;
5221 } else {
5222 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5223 inner_depth.increment()?;
5224 }
5225 let val_ref = self.driver_host.get_or_insert_with(|| {
5226 fidl::new_empty!(
5227 fidl::encoding::BoundedString<128>,
5228 fidl::encoding::DefaultFuchsiaResourceDialect
5229 )
5230 });
5231 fidl::decode!(
5232 fidl::encoding::BoundedString<128>,
5233 fidl::encoding::DefaultFuchsiaResourceDialect,
5234 val_ref,
5235 decoder,
5236 inner_offset,
5237 inner_depth
5238 )?;
5239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5240 {
5241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5242 }
5243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5245 }
5246 }
5247
5248 next_offset += envelope_size;
5249
5250 while next_offset < end_offset {
5252 _next_ordinal_to_read += 1;
5253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5254 next_offset += envelope_size;
5255 }
5256
5257 Ok(())
5258 }
5259 }
5260
5261 impl NodeControllerOnBindRequest {
5262 #[inline(always)]
5263 fn max_ordinal_present(&self) -> u64 {
5264 if let Some(_) = self.node_token {
5265 return 1;
5266 }
5267 0
5268 }
5269 }
5270
5271 impl fidl::encoding::ResourceTypeMarker for NodeControllerOnBindRequest {
5272 type Borrowed<'a> = &'a mut Self;
5273 fn take_or_borrow<'a>(
5274 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5275 ) -> Self::Borrowed<'a> {
5276 value
5277 }
5278 }
5279
5280 unsafe impl fidl::encoding::TypeMarker for NodeControllerOnBindRequest {
5281 type Owned = Self;
5282
5283 #[inline(always)]
5284 fn inline_align(_context: fidl::encoding::Context) -> usize {
5285 8
5286 }
5287
5288 #[inline(always)]
5289 fn inline_size(_context: fidl::encoding::Context) -> usize {
5290 16
5291 }
5292 }
5293
5294 unsafe impl
5295 fidl::encoding::Encode<
5296 NodeControllerOnBindRequest,
5297 fidl::encoding::DefaultFuchsiaResourceDialect,
5298 > for &mut NodeControllerOnBindRequest
5299 {
5300 unsafe fn encode(
5301 self,
5302 encoder: &mut fidl::encoding::Encoder<
5303 '_,
5304 fidl::encoding::DefaultFuchsiaResourceDialect,
5305 >,
5306 offset: usize,
5307 mut depth: fidl::encoding::Depth,
5308 ) -> fidl::Result<()> {
5309 encoder.debug_check_bounds::<NodeControllerOnBindRequest>(offset);
5310 let max_ordinal: u64 = self.max_ordinal_present();
5312 encoder.write_num(max_ordinal, offset);
5313 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5314 if max_ordinal == 0 {
5316 return Ok(());
5317 }
5318 depth.increment()?;
5319 let envelope_size = 8;
5320 let bytes_len = max_ordinal as usize * envelope_size;
5321 #[allow(unused_variables)]
5322 let offset = encoder.out_of_line_offset(bytes_len);
5323 let mut _prev_end_offset: usize = 0;
5324 if 1 > max_ordinal {
5325 return Ok(());
5326 }
5327
5328 let cur_offset: usize = (1 - 1) * envelope_size;
5331
5332 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5334
5335 fidl::encoding::encode_in_envelope_optional::<
5340 fidl::encoding::HandleType<
5341 fidl::Event,
5342 { fidl::ObjectType::EVENT.into_raw() },
5343 2147483648,
5344 >,
5345 fidl::encoding::DefaultFuchsiaResourceDialect,
5346 >(
5347 self.node_token.as_mut().map(
5348 <fidl::encoding::HandleType<
5349 fidl::Event,
5350 { fidl::ObjectType::EVENT.into_raw() },
5351 2147483648,
5352 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5353 ),
5354 encoder,
5355 offset + cur_offset,
5356 depth,
5357 )?;
5358
5359 _prev_end_offset = cur_offset + envelope_size;
5360
5361 Ok(())
5362 }
5363 }
5364
5365 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5366 for NodeControllerOnBindRequest
5367 {
5368 #[inline(always)]
5369 fn new_empty() -> Self {
5370 Self::default()
5371 }
5372
5373 unsafe fn decode(
5374 &mut self,
5375 decoder: &mut fidl::encoding::Decoder<
5376 '_,
5377 fidl::encoding::DefaultFuchsiaResourceDialect,
5378 >,
5379 offset: usize,
5380 mut depth: fidl::encoding::Depth,
5381 ) -> fidl::Result<()> {
5382 decoder.debug_check_bounds::<Self>(offset);
5383 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5384 None => return Err(fidl::Error::NotNullable),
5385 Some(len) => len,
5386 };
5387 if len == 0 {
5389 return Ok(());
5390 };
5391 depth.increment()?;
5392 let envelope_size = 8;
5393 let bytes_len = len * envelope_size;
5394 let offset = decoder.out_of_line_offset(bytes_len)?;
5395 let mut _next_ordinal_to_read = 0;
5397 let mut next_offset = offset;
5398 let end_offset = offset + bytes_len;
5399 _next_ordinal_to_read += 1;
5400 if next_offset >= end_offset {
5401 return Ok(());
5402 }
5403
5404 while _next_ordinal_to_read < 1 {
5406 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5407 _next_ordinal_to_read += 1;
5408 next_offset += envelope_size;
5409 }
5410
5411 let next_out_of_line = decoder.next_out_of_line();
5412 let handles_before = decoder.remaining_handles();
5413 if let Some((inlined, num_bytes, num_handles)) =
5414 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5415 {
5416 let member_inline_size = <fidl::encoding::HandleType<
5417 fidl::Event,
5418 { fidl::ObjectType::EVENT.into_raw() },
5419 2147483648,
5420 > as fidl::encoding::TypeMarker>::inline_size(
5421 decoder.context
5422 );
5423 if inlined != (member_inline_size <= 4) {
5424 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5425 }
5426 let inner_offset;
5427 let mut inner_depth = depth.clone();
5428 if inlined {
5429 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5430 inner_offset = next_offset;
5431 } else {
5432 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5433 inner_depth.increment()?;
5434 }
5435 let val_ref =
5436 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5437 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5438 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5439 {
5440 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5441 }
5442 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5443 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5444 }
5445 }
5446
5447 next_offset += envelope_size;
5448
5449 while next_offset < end_offset {
5451 _next_ordinal_to_read += 1;
5452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5453 next_offset += envelope_size;
5454 }
5455
5456 Ok(())
5457 }
5458 }
5459
5460 impl PowerElementArgs {
5461 #[inline(always)]
5462 fn max_ordinal_present(&self) -> u64 {
5463 if let Some(_) = self.token {
5464 return 4;
5465 }
5466 if let Some(_) = self.lessor_client {
5467 return 3;
5468 }
5469 if let Some(_) = self.runner_server {
5470 return 2;
5471 }
5472 if let Some(_) = self.control_client {
5473 return 1;
5474 }
5475 0
5476 }
5477 }
5478
5479 impl fidl::encoding::ResourceTypeMarker for PowerElementArgs {
5480 type Borrowed<'a> = &'a mut Self;
5481 fn take_or_borrow<'a>(
5482 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5483 ) -> Self::Borrowed<'a> {
5484 value
5485 }
5486 }
5487
5488 unsafe impl fidl::encoding::TypeMarker for PowerElementArgs {
5489 type Owned = Self;
5490
5491 #[inline(always)]
5492 fn inline_align(_context: fidl::encoding::Context) -> usize {
5493 8
5494 }
5495
5496 #[inline(always)]
5497 fn inline_size(_context: fidl::encoding::Context) -> usize {
5498 16
5499 }
5500 }
5501
5502 unsafe impl
5503 fidl::encoding::Encode<PowerElementArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
5504 for &mut PowerElementArgs
5505 {
5506 unsafe fn encode(
5507 self,
5508 encoder: &mut fidl::encoding::Encoder<
5509 '_,
5510 fidl::encoding::DefaultFuchsiaResourceDialect,
5511 >,
5512 offset: usize,
5513 mut depth: fidl::encoding::Depth,
5514 ) -> fidl::Result<()> {
5515 encoder.debug_check_bounds::<PowerElementArgs>(offset);
5516 let max_ordinal: u64 = self.max_ordinal_present();
5518 encoder.write_num(max_ordinal, offset);
5519 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5520 if max_ordinal == 0 {
5522 return Ok(());
5523 }
5524 depth.increment()?;
5525 let envelope_size = 8;
5526 let bytes_len = max_ordinal as usize * envelope_size;
5527 #[allow(unused_variables)]
5528 let offset = encoder.out_of_line_offset(bytes_len);
5529 let mut _prev_end_offset: usize = 0;
5530 if 1 > max_ordinal {
5531 return Ok(());
5532 }
5533
5534 let cur_offset: usize = (1 - 1) * envelope_size;
5537
5538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5540
5541 fidl::encoding::encode_in_envelope_optional::<
5546 fidl::encoding::Endpoint<
5547 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5548 >,
5549 fidl::encoding::DefaultFuchsiaResourceDialect,
5550 >(
5551 self.control_client.as_mut().map(
5552 <fidl::encoding::Endpoint<
5553 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5554 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5555 ),
5556 encoder,
5557 offset + cur_offset,
5558 depth,
5559 )?;
5560
5561 _prev_end_offset = cur_offset + envelope_size;
5562 if 2 > max_ordinal {
5563 return Ok(());
5564 }
5565
5566 let cur_offset: usize = (2 - 1) * envelope_size;
5569
5570 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5572
5573 fidl::encoding::encode_in_envelope_optional::<
5578 fidl::encoding::Endpoint<
5579 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5580 >,
5581 fidl::encoding::DefaultFuchsiaResourceDialect,
5582 >(
5583 self.runner_server.as_mut().map(
5584 <fidl::encoding::Endpoint<
5585 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5586 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5587 ),
5588 encoder,
5589 offset + cur_offset,
5590 depth,
5591 )?;
5592
5593 _prev_end_offset = cur_offset + envelope_size;
5594 if 3 > max_ordinal {
5595 return Ok(());
5596 }
5597
5598 let cur_offset: usize = (3 - 1) * envelope_size;
5601
5602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5604
5605 fidl::encoding::encode_in_envelope_optional::<
5610 fidl::encoding::Endpoint<
5611 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5612 >,
5613 fidl::encoding::DefaultFuchsiaResourceDialect,
5614 >(
5615 self.lessor_client.as_mut().map(
5616 <fidl::encoding::Endpoint<
5617 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5618 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5619 ),
5620 encoder,
5621 offset + cur_offset,
5622 depth,
5623 )?;
5624
5625 _prev_end_offset = cur_offset + envelope_size;
5626 if 4 > max_ordinal {
5627 return Ok(());
5628 }
5629
5630 let cur_offset: usize = (4 - 1) * envelope_size;
5633
5634 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5636
5637 fidl::encoding::encode_in_envelope_optional::<
5642 fidl::encoding::HandleType<
5643 fidl::Event,
5644 { fidl::ObjectType::EVENT.into_raw() },
5645 2147483648,
5646 >,
5647 fidl::encoding::DefaultFuchsiaResourceDialect,
5648 >(
5649 self.token.as_mut().map(
5650 <fidl::encoding::HandleType<
5651 fidl::Event,
5652 { fidl::ObjectType::EVENT.into_raw() },
5653 2147483648,
5654 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5655 ),
5656 encoder,
5657 offset + cur_offset,
5658 depth,
5659 )?;
5660
5661 _prev_end_offset = cur_offset + envelope_size;
5662
5663 Ok(())
5664 }
5665 }
5666
5667 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5668 for PowerElementArgs
5669 {
5670 #[inline(always)]
5671 fn new_empty() -> Self {
5672 Self::default()
5673 }
5674
5675 unsafe fn decode(
5676 &mut self,
5677 decoder: &mut fidl::encoding::Decoder<
5678 '_,
5679 fidl::encoding::DefaultFuchsiaResourceDialect,
5680 >,
5681 offset: usize,
5682 mut depth: fidl::encoding::Depth,
5683 ) -> fidl::Result<()> {
5684 decoder.debug_check_bounds::<Self>(offset);
5685 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5686 None => return Err(fidl::Error::NotNullable),
5687 Some(len) => len,
5688 };
5689 if len == 0 {
5691 return Ok(());
5692 };
5693 depth.increment()?;
5694 let envelope_size = 8;
5695 let bytes_len = len * envelope_size;
5696 let offset = decoder.out_of_line_offset(bytes_len)?;
5697 let mut _next_ordinal_to_read = 0;
5699 let mut next_offset = offset;
5700 let end_offset = offset + bytes_len;
5701 _next_ordinal_to_read += 1;
5702 if next_offset >= end_offset {
5703 return Ok(());
5704 }
5705
5706 while _next_ordinal_to_read < 1 {
5708 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5709 _next_ordinal_to_read += 1;
5710 next_offset += envelope_size;
5711 }
5712
5713 let next_out_of_line = decoder.next_out_of_line();
5714 let handles_before = decoder.remaining_handles();
5715 if let Some((inlined, num_bytes, num_handles)) =
5716 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5717 {
5718 let member_inline_size = <fidl::encoding::Endpoint<
5719 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5720 > as fidl::encoding::TypeMarker>::inline_size(
5721 decoder.context
5722 );
5723 if inlined != (member_inline_size <= 4) {
5724 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5725 }
5726 let inner_offset;
5727 let mut inner_depth = depth.clone();
5728 if inlined {
5729 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5730 inner_offset = next_offset;
5731 } else {
5732 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5733 inner_depth.increment()?;
5734 }
5735 let val_ref = self.control_client.get_or_insert_with(|| {
5736 fidl::new_empty!(
5737 fidl::encoding::Endpoint<
5738 fidl::endpoints::ClientEnd<
5739 fidl_fuchsia_power_broker::ElementControlMarker,
5740 >,
5741 >,
5742 fidl::encoding::DefaultFuchsiaResourceDialect
5743 )
5744 });
5745 fidl::decode!(
5746 fidl::encoding::Endpoint<
5747 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5748 >,
5749 fidl::encoding::DefaultFuchsiaResourceDialect,
5750 val_ref,
5751 decoder,
5752 inner_offset,
5753 inner_depth
5754 )?;
5755 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5756 {
5757 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5758 }
5759 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5760 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5761 }
5762 }
5763
5764 next_offset += envelope_size;
5765 _next_ordinal_to_read += 1;
5766 if next_offset >= end_offset {
5767 return Ok(());
5768 }
5769
5770 while _next_ordinal_to_read < 2 {
5772 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5773 _next_ordinal_to_read += 1;
5774 next_offset += envelope_size;
5775 }
5776
5777 let next_out_of_line = decoder.next_out_of_line();
5778 let handles_before = decoder.remaining_handles();
5779 if let Some((inlined, num_bytes, num_handles)) =
5780 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5781 {
5782 let member_inline_size = <fidl::encoding::Endpoint<
5783 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5784 > as fidl::encoding::TypeMarker>::inline_size(
5785 decoder.context
5786 );
5787 if inlined != (member_inline_size <= 4) {
5788 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5789 }
5790 let inner_offset;
5791 let mut inner_depth = depth.clone();
5792 if inlined {
5793 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5794 inner_offset = next_offset;
5795 } else {
5796 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5797 inner_depth.increment()?;
5798 }
5799 let val_ref = self.runner_server.get_or_insert_with(|| {
5800 fidl::new_empty!(
5801 fidl::encoding::Endpoint<
5802 fidl::endpoints::ServerEnd<
5803 fidl_fuchsia_power_broker::ElementRunnerMarker,
5804 >,
5805 >,
5806 fidl::encoding::DefaultFuchsiaResourceDialect
5807 )
5808 });
5809 fidl::decode!(
5810 fidl::encoding::Endpoint<
5811 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5812 >,
5813 fidl::encoding::DefaultFuchsiaResourceDialect,
5814 val_ref,
5815 decoder,
5816 inner_offset,
5817 inner_depth
5818 )?;
5819 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5820 {
5821 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5822 }
5823 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5824 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5825 }
5826 }
5827
5828 next_offset += envelope_size;
5829 _next_ordinal_to_read += 1;
5830 if next_offset >= end_offset {
5831 return Ok(());
5832 }
5833
5834 while _next_ordinal_to_read < 3 {
5836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5837 _next_ordinal_to_read += 1;
5838 next_offset += envelope_size;
5839 }
5840
5841 let next_out_of_line = decoder.next_out_of_line();
5842 let handles_before = decoder.remaining_handles();
5843 if let Some((inlined, num_bytes, num_handles)) =
5844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5845 {
5846 let member_inline_size = <fidl::encoding::Endpoint<
5847 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5848 > as fidl::encoding::TypeMarker>::inline_size(
5849 decoder.context
5850 );
5851 if inlined != (member_inline_size <= 4) {
5852 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5853 }
5854 let inner_offset;
5855 let mut inner_depth = depth.clone();
5856 if inlined {
5857 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5858 inner_offset = next_offset;
5859 } else {
5860 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5861 inner_depth.increment()?;
5862 }
5863 let val_ref = self.lessor_client.get_or_insert_with(|| {
5864 fidl::new_empty!(
5865 fidl::encoding::Endpoint<
5866 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5867 >,
5868 fidl::encoding::DefaultFuchsiaResourceDialect
5869 )
5870 });
5871 fidl::decode!(
5872 fidl::encoding::Endpoint<
5873 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5874 >,
5875 fidl::encoding::DefaultFuchsiaResourceDialect,
5876 val_ref,
5877 decoder,
5878 inner_offset,
5879 inner_depth
5880 )?;
5881 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5882 {
5883 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5884 }
5885 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5886 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5887 }
5888 }
5889
5890 next_offset += envelope_size;
5891 _next_ordinal_to_read += 1;
5892 if next_offset >= end_offset {
5893 return Ok(());
5894 }
5895
5896 while _next_ordinal_to_read < 4 {
5898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5899 _next_ordinal_to_read += 1;
5900 next_offset += envelope_size;
5901 }
5902
5903 let next_out_of_line = decoder.next_out_of_line();
5904 let handles_before = decoder.remaining_handles();
5905 if let Some((inlined, num_bytes, num_handles)) =
5906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5907 {
5908 let member_inline_size = <fidl::encoding::HandleType<
5909 fidl::Event,
5910 { fidl::ObjectType::EVENT.into_raw() },
5911 2147483648,
5912 > as fidl::encoding::TypeMarker>::inline_size(
5913 decoder.context
5914 );
5915 if inlined != (member_inline_size <= 4) {
5916 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5917 }
5918 let inner_offset;
5919 let mut inner_depth = depth.clone();
5920 if inlined {
5921 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5922 inner_offset = next_offset;
5923 } else {
5924 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5925 inner_depth.increment()?;
5926 }
5927 let val_ref =
5928 self.token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5929 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5930 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5931 {
5932 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5933 }
5934 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5935 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5936 }
5937 }
5938
5939 next_offset += envelope_size;
5940
5941 while next_offset < end_offset {
5943 _next_ordinal_to_read += 1;
5944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5945 next_offset += envelope_size;
5946 }
5947
5948 Ok(())
5949 }
5950 }
5951
5952 impl fidl::encoding::ResourceTypeMarker for DriverResult {
5953 type Borrowed<'a> = &'a mut Self;
5954 fn take_or_borrow<'a>(
5955 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5956 ) -> Self::Borrowed<'a> {
5957 value
5958 }
5959 }
5960
5961 unsafe impl fidl::encoding::TypeMarker for DriverResult {
5962 type Owned = Self;
5963
5964 #[inline(always)]
5965 fn inline_align(_context: fidl::encoding::Context) -> usize {
5966 8
5967 }
5968
5969 #[inline(always)]
5970 fn inline_size(_context: fidl::encoding::Context) -> usize {
5971 16
5972 }
5973 }
5974
5975 unsafe impl fidl::encoding::Encode<DriverResult, fidl::encoding::DefaultFuchsiaResourceDialect>
5976 for &mut DriverResult
5977 {
5978 #[inline]
5979 unsafe fn encode(
5980 self,
5981 encoder: &mut fidl::encoding::Encoder<
5982 '_,
5983 fidl::encoding::DefaultFuchsiaResourceDialect,
5984 >,
5985 offset: usize,
5986 _depth: fidl::encoding::Depth,
5987 ) -> fidl::Result<()> {
5988 encoder.debug_check_bounds::<DriverResult>(offset);
5989 encoder.write_num::<u64>(self.ordinal(), offset);
5990 match self {
5991 DriverResult::DriverStartedNodeToken(ref mut val) => {
5992 fidl::encoding::encode_in_envelope::<
5993 fidl::encoding::HandleType<
5994 fidl::Event,
5995 { fidl::ObjectType::EVENT.into_raw() },
5996 2147483648,
5997 >,
5998 fidl::encoding::DefaultFuchsiaResourceDialect,
5999 >(
6000 <fidl::encoding::HandleType<
6001 fidl::Event,
6002 { fidl::ObjectType::EVENT.into_raw() },
6003 2147483648,
6004 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
6005 val
6006 ),
6007 encoder,
6008 offset + 8,
6009 _depth,
6010 )
6011 }
6012 DriverResult::MatchError(ref val) => fidl::encoding::encode_in_envelope::<
6013 i32,
6014 fidl::encoding::DefaultFuchsiaResourceDialect,
6015 >(
6016 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6017 encoder,
6018 offset + 8,
6019 _depth,
6020 ),
6021 DriverResult::StartError(ref val) => fidl::encoding::encode_in_envelope::<
6022 i32,
6023 fidl::encoding::DefaultFuchsiaResourceDialect,
6024 >(
6025 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6026 encoder,
6027 offset + 8,
6028 _depth,
6029 ),
6030 DriverResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6031 }
6032 }
6033 }
6034
6035 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {
6036 #[inline(always)]
6037 fn new_empty() -> Self {
6038 Self::__SourceBreaking { unknown_ordinal: 0 }
6039 }
6040
6041 #[inline]
6042 unsafe fn decode(
6043 &mut self,
6044 decoder: &mut fidl::encoding::Decoder<
6045 '_,
6046 fidl::encoding::DefaultFuchsiaResourceDialect,
6047 >,
6048 offset: usize,
6049 mut depth: fidl::encoding::Depth,
6050 ) -> fidl::Result<()> {
6051 decoder.debug_check_bounds::<Self>(offset);
6052 #[allow(unused_variables)]
6053 let next_out_of_line = decoder.next_out_of_line();
6054 let handles_before = decoder.remaining_handles();
6055 let (ordinal, inlined, num_bytes, num_handles) =
6056 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6057
6058 let member_inline_size = match ordinal {
6059 1 => <fidl::encoding::HandleType<
6060 fidl::Event,
6061 { fidl::ObjectType::EVENT.into_raw() },
6062 2147483648,
6063 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6064 2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6065 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6066 0 => return Err(fidl::Error::UnknownUnionTag),
6067 _ => num_bytes as usize,
6068 };
6069
6070 if inlined != (member_inline_size <= 4) {
6071 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6072 }
6073 let _inner_offset;
6074 if inlined {
6075 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6076 _inner_offset = offset + 8;
6077 } else {
6078 depth.increment()?;
6079 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6080 }
6081 match ordinal {
6082 1 => {
6083 #[allow(irrefutable_let_patterns)]
6084 if let DriverResult::DriverStartedNodeToken(_) = self {
6085 } else {
6087 *self = DriverResult::DriverStartedNodeToken(
6089 fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
6090 );
6091 }
6092 #[allow(irrefutable_let_patterns)]
6093 if let DriverResult::DriverStartedNodeToken(ref mut val) = self {
6094 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
6095 } else {
6096 unreachable!()
6097 }
6098 }
6099 2 => {
6100 #[allow(irrefutable_let_patterns)]
6101 if let DriverResult::MatchError(_) = self {
6102 } else {
6104 *self = DriverResult::MatchError(fidl::new_empty!(
6106 i32,
6107 fidl::encoding::DefaultFuchsiaResourceDialect
6108 ));
6109 }
6110 #[allow(irrefutable_let_patterns)]
6111 if let DriverResult::MatchError(ref mut val) = self {
6112 fidl::decode!(
6113 i32,
6114 fidl::encoding::DefaultFuchsiaResourceDialect,
6115 val,
6116 decoder,
6117 _inner_offset,
6118 depth
6119 )?;
6120 } else {
6121 unreachable!()
6122 }
6123 }
6124 3 => {
6125 #[allow(irrefutable_let_patterns)]
6126 if let DriverResult::StartError(_) = self {
6127 } else {
6129 *self = DriverResult::StartError(fidl::new_empty!(
6131 i32,
6132 fidl::encoding::DefaultFuchsiaResourceDialect
6133 ));
6134 }
6135 #[allow(irrefutable_let_patterns)]
6136 if let DriverResult::StartError(ref mut val) = self {
6137 fidl::decode!(
6138 i32,
6139 fidl::encoding::DefaultFuchsiaResourceDialect,
6140 val,
6141 decoder,
6142 _inner_offset,
6143 depth
6144 )?;
6145 } else {
6146 unreachable!()
6147 }
6148 }
6149 #[allow(deprecated)]
6150 ordinal => {
6151 for _ in 0..num_handles {
6152 decoder.drop_next_handle()?;
6153 }
6154 *self = DriverResult::__SourceBreaking { unknown_ordinal: ordinal };
6155 }
6156 }
6157 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6159 }
6160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6162 }
6163 Ok(())
6164 }
6165 }
6166}