1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_driver_framework__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct DriverStartRequest {
16 pub start_args: DriverStartArgs,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartRequest {}
20
21#[derive(Debug, PartialEq)]
22pub struct NodeAddChildRequest {
23 pub args: NodeAddArgs,
24 pub controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
25 pub node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
26}
27
28impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddChildRequest {}
29
30#[derive(Debug, Default, PartialEq)]
31pub struct DevfsAddArgs {
32 pub connector: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
36 pub class_name: Option<String>,
41 pub inspect: Option<fidl::Vmo>,
44 pub connector_supports: Option<fidl_fuchsia_device_fs::ConnectionType>,
49 pub controller_connector:
55 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
56 #[doc(hidden)]
57 pub __source_breaking: fidl::marker::SourceBreaking,
58}
59
60impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {}
61
62#[derive(Debug, Default, PartialEq)]
64pub struct DriverStartArgs {
65 pub node: Option<fidl::endpoints::ClientEnd<NodeMarker>>,
67 pub symbols: Option<Vec<NodeSymbol>>,
71 pub url: Option<String>,
74 pub program: Option<fidl_fuchsia_data::Dictionary>,
90 pub incoming: Option<Vec<fidl_fuchsia_component_runner::ComponentNamespaceEntry>>,
92 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
94 pub config: Option<fidl::Vmo>,
96 pub node_name: Option<String>,
98 pub node_properties: Option<Vec<NodePropertyEntry>>,
107 pub node_offers: Option<Vec<Offer>>,
109 pub node_token: Option<fidl::Event>,
112 pub node_properties_2: Option<Vec<NodePropertyEntry2>>,
113 pub vmar: Option<fidl::Vmar>,
116 pub power_element_args: Option<PowerElementArgs>,
123 #[doc(hidden)]
124 pub __source_breaking: fidl::marker::SourceBreaking,
125}
126
127impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartArgs {}
128
129#[derive(Debug, Default, PartialEq)]
131pub struct NodeAddArgs {
132 pub name: Option<String>,
134 pub symbols: Option<Vec<NodeSymbol>>,
136 pub properties: Option<Vec<NodeProperty>>,
139 pub devfs_args: Option<DevfsAddArgs>,
141 pub offers2: Option<Vec<Offer>>,
146 pub bus_info: Option<BusInfo>,
149 pub properties2: Option<Vec<NodeProperty2>>,
152 pub offers_dictionary: Option<fidl_fuchsia_component_sandbox::DictionaryRef>,
156 #[doc(hidden)]
157 pub __source_breaking: fidl::marker::SourceBreaking,
158}
159
160impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {}
161
162#[derive(Debug, Default, PartialEq)]
163pub struct NodeControllerOnBindRequest {
164 pub node_token: Option<fidl::Event>,
167 #[doc(hidden)]
168 pub __source_breaking: fidl::marker::SourceBreaking,
169}
170
171impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
172 for NodeControllerOnBindRequest
173{
174}
175
176#[derive(Debug, Default, PartialEq)]
177pub struct PowerElementArgs {
178 pub control_client:
179 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>>,
180 pub runner_server:
181 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>>,
182 pub lessor_client: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>>,
183 pub token: Option<fidl::Event>,
184 #[doc(hidden)]
185 pub __source_breaking: fidl::marker::SourceBreaking,
186}
187
188impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PowerElementArgs {}
189
190#[derive(Debug)]
191pub enum DriverResult {
192 DriverStartedNodeToken(fidl::Event),
194 MatchError(i32),
196 StartError(i32),
198 #[doc(hidden)]
199 __SourceBreaking { unknown_ordinal: u64 },
200}
201
202#[macro_export]
204macro_rules! DriverResultUnknown {
205 () => {
206 _
207 };
208}
209
210impl PartialEq for DriverResult {
212 fn eq(&self, other: &Self) -> bool {
213 match (self, other) {
214 (Self::DriverStartedNodeToken(x), Self::DriverStartedNodeToken(y)) => *x == *y,
215 (Self::MatchError(x), Self::MatchError(y)) => *x == *y,
216 (Self::StartError(x), Self::StartError(y)) => *x == *y,
217 _ => false,
218 }
219 }
220}
221
222impl DriverResult {
223 #[inline]
224 pub fn ordinal(&self) -> u64 {
225 match *self {
226 Self::DriverStartedNodeToken(_) => 1,
227 Self::MatchError(_) => 2,
228 Self::StartError(_) => 3,
229 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
230 }
231 }
232
233 #[inline]
234 pub fn unknown_variant_for_testing() -> Self {
235 Self::__SourceBreaking { unknown_ordinal: 0 }
236 }
237
238 #[inline]
239 pub fn is_unknown(&self) -> bool {
240 match self {
241 Self::__SourceBreaking { .. } => true,
242 _ => false,
243 }
244 }
245}
246
247impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {}
248
249#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
250pub struct CompositeNodeManagerMarker;
251
252impl fidl::endpoints::ProtocolMarker for CompositeNodeManagerMarker {
253 type Proxy = CompositeNodeManagerProxy;
254 type RequestStream = CompositeNodeManagerRequestStream;
255 #[cfg(target_os = "fuchsia")]
256 type SynchronousProxy = CompositeNodeManagerSynchronousProxy;
257
258 const DEBUG_NAME: &'static str = "fuchsia.driver.framework.CompositeNodeManager";
259}
260impl fidl::endpoints::DiscoverableProtocolMarker for CompositeNodeManagerMarker {}
261pub type CompositeNodeManagerAddSpecResult = Result<(), CompositeNodeSpecError>;
262
263pub trait CompositeNodeManagerProxyInterface: Send + Sync {
264 type AddSpecResponseFut: std::future::Future<Output = Result<CompositeNodeManagerAddSpecResult, fidl::Error>>
265 + Send;
266 fn r#add_spec(&self, payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut;
267}
268#[derive(Debug)]
269#[cfg(target_os = "fuchsia")]
270pub struct CompositeNodeManagerSynchronousProxy {
271 client: fidl::client::sync::Client,
272}
273
274#[cfg(target_os = "fuchsia")]
275impl fidl::endpoints::SynchronousProxy for CompositeNodeManagerSynchronousProxy {
276 type Proxy = CompositeNodeManagerProxy;
277 type Protocol = CompositeNodeManagerMarker;
278
279 fn from_channel(inner: fidl::Channel) -> Self {
280 Self::new(inner)
281 }
282
283 fn into_channel(self) -> fidl::Channel {
284 self.client.into_channel()
285 }
286
287 fn as_channel(&self) -> &fidl::Channel {
288 self.client.as_channel()
289 }
290}
291
292#[cfg(target_os = "fuchsia")]
293impl CompositeNodeManagerSynchronousProxy {
294 pub fn new(channel: fidl::Channel) -> Self {
295 let protocol_name =
296 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
297 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
298 }
299
300 pub fn into_channel(self) -> fidl::Channel {
301 self.client.into_channel()
302 }
303
304 pub fn wait_for_event(
307 &self,
308 deadline: zx::MonotonicInstant,
309 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
310 CompositeNodeManagerEvent::decode(self.client.wait_for_event(deadline)?)
311 }
312
313 pub fn r#add_spec(
315 &self,
316 mut payload: &CompositeNodeSpec,
317 ___deadline: zx::MonotonicInstant,
318 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
319 let _response =
320 self.client
321 .send_query::<CompositeNodeSpec, fidl::encoding::FlexibleResultType<
322 fidl::encoding::EmptyStruct,
323 CompositeNodeSpecError,
324 >>(
325 payload,
326 0x524e353c8130cc74,
327 fidl::encoding::DynamicFlags::FLEXIBLE,
328 ___deadline,
329 )?
330 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
331 Ok(_response.map(|x| x))
332 }
333}
334
335#[cfg(target_os = "fuchsia")]
336impl From<CompositeNodeManagerSynchronousProxy> for zx::NullableHandle {
337 fn from(value: CompositeNodeManagerSynchronousProxy) -> Self {
338 value.into_channel().into()
339 }
340}
341
342#[cfg(target_os = "fuchsia")]
343impl From<fidl::Channel> for CompositeNodeManagerSynchronousProxy {
344 fn from(value: fidl::Channel) -> Self {
345 Self::new(value)
346 }
347}
348
349#[cfg(target_os = "fuchsia")]
350impl fidl::endpoints::FromClient for CompositeNodeManagerSynchronousProxy {
351 type Protocol = CompositeNodeManagerMarker;
352
353 fn from_client(value: fidl::endpoints::ClientEnd<CompositeNodeManagerMarker>) -> Self {
354 Self::new(value.into_channel())
355 }
356}
357
358#[derive(Debug, Clone)]
359pub struct CompositeNodeManagerProxy {
360 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
361}
362
363impl fidl::endpoints::Proxy for CompositeNodeManagerProxy {
364 type Protocol = CompositeNodeManagerMarker;
365
366 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
367 Self::new(inner)
368 }
369
370 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
371 self.client.into_channel().map_err(|client| Self { client })
372 }
373
374 fn as_channel(&self) -> &::fidl::AsyncChannel {
375 self.client.as_channel()
376 }
377}
378
379impl CompositeNodeManagerProxy {
380 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
382 let protocol_name =
383 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
384 Self { client: fidl::client::Client::new(channel, protocol_name) }
385 }
386
387 pub fn take_event_stream(&self) -> CompositeNodeManagerEventStream {
393 CompositeNodeManagerEventStream { event_receiver: self.client.take_event_receiver() }
394 }
395
396 pub fn r#add_spec(
398 &self,
399 mut payload: &CompositeNodeSpec,
400 ) -> fidl::client::QueryResponseFut<
401 CompositeNodeManagerAddSpecResult,
402 fidl::encoding::DefaultFuchsiaResourceDialect,
403 > {
404 CompositeNodeManagerProxyInterface::r#add_spec(self, payload)
405 }
406}
407
408impl CompositeNodeManagerProxyInterface for CompositeNodeManagerProxy {
409 type AddSpecResponseFut = fidl::client::QueryResponseFut<
410 CompositeNodeManagerAddSpecResult,
411 fidl::encoding::DefaultFuchsiaResourceDialect,
412 >;
413 fn r#add_spec(&self, mut payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut {
414 fn _decode(
415 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
416 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
417 let _response = fidl::client::decode_transaction_body::<
418 fidl::encoding::FlexibleResultType<
419 fidl::encoding::EmptyStruct,
420 CompositeNodeSpecError,
421 >,
422 fidl::encoding::DefaultFuchsiaResourceDialect,
423 0x524e353c8130cc74,
424 >(_buf?)?
425 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
426 Ok(_response.map(|x| x))
427 }
428 self.client.send_query_and_decode::<CompositeNodeSpec, CompositeNodeManagerAddSpecResult>(
429 payload,
430 0x524e353c8130cc74,
431 fidl::encoding::DynamicFlags::FLEXIBLE,
432 _decode,
433 )
434 }
435}
436
437pub struct CompositeNodeManagerEventStream {
438 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
439}
440
441impl std::marker::Unpin for CompositeNodeManagerEventStream {}
442
443impl futures::stream::FusedStream for CompositeNodeManagerEventStream {
444 fn is_terminated(&self) -> bool {
445 self.event_receiver.is_terminated()
446 }
447}
448
449impl futures::Stream for CompositeNodeManagerEventStream {
450 type Item = Result<CompositeNodeManagerEvent, fidl::Error>;
451
452 fn poll_next(
453 mut self: std::pin::Pin<&mut Self>,
454 cx: &mut std::task::Context<'_>,
455 ) -> std::task::Poll<Option<Self::Item>> {
456 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
457 &mut self.event_receiver,
458 cx
459 )?) {
460 Some(buf) => std::task::Poll::Ready(Some(CompositeNodeManagerEvent::decode(buf))),
461 None => std::task::Poll::Ready(None),
462 }
463 }
464}
465
466#[derive(Debug)]
467pub enum CompositeNodeManagerEvent {
468 #[non_exhaustive]
469 _UnknownEvent {
470 ordinal: u64,
472 },
473}
474
475impl CompositeNodeManagerEvent {
476 fn decode(
478 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
479 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
480 let (bytes, _handles) = buf.split_mut();
481 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
482 debug_assert_eq!(tx_header.tx_id, 0);
483 match tx_header.ordinal {
484 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
485 Ok(CompositeNodeManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
486 }
487 _ => Err(fidl::Error::UnknownOrdinal {
488 ordinal: tx_header.ordinal,
489 protocol_name:
490 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
491 }),
492 }
493 }
494}
495
496pub struct CompositeNodeManagerRequestStream {
498 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
499 is_terminated: bool,
500}
501
502impl std::marker::Unpin for CompositeNodeManagerRequestStream {}
503
504impl futures::stream::FusedStream for CompositeNodeManagerRequestStream {
505 fn is_terminated(&self) -> bool {
506 self.is_terminated
507 }
508}
509
510impl fidl::endpoints::RequestStream for CompositeNodeManagerRequestStream {
511 type Protocol = CompositeNodeManagerMarker;
512 type ControlHandle = CompositeNodeManagerControlHandle;
513
514 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
515 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
516 }
517
518 fn control_handle(&self) -> Self::ControlHandle {
519 CompositeNodeManagerControlHandle { inner: self.inner.clone() }
520 }
521
522 fn into_inner(
523 self,
524 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
525 {
526 (self.inner, self.is_terminated)
527 }
528
529 fn from_inner(
530 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
531 is_terminated: bool,
532 ) -> Self {
533 Self { inner, is_terminated }
534 }
535}
536
537impl futures::Stream for CompositeNodeManagerRequestStream {
538 type Item = Result<CompositeNodeManagerRequest, fidl::Error>;
539
540 fn poll_next(
541 mut self: std::pin::Pin<&mut Self>,
542 cx: &mut std::task::Context<'_>,
543 ) -> std::task::Poll<Option<Self::Item>> {
544 let this = &mut *self;
545 if this.inner.check_shutdown(cx) {
546 this.is_terminated = true;
547 return std::task::Poll::Ready(None);
548 }
549 if this.is_terminated {
550 panic!("polled CompositeNodeManagerRequestStream after completion");
551 }
552 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
553 |bytes, handles| {
554 match this.inner.channel().read_etc(cx, bytes, handles) {
555 std::task::Poll::Ready(Ok(())) => {}
556 std::task::Poll::Pending => return std::task::Poll::Pending,
557 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
558 this.is_terminated = true;
559 return std::task::Poll::Ready(None);
560 }
561 std::task::Poll::Ready(Err(e)) => {
562 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
563 e.into(),
564 ))));
565 }
566 }
567
568 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
570
571 std::task::Poll::Ready(Some(match header.ordinal {
572 0x524e353c8130cc74 => {
573 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
574 let mut req = fidl::new_empty!(CompositeNodeSpec, fidl::encoding::DefaultFuchsiaResourceDialect);
575 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CompositeNodeSpec>(&header, _body_bytes, handles, &mut req)?;
576 let control_handle = CompositeNodeManagerControlHandle {
577 inner: this.inner.clone(),
578 };
579 Ok(CompositeNodeManagerRequest::AddSpec {payload: req,
580 responder: CompositeNodeManagerAddSpecResponder {
581 control_handle: std::mem::ManuallyDrop::new(control_handle),
582 tx_id: header.tx_id,
583 },
584 })
585 }
586 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
587 Ok(CompositeNodeManagerRequest::_UnknownMethod {
588 ordinal: header.ordinal,
589 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
590 method_type: fidl::MethodType::OneWay,
591 })
592 }
593 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
594 this.inner.send_framework_err(
595 fidl::encoding::FrameworkErr::UnknownMethod,
596 header.tx_id,
597 header.ordinal,
598 header.dynamic_flags(),
599 (bytes, handles),
600 )?;
601 Ok(CompositeNodeManagerRequest::_UnknownMethod {
602 ordinal: header.ordinal,
603 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
604 method_type: fidl::MethodType::TwoWay,
605 })
606 }
607 _ => Err(fidl::Error::UnknownOrdinal {
608 ordinal: header.ordinal,
609 protocol_name: <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
610 }),
611 }))
612 },
613 )
614 }
615}
616
617#[derive(Debug)]
623pub enum CompositeNodeManagerRequest {
624 AddSpec { payload: CompositeNodeSpec, responder: CompositeNodeManagerAddSpecResponder },
626 #[non_exhaustive]
628 _UnknownMethod {
629 ordinal: u64,
631 control_handle: CompositeNodeManagerControlHandle,
632 method_type: fidl::MethodType,
633 },
634}
635
636impl CompositeNodeManagerRequest {
637 #[allow(irrefutable_let_patterns)]
638 pub fn into_add_spec(
639 self,
640 ) -> Option<(CompositeNodeSpec, CompositeNodeManagerAddSpecResponder)> {
641 if let CompositeNodeManagerRequest::AddSpec { payload, responder } = self {
642 Some((payload, responder))
643 } else {
644 None
645 }
646 }
647
648 pub fn method_name(&self) -> &'static str {
650 match *self {
651 CompositeNodeManagerRequest::AddSpec { .. } => "add_spec",
652 CompositeNodeManagerRequest::_UnknownMethod {
653 method_type: fidl::MethodType::OneWay,
654 ..
655 } => "unknown one-way method",
656 CompositeNodeManagerRequest::_UnknownMethod {
657 method_type: fidl::MethodType::TwoWay,
658 ..
659 } => "unknown two-way method",
660 }
661 }
662}
663
664#[derive(Debug, Clone)]
665pub struct CompositeNodeManagerControlHandle {
666 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
667}
668
669impl fidl::endpoints::ControlHandle for CompositeNodeManagerControlHandle {
670 fn shutdown(&self) {
671 self.inner.shutdown()
672 }
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
1483 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1484 self.inner.shutdown_with_epitaph(status)
1485 }
1486
1487 fn is_closed(&self) -> bool {
1488 self.inner.channel().is_closed()
1489 }
1490 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1491 self.inner.channel().on_closed()
1492 }
1493
1494 #[cfg(target_os = "fuchsia")]
1495 fn signal_peer(
1496 &self,
1497 clear_mask: zx::Signals,
1498 set_mask: zx::Signals,
1499 ) -> Result<(), zx_status::Status> {
1500 use fidl::Peered;
1501 self.inner.channel().signal_peer(clear_mask, set_mask)
1502 }
1503}
1504
1505impl NodeControlHandle {}
1506
1507#[must_use = "FIDL methods require a response to be sent"]
1508#[derive(Debug)]
1509pub struct NodeAddChildResponder {
1510 control_handle: std::mem::ManuallyDrop<NodeControlHandle>,
1511 tx_id: u32,
1512}
1513
1514impl std::ops::Drop for NodeAddChildResponder {
1518 fn drop(&mut self) {
1519 self.control_handle.shutdown();
1520 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1522 }
1523}
1524
1525impl fidl::endpoints::Responder for NodeAddChildResponder {
1526 type ControlHandle = NodeControlHandle;
1527
1528 fn control_handle(&self) -> &NodeControlHandle {
1529 &self.control_handle
1530 }
1531
1532 fn drop_without_shutdown(mut self) {
1533 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1535 std::mem::forget(self);
1537 }
1538}
1539
1540impl NodeAddChildResponder {
1541 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1545 let _result = self.send_raw(result);
1546 if _result.is_err() {
1547 self.control_handle.shutdown();
1548 }
1549 self.drop_without_shutdown();
1550 _result
1551 }
1552
1553 pub fn send_no_shutdown_on_err(
1555 self,
1556 mut result: Result<(), NodeError>,
1557 ) -> Result<(), fidl::Error> {
1558 let _result = self.send_raw(result);
1559 self.drop_without_shutdown();
1560 _result
1561 }
1562
1563 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1564 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1565 fidl::encoding::EmptyStruct,
1566 NodeError,
1567 >>(
1568 fidl::encoding::FlexibleResult::new(result),
1569 self.tx_id,
1570 0x77d10dff3c1ea129,
1571 fidl::encoding::DynamicFlags::FLEXIBLE,
1572 )
1573 }
1574}
1575
1576#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1577pub struct NodeControllerMarker;
1578
1579impl fidl::endpoints::ProtocolMarker for NodeControllerMarker {
1580 type Proxy = NodeControllerProxy;
1581 type RequestStream = NodeControllerRequestStream;
1582 #[cfg(target_os = "fuchsia")]
1583 type SynchronousProxy = NodeControllerSynchronousProxy;
1584
1585 const DEBUG_NAME: &'static str = "(anonymous) NodeController";
1586}
1587pub type NodeControllerRequestBindResult = Result<(), i32>;
1588pub type NodeControllerWaitForDriverResult = Result<DriverResult, i32>;
1589
1590pub trait NodeControllerProxyInterface: Send + Sync {
1591 fn r#remove(&self) -> Result<(), fidl::Error>;
1592 type RequestBindResponseFut: std::future::Future<Output = Result<NodeControllerRequestBindResult, fidl::Error>>
1593 + Send;
1594 fn r#request_bind(
1595 &self,
1596 payload: &NodeControllerRequestBindRequest,
1597 ) -> Self::RequestBindResponseFut;
1598 type WaitForDriverResponseFut: std::future::Future<Output = Result<NodeControllerWaitForDriverResult, fidl::Error>>
1599 + Send;
1600 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut;
1601}
1602#[derive(Debug)]
1603#[cfg(target_os = "fuchsia")]
1604pub struct NodeControllerSynchronousProxy {
1605 client: fidl::client::sync::Client,
1606}
1607
1608#[cfg(target_os = "fuchsia")]
1609impl fidl::endpoints::SynchronousProxy for NodeControllerSynchronousProxy {
1610 type Proxy = NodeControllerProxy;
1611 type Protocol = NodeControllerMarker;
1612
1613 fn from_channel(inner: fidl::Channel) -> Self {
1614 Self::new(inner)
1615 }
1616
1617 fn into_channel(self) -> fidl::Channel {
1618 self.client.into_channel()
1619 }
1620
1621 fn as_channel(&self) -> &fidl::Channel {
1622 self.client.as_channel()
1623 }
1624}
1625
1626#[cfg(target_os = "fuchsia")]
1627impl NodeControllerSynchronousProxy {
1628 pub fn new(channel: fidl::Channel) -> Self {
1629 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1630 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1631 }
1632
1633 pub fn into_channel(self) -> fidl::Channel {
1634 self.client.into_channel()
1635 }
1636
1637 pub fn wait_for_event(
1640 &self,
1641 deadline: zx::MonotonicInstant,
1642 ) -> Result<NodeControllerEvent, fidl::Error> {
1643 NodeControllerEvent::decode(self.client.wait_for_event(deadline)?)
1644 }
1645
1646 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1648 self.client.send::<fidl::encoding::EmptyPayload>(
1649 (),
1650 0x54fa8b3dfe7bb341,
1651 fidl::encoding::DynamicFlags::FLEXIBLE,
1652 )
1653 }
1654
1655 pub fn r#request_bind(
1662 &self,
1663 mut payload: &NodeControllerRequestBindRequest,
1664 ___deadline: zx::MonotonicInstant,
1665 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1666 let _response = self.client.send_query::<
1667 NodeControllerRequestBindRequest,
1668 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1669 >(
1670 payload,
1671 0x41b954726b13508f,
1672 fidl::encoding::DynamicFlags::FLEXIBLE,
1673 ___deadline,
1674 )?
1675 .into_result::<NodeControllerMarker>("request_bind")?;
1676 Ok(_response.map(|x| x))
1677 }
1678
1679 pub fn r#wait_for_driver(
1686 &self,
1687 ___deadline: zx::MonotonicInstant,
1688 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1689 let _response = self.client.send_query::<
1690 fidl::encoding::EmptyPayload,
1691 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1692 >(
1693 (),
1694 0x69f7106e47d81387,
1695 fidl::encoding::DynamicFlags::FLEXIBLE,
1696 ___deadline,
1697 )?
1698 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1699 Ok(_response.map(|x| x))
1700 }
1701}
1702
1703#[cfg(target_os = "fuchsia")]
1704impl From<NodeControllerSynchronousProxy> for zx::NullableHandle {
1705 fn from(value: NodeControllerSynchronousProxy) -> Self {
1706 value.into_channel().into()
1707 }
1708}
1709
1710#[cfg(target_os = "fuchsia")]
1711impl From<fidl::Channel> for NodeControllerSynchronousProxy {
1712 fn from(value: fidl::Channel) -> Self {
1713 Self::new(value)
1714 }
1715}
1716
1717#[cfg(target_os = "fuchsia")]
1718impl fidl::endpoints::FromClient for NodeControllerSynchronousProxy {
1719 type Protocol = NodeControllerMarker;
1720
1721 fn from_client(value: fidl::endpoints::ClientEnd<NodeControllerMarker>) -> Self {
1722 Self::new(value.into_channel())
1723 }
1724}
1725
1726#[derive(Debug, Clone)]
1727pub struct NodeControllerProxy {
1728 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1729}
1730
1731impl fidl::endpoints::Proxy for NodeControllerProxy {
1732 type Protocol = NodeControllerMarker;
1733
1734 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1735 Self::new(inner)
1736 }
1737
1738 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1739 self.client.into_channel().map_err(|client| Self { client })
1740 }
1741
1742 fn as_channel(&self) -> &::fidl::AsyncChannel {
1743 self.client.as_channel()
1744 }
1745}
1746
1747impl NodeControllerProxy {
1748 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1750 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1751 Self { client: fidl::client::Client::new(channel, protocol_name) }
1752 }
1753
1754 pub fn take_event_stream(&self) -> NodeControllerEventStream {
1760 NodeControllerEventStream { event_receiver: self.client.take_event_receiver() }
1761 }
1762
1763 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1765 NodeControllerProxyInterface::r#remove(self)
1766 }
1767
1768 pub fn r#request_bind(
1775 &self,
1776 mut payload: &NodeControllerRequestBindRequest,
1777 ) -> fidl::client::QueryResponseFut<
1778 NodeControllerRequestBindResult,
1779 fidl::encoding::DefaultFuchsiaResourceDialect,
1780 > {
1781 NodeControllerProxyInterface::r#request_bind(self, payload)
1782 }
1783
1784 pub fn r#wait_for_driver(
1791 &self,
1792 ) -> fidl::client::QueryResponseFut<
1793 NodeControllerWaitForDriverResult,
1794 fidl::encoding::DefaultFuchsiaResourceDialect,
1795 > {
1796 NodeControllerProxyInterface::r#wait_for_driver(self)
1797 }
1798}
1799
1800impl NodeControllerProxyInterface for NodeControllerProxy {
1801 fn r#remove(&self) -> Result<(), fidl::Error> {
1802 self.client.send::<fidl::encoding::EmptyPayload>(
1803 (),
1804 0x54fa8b3dfe7bb341,
1805 fidl::encoding::DynamicFlags::FLEXIBLE,
1806 )
1807 }
1808
1809 type RequestBindResponseFut = fidl::client::QueryResponseFut<
1810 NodeControllerRequestBindResult,
1811 fidl::encoding::DefaultFuchsiaResourceDialect,
1812 >;
1813 fn r#request_bind(
1814 &self,
1815 mut payload: &NodeControllerRequestBindRequest,
1816 ) -> Self::RequestBindResponseFut {
1817 fn _decode(
1818 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1819 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1820 let _response = fidl::client::decode_transaction_body::<
1821 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1822 fidl::encoding::DefaultFuchsiaResourceDialect,
1823 0x41b954726b13508f,
1824 >(_buf?)?
1825 .into_result::<NodeControllerMarker>("request_bind")?;
1826 Ok(_response.map(|x| x))
1827 }
1828 self.client.send_query_and_decode::<
1829 NodeControllerRequestBindRequest,
1830 NodeControllerRequestBindResult,
1831 >(
1832 payload,
1833 0x41b954726b13508f,
1834 fidl::encoding::DynamicFlags::FLEXIBLE,
1835 _decode,
1836 )
1837 }
1838
1839 type WaitForDriverResponseFut = fidl::client::QueryResponseFut<
1840 NodeControllerWaitForDriverResult,
1841 fidl::encoding::DefaultFuchsiaResourceDialect,
1842 >;
1843 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut {
1844 fn _decode(
1845 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1846 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1847 let _response = fidl::client::decode_transaction_body::<
1848 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1849 fidl::encoding::DefaultFuchsiaResourceDialect,
1850 0x69f7106e47d81387,
1851 >(_buf?)?
1852 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1853 Ok(_response.map(|x| x))
1854 }
1855 self.client.send_query_and_decode::<
1856 fidl::encoding::EmptyPayload,
1857 NodeControllerWaitForDriverResult,
1858 >(
1859 (),
1860 0x69f7106e47d81387,
1861 fidl::encoding::DynamicFlags::FLEXIBLE,
1862 _decode,
1863 )
1864 }
1865}
1866
1867pub struct NodeControllerEventStream {
1868 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1869}
1870
1871impl std::marker::Unpin for NodeControllerEventStream {}
1872
1873impl futures::stream::FusedStream for NodeControllerEventStream {
1874 fn is_terminated(&self) -> bool {
1875 self.event_receiver.is_terminated()
1876 }
1877}
1878
1879impl futures::Stream for NodeControllerEventStream {
1880 type Item = Result<NodeControllerEvent, fidl::Error>;
1881
1882 fn poll_next(
1883 mut self: std::pin::Pin<&mut Self>,
1884 cx: &mut std::task::Context<'_>,
1885 ) -> std::task::Poll<Option<Self::Item>> {
1886 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1887 &mut self.event_receiver,
1888 cx
1889 )?) {
1890 Some(buf) => std::task::Poll::Ready(Some(NodeControllerEvent::decode(buf))),
1891 None => std::task::Poll::Ready(None),
1892 }
1893 }
1894}
1895
1896#[derive(Debug)]
1897pub enum NodeControllerEvent {
1898 OnBind {
1899 payload: NodeControllerOnBindRequest,
1900 },
1901 #[non_exhaustive]
1902 _UnknownEvent {
1903 ordinal: u64,
1905 },
1906}
1907
1908impl NodeControllerEvent {
1909 #[allow(irrefutable_let_patterns)]
1910 pub fn into_on_bind(self) -> Option<NodeControllerOnBindRequest> {
1911 if let NodeControllerEvent::OnBind { payload } = self { Some((payload)) } else { None }
1912 }
1913
1914 fn decode(
1916 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1917 ) -> Result<NodeControllerEvent, fidl::Error> {
1918 let (bytes, _handles) = buf.split_mut();
1919 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1920 debug_assert_eq!(tx_header.tx_id, 0);
1921 match tx_header.ordinal {
1922 0x51f4165bc5ea202a => {
1923 let mut out = fidl::new_empty!(
1924 NodeControllerOnBindRequest,
1925 fidl::encoding::DefaultFuchsiaResourceDialect
1926 );
1927 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerOnBindRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
1928 Ok((NodeControllerEvent::OnBind { payload: out }))
1929 }
1930 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1931 Ok(NodeControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1932 }
1933 _ => Err(fidl::Error::UnknownOrdinal {
1934 ordinal: tx_header.ordinal,
1935 protocol_name:
1936 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1937 }),
1938 }
1939 }
1940}
1941
1942pub struct NodeControllerRequestStream {
1944 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1945 is_terminated: bool,
1946}
1947
1948impl std::marker::Unpin for NodeControllerRequestStream {}
1949
1950impl futures::stream::FusedStream for NodeControllerRequestStream {
1951 fn is_terminated(&self) -> bool {
1952 self.is_terminated
1953 }
1954}
1955
1956impl fidl::endpoints::RequestStream for NodeControllerRequestStream {
1957 type Protocol = NodeControllerMarker;
1958 type ControlHandle = NodeControllerControlHandle;
1959
1960 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1961 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1962 }
1963
1964 fn control_handle(&self) -> Self::ControlHandle {
1965 NodeControllerControlHandle { inner: self.inner.clone() }
1966 }
1967
1968 fn into_inner(
1969 self,
1970 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1971 {
1972 (self.inner, self.is_terminated)
1973 }
1974
1975 fn from_inner(
1976 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1977 is_terminated: bool,
1978 ) -> Self {
1979 Self { inner, is_terminated }
1980 }
1981}
1982
1983impl futures::Stream for NodeControllerRequestStream {
1984 type Item = Result<NodeControllerRequest, fidl::Error>;
1985
1986 fn poll_next(
1987 mut self: std::pin::Pin<&mut Self>,
1988 cx: &mut std::task::Context<'_>,
1989 ) -> std::task::Poll<Option<Self::Item>> {
1990 let this = &mut *self;
1991 if this.inner.check_shutdown(cx) {
1992 this.is_terminated = true;
1993 return std::task::Poll::Ready(None);
1994 }
1995 if this.is_terminated {
1996 panic!("polled NodeControllerRequestStream after completion");
1997 }
1998 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1999 |bytes, handles| {
2000 match this.inner.channel().read_etc(cx, bytes, handles) {
2001 std::task::Poll::Ready(Ok(())) => {}
2002 std::task::Poll::Pending => return std::task::Poll::Pending,
2003 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2004 this.is_terminated = true;
2005 return std::task::Poll::Ready(None);
2006 }
2007 std::task::Poll::Ready(Err(e)) => {
2008 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2009 e.into(),
2010 ))));
2011 }
2012 }
2013
2014 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2016
2017 std::task::Poll::Ready(Some(match header.ordinal {
2018 0x54fa8b3dfe7bb341 => {
2019 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2020 let mut req = fidl::new_empty!(
2021 fidl::encoding::EmptyPayload,
2022 fidl::encoding::DefaultFuchsiaResourceDialect
2023 );
2024 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2025 let control_handle =
2026 NodeControllerControlHandle { inner: this.inner.clone() };
2027 Ok(NodeControllerRequest::Remove { control_handle })
2028 }
2029 0x41b954726b13508f => {
2030 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2031 let mut req = fidl::new_empty!(
2032 NodeControllerRequestBindRequest,
2033 fidl::encoding::DefaultFuchsiaResourceDialect
2034 );
2035 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerRequestBindRequest>(&header, _body_bytes, handles, &mut req)?;
2036 let control_handle =
2037 NodeControllerControlHandle { inner: this.inner.clone() };
2038 Ok(NodeControllerRequest::RequestBind {
2039 payload: req,
2040 responder: NodeControllerRequestBindResponder {
2041 control_handle: std::mem::ManuallyDrop::new(control_handle),
2042 tx_id: header.tx_id,
2043 },
2044 })
2045 }
2046 0x69f7106e47d81387 => {
2047 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2048 let mut req = fidl::new_empty!(
2049 fidl::encoding::EmptyPayload,
2050 fidl::encoding::DefaultFuchsiaResourceDialect
2051 );
2052 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2053 let control_handle =
2054 NodeControllerControlHandle { inner: this.inner.clone() };
2055 Ok(NodeControllerRequest::WaitForDriver {
2056 responder: NodeControllerWaitForDriverResponder {
2057 control_handle: std::mem::ManuallyDrop::new(control_handle),
2058 tx_id: header.tx_id,
2059 },
2060 })
2061 }
2062 _ if header.tx_id == 0
2063 && header
2064 .dynamic_flags()
2065 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2066 {
2067 Ok(NodeControllerRequest::_UnknownMethod {
2068 ordinal: header.ordinal,
2069 control_handle: NodeControllerControlHandle {
2070 inner: this.inner.clone(),
2071 },
2072 method_type: fidl::MethodType::OneWay,
2073 })
2074 }
2075 _ if header
2076 .dynamic_flags()
2077 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2078 {
2079 this.inner.send_framework_err(
2080 fidl::encoding::FrameworkErr::UnknownMethod,
2081 header.tx_id,
2082 header.ordinal,
2083 header.dynamic_flags(),
2084 (bytes, handles),
2085 )?;
2086 Ok(NodeControllerRequest::_UnknownMethod {
2087 ordinal: header.ordinal,
2088 control_handle: NodeControllerControlHandle {
2089 inner: this.inner.clone(),
2090 },
2091 method_type: fidl::MethodType::TwoWay,
2092 })
2093 }
2094 _ => Err(fidl::Error::UnknownOrdinal {
2095 ordinal: header.ordinal,
2096 protocol_name:
2097 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2098 }),
2099 }))
2100 },
2101 )
2102 }
2103}
2104
2105#[derive(Debug)]
2107pub enum NodeControllerRequest {
2108 Remove { control_handle: NodeControllerControlHandle },
2110 RequestBind {
2117 payload: NodeControllerRequestBindRequest,
2118 responder: NodeControllerRequestBindResponder,
2119 },
2120 WaitForDriver { responder: NodeControllerWaitForDriverResponder },
2127 #[non_exhaustive]
2129 _UnknownMethod {
2130 ordinal: u64,
2132 control_handle: NodeControllerControlHandle,
2133 method_type: fidl::MethodType,
2134 },
2135}
2136
2137impl NodeControllerRequest {
2138 #[allow(irrefutable_let_patterns)]
2139 pub fn into_remove(self) -> Option<(NodeControllerControlHandle)> {
2140 if let NodeControllerRequest::Remove { control_handle } = self {
2141 Some((control_handle))
2142 } else {
2143 None
2144 }
2145 }
2146
2147 #[allow(irrefutable_let_patterns)]
2148 pub fn into_request_bind(
2149 self,
2150 ) -> Option<(NodeControllerRequestBindRequest, NodeControllerRequestBindResponder)> {
2151 if let NodeControllerRequest::RequestBind { payload, responder } = self {
2152 Some((payload, responder))
2153 } else {
2154 None
2155 }
2156 }
2157
2158 #[allow(irrefutable_let_patterns)]
2159 pub fn into_wait_for_driver(self) -> Option<(NodeControllerWaitForDriverResponder)> {
2160 if let NodeControllerRequest::WaitForDriver { responder } = self {
2161 Some((responder))
2162 } else {
2163 None
2164 }
2165 }
2166
2167 pub fn method_name(&self) -> &'static str {
2169 match *self {
2170 NodeControllerRequest::Remove { .. } => "remove",
2171 NodeControllerRequest::RequestBind { .. } => "request_bind",
2172 NodeControllerRequest::WaitForDriver { .. } => "wait_for_driver",
2173 NodeControllerRequest::_UnknownMethod {
2174 method_type: fidl::MethodType::OneWay, ..
2175 } => "unknown one-way method",
2176 NodeControllerRequest::_UnknownMethod {
2177 method_type: fidl::MethodType::TwoWay, ..
2178 } => "unknown two-way method",
2179 }
2180 }
2181}
2182
2183#[derive(Debug, Clone)]
2184pub struct NodeControllerControlHandle {
2185 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2186}
2187
2188impl fidl::endpoints::ControlHandle for NodeControllerControlHandle {
2189 fn shutdown(&self) {
2190 self.inner.shutdown()
2191 }
2192
2193 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2194 self.inner.shutdown_with_epitaph(status)
2195 }
2196
2197 fn is_closed(&self) -> bool {
2198 self.inner.channel().is_closed()
2199 }
2200 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2201 self.inner.channel().on_closed()
2202 }
2203
2204 #[cfg(target_os = "fuchsia")]
2205 fn signal_peer(
2206 &self,
2207 clear_mask: zx::Signals,
2208 set_mask: zx::Signals,
2209 ) -> Result<(), zx_status::Status> {
2210 use fidl::Peered;
2211 self.inner.channel().signal_peer(clear_mask, set_mask)
2212 }
2213}
2214
2215impl NodeControllerControlHandle {
2216 pub fn send_on_bind(
2217 &self,
2218 mut payload: NodeControllerOnBindRequest,
2219 ) -> Result<(), fidl::Error> {
2220 self.inner.send::<NodeControllerOnBindRequest>(
2221 &mut payload,
2222 0,
2223 0x51f4165bc5ea202a,
2224 fidl::encoding::DynamicFlags::FLEXIBLE,
2225 )
2226 }
2227}
2228
2229#[must_use = "FIDL methods require a response to be sent"]
2230#[derive(Debug)]
2231pub struct NodeControllerRequestBindResponder {
2232 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2233 tx_id: u32,
2234}
2235
2236impl std::ops::Drop for NodeControllerRequestBindResponder {
2240 fn drop(&mut self) {
2241 self.control_handle.shutdown();
2242 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2244 }
2245}
2246
2247impl fidl::endpoints::Responder for NodeControllerRequestBindResponder {
2248 type ControlHandle = NodeControllerControlHandle;
2249
2250 fn control_handle(&self) -> &NodeControllerControlHandle {
2251 &self.control_handle
2252 }
2253
2254 fn drop_without_shutdown(mut self) {
2255 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2257 std::mem::forget(self);
2259 }
2260}
2261
2262impl NodeControllerRequestBindResponder {
2263 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2267 let _result = self.send_raw(result);
2268 if _result.is_err() {
2269 self.control_handle.shutdown();
2270 }
2271 self.drop_without_shutdown();
2272 _result
2273 }
2274
2275 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2277 let _result = self.send_raw(result);
2278 self.drop_without_shutdown();
2279 _result
2280 }
2281
2282 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2283 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2284 fidl::encoding::EmptyStruct,
2285 i32,
2286 >>(
2287 fidl::encoding::FlexibleResult::new(result),
2288 self.tx_id,
2289 0x41b954726b13508f,
2290 fidl::encoding::DynamicFlags::FLEXIBLE,
2291 )
2292 }
2293}
2294
2295#[must_use = "FIDL methods require a response to be sent"]
2296#[derive(Debug)]
2297pub struct NodeControllerWaitForDriverResponder {
2298 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2299 tx_id: u32,
2300}
2301
2302impl std::ops::Drop for NodeControllerWaitForDriverResponder {
2306 fn drop(&mut self) {
2307 self.control_handle.shutdown();
2308 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2310 }
2311}
2312
2313impl fidl::endpoints::Responder for NodeControllerWaitForDriverResponder {
2314 type ControlHandle = NodeControllerControlHandle;
2315
2316 fn control_handle(&self) -> &NodeControllerControlHandle {
2317 &self.control_handle
2318 }
2319
2320 fn drop_without_shutdown(mut self) {
2321 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2323 std::mem::forget(self);
2325 }
2326}
2327
2328impl NodeControllerWaitForDriverResponder {
2329 pub fn send(self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2333 let _result = self.send_raw(result);
2334 if _result.is_err() {
2335 self.control_handle.shutdown();
2336 }
2337 self.drop_without_shutdown();
2338 _result
2339 }
2340
2341 pub fn send_no_shutdown_on_err(
2343 self,
2344 mut result: Result<DriverResult, i32>,
2345 ) -> Result<(), fidl::Error> {
2346 let _result = self.send_raw(result);
2347 self.drop_without_shutdown();
2348 _result
2349 }
2350
2351 fn send_raw(&self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2352 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<DriverResult, i32>>(
2353 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
2354 self.tx_id,
2355 0x69f7106e47d81387,
2356 fidl::encoding::DynamicFlags::FLEXIBLE,
2357 )
2358 }
2359}
2360
2361mod internal {
2362 use super::*;
2363
2364 impl fidl::encoding::ResourceTypeMarker for DriverStartRequest {
2365 type Borrowed<'a> = &'a mut Self;
2366 fn take_or_borrow<'a>(
2367 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2368 ) -> Self::Borrowed<'a> {
2369 value
2370 }
2371 }
2372
2373 unsafe impl fidl::encoding::TypeMarker for DriverStartRequest {
2374 type Owned = Self;
2375
2376 #[inline(always)]
2377 fn inline_align(_context: fidl::encoding::Context) -> usize {
2378 8
2379 }
2380
2381 #[inline(always)]
2382 fn inline_size(_context: fidl::encoding::Context) -> usize {
2383 16
2384 }
2385 }
2386
2387 unsafe impl
2388 fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2389 for &mut DriverStartRequest
2390 {
2391 #[inline]
2392 unsafe fn encode(
2393 self,
2394 encoder: &mut fidl::encoding::Encoder<
2395 '_,
2396 fidl::encoding::DefaultFuchsiaResourceDialect,
2397 >,
2398 offset: usize,
2399 _depth: fidl::encoding::Depth,
2400 ) -> fidl::Result<()> {
2401 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2402 fidl::encoding::Encode::<
2404 DriverStartRequest,
2405 fidl::encoding::DefaultFuchsiaResourceDialect,
2406 >::encode(
2407 (<DriverStartArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2408 &mut self.start_args,
2409 ),),
2410 encoder,
2411 offset,
2412 _depth,
2413 )
2414 }
2415 }
2416 unsafe impl<
2417 T0: fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2418 > fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2419 for (T0,)
2420 {
2421 #[inline]
2422 unsafe fn encode(
2423 self,
2424 encoder: &mut fidl::encoding::Encoder<
2425 '_,
2426 fidl::encoding::DefaultFuchsiaResourceDialect,
2427 >,
2428 offset: usize,
2429 depth: fidl::encoding::Depth,
2430 ) -> fidl::Result<()> {
2431 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2432 self.0.encode(encoder, offset + 0, depth)?;
2436 Ok(())
2437 }
2438 }
2439
2440 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2441 for DriverStartRequest
2442 {
2443 #[inline(always)]
2444 fn new_empty() -> Self {
2445 Self {
2446 start_args: fidl::new_empty!(
2447 DriverStartArgs,
2448 fidl::encoding::DefaultFuchsiaResourceDialect
2449 ),
2450 }
2451 }
2452
2453 #[inline]
2454 unsafe fn decode(
2455 &mut self,
2456 decoder: &mut fidl::encoding::Decoder<
2457 '_,
2458 fidl::encoding::DefaultFuchsiaResourceDialect,
2459 >,
2460 offset: usize,
2461 _depth: fidl::encoding::Depth,
2462 ) -> fidl::Result<()> {
2463 decoder.debug_check_bounds::<Self>(offset);
2464 fidl::decode!(
2466 DriverStartArgs,
2467 fidl::encoding::DefaultFuchsiaResourceDialect,
2468 &mut self.start_args,
2469 decoder,
2470 offset + 0,
2471 _depth
2472 )?;
2473 Ok(())
2474 }
2475 }
2476
2477 impl fidl::encoding::ResourceTypeMarker for NodeAddChildRequest {
2478 type Borrowed<'a> = &'a mut Self;
2479 fn take_or_borrow<'a>(
2480 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2481 ) -> Self::Borrowed<'a> {
2482 value
2483 }
2484 }
2485
2486 unsafe impl fidl::encoding::TypeMarker for NodeAddChildRequest {
2487 type Owned = Self;
2488
2489 #[inline(always)]
2490 fn inline_align(_context: fidl::encoding::Context) -> usize {
2491 8
2492 }
2493
2494 #[inline(always)]
2495 fn inline_size(_context: fidl::encoding::Context) -> usize {
2496 24
2497 }
2498 }
2499
2500 unsafe impl
2501 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2502 for &mut NodeAddChildRequest
2503 {
2504 #[inline]
2505 unsafe fn encode(
2506 self,
2507 encoder: &mut fidl::encoding::Encoder<
2508 '_,
2509 fidl::encoding::DefaultFuchsiaResourceDialect,
2510 >,
2511 offset: usize,
2512 _depth: fidl::encoding::Depth,
2513 ) -> fidl::Result<()> {
2514 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2515 fidl::encoding::Encode::<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2517 (
2518 <NodeAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.args),
2519 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
2520 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node),
2521 ),
2522 encoder, offset, _depth
2523 )
2524 }
2525 }
2526 unsafe impl<
2527 T0: fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2528 T1: fidl::encoding::Encode<
2529 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2530 fidl::encoding::DefaultFuchsiaResourceDialect,
2531 >,
2532 T2: fidl::encoding::Encode<
2533 fidl::encoding::Optional<
2534 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2535 >,
2536 fidl::encoding::DefaultFuchsiaResourceDialect,
2537 >,
2538 > fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2539 for (T0, T1, T2)
2540 {
2541 #[inline]
2542 unsafe fn encode(
2543 self,
2544 encoder: &mut fidl::encoding::Encoder<
2545 '_,
2546 fidl::encoding::DefaultFuchsiaResourceDialect,
2547 >,
2548 offset: usize,
2549 depth: fidl::encoding::Depth,
2550 ) -> fidl::Result<()> {
2551 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2552 self.0.encode(encoder, offset + 0, depth)?;
2556 self.1.encode(encoder, offset + 16, depth)?;
2557 self.2.encode(encoder, offset + 20, depth)?;
2558 Ok(())
2559 }
2560 }
2561
2562 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2563 for NodeAddChildRequest
2564 {
2565 #[inline(always)]
2566 fn new_empty() -> Self {
2567 Self {
2568 args: fidl::new_empty!(NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect),
2569 controller: fidl::new_empty!(
2570 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2571 fidl::encoding::DefaultFuchsiaResourceDialect
2572 ),
2573 node: fidl::new_empty!(
2574 fidl::encoding::Optional<
2575 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2576 >,
2577 fidl::encoding::DefaultFuchsiaResourceDialect
2578 ),
2579 }
2580 }
2581
2582 #[inline]
2583 unsafe fn decode(
2584 &mut self,
2585 decoder: &mut fidl::encoding::Decoder<
2586 '_,
2587 fidl::encoding::DefaultFuchsiaResourceDialect,
2588 >,
2589 offset: usize,
2590 _depth: fidl::encoding::Depth,
2591 ) -> fidl::Result<()> {
2592 decoder.debug_check_bounds::<Self>(offset);
2593 fidl::decode!(
2595 NodeAddArgs,
2596 fidl::encoding::DefaultFuchsiaResourceDialect,
2597 &mut self.args,
2598 decoder,
2599 offset + 0,
2600 _depth
2601 )?;
2602 fidl::decode!(
2603 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2604 fidl::encoding::DefaultFuchsiaResourceDialect,
2605 &mut self.controller,
2606 decoder,
2607 offset + 16,
2608 _depth
2609 )?;
2610 fidl::decode!(
2611 fidl::encoding::Optional<
2612 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2613 >,
2614 fidl::encoding::DefaultFuchsiaResourceDialect,
2615 &mut self.node,
2616 decoder,
2617 offset + 20,
2618 _depth
2619 )?;
2620 Ok(())
2621 }
2622 }
2623
2624 impl DevfsAddArgs {
2625 #[inline(always)]
2626 fn max_ordinal_present(&self) -> u64 {
2627 if let Some(_) = self.controller_connector {
2628 return 5;
2629 }
2630 if let Some(_) = self.connector_supports {
2631 return 4;
2632 }
2633 if let Some(_) = self.inspect {
2634 return 3;
2635 }
2636 if let Some(_) = self.class_name {
2637 return 2;
2638 }
2639 if let Some(_) = self.connector {
2640 return 1;
2641 }
2642 0
2643 }
2644 }
2645
2646 impl fidl::encoding::ResourceTypeMarker for DevfsAddArgs {
2647 type Borrowed<'a> = &'a mut Self;
2648 fn take_or_borrow<'a>(
2649 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2650 ) -> Self::Borrowed<'a> {
2651 value
2652 }
2653 }
2654
2655 unsafe impl fidl::encoding::TypeMarker for DevfsAddArgs {
2656 type Owned = Self;
2657
2658 #[inline(always)]
2659 fn inline_align(_context: fidl::encoding::Context) -> usize {
2660 8
2661 }
2662
2663 #[inline(always)]
2664 fn inline_size(_context: fidl::encoding::Context) -> usize {
2665 16
2666 }
2667 }
2668
2669 unsafe impl fidl::encoding::Encode<DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
2670 for &mut DevfsAddArgs
2671 {
2672 unsafe fn encode(
2673 self,
2674 encoder: &mut fidl::encoding::Encoder<
2675 '_,
2676 fidl::encoding::DefaultFuchsiaResourceDialect,
2677 >,
2678 offset: usize,
2679 mut depth: fidl::encoding::Depth,
2680 ) -> fidl::Result<()> {
2681 encoder.debug_check_bounds::<DevfsAddArgs>(offset);
2682 let max_ordinal: u64 = self.max_ordinal_present();
2684 encoder.write_num(max_ordinal, offset);
2685 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2686 if max_ordinal == 0 {
2688 return Ok(());
2689 }
2690 depth.increment()?;
2691 let envelope_size = 8;
2692 let bytes_len = max_ordinal as usize * envelope_size;
2693 #[allow(unused_variables)]
2694 let offset = encoder.out_of_line_offset(bytes_len);
2695 let mut _prev_end_offset: usize = 0;
2696 if 1 > max_ordinal {
2697 return Ok(());
2698 }
2699
2700 let cur_offset: usize = (1 - 1) * envelope_size;
2703
2704 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2706
2707 fidl::encoding::encode_in_envelope_optional::<
2712 fidl::encoding::Endpoint<
2713 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2714 >,
2715 fidl::encoding::DefaultFuchsiaResourceDialect,
2716 >(
2717 self.connector.as_mut().map(
2718 <fidl::encoding::Endpoint<
2719 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2720 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2721 ),
2722 encoder,
2723 offset + cur_offset,
2724 depth,
2725 )?;
2726
2727 _prev_end_offset = cur_offset + envelope_size;
2728 if 2 > max_ordinal {
2729 return Ok(());
2730 }
2731
2732 let cur_offset: usize = (2 - 1) * envelope_size;
2735
2736 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2738
2739 fidl::encoding::encode_in_envelope_optional::<
2744 fidl::encoding::BoundedString<255>,
2745 fidl::encoding::DefaultFuchsiaResourceDialect,
2746 >(
2747 self.class_name.as_ref().map(
2748 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
2749 ),
2750 encoder,
2751 offset + cur_offset,
2752 depth,
2753 )?;
2754
2755 _prev_end_offset = cur_offset + envelope_size;
2756 if 3 > max_ordinal {
2757 return Ok(());
2758 }
2759
2760 let cur_offset: usize = (3 - 1) * envelope_size;
2763
2764 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2766
2767 fidl::encoding::encode_in_envelope_optional::<
2772 fidl::encoding::HandleType<
2773 fidl::Vmo,
2774 { fidl::ObjectType::VMO.into_raw() },
2775 2147483648,
2776 >,
2777 fidl::encoding::DefaultFuchsiaResourceDialect,
2778 >(
2779 self.inspect.as_mut().map(
2780 <fidl::encoding::HandleType<
2781 fidl::Vmo,
2782 { fidl::ObjectType::VMO.into_raw() },
2783 2147483648,
2784 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2785 ),
2786 encoder,
2787 offset + cur_offset,
2788 depth,
2789 )?;
2790
2791 _prev_end_offset = cur_offset + envelope_size;
2792 if 4 > max_ordinal {
2793 return Ok(());
2794 }
2795
2796 let cur_offset: usize = (4 - 1) * envelope_size;
2799
2800 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2802
2803 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_device_fs::ConnectionType, fidl::encoding::DefaultFuchsiaResourceDialect>(
2808 self.connector_supports.as_ref().map(<fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::ValueTypeMarker>::borrow),
2809 encoder, offset + cur_offset, depth
2810 )?;
2811
2812 _prev_end_offset = cur_offset + envelope_size;
2813 if 5 > max_ordinal {
2814 return Ok(());
2815 }
2816
2817 let cur_offset: usize = (5 - 1) * envelope_size;
2820
2821 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2823
2824 fidl::encoding::encode_in_envelope_optional::<
2829 fidl::encoding::Endpoint<
2830 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2831 >,
2832 fidl::encoding::DefaultFuchsiaResourceDialect,
2833 >(
2834 self.controller_connector.as_mut().map(
2835 <fidl::encoding::Endpoint<
2836 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2837 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2838 ),
2839 encoder,
2840 offset + cur_offset,
2841 depth,
2842 )?;
2843
2844 _prev_end_offset = cur_offset + envelope_size;
2845
2846 Ok(())
2847 }
2848 }
2849
2850 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {
2851 #[inline(always)]
2852 fn new_empty() -> Self {
2853 Self::default()
2854 }
2855
2856 unsafe fn decode(
2857 &mut self,
2858 decoder: &mut fidl::encoding::Decoder<
2859 '_,
2860 fidl::encoding::DefaultFuchsiaResourceDialect,
2861 >,
2862 offset: usize,
2863 mut depth: fidl::encoding::Depth,
2864 ) -> fidl::Result<()> {
2865 decoder.debug_check_bounds::<Self>(offset);
2866 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2867 None => return Err(fidl::Error::NotNullable),
2868 Some(len) => len,
2869 };
2870 if len == 0 {
2872 return Ok(());
2873 };
2874 depth.increment()?;
2875 let envelope_size = 8;
2876 let bytes_len = len * envelope_size;
2877 let offset = decoder.out_of_line_offset(bytes_len)?;
2878 let mut _next_ordinal_to_read = 0;
2880 let mut next_offset = offset;
2881 let end_offset = offset + bytes_len;
2882 _next_ordinal_to_read += 1;
2883 if next_offset >= end_offset {
2884 return Ok(());
2885 }
2886
2887 while _next_ordinal_to_read < 1 {
2889 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2890 _next_ordinal_to_read += 1;
2891 next_offset += envelope_size;
2892 }
2893
2894 let next_out_of_line = decoder.next_out_of_line();
2895 let handles_before = decoder.remaining_handles();
2896 if let Some((inlined, num_bytes, num_handles)) =
2897 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2898 {
2899 let member_inline_size = <fidl::encoding::Endpoint<
2900 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2901 > as fidl::encoding::TypeMarker>::inline_size(
2902 decoder.context
2903 );
2904 if inlined != (member_inline_size <= 4) {
2905 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2906 }
2907 let inner_offset;
2908 let mut inner_depth = depth.clone();
2909 if inlined {
2910 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2911 inner_offset = next_offset;
2912 } else {
2913 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2914 inner_depth.increment()?;
2915 }
2916 let val_ref = self.connector.get_or_insert_with(|| {
2917 fidl::new_empty!(
2918 fidl::encoding::Endpoint<
2919 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2920 >,
2921 fidl::encoding::DefaultFuchsiaResourceDialect
2922 )
2923 });
2924 fidl::decode!(
2925 fidl::encoding::Endpoint<
2926 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2927 >,
2928 fidl::encoding::DefaultFuchsiaResourceDialect,
2929 val_ref,
2930 decoder,
2931 inner_offset,
2932 inner_depth
2933 )?;
2934 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2935 {
2936 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2937 }
2938 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2939 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2940 }
2941 }
2942
2943 next_offset += envelope_size;
2944 _next_ordinal_to_read += 1;
2945 if next_offset >= end_offset {
2946 return Ok(());
2947 }
2948
2949 while _next_ordinal_to_read < 2 {
2951 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2952 _next_ordinal_to_read += 1;
2953 next_offset += envelope_size;
2954 }
2955
2956 let next_out_of_line = decoder.next_out_of_line();
2957 let handles_before = decoder.remaining_handles();
2958 if let Some((inlined, num_bytes, num_handles)) =
2959 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2960 {
2961 let member_inline_size =
2962 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2963 decoder.context,
2964 );
2965 if inlined != (member_inline_size <= 4) {
2966 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2967 }
2968 let inner_offset;
2969 let mut inner_depth = depth.clone();
2970 if inlined {
2971 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2972 inner_offset = next_offset;
2973 } else {
2974 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2975 inner_depth.increment()?;
2976 }
2977 let val_ref = self.class_name.get_or_insert_with(|| {
2978 fidl::new_empty!(
2979 fidl::encoding::BoundedString<255>,
2980 fidl::encoding::DefaultFuchsiaResourceDialect
2981 )
2982 });
2983 fidl::decode!(
2984 fidl::encoding::BoundedString<255>,
2985 fidl::encoding::DefaultFuchsiaResourceDialect,
2986 val_ref,
2987 decoder,
2988 inner_offset,
2989 inner_depth
2990 )?;
2991 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2992 {
2993 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2994 }
2995 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2996 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2997 }
2998 }
2999
3000 next_offset += envelope_size;
3001 _next_ordinal_to_read += 1;
3002 if next_offset >= end_offset {
3003 return Ok(());
3004 }
3005
3006 while _next_ordinal_to_read < 3 {
3008 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3009 _next_ordinal_to_read += 1;
3010 next_offset += envelope_size;
3011 }
3012
3013 let next_out_of_line = decoder.next_out_of_line();
3014 let handles_before = decoder.remaining_handles();
3015 if let Some((inlined, num_bytes, num_handles)) =
3016 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3017 {
3018 let member_inline_size = <fidl::encoding::HandleType<
3019 fidl::Vmo,
3020 { fidl::ObjectType::VMO.into_raw() },
3021 2147483648,
3022 > as fidl::encoding::TypeMarker>::inline_size(
3023 decoder.context
3024 );
3025 if inlined != (member_inline_size <= 4) {
3026 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3027 }
3028 let inner_offset;
3029 let mut inner_depth = depth.clone();
3030 if inlined {
3031 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3032 inner_offset = next_offset;
3033 } else {
3034 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3035 inner_depth.increment()?;
3036 }
3037 let val_ref =
3038 self.inspect.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3039 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3040 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3041 {
3042 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3043 }
3044 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3045 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3046 }
3047 }
3048
3049 next_offset += envelope_size;
3050 _next_ordinal_to_read += 1;
3051 if next_offset >= end_offset {
3052 return Ok(());
3053 }
3054
3055 while _next_ordinal_to_read < 4 {
3057 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3058 _next_ordinal_to_read += 1;
3059 next_offset += envelope_size;
3060 }
3061
3062 let next_out_of_line = decoder.next_out_of_line();
3063 let handles_before = decoder.remaining_handles();
3064 if let Some((inlined, num_bytes, num_handles)) =
3065 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3066 {
3067 let member_inline_size = <fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3068 if inlined != (member_inline_size <= 4) {
3069 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3070 }
3071 let inner_offset;
3072 let mut inner_depth = depth.clone();
3073 if inlined {
3074 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3075 inner_offset = next_offset;
3076 } else {
3077 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3078 inner_depth.increment()?;
3079 }
3080 let val_ref = self.connector_supports.get_or_insert_with(|| {
3081 fidl::new_empty!(
3082 fidl_fuchsia_device_fs::ConnectionType,
3083 fidl::encoding::DefaultFuchsiaResourceDialect
3084 )
3085 });
3086 fidl::decode!(
3087 fidl_fuchsia_device_fs::ConnectionType,
3088 fidl::encoding::DefaultFuchsiaResourceDialect,
3089 val_ref,
3090 decoder,
3091 inner_offset,
3092 inner_depth
3093 )?;
3094 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3095 {
3096 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3097 }
3098 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3099 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3100 }
3101 }
3102
3103 next_offset += envelope_size;
3104 _next_ordinal_to_read += 1;
3105 if next_offset >= end_offset {
3106 return Ok(());
3107 }
3108
3109 while _next_ordinal_to_read < 5 {
3111 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3112 _next_ordinal_to_read += 1;
3113 next_offset += envelope_size;
3114 }
3115
3116 let next_out_of_line = decoder.next_out_of_line();
3117 let handles_before = decoder.remaining_handles();
3118 if let Some((inlined, num_bytes, num_handles)) =
3119 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3120 {
3121 let member_inline_size = <fidl::encoding::Endpoint<
3122 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3123 > as fidl::encoding::TypeMarker>::inline_size(
3124 decoder.context
3125 );
3126 if inlined != (member_inline_size <= 4) {
3127 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3128 }
3129 let inner_offset;
3130 let mut inner_depth = depth.clone();
3131 if inlined {
3132 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3133 inner_offset = next_offset;
3134 } else {
3135 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3136 inner_depth.increment()?;
3137 }
3138 let val_ref = self.controller_connector.get_or_insert_with(|| {
3139 fidl::new_empty!(
3140 fidl::encoding::Endpoint<
3141 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3142 >,
3143 fidl::encoding::DefaultFuchsiaResourceDialect
3144 )
3145 });
3146 fidl::decode!(
3147 fidl::encoding::Endpoint<
3148 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3149 >,
3150 fidl::encoding::DefaultFuchsiaResourceDialect,
3151 val_ref,
3152 decoder,
3153 inner_offset,
3154 inner_depth
3155 )?;
3156 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3157 {
3158 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3159 }
3160 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3161 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3162 }
3163 }
3164
3165 next_offset += envelope_size;
3166
3167 while next_offset < end_offset {
3169 _next_ordinal_to_read += 1;
3170 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3171 next_offset += envelope_size;
3172 }
3173
3174 Ok(())
3175 }
3176 }
3177
3178 impl DriverStartArgs {
3179 #[inline(always)]
3180 fn max_ordinal_present(&self) -> u64 {
3181 if let Some(_) = self.power_element_args {
3182 return 14;
3183 }
3184 if let Some(_) = self.vmar {
3185 return 13;
3186 }
3187 if let Some(_) = self.node_properties_2 {
3188 return 12;
3189 }
3190 if let Some(_) = self.node_token {
3191 return 11;
3192 }
3193 if let Some(_) = self.node_offers {
3194 return 10;
3195 }
3196 if let Some(_) = self.node_properties {
3197 return 9;
3198 }
3199 if let Some(_) = self.node_name {
3200 return 8;
3201 }
3202 if let Some(_) = self.config {
3203 return 7;
3204 }
3205 if let Some(_) = self.outgoing_dir {
3206 return 6;
3207 }
3208 if let Some(_) = self.incoming {
3209 return 5;
3210 }
3211 if let Some(_) = self.program {
3212 return 4;
3213 }
3214 if let Some(_) = self.url {
3215 return 3;
3216 }
3217 if let Some(_) = self.symbols {
3218 return 2;
3219 }
3220 if let Some(_) = self.node {
3221 return 1;
3222 }
3223 0
3224 }
3225 }
3226
3227 impl fidl::encoding::ResourceTypeMarker for DriverStartArgs {
3228 type Borrowed<'a> = &'a mut Self;
3229 fn take_or_borrow<'a>(
3230 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3231 ) -> Self::Borrowed<'a> {
3232 value
3233 }
3234 }
3235
3236 unsafe impl fidl::encoding::TypeMarker for DriverStartArgs {
3237 type Owned = Self;
3238
3239 #[inline(always)]
3240 fn inline_align(_context: fidl::encoding::Context) -> usize {
3241 8
3242 }
3243
3244 #[inline(always)]
3245 fn inline_size(_context: fidl::encoding::Context) -> usize {
3246 16
3247 }
3248 }
3249
3250 unsafe impl
3251 fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
3252 for &mut DriverStartArgs
3253 {
3254 unsafe fn encode(
3255 self,
3256 encoder: &mut fidl::encoding::Encoder<
3257 '_,
3258 fidl::encoding::DefaultFuchsiaResourceDialect,
3259 >,
3260 offset: usize,
3261 mut depth: fidl::encoding::Depth,
3262 ) -> fidl::Result<()> {
3263 encoder.debug_check_bounds::<DriverStartArgs>(offset);
3264 let max_ordinal: u64 = self.max_ordinal_present();
3266 encoder.write_num(max_ordinal, offset);
3267 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3268 if max_ordinal == 0 {
3270 return Ok(());
3271 }
3272 depth.increment()?;
3273 let envelope_size = 8;
3274 let bytes_len = max_ordinal as usize * envelope_size;
3275 #[allow(unused_variables)]
3276 let offset = encoder.out_of_line_offset(bytes_len);
3277 let mut _prev_end_offset: usize = 0;
3278 if 1 > max_ordinal {
3279 return Ok(());
3280 }
3281
3282 let cur_offset: usize = (1 - 1) * envelope_size;
3285
3286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3288
3289 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3294 self.node.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3295 encoder, offset + cur_offset, depth
3296 )?;
3297
3298 _prev_end_offset = cur_offset + envelope_size;
3299 if 2 > max_ordinal {
3300 return Ok(());
3301 }
3302
3303 let cur_offset: usize = (2 - 1) * envelope_size;
3306
3307 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3309
3310 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3315 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3316 encoder, offset + cur_offset, depth
3317 )?;
3318
3319 _prev_end_offset = cur_offset + envelope_size;
3320 if 3 > max_ordinal {
3321 return Ok(());
3322 }
3323
3324 let cur_offset: usize = (3 - 1) * envelope_size;
3327
3328 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3330
3331 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3336 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3337 encoder, offset + cur_offset, depth
3338 )?;
3339
3340 _prev_end_offset = cur_offset + envelope_size;
3341 if 4 > max_ordinal {
3342 return Ok(());
3343 }
3344
3345 let cur_offset: usize = (4 - 1) * envelope_size;
3348
3349 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3351
3352 fidl::encoding::encode_in_envelope_optional::<
3357 fidl_fuchsia_data::Dictionary,
3358 fidl::encoding::DefaultFuchsiaResourceDialect,
3359 >(
3360 self.program.as_ref().map(
3361 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
3362 ),
3363 encoder,
3364 offset + cur_offset,
3365 depth,
3366 )?;
3367
3368 _prev_end_offset = cur_offset + envelope_size;
3369 if 5 > max_ordinal {
3370 return Ok(());
3371 }
3372
3373 let cur_offset: usize = (5 - 1) * envelope_size;
3376
3377 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3379
3380 fidl::encoding::encode_in_envelope_optional::<
3385 fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>,
3386 fidl::encoding::DefaultFuchsiaResourceDialect,
3387 >(
3388 self.incoming.as_mut().map(
3389 <fidl::encoding::Vector<
3390 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3391 32,
3392 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3393 ),
3394 encoder,
3395 offset + cur_offset,
3396 depth,
3397 )?;
3398
3399 _prev_end_offset = cur_offset + envelope_size;
3400 if 6 > max_ordinal {
3401 return Ok(());
3402 }
3403
3404 let cur_offset: usize = (6 - 1) * envelope_size;
3407
3408 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3410
3411 fidl::encoding::encode_in_envelope_optional::<
3416 fidl::encoding::Endpoint<
3417 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3418 >,
3419 fidl::encoding::DefaultFuchsiaResourceDialect,
3420 >(
3421 self.outgoing_dir.as_mut().map(
3422 <fidl::encoding::Endpoint<
3423 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3424 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3425 ),
3426 encoder,
3427 offset + cur_offset,
3428 depth,
3429 )?;
3430
3431 _prev_end_offset = cur_offset + envelope_size;
3432 if 7 > max_ordinal {
3433 return Ok(());
3434 }
3435
3436 let cur_offset: usize = (7 - 1) * envelope_size;
3439
3440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3442
3443 fidl::encoding::encode_in_envelope_optional::<
3448 fidl::encoding::HandleType<
3449 fidl::Vmo,
3450 { fidl::ObjectType::VMO.into_raw() },
3451 2147483648,
3452 >,
3453 fidl::encoding::DefaultFuchsiaResourceDialect,
3454 >(
3455 self.config.as_mut().map(
3456 <fidl::encoding::HandleType<
3457 fidl::Vmo,
3458 { fidl::ObjectType::VMO.into_raw() },
3459 2147483648,
3460 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3461 ),
3462 encoder,
3463 offset + cur_offset,
3464 depth,
3465 )?;
3466
3467 _prev_end_offset = cur_offset + envelope_size;
3468 if 8 > max_ordinal {
3469 return Ok(());
3470 }
3471
3472 let cur_offset: usize = (8 - 1) * envelope_size;
3475
3476 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3478
3479 fidl::encoding::encode_in_envelope_optional::<
3484 fidl::encoding::UnboundedString,
3485 fidl::encoding::DefaultFuchsiaResourceDialect,
3486 >(
3487 self.node_name.as_ref().map(
3488 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3489 ),
3490 encoder,
3491 offset + cur_offset,
3492 depth,
3493 )?;
3494
3495 _prev_end_offset = cur_offset + envelope_size;
3496 if 9 > max_ordinal {
3497 return Ok(());
3498 }
3499
3500 let cur_offset: usize = (9 - 1) * envelope_size;
3503
3504 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3506
3507 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3512 self.node_properties.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::ValueTypeMarker>::borrow),
3513 encoder, offset + cur_offset, depth
3514 )?;
3515
3516 _prev_end_offset = cur_offset + envelope_size;
3517 if 10 > max_ordinal {
3518 return Ok(());
3519 }
3520
3521 let cur_offset: usize = (10 - 1) * envelope_size;
3524
3525 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3527
3528 fidl::encoding::encode_in_envelope_optional::<
3533 fidl::encoding::Vector<Offer, 128>,
3534 fidl::encoding::DefaultFuchsiaResourceDialect,
3535 >(
3536 self.node_offers.as_ref().map(
3537 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
3538 ),
3539 encoder,
3540 offset + cur_offset,
3541 depth,
3542 )?;
3543
3544 _prev_end_offset = cur_offset + envelope_size;
3545 if 11 > max_ordinal {
3546 return Ok(());
3547 }
3548
3549 let cur_offset: usize = (11 - 1) * envelope_size;
3552
3553 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3555
3556 fidl::encoding::encode_in_envelope_optional::<
3561 fidl::encoding::HandleType<
3562 fidl::Event,
3563 { fidl::ObjectType::EVENT.into_raw() },
3564 2147483648,
3565 >,
3566 fidl::encoding::DefaultFuchsiaResourceDialect,
3567 >(
3568 self.node_token.as_mut().map(
3569 <fidl::encoding::HandleType<
3570 fidl::Event,
3571 { fidl::ObjectType::EVENT.into_raw() },
3572 2147483648,
3573 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3574 ),
3575 encoder,
3576 offset + cur_offset,
3577 depth,
3578 )?;
3579
3580 _prev_end_offset = cur_offset + envelope_size;
3581 if 12 > max_ordinal {
3582 return Ok(());
3583 }
3584
3585 let cur_offset: usize = (12 - 1) * envelope_size;
3588
3589 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3591
3592 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry2>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3597 self.node_properties_2.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::ValueTypeMarker>::borrow),
3598 encoder, offset + cur_offset, depth
3599 )?;
3600
3601 _prev_end_offset = cur_offset + envelope_size;
3602 if 13 > max_ordinal {
3603 return Ok(());
3604 }
3605
3606 let cur_offset: usize = (13 - 1) * envelope_size;
3609
3610 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3612
3613 fidl::encoding::encode_in_envelope_optional::<
3618 fidl::encoding::HandleType<
3619 fidl::Vmar,
3620 { fidl::ObjectType::VMAR.into_raw() },
3621 2147483648,
3622 >,
3623 fidl::encoding::DefaultFuchsiaResourceDialect,
3624 >(
3625 self.vmar.as_mut().map(
3626 <fidl::encoding::HandleType<
3627 fidl::Vmar,
3628 { fidl::ObjectType::VMAR.into_raw() },
3629 2147483648,
3630 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3631 ),
3632 encoder,
3633 offset + cur_offset,
3634 depth,
3635 )?;
3636
3637 _prev_end_offset = cur_offset + envelope_size;
3638 if 14 > max_ordinal {
3639 return Ok(());
3640 }
3641
3642 let cur_offset: usize = (14 - 1) * envelope_size;
3645
3646 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3648
3649 fidl::encoding::encode_in_envelope_optional::<
3654 PowerElementArgs,
3655 fidl::encoding::DefaultFuchsiaResourceDialect,
3656 >(
3657 self.power_element_args
3658 .as_mut()
3659 .map(<PowerElementArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3660 encoder,
3661 offset + cur_offset,
3662 depth,
3663 )?;
3664
3665 _prev_end_offset = cur_offset + envelope_size;
3666
3667 Ok(())
3668 }
3669 }
3670
3671 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3672 for DriverStartArgs
3673 {
3674 #[inline(always)]
3675 fn new_empty() -> Self {
3676 Self::default()
3677 }
3678
3679 unsafe fn decode(
3680 &mut self,
3681 decoder: &mut fidl::encoding::Decoder<
3682 '_,
3683 fidl::encoding::DefaultFuchsiaResourceDialect,
3684 >,
3685 offset: usize,
3686 mut depth: fidl::encoding::Depth,
3687 ) -> fidl::Result<()> {
3688 decoder.debug_check_bounds::<Self>(offset);
3689 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3690 None => return Err(fidl::Error::NotNullable),
3691 Some(len) => len,
3692 };
3693 if len == 0 {
3695 return Ok(());
3696 };
3697 depth.increment()?;
3698 let envelope_size = 8;
3699 let bytes_len = len * envelope_size;
3700 let offset = decoder.out_of_line_offset(bytes_len)?;
3701 let mut _next_ordinal_to_read = 0;
3703 let mut next_offset = offset;
3704 let end_offset = offset + bytes_len;
3705 _next_ordinal_to_read += 1;
3706 if next_offset >= end_offset {
3707 return Ok(());
3708 }
3709
3710 while _next_ordinal_to_read < 1 {
3712 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3713 _next_ordinal_to_read += 1;
3714 next_offset += envelope_size;
3715 }
3716
3717 let next_out_of_line = decoder.next_out_of_line();
3718 let handles_before = decoder.remaining_handles();
3719 if let Some((inlined, num_bytes, num_handles)) =
3720 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3721 {
3722 let member_inline_size = <fidl::encoding::Endpoint<
3723 fidl::endpoints::ClientEnd<NodeMarker>,
3724 > as fidl::encoding::TypeMarker>::inline_size(
3725 decoder.context
3726 );
3727 if inlined != (member_inline_size <= 4) {
3728 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3729 }
3730 let inner_offset;
3731 let mut inner_depth = depth.clone();
3732 if inlined {
3733 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3734 inner_offset = next_offset;
3735 } else {
3736 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3737 inner_depth.increment()?;
3738 }
3739 let val_ref = self.node.get_or_insert_with(|| {
3740 fidl::new_empty!(
3741 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
3742 fidl::encoding::DefaultFuchsiaResourceDialect
3743 )
3744 });
3745 fidl::decode!(
3746 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
3747 fidl::encoding::DefaultFuchsiaResourceDialect,
3748 val_ref,
3749 decoder,
3750 inner_offset,
3751 inner_depth
3752 )?;
3753 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3754 {
3755 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3756 }
3757 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3758 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3759 }
3760 }
3761
3762 next_offset += envelope_size;
3763 _next_ordinal_to_read += 1;
3764 if next_offset >= end_offset {
3765 return Ok(());
3766 }
3767
3768 while _next_ordinal_to_read < 2 {
3770 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3771 _next_ordinal_to_read += 1;
3772 next_offset += envelope_size;
3773 }
3774
3775 let next_out_of_line = decoder.next_out_of_line();
3776 let handles_before = decoder.remaining_handles();
3777 if let Some((inlined, num_bytes, num_handles)) =
3778 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3779 {
3780 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3781 if inlined != (member_inline_size <= 4) {
3782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3783 }
3784 let inner_offset;
3785 let mut inner_depth = depth.clone();
3786 if inlined {
3787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3788 inner_offset = next_offset;
3789 } else {
3790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3791 inner_depth.increment()?;
3792 }
3793 let val_ref =
3794 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
3795 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3797 {
3798 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3799 }
3800 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3801 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3802 }
3803 }
3804
3805 next_offset += envelope_size;
3806 _next_ordinal_to_read += 1;
3807 if next_offset >= end_offset {
3808 return Ok(());
3809 }
3810
3811 while _next_ordinal_to_read < 3 {
3813 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3814 _next_ordinal_to_read += 1;
3815 next_offset += envelope_size;
3816 }
3817
3818 let next_out_of_line = decoder.next_out_of_line();
3819 let handles_before = decoder.remaining_handles();
3820 if let Some((inlined, num_bytes, num_handles)) =
3821 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3822 {
3823 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3824 if inlined != (member_inline_size <= 4) {
3825 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3826 }
3827 let inner_offset;
3828 let mut inner_depth = depth.clone();
3829 if inlined {
3830 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3831 inner_offset = next_offset;
3832 } else {
3833 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3834 inner_depth.increment()?;
3835 }
3836 let val_ref = self.url.get_or_insert_with(|| {
3837 fidl::new_empty!(
3838 fidl::encoding::BoundedString<4096>,
3839 fidl::encoding::DefaultFuchsiaResourceDialect
3840 )
3841 });
3842 fidl::decode!(
3843 fidl::encoding::BoundedString<4096>,
3844 fidl::encoding::DefaultFuchsiaResourceDialect,
3845 val_ref,
3846 decoder,
3847 inner_offset,
3848 inner_depth
3849 )?;
3850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3851 {
3852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3853 }
3854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3856 }
3857 }
3858
3859 next_offset += envelope_size;
3860 _next_ordinal_to_read += 1;
3861 if next_offset >= end_offset {
3862 return Ok(());
3863 }
3864
3865 while _next_ordinal_to_read < 4 {
3867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3868 _next_ordinal_to_read += 1;
3869 next_offset += envelope_size;
3870 }
3871
3872 let next_out_of_line = decoder.next_out_of_line();
3873 let handles_before = decoder.remaining_handles();
3874 if let Some((inlined, num_bytes, num_handles)) =
3875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3876 {
3877 let member_inline_size =
3878 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
3879 decoder.context,
3880 );
3881 if inlined != (member_inline_size <= 4) {
3882 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3883 }
3884 let inner_offset;
3885 let mut inner_depth = depth.clone();
3886 if inlined {
3887 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3888 inner_offset = next_offset;
3889 } else {
3890 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3891 inner_depth.increment()?;
3892 }
3893 let val_ref = self.program.get_or_insert_with(|| {
3894 fidl::new_empty!(
3895 fidl_fuchsia_data::Dictionary,
3896 fidl::encoding::DefaultFuchsiaResourceDialect
3897 )
3898 });
3899 fidl::decode!(
3900 fidl_fuchsia_data::Dictionary,
3901 fidl::encoding::DefaultFuchsiaResourceDialect,
3902 val_ref,
3903 decoder,
3904 inner_offset,
3905 inner_depth
3906 )?;
3907 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3908 {
3909 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3910 }
3911 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3912 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3913 }
3914 }
3915
3916 next_offset += envelope_size;
3917 _next_ordinal_to_read += 1;
3918 if next_offset >= end_offset {
3919 return Ok(());
3920 }
3921
3922 while _next_ordinal_to_read < 5 {
3924 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3925 _next_ordinal_to_read += 1;
3926 next_offset += envelope_size;
3927 }
3928
3929 let next_out_of_line = decoder.next_out_of_line();
3930 let handles_before = decoder.remaining_handles();
3931 if let Some((inlined, num_bytes, num_handles)) =
3932 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3933 {
3934 let member_inline_size = <fidl::encoding::Vector<
3935 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3936 32,
3937 > as fidl::encoding::TypeMarker>::inline_size(
3938 decoder.context
3939 );
3940 if inlined != (member_inline_size <= 4) {
3941 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3942 }
3943 let inner_offset;
3944 let mut inner_depth = depth.clone();
3945 if inlined {
3946 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3947 inner_offset = next_offset;
3948 } else {
3949 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3950 inner_depth.increment()?;
3951 }
3952 let val_ref =
3953 self.incoming.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
3954 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3955 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3956 {
3957 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3958 }
3959 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3960 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3961 }
3962 }
3963
3964 next_offset += envelope_size;
3965 _next_ordinal_to_read += 1;
3966 if next_offset >= end_offset {
3967 return Ok(());
3968 }
3969
3970 while _next_ordinal_to_read < 6 {
3972 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3973 _next_ordinal_to_read += 1;
3974 next_offset += envelope_size;
3975 }
3976
3977 let next_out_of_line = decoder.next_out_of_line();
3978 let handles_before = decoder.remaining_handles();
3979 if let Some((inlined, num_bytes, num_handles)) =
3980 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3981 {
3982 let member_inline_size = <fidl::encoding::Endpoint<
3983 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3984 > as fidl::encoding::TypeMarker>::inline_size(
3985 decoder.context
3986 );
3987 if inlined != (member_inline_size <= 4) {
3988 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3989 }
3990 let inner_offset;
3991 let mut inner_depth = depth.clone();
3992 if inlined {
3993 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3994 inner_offset = next_offset;
3995 } else {
3996 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3997 inner_depth.increment()?;
3998 }
3999 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
4000 fidl::new_empty!(
4001 fidl::encoding::Endpoint<
4002 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4003 >,
4004 fidl::encoding::DefaultFuchsiaResourceDialect
4005 )
4006 });
4007 fidl::decode!(
4008 fidl::encoding::Endpoint<
4009 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4010 >,
4011 fidl::encoding::DefaultFuchsiaResourceDialect,
4012 val_ref,
4013 decoder,
4014 inner_offset,
4015 inner_depth
4016 )?;
4017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4018 {
4019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4020 }
4021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4023 }
4024 }
4025
4026 next_offset += envelope_size;
4027 _next_ordinal_to_read += 1;
4028 if next_offset >= end_offset {
4029 return Ok(());
4030 }
4031
4032 while _next_ordinal_to_read < 7 {
4034 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4035 _next_ordinal_to_read += 1;
4036 next_offset += envelope_size;
4037 }
4038
4039 let next_out_of_line = decoder.next_out_of_line();
4040 let handles_before = decoder.remaining_handles();
4041 if let Some((inlined, num_bytes, num_handles)) =
4042 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4043 {
4044 let member_inline_size = <fidl::encoding::HandleType<
4045 fidl::Vmo,
4046 { fidl::ObjectType::VMO.into_raw() },
4047 2147483648,
4048 > as fidl::encoding::TypeMarker>::inline_size(
4049 decoder.context
4050 );
4051 if inlined != (member_inline_size <= 4) {
4052 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4053 }
4054 let inner_offset;
4055 let mut inner_depth = depth.clone();
4056 if inlined {
4057 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4058 inner_offset = next_offset;
4059 } else {
4060 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4061 inner_depth.increment()?;
4062 }
4063 let val_ref =
4064 self.config.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4065 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4066 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4067 {
4068 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4069 }
4070 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4071 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4072 }
4073 }
4074
4075 next_offset += envelope_size;
4076 _next_ordinal_to_read += 1;
4077 if next_offset >= end_offset {
4078 return Ok(());
4079 }
4080
4081 while _next_ordinal_to_read < 8 {
4083 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4084 _next_ordinal_to_read += 1;
4085 next_offset += envelope_size;
4086 }
4087
4088 let next_out_of_line = decoder.next_out_of_line();
4089 let handles_before = decoder.remaining_handles();
4090 if let Some((inlined, num_bytes, num_handles)) =
4091 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4092 {
4093 let member_inline_size =
4094 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4095 decoder.context,
4096 );
4097 if inlined != (member_inline_size <= 4) {
4098 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4099 }
4100 let inner_offset;
4101 let mut inner_depth = depth.clone();
4102 if inlined {
4103 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4104 inner_offset = next_offset;
4105 } else {
4106 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4107 inner_depth.increment()?;
4108 }
4109 let val_ref = self.node_name.get_or_insert_with(|| {
4110 fidl::new_empty!(
4111 fidl::encoding::UnboundedString,
4112 fidl::encoding::DefaultFuchsiaResourceDialect
4113 )
4114 });
4115 fidl::decode!(
4116 fidl::encoding::UnboundedString,
4117 fidl::encoding::DefaultFuchsiaResourceDialect,
4118 val_ref,
4119 decoder,
4120 inner_offset,
4121 inner_depth
4122 )?;
4123 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4124 {
4125 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4126 }
4127 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4128 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4129 }
4130 }
4131
4132 next_offset += envelope_size;
4133 _next_ordinal_to_read += 1;
4134 if next_offset >= end_offset {
4135 return Ok(());
4136 }
4137
4138 while _next_ordinal_to_read < 9 {
4140 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4141 _next_ordinal_to_read += 1;
4142 next_offset += envelope_size;
4143 }
4144
4145 let next_out_of_line = decoder.next_out_of_line();
4146 let handles_before = decoder.remaining_handles();
4147 if let Some((inlined, num_bytes, num_handles)) =
4148 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4149 {
4150 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4151 if inlined != (member_inline_size <= 4) {
4152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4153 }
4154 let inner_offset;
4155 let mut inner_depth = depth.clone();
4156 if inlined {
4157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4158 inner_offset = next_offset;
4159 } else {
4160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4161 inner_depth.increment()?;
4162 }
4163 let val_ref = self.node_properties.get_or_insert_with(|| {
4164 fidl::new_empty!(
4165 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4166 fidl::encoding::DefaultFuchsiaResourceDialect
4167 )
4168 });
4169 fidl::decode!(
4170 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4171 fidl::encoding::DefaultFuchsiaResourceDialect,
4172 val_ref,
4173 decoder,
4174 inner_offset,
4175 inner_depth
4176 )?;
4177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4178 {
4179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4180 }
4181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4183 }
4184 }
4185
4186 next_offset += envelope_size;
4187 _next_ordinal_to_read += 1;
4188 if next_offset >= end_offset {
4189 return Ok(());
4190 }
4191
4192 while _next_ordinal_to_read < 10 {
4194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4195 _next_ordinal_to_read += 1;
4196 next_offset += envelope_size;
4197 }
4198
4199 let next_out_of_line = decoder.next_out_of_line();
4200 let handles_before = decoder.remaining_handles();
4201 if let Some((inlined, num_bytes, num_handles)) =
4202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4203 {
4204 let member_inline_size =
4205 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
4206 decoder.context,
4207 );
4208 if inlined != (member_inline_size <= 4) {
4209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4210 }
4211 let inner_offset;
4212 let mut inner_depth = depth.clone();
4213 if inlined {
4214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4215 inner_offset = next_offset;
4216 } else {
4217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4218 inner_depth.increment()?;
4219 }
4220 let val_ref =
4221 self.node_offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
4222 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4223 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4224 {
4225 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4226 }
4227 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4228 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4229 }
4230 }
4231
4232 next_offset += envelope_size;
4233 _next_ordinal_to_read += 1;
4234 if next_offset >= end_offset {
4235 return Ok(());
4236 }
4237
4238 while _next_ordinal_to_read < 11 {
4240 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4241 _next_ordinal_to_read += 1;
4242 next_offset += envelope_size;
4243 }
4244
4245 let next_out_of_line = decoder.next_out_of_line();
4246 let handles_before = decoder.remaining_handles();
4247 if let Some((inlined, num_bytes, num_handles)) =
4248 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4249 {
4250 let member_inline_size = <fidl::encoding::HandleType<
4251 fidl::Event,
4252 { fidl::ObjectType::EVENT.into_raw() },
4253 2147483648,
4254 > as fidl::encoding::TypeMarker>::inline_size(
4255 decoder.context
4256 );
4257 if inlined != (member_inline_size <= 4) {
4258 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4259 }
4260 let inner_offset;
4261 let mut inner_depth = depth.clone();
4262 if inlined {
4263 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4264 inner_offset = next_offset;
4265 } else {
4266 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4267 inner_depth.increment()?;
4268 }
4269 let val_ref =
4270 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4271 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4272 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4273 {
4274 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4275 }
4276 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4277 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4278 }
4279 }
4280
4281 next_offset += envelope_size;
4282 _next_ordinal_to_read += 1;
4283 if next_offset >= end_offset {
4284 return Ok(());
4285 }
4286
4287 while _next_ordinal_to_read < 12 {
4289 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4290 _next_ordinal_to_read += 1;
4291 next_offset += envelope_size;
4292 }
4293
4294 let next_out_of_line = decoder.next_out_of_line();
4295 let handles_before = decoder.remaining_handles();
4296 if let Some((inlined, num_bytes, num_handles)) =
4297 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4298 {
4299 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4300 if inlined != (member_inline_size <= 4) {
4301 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4302 }
4303 let inner_offset;
4304 let mut inner_depth = depth.clone();
4305 if inlined {
4306 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4307 inner_offset = next_offset;
4308 } else {
4309 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4310 inner_depth.increment()?;
4311 }
4312 let val_ref = self.node_properties_2.get_or_insert_with(|| {
4313 fidl::new_empty!(
4314 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4315 fidl::encoding::DefaultFuchsiaResourceDialect
4316 )
4317 });
4318 fidl::decode!(
4319 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4320 fidl::encoding::DefaultFuchsiaResourceDialect,
4321 val_ref,
4322 decoder,
4323 inner_offset,
4324 inner_depth
4325 )?;
4326 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4327 {
4328 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4329 }
4330 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4331 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4332 }
4333 }
4334
4335 next_offset += envelope_size;
4336 _next_ordinal_to_read += 1;
4337 if next_offset >= end_offset {
4338 return Ok(());
4339 }
4340
4341 while _next_ordinal_to_read < 13 {
4343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4344 _next_ordinal_to_read += 1;
4345 next_offset += envelope_size;
4346 }
4347
4348 let next_out_of_line = decoder.next_out_of_line();
4349 let handles_before = decoder.remaining_handles();
4350 if let Some((inlined, num_bytes, num_handles)) =
4351 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4352 {
4353 let member_inline_size = <fidl::encoding::HandleType<
4354 fidl::Vmar,
4355 { fidl::ObjectType::VMAR.into_raw() },
4356 2147483648,
4357 > as fidl::encoding::TypeMarker>::inline_size(
4358 decoder.context
4359 );
4360 if inlined != (member_inline_size <= 4) {
4361 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4362 }
4363 let inner_offset;
4364 let mut inner_depth = depth.clone();
4365 if inlined {
4366 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4367 inner_offset = next_offset;
4368 } else {
4369 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4370 inner_depth.increment()?;
4371 }
4372 let val_ref =
4373 self.vmar.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4374 fidl::decode!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4375 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4376 {
4377 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4378 }
4379 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4380 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4381 }
4382 }
4383
4384 next_offset += envelope_size;
4385 _next_ordinal_to_read += 1;
4386 if next_offset >= end_offset {
4387 return Ok(());
4388 }
4389
4390 while _next_ordinal_to_read < 14 {
4392 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4393 _next_ordinal_to_read += 1;
4394 next_offset += envelope_size;
4395 }
4396
4397 let next_out_of_line = decoder.next_out_of_line();
4398 let handles_before = decoder.remaining_handles();
4399 if let Some((inlined, num_bytes, num_handles)) =
4400 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4401 {
4402 let member_inline_size =
4403 <PowerElementArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4404 if inlined != (member_inline_size <= 4) {
4405 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4406 }
4407 let inner_offset;
4408 let mut inner_depth = depth.clone();
4409 if inlined {
4410 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4411 inner_offset = next_offset;
4412 } else {
4413 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4414 inner_depth.increment()?;
4415 }
4416 let val_ref = self.power_element_args.get_or_insert_with(|| {
4417 fidl::new_empty!(
4418 PowerElementArgs,
4419 fidl::encoding::DefaultFuchsiaResourceDialect
4420 )
4421 });
4422 fidl::decode!(
4423 PowerElementArgs,
4424 fidl::encoding::DefaultFuchsiaResourceDialect,
4425 val_ref,
4426 decoder,
4427 inner_offset,
4428 inner_depth
4429 )?;
4430 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4431 {
4432 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4433 }
4434 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4435 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4436 }
4437 }
4438
4439 next_offset += envelope_size;
4440
4441 while next_offset < end_offset {
4443 _next_ordinal_to_read += 1;
4444 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4445 next_offset += envelope_size;
4446 }
4447
4448 Ok(())
4449 }
4450 }
4451
4452 impl NodeAddArgs {
4453 #[inline(always)]
4454 fn max_ordinal_present(&self) -> u64 {
4455 if let Some(_) = self.offers_dictionary {
4456 return 9;
4457 }
4458 if let Some(_) = self.properties2 {
4459 return 8;
4460 }
4461 if let Some(_) = self.bus_info {
4462 return 7;
4463 }
4464 if let Some(_) = self.offers2 {
4465 return 6;
4466 }
4467 if let Some(_) = self.devfs_args {
4468 return 5;
4469 }
4470 if let Some(_) = self.properties {
4471 return 4;
4472 }
4473 if let Some(_) = self.symbols {
4474 return 3;
4475 }
4476 if let Some(_) = self.name {
4477 return 1;
4478 }
4479 0
4480 }
4481 }
4482
4483 impl fidl::encoding::ResourceTypeMarker for NodeAddArgs {
4484 type Borrowed<'a> = &'a mut Self;
4485 fn take_or_borrow<'a>(
4486 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4487 ) -> Self::Borrowed<'a> {
4488 value
4489 }
4490 }
4491
4492 unsafe impl fidl::encoding::TypeMarker for NodeAddArgs {
4493 type Owned = Self;
4494
4495 #[inline(always)]
4496 fn inline_align(_context: fidl::encoding::Context) -> usize {
4497 8
4498 }
4499
4500 #[inline(always)]
4501 fn inline_size(_context: fidl::encoding::Context) -> usize {
4502 16
4503 }
4504 }
4505
4506 unsafe impl fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
4507 for &mut NodeAddArgs
4508 {
4509 unsafe fn encode(
4510 self,
4511 encoder: &mut fidl::encoding::Encoder<
4512 '_,
4513 fidl::encoding::DefaultFuchsiaResourceDialect,
4514 >,
4515 offset: usize,
4516 mut depth: fidl::encoding::Depth,
4517 ) -> fidl::Result<()> {
4518 encoder.debug_check_bounds::<NodeAddArgs>(offset);
4519 let max_ordinal: u64 = self.max_ordinal_present();
4521 encoder.write_num(max_ordinal, offset);
4522 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4523 if max_ordinal == 0 {
4525 return Ok(());
4526 }
4527 depth.increment()?;
4528 let envelope_size = 8;
4529 let bytes_len = max_ordinal as usize * envelope_size;
4530 #[allow(unused_variables)]
4531 let offset = encoder.out_of_line_offset(bytes_len);
4532 let mut _prev_end_offset: usize = 0;
4533 if 1 > max_ordinal {
4534 return Ok(());
4535 }
4536
4537 let cur_offset: usize = (1 - 1) * envelope_size;
4540
4541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4543
4544 fidl::encoding::encode_in_envelope_optional::<
4549 fidl::encoding::BoundedString<128>,
4550 fidl::encoding::DefaultFuchsiaResourceDialect,
4551 >(
4552 self.name.as_ref().map(
4553 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
4554 ),
4555 encoder,
4556 offset + cur_offset,
4557 depth,
4558 )?;
4559
4560 _prev_end_offset = cur_offset + envelope_size;
4561 if 3 > max_ordinal {
4562 return Ok(());
4563 }
4564
4565 let cur_offset: usize = (3 - 1) * envelope_size;
4568
4569 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4571
4572 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4577 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4578 encoder, offset + cur_offset, depth
4579 )?;
4580
4581 _prev_end_offset = cur_offset + envelope_size;
4582 if 4 > max_ordinal {
4583 return Ok(());
4584 }
4585
4586 let cur_offset: usize = (4 - 1) * envelope_size;
4589
4590 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4592
4593 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4598 self.properties.as_ref().map(<fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4599 encoder, offset + cur_offset, depth
4600 )?;
4601
4602 _prev_end_offset = cur_offset + envelope_size;
4603 if 5 > max_ordinal {
4604 return Ok(());
4605 }
4606
4607 let cur_offset: usize = (5 - 1) * envelope_size;
4610
4611 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4613
4614 fidl::encoding::encode_in_envelope_optional::<
4619 DevfsAddArgs,
4620 fidl::encoding::DefaultFuchsiaResourceDialect,
4621 >(
4622 self.devfs_args
4623 .as_mut()
4624 .map(<DevfsAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4625 encoder,
4626 offset + cur_offset,
4627 depth,
4628 )?;
4629
4630 _prev_end_offset = cur_offset + envelope_size;
4631 if 6 > max_ordinal {
4632 return Ok(());
4633 }
4634
4635 let cur_offset: usize = (6 - 1) * envelope_size;
4638
4639 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4641
4642 fidl::encoding::encode_in_envelope_optional::<
4647 fidl::encoding::Vector<Offer, 128>,
4648 fidl::encoding::DefaultFuchsiaResourceDialect,
4649 >(
4650 self.offers2.as_ref().map(
4651 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
4652 ),
4653 encoder,
4654 offset + cur_offset,
4655 depth,
4656 )?;
4657
4658 _prev_end_offset = cur_offset + envelope_size;
4659 if 7 > max_ordinal {
4660 return Ok(());
4661 }
4662
4663 let cur_offset: usize = (7 - 1) * envelope_size;
4666
4667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4669
4670 fidl::encoding::encode_in_envelope_optional::<
4675 BusInfo,
4676 fidl::encoding::DefaultFuchsiaResourceDialect,
4677 >(
4678 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
4679 encoder,
4680 offset + cur_offset,
4681 depth,
4682 )?;
4683
4684 _prev_end_offset = cur_offset + envelope_size;
4685 if 8 > max_ordinal {
4686 return Ok(());
4687 }
4688
4689 let cur_offset: usize = (8 - 1) * envelope_size;
4692
4693 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4695
4696 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4701 self.properties2.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4702 encoder, offset + cur_offset, depth
4703 )?;
4704
4705 _prev_end_offset = cur_offset + envelope_size;
4706 if 9 > max_ordinal {
4707 return Ok(());
4708 }
4709
4710 let cur_offset: usize = (9 - 1) * envelope_size;
4713
4714 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4716
4717 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
4722 self.offers_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4723 encoder, offset + cur_offset, depth
4724 )?;
4725
4726 _prev_end_offset = cur_offset + envelope_size;
4727
4728 Ok(())
4729 }
4730 }
4731
4732 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {
4733 #[inline(always)]
4734 fn new_empty() -> Self {
4735 Self::default()
4736 }
4737
4738 unsafe fn decode(
4739 &mut self,
4740 decoder: &mut fidl::encoding::Decoder<
4741 '_,
4742 fidl::encoding::DefaultFuchsiaResourceDialect,
4743 >,
4744 offset: usize,
4745 mut depth: fidl::encoding::Depth,
4746 ) -> fidl::Result<()> {
4747 decoder.debug_check_bounds::<Self>(offset);
4748 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4749 None => return Err(fidl::Error::NotNullable),
4750 Some(len) => len,
4751 };
4752 if len == 0 {
4754 return Ok(());
4755 };
4756 depth.increment()?;
4757 let envelope_size = 8;
4758 let bytes_len = len * envelope_size;
4759 let offset = decoder.out_of_line_offset(bytes_len)?;
4760 let mut _next_ordinal_to_read = 0;
4762 let mut next_offset = offset;
4763 let end_offset = offset + bytes_len;
4764 _next_ordinal_to_read += 1;
4765 if next_offset >= end_offset {
4766 return Ok(());
4767 }
4768
4769 while _next_ordinal_to_read < 1 {
4771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4772 _next_ordinal_to_read += 1;
4773 next_offset += envelope_size;
4774 }
4775
4776 let next_out_of_line = decoder.next_out_of_line();
4777 let handles_before = decoder.remaining_handles();
4778 if let Some((inlined, num_bytes, num_handles)) =
4779 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4780 {
4781 let member_inline_size =
4782 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
4783 decoder.context,
4784 );
4785 if inlined != (member_inline_size <= 4) {
4786 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4787 }
4788 let inner_offset;
4789 let mut inner_depth = depth.clone();
4790 if inlined {
4791 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4792 inner_offset = next_offset;
4793 } else {
4794 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4795 inner_depth.increment()?;
4796 }
4797 let val_ref = self.name.get_or_insert_with(|| {
4798 fidl::new_empty!(
4799 fidl::encoding::BoundedString<128>,
4800 fidl::encoding::DefaultFuchsiaResourceDialect
4801 )
4802 });
4803 fidl::decode!(
4804 fidl::encoding::BoundedString<128>,
4805 fidl::encoding::DefaultFuchsiaResourceDialect,
4806 val_ref,
4807 decoder,
4808 inner_offset,
4809 inner_depth
4810 )?;
4811 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4812 {
4813 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4814 }
4815 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4816 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4817 }
4818 }
4819
4820 next_offset += envelope_size;
4821 _next_ordinal_to_read += 1;
4822 if next_offset >= end_offset {
4823 return Ok(());
4824 }
4825
4826 while _next_ordinal_to_read < 3 {
4828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4829 _next_ordinal_to_read += 1;
4830 next_offset += envelope_size;
4831 }
4832
4833 let next_out_of_line = decoder.next_out_of_line();
4834 let handles_before = decoder.remaining_handles();
4835 if let Some((inlined, num_bytes, num_handles)) =
4836 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4837 {
4838 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4839 if inlined != (member_inline_size <= 4) {
4840 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4841 }
4842 let inner_offset;
4843 let mut inner_depth = depth.clone();
4844 if inlined {
4845 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4846 inner_offset = next_offset;
4847 } else {
4848 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4849 inner_depth.increment()?;
4850 }
4851 let val_ref =
4852 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4853 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4854 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4855 {
4856 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4857 }
4858 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4859 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4860 }
4861 }
4862
4863 next_offset += envelope_size;
4864 _next_ordinal_to_read += 1;
4865 if next_offset >= end_offset {
4866 return Ok(());
4867 }
4868
4869 while _next_ordinal_to_read < 4 {
4871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4872 _next_ordinal_to_read += 1;
4873 next_offset += envelope_size;
4874 }
4875
4876 let next_out_of_line = decoder.next_out_of_line();
4877 let handles_before = decoder.remaining_handles();
4878 if let Some((inlined, num_bytes, num_handles)) =
4879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4880 {
4881 let member_inline_size = <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4882 if inlined != (member_inline_size <= 4) {
4883 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4884 }
4885 let inner_offset;
4886 let mut inner_depth = depth.clone();
4887 if inlined {
4888 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4889 inner_offset = next_offset;
4890 } else {
4891 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4892 inner_depth.increment()?;
4893 }
4894 let val_ref =
4895 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4896 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4897 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4898 {
4899 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4900 }
4901 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4902 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4903 }
4904 }
4905
4906 next_offset += envelope_size;
4907 _next_ordinal_to_read += 1;
4908 if next_offset >= end_offset {
4909 return Ok(());
4910 }
4911
4912 while _next_ordinal_to_read < 5 {
4914 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4915 _next_ordinal_to_read += 1;
4916 next_offset += envelope_size;
4917 }
4918
4919 let next_out_of_line = decoder.next_out_of_line();
4920 let handles_before = decoder.remaining_handles();
4921 if let Some((inlined, num_bytes, num_handles)) =
4922 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4923 {
4924 let member_inline_size =
4925 <DevfsAddArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4926 if inlined != (member_inline_size <= 4) {
4927 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4928 }
4929 let inner_offset;
4930 let mut inner_depth = depth.clone();
4931 if inlined {
4932 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4933 inner_offset = next_offset;
4934 } else {
4935 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4936 inner_depth.increment()?;
4937 }
4938 let val_ref = self.devfs_args.get_or_insert_with(|| {
4939 fidl::new_empty!(DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect)
4940 });
4941 fidl::decode!(
4942 DevfsAddArgs,
4943 fidl::encoding::DefaultFuchsiaResourceDialect,
4944 val_ref,
4945 decoder,
4946 inner_offset,
4947 inner_depth
4948 )?;
4949 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4950 {
4951 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4952 }
4953 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4954 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4955 }
4956 }
4957
4958 next_offset += envelope_size;
4959 _next_ordinal_to_read += 1;
4960 if next_offset >= end_offset {
4961 return Ok(());
4962 }
4963
4964 while _next_ordinal_to_read < 6 {
4966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4967 _next_ordinal_to_read += 1;
4968 next_offset += envelope_size;
4969 }
4970
4971 let next_out_of_line = decoder.next_out_of_line();
4972 let handles_before = decoder.remaining_handles();
4973 if let Some((inlined, num_bytes, num_handles)) =
4974 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4975 {
4976 let member_inline_size =
4977 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
4978 decoder.context,
4979 );
4980 if inlined != (member_inline_size <= 4) {
4981 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4982 }
4983 let inner_offset;
4984 let mut inner_depth = depth.clone();
4985 if inlined {
4986 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4987 inner_offset = next_offset;
4988 } else {
4989 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4990 inner_depth.increment()?;
4991 }
4992 let val_ref =
4993 self.offers2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
4994 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4995 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4996 {
4997 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4998 }
4999 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5000 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5001 }
5002 }
5003
5004 next_offset += envelope_size;
5005 _next_ordinal_to_read += 1;
5006 if next_offset >= end_offset {
5007 return Ok(());
5008 }
5009
5010 while _next_ordinal_to_read < 7 {
5012 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5013 _next_ordinal_to_read += 1;
5014 next_offset += envelope_size;
5015 }
5016
5017 let next_out_of_line = decoder.next_out_of_line();
5018 let handles_before = decoder.remaining_handles();
5019 if let Some((inlined, num_bytes, num_handles)) =
5020 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5021 {
5022 let member_inline_size =
5023 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5024 if inlined != (member_inline_size <= 4) {
5025 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5026 }
5027 let inner_offset;
5028 let mut inner_depth = depth.clone();
5029 if inlined {
5030 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5031 inner_offset = next_offset;
5032 } else {
5033 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5034 inner_depth.increment()?;
5035 }
5036 let val_ref = self.bus_info.get_or_insert_with(|| {
5037 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
5038 });
5039 fidl::decode!(
5040 BusInfo,
5041 fidl::encoding::DefaultFuchsiaResourceDialect,
5042 val_ref,
5043 decoder,
5044 inner_offset,
5045 inner_depth
5046 )?;
5047 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5048 {
5049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5050 }
5051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5053 }
5054 }
5055
5056 next_offset += envelope_size;
5057 _next_ordinal_to_read += 1;
5058 if next_offset >= end_offset {
5059 return Ok(());
5060 }
5061
5062 while _next_ordinal_to_read < 8 {
5064 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5065 _next_ordinal_to_read += 1;
5066 next_offset += envelope_size;
5067 }
5068
5069 let next_out_of_line = decoder.next_out_of_line();
5070 let handles_before = decoder.remaining_handles();
5071 if let Some((inlined, num_bytes, num_handles)) =
5072 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5073 {
5074 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5075 if inlined != (member_inline_size <= 4) {
5076 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5077 }
5078 let inner_offset;
5079 let mut inner_depth = depth.clone();
5080 if inlined {
5081 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5082 inner_offset = next_offset;
5083 } else {
5084 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5085 inner_depth.increment()?;
5086 }
5087 let val_ref =
5088 self.properties2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5089 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5090 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5091 {
5092 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5093 }
5094 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5095 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5096 }
5097 }
5098
5099 next_offset += envelope_size;
5100 _next_ordinal_to_read += 1;
5101 if next_offset >= end_offset {
5102 return Ok(());
5103 }
5104
5105 while _next_ordinal_to_read < 9 {
5107 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5108 _next_ordinal_to_read += 1;
5109 next_offset += envelope_size;
5110 }
5111
5112 let next_out_of_line = decoder.next_out_of_line();
5113 let handles_before = decoder.remaining_handles();
5114 if let Some((inlined, num_bytes, num_handles)) =
5115 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5116 {
5117 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5118 if inlined != (member_inline_size <= 4) {
5119 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5120 }
5121 let inner_offset;
5122 let mut inner_depth = depth.clone();
5123 if inlined {
5124 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5125 inner_offset = next_offset;
5126 } else {
5127 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5128 inner_depth.increment()?;
5129 }
5130 let val_ref = self.offers_dictionary.get_or_insert_with(|| {
5131 fidl::new_empty!(
5132 fidl_fuchsia_component_sandbox::DictionaryRef,
5133 fidl::encoding::DefaultFuchsiaResourceDialect
5134 )
5135 });
5136 fidl::decode!(
5137 fidl_fuchsia_component_sandbox::DictionaryRef,
5138 fidl::encoding::DefaultFuchsiaResourceDialect,
5139 val_ref,
5140 decoder,
5141 inner_offset,
5142 inner_depth
5143 )?;
5144 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5145 {
5146 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5147 }
5148 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5149 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5150 }
5151 }
5152
5153 next_offset += envelope_size;
5154
5155 while next_offset < end_offset {
5157 _next_ordinal_to_read += 1;
5158 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5159 next_offset += envelope_size;
5160 }
5161
5162 Ok(())
5163 }
5164 }
5165
5166 impl NodeControllerOnBindRequest {
5167 #[inline(always)]
5168 fn max_ordinal_present(&self) -> u64 {
5169 if let Some(_) = self.node_token {
5170 return 1;
5171 }
5172 0
5173 }
5174 }
5175
5176 impl fidl::encoding::ResourceTypeMarker for NodeControllerOnBindRequest {
5177 type Borrowed<'a> = &'a mut Self;
5178 fn take_or_borrow<'a>(
5179 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5180 ) -> Self::Borrowed<'a> {
5181 value
5182 }
5183 }
5184
5185 unsafe impl fidl::encoding::TypeMarker for NodeControllerOnBindRequest {
5186 type Owned = Self;
5187
5188 #[inline(always)]
5189 fn inline_align(_context: fidl::encoding::Context) -> usize {
5190 8
5191 }
5192
5193 #[inline(always)]
5194 fn inline_size(_context: fidl::encoding::Context) -> usize {
5195 16
5196 }
5197 }
5198
5199 unsafe impl
5200 fidl::encoding::Encode<
5201 NodeControllerOnBindRequest,
5202 fidl::encoding::DefaultFuchsiaResourceDialect,
5203 > for &mut NodeControllerOnBindRequest
5204 {
5205 unsafe fn encode(
5206 self,
5207 encoder: &mut fidl::encoding::Encoder<
5208 '_,
5209 fidl::encoding::DefaultFuchsiaResourceDialect,
5210 >,
5211 offset: usize,
5212 mut depth: fidl::encoding::Depth,
5213 ) -> fidl::Result<()> {
5214 encoder.debug_check_bounds::<NodeControllerOnBindRequest>(offset);
5215 let max_ordinal: u64 = self.max_ordinal_present();
5217 encoder.write_num(max_ordinal, offset);
5218 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5219 if max_ordinal == 0 {
5221 return Ok(());
5222 }
5223 depth.increment()?;
5224 let envelope_size = 8;
5225 let bytes_len = max_ordinal as usize * envelope_size;
5226 #[allow(unused_variables)]
5227 let offset = encoder.out_of_line_offset(bytes_len);
5228 let mut _prev_end_offset: usize = 0;
5229 if 1 > max_ordinal {
5230 return Ok(());
5231 }
5232
5233 let cur_offset: usize = (1 - 1) * envelope_size;
5236
5237 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5239
5240 fidl::encoding::encode_in_envelope_optional::<
5245 fidl::encoding::HandleType<
5246 fidl::Event,
5247 { fidl::ObjectType::EVENT.into_raw() },
5248 2147483648,
5249 >,
5250 fidl::encoding::DefaultFuchsiaResourceDialect,
5251 >(
5252 self.node_token.as_mut().map(
5253 <fidl::encoding::HandleType<
5254 fidl::Event,
5255 { fidl::ObjectType::EVENT.into_raw() },
5256 2147483648,
5257 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5258 ),
5259 encoder,
5260 offset + cur_offset,
5261 depth,
5262 )?;
5263
5264 _prev_end_offset = cur_offset + envelope_size;
5265
5266 Ok(())
5267 }
5268 }
5269
5270 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5271 for NodeControllerOnBindRequest
5272 {
5273 #[inline(always)]
5274 fn new_empty() -> Self {
5275 Self::default()
5276 }
5277
5278 unsafe fn decode(
5279 &mut self,
5280 decoder: &mut fidl::encoding::Decoder<
5281 '_,
5282 fidl::encoding::DefaultFuchsiaResourceDialect,
5283 >,
5284 offset: usize,
5285 mut depth: fidl::encoding::Depth,
5286 ) -> fidl::Result<()> {
5287 decoder.debug_check_bounds::<Self>(offset);
5288 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5289 None => return Err(fidl::Error::NotNullable),
5290 Some(len) => len,
5291 };
5292 if len == 0 {
5294 return Ok(());
5295 };
5296 depth.increment()?;
5297 let envelope_size = 8;
5298 let bytes_len = len * envelope_size;
5299 let offset = decoder.out_of_line_offset(bytes_len)?;
5300 let mut _next_ordinal_to_read = 0;
5302 let mut next_offset = offset;
5303 let end_offset = offset + bytes_len;
5304 _next_ordinal_to_read += 1;
5305 if next_offset >= end_offset {
5306 return Ok(());
5307 }
5308
5309 while _next_ordinal_to_read < 1 {
5311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5312 _next_ordinal_to_read += 1;
5313 next_offset += envelope_size;
5314 }
5315
5316 let next_out_of_line = decoder.next_out_of_line();
5317 let handles_before = decoder.remaining_handles();
5318 if let Some((inlined, num_bytes, num_handles)) =
5319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5320 {
5321 let member_inline_size = <fidl::encoding::HandleType<
5322 fidl::Event,
5323 { fidl::ObjectType::EVENT.into_raw() },
5324 2147483648,
5325 > as fidl::encoding::TypeMarker>::inline_size(
5326 decoder.context
5327 );
5328 if inlined != (member_inline_size <= 4) {
5329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5330 }
5331 let inner_offset;
5332 let mut inner_depth = depth.clone();
5333 if inlined {
5334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5335 inner_offset = next_offset;
5336 } else {
5337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5338 inner_depth.increment()?;
5339 }
5340 let val_ref =
5341 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5342 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5343 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5344 {
5345 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5346 }
5347 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5348 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5349 }
5350 }
5351
5352 next_offset += envelope_size;
5353
5354 while next_offset < end_offset {
5356 _next_ordinal_to_read += 1;
5357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5358 next_offset += envelope_size;
5359 }
5360
5361 Ok(())
5362 }
5363 }
5364
5365 impl PowerElementArgs {
5366 #[inline(always)]
5367 fn max_ordinal_present(&self) -> u64 {
5368 if let Some(_) = self.token {
5369 return 4;
5370 }
5371 if let Some(_) = self.lessor_client {
5372 return 3;
5373 }
5374 if let Some(_) = self.runner_server {
5375 return 2;
5376 }
5377 if let Some(_) = self.control_client {
5378 return 1;
5379 }
5380 0
5381 }
5382 }
5383
5384 impl fidl::encoding::ResourceTypeMarker for PowerElementArgs {
5385 type Borrowed<'a> = &'a mut Self;
5386 fn take_or_borrow<'a>(
5387 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5388 ) -> Self::Borrowed<'a> {
5389 value
5390 }
5391 }
5392
5393 unsafe impl fidl::encoding::TypeMarker for PowerElementArgs {
5394 type Owned = Self;
5395
5396 #[inline(always)]
5397 fn inline_align(_context: fidl::encoding::Context) -> usize {
5398 8
5399 }
5400
5401 #[inline(always)]
5402 fn inline_size(_context: fidl::encoding::Context) -> usize {
5403 16
5404 }
5405 }
5406
5407 unsafe impl
5408 fidl::encoding::Encode<PowerElementArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
5409 for &mut PowerElementArgs
5410 {
5411 unsafe fn encode(
5412 self,
5413 encoder: &mut fidl::encoding::Encoder<
5414 '_,
5415 fidl::encoding::DefaultFuchsiaResourceDialect,
5416 >,
5417 offset: usize,
5418 mut depth: fidl::encoding::Depth,
5419 ) -> fidl::Result<()> {
5420 encoder.debug_check_bounds::<PowerElementArgs>(offset);
5421 let max_ordinal: u64 = self.max_ordinal_present();
5423 encoder.write_num(max_ordinal, offset);
5424 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5425 if max_ordinal == 0 {
5427 return Ok(());
5428 }
5429 depth.increment()?;
5430 let envelope_size = 8;
5431 let bytes_len = max_ordinal as usize * envelope_size;
5432 #[allow(unused_variables)]
5433 let offset = encoder.out_of_line_offset(bytes_len);
5434 let mut _prev_end_offset: usize = 0;
5435 if 1 > max_ordinal {
5436 return Ok(());
5437 }
5438
5439 let cur_offset: usize = (1 - 1) * envelope_size;
5442
5443 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5445
5446 fidl::encoding::encode_in_envelope_optional::<
5451 fidl::encoding::Endpoint<
5452 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5453 >,
5454 fidl::encoding::DefaultFuchsiaResourceDialect,
5455 >(
5456 self.control_client.as_mut().map(
5457 <fidl::encoding::Endpoint<
5458 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5459 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5460 ),
5461 encoder,
5462 offset + cur_offset,
5463 depth,
5464 )?;
5465
5466 _prev_end_offset = cur_offset + envelope_size;
5467 if 2 > max_ordinal {
5468 return Ok(());
5469 }
5470
5471 let cur_offset: usize = (2 - 1) * envelope_size;
5474
5475 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5477
5478 fidl::encoding::encode_in_envelope_optional::<
5483 fidl::encoding::Endpoint<
5484 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5485 >,
5486 fidl::encoding::DefaultFuchsiaResourceDialect,
5487 >(
5488 self.runner_server.as_mut().map(
5489 <fidl::encoding::Endpoint<
5490 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5491 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5492 ),
5493 encoder,
5494 offset + cur_offset,
5495 depth,
5496 )?;
5497
5498 _prev_end_offset = cur_offset + envelope_size;
5499 if 3 > max_ordinal {
5500 return Ok(());
5501 }
5502
5503 let cur_offset: usize = (3 - 1) * envelope_size;
5506
5507 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5509
5510 fidl::encoding::encode_in_envelope_optional::<
5515 fidl::encoding::Endpoint<
5516 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5517 >,
5518 fidl::encoding::DefaultFuchsiaResourceDialect,
5519 >(
5520 self.lessor_client.as_mut().map(
5521 <fidl::encoding::Endpoint<
5522 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5523 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5524 ),
5525 encoder,
5526 offset + cur_offset,
5527 depth,
5528 )?;
5529
5530 _prev_end_offset = cur_offset + envelope_size;
5531 if 4 > max_ordinal {
5532 return Ok(());
5533 }
5534
5535 let cur_offset: usize = (4 - 1) * envelope_size;
5538
5539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5541
5542 fidl::encoding::encode_in_envelope_optional::<
5547 fidl::encoding::HandleType<
5548 fidl::Event,
5549 { fidl::ObjectType::EVENT.into_raw() },
5550 2147483648,
5551 >,
5552 fidl::encoding::DefaultFuchsiaResourceDialect,
5553 >(
5554 self.token.as_mut().map(
5555 <fidl::encoding::HandleType<
5556 fidl::Event,
5557 { fidl::ObjectType::EVENT.into_raw() },
5558 2147483648,
5559 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5560 ),
5561 encoder,
5562 offset + cur_offset,
5563 depth,
5564 )?;
5565
5566 _prev_end_offset = cur_offset + envelope_size;
5567
5568 Ok(())
5569 }
5570 }
5571
5572 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5573 for PowerElementArgs
5574 {
5575 #[inline(always)]
5576 fn new_empty() -> Self {
5577 Self::default()
5578 }
5579
5580 unsafe fn decode(
5581 &mut self,
5582 decoder: &mut fidl::encoding::Decoder<
5583 '_,
5584 fidl::encoding::DefaultFuchsiaResourceDialect,
5585 >,
5586 offset: usize,
5587 mut depth: fidl::encoding::Depth,
5588 ) -> fidl::Result<()> {
5589 decoder.debug_check_bounds::<Self>(offset);
5590 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5591 None => return Err(fidl::Error::NotNullable),
5592 Some(len) => len,
5593 };
5594 if len == 0 {
5596 return Ok(());
5597 };
5598 depth.increment()?;
5599 let envelope_size = 8;
5600 let bytes_len = len * envelope_size;
5601 let offset = decoder.out_of_line_offset(bytes_len)?;
5602 let mut _next_ordinal_to_read = 0;
5604 let mut next_offset = offset;
5605 let end_offset = offset + bytes_len;
5606 _next_ordinal_to_read += 1;
5607 if next_offset >= end_offset {
5608 return Ok(());
5609 }
5610
5611 while _next_ordinal_to_read < 1 {
5613 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5614 _next_ordinal_to_read += 1;
5615 next_offset += envelope_size;
5616 }
5617
5618 let next_out_of_line = decoder.next_out_of_line();
5619 let handles_before = decoder.remaining_handles();
5620 if let Some((inlined, num_bytes, num_handles)) =
5621 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5622 {
5623 let member_inline_size = <fidl::encoding::Endpoint<
5624 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5625 > as fidl::encoding::TypeMarker>::inline_size(
5626 decoder.context
5627 );
5628 if inlined != (member_inline_size <= 4) {
5629 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5630 }
5631 let inner_offset;
5632 let mut inner_depth = depth.clone();
5633 if inlined {
5634 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5635 inner_offset = next_offset;
5636 } else {
5637 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5638 inner_depth.increment()?;
5639 }
5640 let val_ref = self.control_client.get_or_insert_with(|| {
5641 fidl::new_empty!(
5642 fidl::encoding::Endpoint<
5643 fidl::endpoints::ClientEnd<
5644 fidl_fuchsia_power_broker::ElementControlMarker,
5645 >,
5646 >,
5647 fidl::encoding::DefaultFuchsiaResourceDialect
5648 )
5649 });
5650 fidl::decode!(
5651 fidl::encoding::Endpoint<
5652 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5653 >,
5654 fidl::encoding::DefaultFuchsiaResourceDialect,
5655 val_ref,
5656 decoder,
5657 inner_offset,
5658 inner_depth
5659 )?;
5660 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5661 {
5662 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5663 }
5664 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5665 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5666 }
5667 }
5668
5669 next_offset += envelope_size;
5670 _next_ordinal_to_read += 1;
5671 if next_offset >= end_offset {
5672 return Ok(());
5673 }
5674
5675 while _next_ordinal_to_read < 2 {
5677 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5678 _next_ordinal_to_read += 1;
5679 next_offset += envelope_size;
5680 }
5681
5682 let next_out_of_line = decoder.next_out_of_line();
5683 let handles_before = decoder.remaining_handles();
5684 if let Some((inlined, num_bytes, num_handles)) =
5685 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5686 {
5687 let member_inline_size = <fidl::encoding::Endpoint<
5688 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5689 > as fidl::encoding::TypeMarker>::inline_size(
5690 decoder.context
5691 );
5692 if inlined != (member_inline_size <= 4) {
5693 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5694 }
5695 let inner_offset;
5696 let mut inner_depth = depth.clone();
5697 if inlined {
5698 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5699 inner_offset = next_offset;
5700 } else {
5701 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5702 inner_depth.increment()?;
5703 }
5704 let val_ref = self.runner_server.get_or_insert_with(|| {
5705 fidl::new_empty!(
5706 fidl::encoding::Endpoint<
5707 fidl::endpoints::ServerEnd<
5708 fidl_fuchsia_power_broker::ElementRunnerMarker,
5709 >,
5710 >,
5711 fidl::encoding::DefaultFuchsiaResourceDialect
5712 )
5713 });
5714 fidl::decode!(
5715 fidl::encoding::Endpoint<
5716 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5717 >,
5718 fidl::encoding::DefaultFuchsiaResourceDialect,
5719 val_ref,
5720 decoder,
5721 inner_offset,
5722 inner_depth
5723 )?;
5724 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5725 {
5726 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5727 }
5728 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5729 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5730 }
5731 }
5732
5733 next_offset += envelope_size;
5734 _next_ordinal_to_read += 1;
5735 if next_offset >= end_offset {
5736 return Ok(());
5737 }
5738
5739 while _next_ordinal_to_read < 3 {
5741 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5742 _next_ordinal_to_read += 1;
5743 next_offset += envelope_size;
5744 }
5745
5746 let next_out_of_line = decoder.next_out_of_line();
5747 let handles_before = decoder.remaining_handles();
5748 if let Some((inlined, num_bytes, num_handles)) =
5749 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5750 {
5751 let member_inline_size = <fidl::encoding::Endpoint<
5752 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5753 > as fidl::encoding::TypeMarker>::inline_size(
5754 decoder.context
5755 );
5756 if inlined != (member_inline_size <= 4) {
5757 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5758 }
5759 let inner_offset;
5760 let mut inner_depth = depth.clone();
5761 if inlined {
5762 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5763 inner_offset = next_offset;
5764 } else {
5765 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5766 inner_depth.increment()?;
5767 }
5768 let val_ref = self.lessor_client.get_or_insert_with(|| {
5769 fidl::new_empty!(
5770 fidl::encoding::Endpoint<
5771 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5772 >,
5773 fidl::encoding::DefaultFuchsiaResourceDialect
5774 )
5775 });
5776 fidl::decode!(
5777 fidl::encoding::Endpoint<
5778 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5779 >,
5780 fidl::encoding::DefaultFuchsiaResourceDialect,
5781 val_ref,
5782 decoder,
5783 inner_offset,
5784 inner_depth
5785 )?;
5786 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5787 {
5788 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5789 }
5790 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5791 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5792 }
5793 }
5794
5795 next_offset += envelope_size;
5796 _next_ordinal_to_read += 1;
5797 if next_offset >= end_offset {
5798 return Ok(());
5799 }
5800
5801 while _next_ordinal_to_read < 4 {
5803 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5804 _next_ordinal_to_read += 1;
5805 next_offset += envelope_size;
5806 }
5807
5808 let next_out_of_line = decoder.next_out_of_line();
5809 let handles_before = decoder.remaining_handles();
5810 if let Some((inlined, num_bytes, num_handles)) =
5811 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5812 {
5813 let member_inline_size = <fidl::encoding::HandleType<
5814 fidl::Event,
5815 { fidl::ObjectType::EVENT.into_raw() },
5816 2147483648,
5817 > as fidl::encoding::TypeMarker>::inline_size(
5818 decoder.context
5819 );
5820 if inlined != (member_inline_size <= 4) {
5821 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5822 }
5823 let inner_offset;
5824 let mut inner_depth = depth.clone();
5825 if inlined {
5826 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5827 inner_offset = next_offset;
5828 } else {
5829 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5830 inner_depth.increment()?;
5831 }
5832 let val_ref =
5833 self.token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5834 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5835 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5836 {
5837 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5838 }
5839 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5840 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5841 }
5842 }
5843
5844 next_offset += envelope_size;
5845
5846 while next_offset < end_offset {
5848 _next_ordinal_to_read += 1;
5849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5850 next_offset += envelope_size;
5851 }
5852
5853 Ok(())
5854 }
5855 }
5856
5857 impl fidl::encoding::ResourceTypeMarker for DriverResult {
5858 type Borrowed<'a> = &'a mut Self;
5859 fn take_or_borrow<'a>(
5860 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5861 ) -> Self::Borrowed<'a> {
5862 value
5863 }
5864 }
5865
5866 unsafe impl fidl::encoding::TypeMarker for DriverResult {
5867 type Owned = Self;
5868
5869 #[inline(always)]
5870 fn inline_align(_context: fidl::encoding::Context) -> usize {
5871 8
5872 }
5873
5874 #[inline(always)]
5875 fn inline_size(_context: fidl::encoding::Context) -> usize {
5876 16
5877 }
5878 }
5879
5880 unsafe impl fidl::encoding::Encode<DriverResult, fidl::encoding::DefaultFuchsiaResourceDialect>
5881 for &mut DriverResult
5882 {
5883 #[inline]
5884 unsafe fn encode(
5885 self,
5886 encoder: &mut fidl::encoding::Encoder<
5887 '_,
5888 fidl::encoding::DefaultFuchsiaResourceDialect,
5889 >,
5890 offset: usize,
5891 _depth: fidl::encoding::Depth,
5892 ) -> fidl::Result<()> {
5893 encoder.debug_check_bounds::<DriverResult>(offset);
5894 encoder.write_num::<u64>(self.ordinal(), offset);
5895 match self {
5896 DriverResult::DriverStartedNodeToken(ref mut val) => {
5897 fidl::encoding::encode_in_envelope::<
5898 fidl::encoding::HandleType<
5899 fidl::Event,
5900 { fidl::ObjectType::EVENT.into_raw() },
5901 2147483648,
5902 >,
5903 fidl::encoding::DefaultFuchsiaResourceDialect,
5904 >(
5905 <fidl::encoding::HandleType<
5906 fidl::Event,
5907 { fidl::ObjectType::EVENT.into_raw() },
5908 2147483648,
5909 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
5910 val
5911 ),
5912 encoder,
5913 offset + 8,
5914 _depth,
5915 )
5916 }
5917 DriverResult::MatchError(ref val) => fidl::encoding::encode_in_envelope::<
5918 i32,
5919 fidl::encoding::DefaultFuchsiaResourceDialect,
5920 >(
5921 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
5922 encoder,
5923 offset + 8,
5924 _depth,
5925 ),
5926 DriverResult::StartError(ref val) => fidl::encoding::encode_in_envelope::<
5927 i32,
5928 fidl::encoding::DefaultFuchsiaResourceDialect,
5929 >(
5930 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
5931 encoder,
5932 offset + 8,
5933 _depth,
5934 ),
5935 DriverResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
5936 }
5937 }
5938 }
5939
5940 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {
5941 #[inline(always)]
5942 fn new_empty() -> Self {
5943 Self::__SourceBreaking { unknown_ordinal: 0 }
5944 }
5945
5946 #[inline]
5947 unsafe fn decode(
5948 &mut self,
5949 decoder: &mut fidl::encoding::Decoder<
5950 '_,
5951 fidl::encoding::DefaultFuchsiaResourceDialect,
5952 >,
5953 offset: usize,
5954 mut depth: fidl::encoding::Depth,
5955 ) -> fidl::Result<()> {
5956 decoder.debug_check_bounds::<Self>(offset);
5957 #[allow(unused_variables)]
5958 let next_out_of_line = decoder.next_out_of_line();
5959 let handles_before = decoder.remaining_handles();
5960 let (ordinal, inlined, num_bytes, num_handles) =
5961 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5962
5963 let member_inline_size = match ordinal {
5964 1 => <fidl::encoding::HandleType<
5965 fidl::Event,
5966 { fidl::ObjectType::EVENT.into_raw() },
5967 2147483648,
5968 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5969 2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5970 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5971 0 => return Err(fidl::Error::UnknownUnionTag),
5972 _ => num_bytes as usize,
5973 };
5974
5975 if inlined != (member_inline_size <= 4) {
5976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5977 }
5978 let _inner_offset;
5979 if inlined {
5980 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5981 _inner_offset = offset + 8;
5982 } else {
5983 depth.increment()?;
5984 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5985 }
5986 match ordinal {
5987 1 => {
5988 #[allow(irrefutable_let_patterns)]
5989 if let DriverResult::DriverStartedNodeToken(_) = self {
5990 } else {
5992 *self = DriverResult::DriverStartedNodeToken(
5994 fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
5995 );
5996 }
5997 #[allow(irrefutable_let_patterns)]
5998 if let DriverResult::DriverStartedNodeToken(ref mut val) = self {
5999 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
6000 } else {
6001 unreachable!()
6002 }
6003 }
6004 2 => {
6005 #[allow(irrefutable_let_patterns)]
6006 if let DriverResult::MatchError(_) = self {
6007 } else {
6009 *self = DriverResult::MatchError(fidl::new_empty!(
6011 i32,
6012 fidl::encoding::DefaultFuchsiaResourceDialect
6013 ));
6014 }
6015 #[allow(irrefutable_let_patterns)]
6016 if let DriverResult::MatchError(ref mut val) = self {
6017 fidl::decode!(
6018 i32,
6019 fidl::encoding::DefaultFuchsiaResourceDialect,
6020 val,
6021 decoder,
6022 _inner_offset,
6023 depth
6024 )?;
6025 } else {
6026 unreachable!()
6027 }
6028 }
6029 3 => {
6030 #[allow(irrefutable_let_patterns)]
6031 if let DriverResult::StartError(_) = self {
6032 } else {
6034 *self = DriverResult::StartError(fidl::new_empty!(
6036 i32,
6037 fidl::encoding::DefaultFuchsiaResourceDialect
6038 ));
6039 }
6040 #[allow(irrefutable_let_patterns)]
6041 if let DriverResult::StartError(ref mut val) = self {
6042 fidl::decode!(
6043 i32,
6044 fidl::encoding::DefaultFuchsiaResourceDialect,
6045 val,
6046 decoder,
6047 _inner_offset,
6048 depth
6049 )?;
6050 } else {
6051 unreachable!()
6052 }
6053 }
6054 #[allow(deprecated)]
6055 ordinal => {
6056 for _ in 0..num_handles {
6057 decoder.drop_next_handle()?;
6058 }
6059 *self = DriverResult::__SourceBreaking { unknown_ordinal: ordinal };
6060 }
6061 }
6062 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6063 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6064 }
6065 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6066 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6067 }
6068 Ok(())
6069 }
6070 }
6071}