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