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, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct DriverResumeRequest {
16 pub power_element_lease: Option<fidl::EventPair>,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResumeRequest {}
20
21#[derive(Debug, PartialEq)]
22pub struct DriverStartRequest {
23 pub start_args: DriverStartArgs,
24}
25
26impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartRequest {}
27
28#[derive(Debug, PartialEq)]
29pub struct NodeAddChildRequest {
30 pub args: NodeAddArgs,
31 pub controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
32 pub node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
33}
34
35impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddChildRequest {}
36
37#[derive(Debug, Default, PartialEq)]
38pub struct DevfsAddArgs {
39 pub connector: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
43 pub class_name: Option<String>,
48 pub inspect: Option<fidl::Vmo>,
51 pub connector_supports: Option<fidl_fuchsia_device_fs::ConnectionType>,
56 pub controller_connector:
62 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
63 #[doc(hidden)]
64 pub __source_breaking: fidl::marker::SourceBreaking,
65}
66
67impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {}
68
69#[derive(Debug, Default, PartialEq)]
71pub struct DriverStartArgs {
72 pub node: Option<fidl::endpoints::ClientEnd<NodeMarker>>,
74 pub symbols: Option<Vec<NodeSymbol>>,
78 pub url: Option<String>,
81 pub program: Option<fidl_fuchsia_data::Dictionary>,
97 pub incoming: Option<Vec<fidl_fuchsia_component_runner::ComponentNamespaceEntry>>,
99 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
101 pub config: Option<fidl::Vmo>,
103 pub node_name: Option<String>,
105 pub node_properties: Option<Vec<NodePropertyEntry>>,
114 pub node_offers: Option<Vec<Offer>>,
116 pub node_token: Option<fidl::Event>,
119 pub node_properties_2: Option<Vec<NodePropertyEntry2>>,
120 pub vmar: Option<fidl::Vmar>,
123 pub power_element_args: Option<PowerElementArgs>,
130 pub log_sink: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>>,
132 #[doc(hidden)]
133 pub __source_breaking: fidl::marker::SourceBreaking,
134}
135
136impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartArgs {}
137
138#[derive(Debug, Default, PartialEq)]
140pub struct NodeAddArgs {
141 pub name: Option<String>,
143 pub symbols: Option<Vec<NodeSymbol>>,
145 pub properties: Option<Vec<NodeProperty>>,
148 pub devfs_args: Option<DevfsAddArgs>,
150 pub offers2: Option<Vec<Offer>>,
155 pub bus_info: Option<BusInfo>,
158 pub properties2: Option<Vec<NodeProperty2>>,
161 pub offers_dictionary: Option<fidl_fuchsia_component_sandbox::DictionaryRef>,
165 pub driver_host: Option<String>,
172 #[doc(hidden)]
173 pub __source_breaking: fidl::marker::SourceBreaking,
174}
175
176impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {}
177
178#[derive(Debug, Default, PartialEq)]
179pub struct NodeControllerOnBindRequest {
180 pub node_token: Option<fidl::Event>,
183 #[doc(hidden)]
184 pub __source_breaking: fidl::marker::SourceBreaking,
185}
186
187impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
188 for NodeControllerOnBindRequest
189{
190}
191
192#[derive(Debug, Default, PartialEq)]
193pub struct PowerElementArgs {
194 pub control_client:
195 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>>,
196 pub runner_server:
197 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>>,
198 pub lessor_client: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>>,
199 pub token: Option<fidl::Event>,
200 #[doc(hidden)]
201 pub __source_breaking: fidl::marker::SourceBreaking,
202}
203
204impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PowerElementArgs {}
205
206#[derive(Debug)]
207pub enum DriverResult {
208 DriverStartedNodeToken(fidl::Event),
210 MatchError(i32),
212 StartError(i32),
214 #[doc(hidden)]
215 __SourceBreaking { unknown_ordinal: u64 },
216}
217
218#[macro_export]
220macro_rules! DriverResultUnknown {
221 () => {
222 _
223 };
224}
225
226impl PartialEq for DriverResult {
228 fn eq(&self, other: &Self) -> bool {
229 match (self, other) {
230 (Self::DriverStartedNodeToken(x), Self::DriverStartedNodeToken(y)) => *x == *y,
231 (Self::MatchError(x), Self::MatchError(y)) => *x == *y,
232 (Self::StartError(x), Self::StartError(y)) => *x == *y,
233 _ => false,
234 }
235 }
236}
237
238impl DriverResult {
239 #[inline]
240 pub fn ordinal(&self) -> u64 {
241 match *self {
242 Self::DriverStartedNodeToken(_) => 1,
243 Self::MatchError(_) => 2,
244 Self::StartError(_) => 3,
245 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
246 }
247 }
248
249 #[inline]
250 pub fn unknown_variant_for_testing() -> Self {
251 Self::__SourceBreaking { unknown_ordinal: 0 }
252 }
253
254 #[inline]
255 pub fn is_unknown(&self) -> bool {
256 match self {
257 Self::__SourceBreaking { .. } => true,
258 _ => false,
259 }
260 }
261}
262
263impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {}
264
265#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
266pub struct CompositeNodeManagerMarker;
267
268impl fidl::endpoints::ProtocolMarker for CompositeNodeManagerMarker {
269 type Proxy = CompositeNodeManagerProxy;
270 type RequestStream = CompositeNodeManagerRequestStream;
271 #[cfg(target_os = "fuchsia")]
272 type SynchronousProxy = CompositeNodeManagerSynchronousProxy;
273
274 const DEBUG_NAME: &'static str = "fuchsia.driver.framework.CompositeNodeManager";
275}
276impl fidl::endpoints::DiscoverableProtocolMarker for CompositeNodeManagerMarker {}
277pub type CompositeNodeManagerAddSpecResult = Result<(), CompositeNodeSpecError>;
278
279pub trait CompositeNodeManagerProxyInterface: Send + Sync {
280 type AddSpecResponseFut: std::future::Future<Output = Result<CompositeNodeManagerAddSpecResult, fidl::Error>>
281 + Send;
282 fn r#add_spec(&self, payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut;
283}
284#[derive(Debug)]
285#[cfg(target_os = "fuchsia")]
286pub struct CompositeNodeManagerSynchronousProxy {
287 client: fidl::client::sync::Client,
288}
289
290#[cfg(target_os = "fuchsia")]
291impl fidl::endpoints::SynchronousProxy for CompositeNodeManagerSynchronousProxy {
292 type Proxy = CompositeNodeManagerProxy;
293 type Protocol = CompositeNodeManagerMarker;
294
295 fn from_channel(inner: fidl::Channel) -> Self {
296 Self::new(inner)
297 }
298
299 fn into_channel(self) -> fidl::Channel {
300 self.client.into_channel()
301 }
302
303 fn as_channel(&self) -> &fidl::Channel {
304 self.client.as_channel()
305 }
306}
307
308#[cfg(target_os = "fuchsia")]
309impl CompositeNodeManagerSynchronousProxy {
310 pub fn new(channel: fidl::Channel) -> Self {
311 Self { client: fidl::client::sync::Client::new(channel) }
312 }
313
314 pub fn into_channel(self) -> fidl::Channel {
315 self.client.into_channel()
316 }
317
318 pub fn wait_for_event(
321 &self,
322 deadline: zx::MonotonicInstant,
323 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
324 CompositeNodeManagerEvent::decode(
325 self.client.wait_for_event::<CompositeNodeManagerMarker>(deadline)?,
326 )
327 }
328
329 pub fn r#add_spec(
331 &self,
332 mut payload: &CompositeNodeSpec,
333 ___deadline: zx::MonotonicInstant,
334 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
335 let _response =
336 self.client
337 .send_query::<CompositeNodeSpec, fidl::encoding::FlexibleResultType<
338 fidl::encoding::EmptyStruct,
339 CompositeNodeSpecError,
340 >, CompositeNodeManagerMarker>(
341 payload,
342 0x524e353c8130cc74,
343 fidl::encoding::DynamicFlags::FLEXIBLE,
344 ___deadline,
345 )?
346 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
347 Ok(_response.map(|x| x))
348 }
349}
350
351#[cfg(target_os = "fuchsia")]
352impl From<CompositeNodeManagerSynchronousProxy> for zx::NullableHandle {
353 fn from(value: CompositeNodeManagerSynchronousProxy) -> Self {
354 value.into_channel().into()
355 }
356}
357
358#[cfg(target_os = "fuchsia")]
359impl From<fidl::Channel> for CompositeNodeManagerSynchronousProxy {
360 fn from(value: fidl::Channel) -> Self {
361 Self::new(value)
362 }
363}
364
365#[cfg(target_os = "fuchsia")]
366impl fidl::endpoints::FromClient for CompositeNodeManagerSynchronousProxy {
367 type Protocol = CompositeNodeManagerMarker;
368
369 fn from_client(value: fidl::endpoints::ClientEnd<CompositeNodeManagerMarker>) -> Self {
370 Self::new(value.into_channel())
371 }
372}
373
374#[derive(Debug, Clone)]
375pub struct CompositeNodeManagerProxy {
376 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
377}
378
379impl fidl::endpoints::Proxy for CompositeNodeManagerProxy {
380 type Protocol = CompositeNodeManagerMarker;
381
382 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
383 Self::new(inner)
384 }
385
386 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
387 self.client.into_channel().map_err(|client| Self { client })
388 }
389
390 fn as_channel(&self) -> &::fidl::AsyncChannel {
391 self.client.as_channel()
392 }
393}
394
395impl CompositeNodeManagerProxy {
396 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
398 let protocol_name =
399 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
400 Self { client: fidl::client::Client::new(channel, protocol_name) }
401 }
402
403 pub fn take_event_stream(&self) -> CompositeNodeManagerEventStream {
409 CompositeNodeManagerEventStream { event_receiver: self.client.take_event_receiver() }
410 }
411
412 pub fn r#add_spec(
414 &self,
415 mut payload: &CompositeNodeSpec,
416 ) -> fidl::client::QueryResponseFut<
417 CompositeNodeManagerAddSpecResult,
418 fidl::encoding::DefaultFuchsiaResourceDialect,
419 > {
420 CompositeNodeManagerProxyInterface::r#add_spec(self, payload)
421 }
422}
423
424impl CompositeNodeManagerProxyInterface for CompositeNodeManagerProxy {
425 type AddSpecResponseFut = fidl::client::QueryResponseFut<
426 CompositeNodeManagerAddSpecResult,
427 fidl::encoding::DefaultFuchsiaResourceDialect,
428 >;
429 fn r#add_spec(&self, mut payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut {
430 fn _decode(
431 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
432 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
433 let _response = fidl::client::decode_transaction_body::<
434 fidl::encoding::FlexibleResultType<
435 fidl::encoding::EmptyStruct,
436 CompositeNodeSpecError,
437 >,
438 fidl::encoding::DefaultFuchsiaResourceDialect,
439 0x524e353c8130cc74,
440 >(_buf?)?
441 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
442 Ok(_response.map(|x| x))
443 }
444 self.client.send_query_and_decode::<CompositeNodeSpec, CompositeNodeManagerAddSpecResult>(
445 payload,
446 0x524e353c8130cc74,
447 fidl::encoding::DynamicFlags::FLEXIBLE,
448 _decode,
449 )
450 }
451}
452
453pub struct CompositeNodeManagerEventStream {
454 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
455}
456
457impl std::marker::Unpin for CompositeNodeManagerEventStream {}
458
459impl futures::stream::FusedStream for CompositeNodeManagerEventStream {
460 fn is_terminated(&self) -> bool {
461 self.event_receiver.is_terminated()
462 }
463}
464
465impl futures::Stream for CompositeNodeManagerEventStream {
466 type Item = Result<CompositeNodeManagerEvent, fidl::Error>;
467
468 fn poll_next(
469 mut self: std::pin::Pin<&mut Self>,
470 cx: &mut std::task::Context<'_>,
471 ) -> std::task::Poll<Option<Self::Item>> {
472 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
473 &mut self.event_receiver,
474 cx
475 )?) {
476 Some(buf) => std::task::Poll::Ready(Some(CompositeNodeManagerEvent::decode(buf))),
477 None => std::task::Poll::Ready(None),
478 }
479 }
480}
481
482#[derive(Debug)]
483pub enum CompositeNodeManagerEvent {
484 #[non_exhaustive]
485 _UnknownEvent {
486 ordinal: u64,
488 },
489}
490
491impl CompositeNodeManagerEvent {
492 fn decode(
494 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
495 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
496 let (bytes, _handles) = buf.split_mut();
497 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
498 debug_assert_eq!(tx_header.tx_id, 0);
499 match tx_header.ordinal {
500 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
501 Ok(CompositeNodeManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
502 }
503 _ => Err(fidl::Error::UnknownOrdinal {
504 ordinal: tx_header.ordinal,
505 protocol_name:
506 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
507 }),
508 }
509 }
510}
511
512pub struct CompositeNodeManagerRequestStream {
514 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
515 is_terminated: bool,
516}
517
518impl std::marker::Unpin for CompositeNodeManagerRequestStream {}
519
520impl futures::stream::FusedStream for CompositeNodeManagerRequestStream {
521 fn is_terminated(&self) -> bool {
522 self.is_terminated
523 }
524}
525
526impl fidl::endpoints::RequestStream for CompositeNodeManagerRequestStream {
527 type Protocol = CompositeNodeManagerMarker;
528 type ControlHandle = CompositeNodeManagerControlHandle;
529
530 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
531 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
532 }
533
534 fn control_handle(&self) -> Self::ControlHandle {
535 CompositeNodeManagerControlHandle { inner: self.inner.clone() }
536 }
537
538 fn into_inner(
539 self,
540 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
541 {
542 (self.inner, self.is_terminated)
543 }
544
545 fn from_inner(
546 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
547 is_terminated: bool,
548 ) -> Self {
549 Self { inner, is_terminated }
550 }
551}
552
553impl futures::Stream for CompositeNodeManagerRequestStream {
554 type Item = Result<CompositeNodeManagerRequest, fidl::Error>;
555
556 fn poll_next(
557 mut self: std::pin::Pin<&mut Self>,
558 cx: &mut std::task::Context<'_>,
559 ) -> std::task::Poll<Option<Self::Item>> {
560 let this = &mut *self;
561 if this.inner.check_shutdown(cx) {
562 this.is_terminated = true;
563 return std::task::Poll::Ready(None);
564 }
565 if this.is_terminated {
566 panic!("polled CompositeNodeManagerRequestStream after completion");
567 }
568 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
569 |bytes, handles| {
570 match this.inner.channel().read_etc(cx, bytes, handles) {
571 std::task::Poll::Ready(Ok(())) => {}
572 std::task::Poll::Pending => return std::task::Poll::Pending,
573 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
574 this.is_terminated = true;
575 return std::task::Poll::Ready(None);
576 }
577 std::task::Poll::Ready(Err(e)) => {
578 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
579 e.into(),
580 ))));
581 }
582 }
583
584 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
586
587 std::task::Poll::Ready(Some(match header.ordinal {
588 0x524e353c8130cc74 => {
589 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
590 let mut req = fidl::new_empty!(CompositeNodeSpec, fidl::encoding::DefaultFuchsiaResourceDialect);
591 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CompositeNodeSpec>(&header, _body_bytes, handles, &mut req)?;
592 let control_handle = CompositeNodeManagerControlHandle {
593 inner: this.inner.clone(),
594 };
595 Ok(CompositeNodeManagerRequest::AddSpec {payload: req,
596 responder: CompositeNodeManagerAddSpecResponder {
597 control_handle: std::mem::ManuallyDrop::new(control_handle),
598 tx_id: header.tx_id,
599 },
600 })
601 }
602 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
603 Ok(CompositeNodeManagerRequest::_UnknownMethod {
604 ordinal: header.ordinal,
605 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
606 method_type: fidl::MethodType::OneWay,
607 })
608 }
609 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
610 this.inner.send_framework_err(
611 fidl::encoding::FrameworkErr::UnknownMethod,
612 header.tx_id,
613 header.ordinal,
614 header.dynamic_flags(),
615 (bytes, handles),
616 )?;
617 Ok(CompositeNodeManagerRequest::_UnknownMethod {
618 ordinal: header.ordinal,
619 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
620 method_type: fidl::MethodType::TwoWay,
621 })
622 }
623 _ => Err(fidl::Error::UnknownOrdinal {
624 ordinal: header.ordinal,
625 protocol_name: <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
626 }),
627 }))
628 },
629 )
630 }
631}
632
633#[derive(Debug)]
639pub enum CompositeNodeManagerRequest {
640 AddSpec { payload: CompositeNodeSpec, responder: CompositeNodeManagerAddSpecResponder },
642 #[non_exhaustive]
644 _UnknownMethod {
645 ordinal: u64,
647 control_handle: CompositeNodeManagerControlHandle,
648 method_type: fidl::MethodType,
649 },
650}
651
652impl CompositeNodeManagerRequest {
653 #[allow(irrefutable_let_patterns)]
654 pub fn into_add_spec(
655 self,
656 ) -> Option<(CompositeNodeSpec, CompositeNodeManagerAddSpecResponder)> {
657 if let CompositeNodeManagerRequest::AddSpec { payload, responder } = self {
658 Some((payload, responder))
659 } else {
660 None
661 }
662 }
663
664 pub fn method_name(&self) -> &'static str {
666 match *self {
667 CompositeNodeManagerRequest::AddSpec { .. } => "add_spec",
668 CompositeNodeManagerRequest::_UnknownMethod {
669 method_type: fidl::MethodType::OneWay,
670 ..
671 } => "unknown one-way method",
672 CompositeNodeManagerRequest::_UnknownMethod {
673 method_type: fidl::MethodType::TwoWay,
674 ..
675 } => "unknown two-way method",
676 }
677 }
678}
679
680#[derive(Debug, Clone)]
681pub struct CompositeNodeManagerControlHandle {
682 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
683}
684
685impl fidl::endpoints::ControlHandle for CompositeNodeManagerControlHandle {
686 fn shutdown(&self) {
687 self.inner.shutdown()
688 }
689
690 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
691 self.inner.shutdown_with_epitaph(status)
692 }
693
694 fn is_closed(&self) -> bool {
695 self.inner.channel().is_closed()
696 }
697 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
698 self.inner.channel().on_closed()
699 }
700
701 #[cfg(target_os = "fuchsia")]
702 fn signal_peer(
703 &self,
704 clear_mask: zx::Signals,
705 set_mask: zx::Signals,
706 ) -> Result<(), zx_status::Status> {
707 use fidl::Peered;
708 self.inner.channel().signal_peer(clear_mask, set_mask)
709 }
710}
711
712impl CompositeNodeManagerControlHandle {}
713
714#[must_use = "FIDL methods require a response to be sent"]
715#[derive(Debug)]
716pub struct CompositeNodeManagerAddSpecResponder {
717 control_handle: std::mem::ManuallyDrop<CompositeNodeManagerControlHandle>,
718 tx_id: u32,
719}
720
721impl std::ops::Drop for CompositeNodeManagerAddSpecResponder {
725 fn drop(&mut self) {
726 self.control_handle.shutdown();
727 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
729 }
730}
731
732impl fidl::endpoints::Responder for CompositeNodeManagerAddSpecResponder {
733 type ControlHandle = CompositeNodeManagerControlHandle;
734
735 fn control_handle(&self) -> &CompositeNodeManagerControlHandle {
736 &self.control_handle
737 }
738
739 fn drop_without_shutdown(mut self) {
740 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
742 std::mem::forget(self);
744 }
745}
746
747impl CompositeNodeManagerAddSpecResponder {
748 pub fn send(self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
752 let _result = self.send_raw(result);
753 if _result.is_err() {
754 self.control_handle.shutdown();
755 }
756 self.drop_without_shutdown();
757 _result
758 }
759
760 pub fn send_no_shutdown_on_err(
762 self,
763 mut result: Result<(), CompositeNodeSpecError>,
764 ) -> Result<(), fidl::Error> {
765 let _result = self.send_raw(result);
766 self.drop_without_shutdown();
767 _result
768 }
769
770 fn send_raw(&self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
771 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
772 fidl::encoding::EmptyStruct,
773 CompositeNodeSpecError,
774 >>(
775 fidl::encoding::FlexibleResult::new(result),
776 self.tx_id,
777 0x524e353c8130cc74,
778 fidl::encoding::DynamicFlags::FLEXIBLE,
779 )
780 }
781}
782
783#[cfg(feature = "driver")]
784#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
785pub struct DriverMarker;
786
787#[cfg(feature = "driver")]
788impl fidl_driver::endpoints::DriverProtocolMarker for DriverMarker {
789 const DEBUG_NAME: &'static str = "(anonymous) Driver";
790}
791pub type DriverStartResult = Result<(), i32>;
792pub type DriverSuspendResult = Result<(), i32>;
793pub type DriverResumeResult = Result<(), i32>;
794
795#[cfg(feature = "driver")]
803#[derive(Debug)]
804pub enum DriverRequest {
805 Start { start_args: DriverStartArgs, responder: DriverStartResponder },
819 Stop {},
824 Suspend { responder: DriverSuspendResponder },
836 Resume { power_element_lease: Option<fidl::EventPair>, responder: DriverResumeResponder },
847 #[non_exhaustive]
849 _UnknownMethod {
850 ordinal: u64,
852 method_type: fidl::MethodType,
853 },
854}
855
856#[cfg(feature = "driver")]
857impl DriverRequest {
858 #[allow(irrefutable_let_patterns)]
859 pub fn into_start(self) -> Option<(DriverStartArgs, DriverStartResponder)> {
860 if let DriverRequest::Start { start_args, responder } = self {
861 Some((start_args, responder))
862 } else {
863 None
864 }
865 }
866
867 #[allow(irrefutable_let_patterns)]
868 pub fn into_stop(self) -> Option<()> {
869 if let DriverRequest::Stop {} = self { Some(()) } else { None }
870 }
871
872 #[allow(irrefutable_let_patterns)]
873 pub fn into_suspend(self) -> Option<(DriverSuspendResponder)> {
874 if let DriverRequest::Suspend { responder } = self { Some((responder)) } else { None }
875 }
876
877 #[allow(irrefutable_let_patterns)]
878 pub fn into_resume(self) -> Option<(Option<fidl::EventPair>, DriverResumeResponder)> {
879 if let DriverRequest::Resume { power_element_lease, responder } = self {
880 Some((power_element_lease, responder))
881 } else {
882 None
883 }
884 }
885
886 pub fn new_start(self, start_args: DriverStartArgs, tx_id: u32) -> Self {
887 Self::Start { start_args, responder: DriverStartResponder { tx_id } }
888 }
889
890 pub fn new_stop(self) -> Self {
891 Self::Stop {}
892 }
893
894 pub fn new_suspend(self, tx_id: u32) -> Self {
895 Self::Suspend { responder: DriverSuspendResponder { tx_id } }
896 }
897
898 pub fn new_resume(self, power_element_lease: Option<fidl::EventPair>, tx_id: u32) -> Self {
899 Self::Resume { power_element_lease, responder: DriverResumeResponder { tx_id } }
900 }
901
902 pub fn r#start_as_message(
903 arena: fdf::Arena,
904 mut start_args: DriverStartArgs,
905 tx_id: u32,
906 ) -> Result<fdf::Message<[u8]>, fidl::Error> {
907 let ordinal = 0x27be00ae42aa60c2;
908 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
909 let body = (&mut start_args,);
910 let msg = fidl::encoding::TransactionMessage {
911 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
912 body,
913 };
914 fidl::encoding::with_tls_encoded::<
915 fidl::encoding::TransactionMessageType<DriverStartRequest>,
916 fidl::encoding::DefaultFuchsiaResourceDialect,
917 fdf::Message<[u8]>,
918 >(msg, |bytes, mut handles| {
919 let handles = arena.insert_from_iter(
920 std::mem::take(handles)
921 .into_iter()
922 .map(fidl_driver::encoding::mixed_from_handle_disposition),
923 );
924 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
925 })
926 }
927
928 pub fn r#stop_as_message(arena: fdf::Arena) -> Result<fdf::Message<[u8]>, fidl::Error> {
929 let tx_id = 0;
930 let ordinal = 0x4b96c67e29b3843d;
931 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
932 let body = ();
933 let msg = fidl::encoding::TransactionMessage {
934 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
935 body,
936 };
937 fidl::encoding::with_tls_encoded::<
938 fidl::encoding::TransactionMessageType<fidl::encoding::EmptyPayload>,
939 fidl::encoding::DefaultFuchsiaResourceDialect,
940 fdf::Message<[u8]>,
941 >(msg, |bytes, mut handles| {
942 let handles = arena.insert_from_iter(
943 std::mem::take(handles)
944 .into_iter()
945 .map(fidl_driver::encoding::mixed_from_handle_disposition),
946 );
947 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
948 })
949 }
950
951 pub fn r#suspend_as_message(
952 arena: fdf::Arena,
953 tx_id: u32,
954 ) -> Result<fdf::Message<[u8]>, fidl::Error> {
955 let ordinal = 0x4cebadedf5da22b8;
956 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
957 let body = ();
958 let msg = fidl::encoding::TransactionMessage {
959 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
960 body,
961 };
962 fidl::encoding::with_tls_encoded::<
963 fidl::encoding::TransactionMessageType<fidl::encoding::EmptyPayload>,
964 fidl::encoding::DefaultFuchsiaResourceDialect,
965 fdf::Message<[u8]>,
966 >(msg, |bytes, mut handles| {
967 let handles = arena.insert_from_iter(
968 std::mem::take(handles)
969 .into_iter()
970 .map(fidl_driver::encoding::mixed_from_handle_disposition),
971 );
972 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
973 })
974 }
975
976 pub fn r#resume_as_message(
977 arena: fdf::Arena,
978 mut power_element_lease: Option<fidl::EventPair>,
979 tx_id: u32,
980 ) -> Result<fdf::Message<[u8]>, fidl::Error> {
981 let ordinal = 0x2535384cc6595148;
982 let dynamic_flags = fidl::encoding::DynamicFlags::FLEXIBLE;
983 let body = (power_element_lease,);
984 let msg = fidl::encoding::TransactionMessage {
985 header: fidl::encoding::TransactionHeader::new(tx_id, ordinal, dynamic_flags),
986 body,
987 };
988 fidl::encoding::with_tls_encoded::<
989 fidl::encoding::TransactionMessageType<DriverResumeRequest>,
990 fidl::encoding::DefaultFuchsiaResourceDialect,
991 fdf::Message<[u8]>,
992 >(msg, |bytes, mut handles| {
993 let handles = arena.insert_from_iter(
994 std::mem::take(handles)
995 .into_iter()
996 .map(fidl_driver::encoding::mixed_from_handle_disposition),
997 );
998 Ok(fdf::Message::new(&arena, Some(arena.insert_slice(bytes)), Some(handles)))
999 })
1000 }
1001
1002 #[allow(irrefutable_let_patterns)]
1003 pub fn read_from(bytes: &[u8], _handles: &mut [zx::HandleInfo]) -> Result<Self, fidl::Error> {
1004 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1005
1006 match header.ordinal {
1007 0x27be00ae42aa60c2 => {
1008 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1009 let mut req = fidl::new_empty!(
1010 DriverStartRequest,
1011 fidl::encoding::DefaultFuchsiaResourceDialect
1012 );
1013 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverStartRequest>(&header, _body_bytes, _handles, &mut req)?;
1014 Ok(DriverRequest::Start {
1015 start_args: req.start_args,
1016
1017 responder: DriverStartResponder { tx_id: header.tx_id },
1018 })
1019 }
1020 0x4b96c67e29b3843d => {
1021 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1022 let mut req = fidl::new_empty!(
1023 fidl::encoding::EmptyPayload,
1024 fidl::encoding::DefaultFuchsiaResourceDialect
1025 );
1026 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, _handles, &mut req)?;
1027 Ok(DriverRequest::Stop {})
1028 }
1029 0x4cebadedf5da22b8 => {
1030 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1031 let mut req = fidl::new_empty!(
1032 fidl::encoding::EmptyPayload,
1033 fidl::encoding::DefaultFuchsiaResourceDialect
1034 );
1035 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, _handles, &mut req)?;
1036 Ok(DriverRequest::Suspend {
1037 responder: DriverSuspendResponder { tx_id: header.tx_id },
1038 })
1039 }
1040 0x2535384cc6595148 => {
1041 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1042 let mut req = fidl::new_empty!(
1043 DriverResumeRequest,
1044 fidl::encoding::DefaultFuchsiaResourceDialect
1045 );
1046 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverResumeRequest>(&header, _body_bytes, _handles, &mut req)?;
1047 Ok(DriverRequest::Resume {
1048 power_element_lease: req.power_element_lease,
1049
1050 responder: DriverResumeResponder { tx_id: header.tx_id },
1051 })
1052 }
1053 _ if header.tx_id == 0
1054 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1055 {
1056 Ok(DriverRequest::_UnknownMethod {
1057 ordinal: header.ordinal,
1058 method_type: fidl::MethodType::OneWay,
1059 })
1060 }
1061 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1062 Ok(DriverRequest::_UnknownMethod {
1063 ordinal: header.ordinal,
1064 method_type: fidl::MethodType::TwoWay,
1065 })
1066 }
1067 _ => Err(fidl::Error::UnknownOrdinal {
1068 ordinal: header.ordinal,
1069 protocol_name:
1070 <DriverMarker as fidl_driver::endpoints::DriverProtocolMarker>::DEBUG_NAME,
1071 }),
1072 }
1073 }
1074
1075 pub fn read_from_message(
1076 mut message: fdf::Message<[u8]>,
1077 ) -> Result<(fdf::Arena, Self), fidl::Error> {
1078 let (arena, Some(body), handles) = message.take_arena_boxes() else {
1079 return Err(fidl::Error::Invalid);
1080 };
1081 let mut handles =
1082 handles
1083 .map(|handles| {
1084 arena.try_insert_from_iter(handles.into_iter().map(|handle| unsafe {
1085 fidl_driver::encoding::mixed_into_handle_info(handle)
1086 }))
1087 })
1088 .transpose();
1089 let res = match handles {
1090 Ok(ref mut handles) => {
1091 Self::read_from(&*body, handles.as_deref_mut().unwrap_or(&mut []))?
1092 }
1093 Err(_) => return Err(fidl::Error::Invalid),
1094 };
1095 std::mem::drop((body, handles));
1096 Ok((message.take_arena(), res))
1097 }
1098
1099 pub fn method_name(&self) -> &'static str {
1101 match *self {
1102 DriverRequest::Start { .. } => "start",
1103 DriverRequest::Stop { .. } => "stop",
1104 DriverRequest::Suspend { .. } => "suspend",
1105 DriverRequest::Resume { .. } => "resume",
1106 DriverRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1107 "unknown one-way method"
1108 }
1109 DriverRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1110 "unknown two-way method"
1111 }
1112 }
1113 }
1114}
1115
1116#[cfg(feature = "driver")]
1118impl std::convert::TryFrom<fdf::Message<[u8]>> for DriverRequest {
1119 type Error = fidl::Error;
1120 fn try_from(msg: fdf::Message<[u8]>) -> Result<DriverRequest, fidl::Error> {
1121 Ok(DriverRequest::read_from_message(msg)?.1)
1122 }
1123}
1124
1125#[must_use = "FIDL methods require a response to be sent"]
1126#[cfg(feature = "driver")]
1127#[derive(Debug)]
1128pub struct DriverStartResponder {
1129 tx_id: u32,
1130}
1131
1132#[cfg(feature = "driver")]
1133impl DriverStartResponder {
1134 pub fn send_response(
1135 &self,
1136 server_handle: &fdf::Channel<[u8]>,
1137 mut result: Result<(), i32>,
1138 ) -> Result<(), fidl::Error> {
1139 let msg = fidl::encoding::TransactionMessage {
1140 header: fidl::encoding::TransactionHeader::new(
1141 self.tx_id,
1142 0x27be00ae42aa60c2,
1143 fidl::encoding::DynamicFlags::FLEXIBLE,
1144 ),
1145 body: fidl::encoding::FlexibleResult::new(result),
1146 };
1147 fidl::encoding::with_tls_encoded::<
1148 fidl::encoding::TransactionMessageType<
1149 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1150 >,
1151 fidl::encoding::DefaultFuchsiaResourceDialect,
1152 (),
1153 >(msg, |body, _handles| {
1154 server_handle
1155 .write_with_data(fdf::Arena::new(), |arena| arena.insert_slice(&body))
1156 .unwrap();
1157 Ok(())
1158 })
1159 }
1160}
1161
1162#[must_use = "FIDL methods require a response to be sent"]
1163#[cfg(feature = "driver")]
1164#[derive(Debug)]
1165pub struct DriverSuspendResponder {
1166 tx_id: u32,
1167}
1168
1169#[cfg(feature = "driver")]
1170impl DriverSuspendResponder {
1171 pub fn send_response(
1172 &self,
1173 server_handle: &fdf::Channel<[u8]>,
1174 mut result: Result<(), i32>,
1175 ) -> Result<(), fidl::Error> {
1176 let msg = fidl::encoding::TransactionMessage {
1177 header: fidl::encoding::TransactionHeader::new(
1178 self.tx_id,
1179 0x4cebadedf5da22b8,
1180 fidl::encoding::DynamicFlags::FLEXIBLE,
1181 ),
1182 body: fidl::encoding::FlexibleResult::new(result),
1183 };
1184 fidl::encoding::with_tls_encoded::<
1185 fidl::encoding::TransactionMessageType<
1186 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1187 >,
1188 fidl::encoding::DefaultFuchsiaResourceDialect,
1189 (),
1190 >(msg, |body, _handles| {
1191 server_handle
1192 .write_with_data(fdf::Arena::new(), |arena| arena.insert_slice(&body))
1193 .unwrap();
1194 Ok(())
1195 })
1196 }
1197}
1198
1199#[must_use = "FIDL methods require a response to be sent"]
1200#[cfg(feature = "driver")]
1201#[derive(Debug)]
1202pub struct DriverResumeResponder {
1203 tx_id: u32,
1204}
1205
1206#[cfg(feature = "driver")]
1207impl DriverResumeResponder {
1208 pub fn send_response(
1209 &self,
1210 server_handle: &fdf::Channel<[u8]>,
1211 mut result: Result<(), i32>,
1212 ) -> Result<(), fidl::Error> {
1213 let msg = fidl::encoding::TransactionMessage {
1214 header: fidl::encoding::TransactionHeader::new(
1215 self.tx_id,
1216 0x2535384cc6595148,
1217 fidl::encoding::DynamicFlags::FLEXIBLE,
1218 ),
1219 body: fidl::encoding::FlexibleResult::new(result),
1220 };
1221 fidl::encoding::with_tls_encoded::<
1222 fidl::encoding::TransactionMessageType<
1223 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1224 >,
1225 fidl::encoding::DefaultFuchsiaResourceDialect,
1226 (),
1227 >(msg, |body, _handles| {
1228 server_handle
1229 .write_with_data(fdf::Arena::new(), |arena| arena.insert_slice(&body))
1230 .unwrap();
1231 Ok(())
1232 })
1233 }
1234}
1235
1236#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1237pub struct NodeMarker;
1238
1239impl fidl::endpoints::ProtocolMarker for NodeMarker {
1240 type Proxy = NodeProxy;
1241 type RequestStream = NodeRequestStream;
1242 #[cfg(target_os = "fuchsia")]
1243 type SynchronousProxy = NodeSynchronousProxy;
1244
1245 const DEBUG_NAME: &'static str = "(anonymous) Node";
1246}
1247pub type NodeAddChildResult = Result<(), NodeError>;
1248
1249pub trait NodeProxyInterface: Send + Sync {
1250 type AddChildResponseFut: std::future::Future<Output = Result<NodeAddChildResult, fidl::Error>>
1251 + Send;
1252 fn r#add_child(
1253 &self,
1254 args: NodeAddArgs,
1255 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1256 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1257 ) -> Self::AddChildResponseFut;
1258}
1259#[derive(Debug)]
1260#[cfg(target_os = "fuchsia")]
1261pub struct NodeSynchronousProxy {
1262 client: fidl::client::sync::Client,
1263}
1264
1265#[cfg(target_os = "fuchsia")]
1266impl fidl::endpoints::SynchronousProxy for NodeSynchronousProxy {
1267 type Proxy = NodeProxy;
1268 type Protocol = NodeMarker;
1269
1270 fn from_channel(inner: fidl::Channel) -> Self {
1271 Self::new(inner)
1272 }
1273
1274 fn into_channel(self) -> fidl::Channel {
1275 self.client.into_channel()
1276 }
1277
1278 fn as_channel(&self) -> &fidl::Channel {
1279 self.client.as_channel()
1280 }
1281}
1282
1283#[cfg(target_os = "fuchsia")]
1284impl NodeSynchronousProxy {
1285 pub fn new(channel: fidl::Channel) -> Self {
1286 Self { client: fidl::client::sync::Client::new(channel) }
1287 }
1288
1289 pub fn into_channel(self) -> fidl::Channel {
1290 self.client.into_channel()
1291 }
1292
1293 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<NodeEvent, fidl::Error> {
1296 NodeEvent::decode(self.client.wait_for_event::<NodeMarker>(deadline)?)
1297 }
1298
1299 pub fn r#add_child(
1305 &self,
1306 mut args: NodeAddArgs,
1307 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1308 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1309 ___deadline: zx::MonotonicInstant,
1310 ) -> Result<NodeAddChildResult, fidl::Error> {
1311 let _response = self.client.send_query::<
1312 NodeAddChildRequest,
1313 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1314 NodeMarker,
1315 >(
1316 (&mut args, controller, node,),
1317 0x77d10dff3c1ea129,
1318 fidl::encoding::DynamicFlags::FLEXIBLE,
1319 ___deadline,
1320 )?
1321 .into_result::<NodeMarker>("add_child")?;
1322 Ok(_response.map(|x| x))
1323 }
1324}
1325
1326#[cfg(target_os = "fuchsia")]
1327impl From<NodeSynchronousProxy> for zx::NullableHandle {
1328 fn from(value: NodeSynchronousProxy) -> Self {
1329 value.into_channel().into()
1330 }
1331}
1332
1333#[cfg(target_os = "fuchsia")]
1334impl From<fidl::Channel> for NodeSynchronousProxy {
1335 fn from(value: fidl::Channel) -> Self {
1336 Self::new(value)
1337 }
1338}
1339
1340#[cfg(target_os = "fuchsia")]
1341impl fidl::endpoints::FromClient for NodeSynchronousProxy {
1342 type Protocol = NodeMarker;
1343
1344 fn from_client(value: fidl::endpoints::ClientEnd<NodeMarker>) -> Self {
1345 Self::new(value.into_channel())
1346 }
1347}
1348
1349#[derive(Debug, Clone)]
1350pub struct NodeProxy {
1351 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1352}
1353
1354impl fidl::endpoints::Proxy for NodeProxy {
1355 type Protocol = NodeMarker;
1356
1357 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1358 Self::new(inner)
1359 }
1360
1361 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1362 self.client.into_channel().map_err(|client| Self { client })
1363 }
1364
1365 fn as_channel(&self) -> &::fidl::AsyncChannel {
1366 self.client.as_channel()
1367 }
1368}
1369
1370impl NodeProxy {
1371 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1373 let protocol_name = <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1374 Self { client: fidl::client::Client::new(channel, protocol_name) }
1375 }
1376
1377 pub fn take_event_stream(&self) -> NodeEventStream {
1383 NodeEventStream { event_receiver: self.client.take_event_receiver() }
1384 }
1385
1386 pub fn r#add_child(
1392 &self,
1393 mut args: NodeAddArgs,
1394 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1395 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1396 ) -> fidl::client::QueryResponseFut<
1397 NodeAddChildResult,
1398 fidl::encoding::DefaultFuchsiaResourceDialect,
1399 > {
1400 NodeProxyInterface::r#add_child(self, args, controller, node)
1401 }
1402}
1403
1404impl NodeProxyInterface for NodeProxy {
1405 type AddChildResponseFut = fidl::client::QueryResponseFut<
1406 NodeAddChildResult,
1407 fidl::encoding::DefaultFuchsiaResourceDialect,
1408 >;
1409 fn r#add_child(
1410 &self,
1411 mut args: NodeAddArgs,
1412 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1413 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1414 ) -> Self::AddChildResponseFut {
1415 fn _decode(
1416 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1417 ) -> Result<NodeAddChildResult, fidl::Error> {
1418 let _response = fidl::client::decode_transaction_body::<
1419 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1420 fidl::encoding::DefaultFuchsiaResourceDialect,
1421 0x77d10dff3c1ea129,
1422 >(_buf?)?
1423 .into_result::<NodeMarker>("add_child")?;
1424 Ok(_response.map(|x| x))
1425 }
1426 self.client.send_query_and_decode::<NodeAddChildRequest, NodeAddChildResult>(
1427 (&mut args, controller, node),
1428 0x77d10dff3c1ea129,
1429 fidl::encoding::DynamicFlags::FLEXIBLE,
1430 _decode,
1431 )
1432 }
1433}
1434
1435pub struct NodeEventStream {
1436 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1437}
1438
1439impl std::marker::Unpin for NodeEventStream {}
1440
1441impl futures::stream::FusedStream for NodeEventStream {
1442 fn is_terminated(&self) -> bool {
1443 self.event_receiver.is_terminated()
1444 }
1445}
1446
1447impl futures::Stream for NodeEventStream {
1448 type Item = Result<NodeEvent, fidl::Error>;
1449
1450 fn poll_next(
1451 mut self: std::pin::Pin<&mut Self>,
1452 cx: &mut std::task::Context<'_>,
1453 ) -> std::task::Poll<Option<Self::Item>> {
1454 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1455 &mut self.event_receiver,
1456 cx
1457 )?) {
1458 Some(buf) => std::task::Poll::Ready(Some(NodeEvent::decode(buf))),
1459 None => std::task::Poll::Ready(None),
1460 }
1461 }
1462}
1463
1464#[derive(Debug)]
1465pub enum NodeEvent {
1466 #[non_exhaustive]
1467 _UnknownEvent {
1468 ordinal: u64,
1470 },
1471}
1472
1473impl NodeEvent {
1474 fn decode(
1476 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1477 ) -> Result<NodeEvent, fidl::Error> {
1478 let (bytes, _handles) = buf.split_mut();
1479 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1480 debug_assert_eq!(tx_header.tx_id, 0);
1481 match tx_header.ordinal {
1482 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1483 Ok(NodeEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1484 }
1485 _ => Err(fidl::Error::UnknownOrdinal {
1486 ordinal: tx_header.ordinal,
1487 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1488 }),
1489 }
1490 }
1491}
1492
1493pub struct NodeRequestStream {
1495 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1496 is_terminated: bool,
1497}
1498
1499impl std::marker::Unpin for NodeRequestStream {}
1500
1501impl futures::stream::FusedStream for NodeRequestStream {
1502 fn is_terminated(&self) -> bool {
1503 self.is_terminated
1504 }
1505}
1506
1507impl fidl::endpoints::RequestStream for NodeRequestStream {
1508 type Protocol = NodeMarker;
1509 type ControlHandle = NodeControlHandle;
1510
1511 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1512 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1513 }
1514
1515 fn control_handle(&self) -> Self::ControlHandle {
1516 NodeControlHandle { inner: self.inner.clone() }
1517 }
1518
1519 fn into_inner(
1520 self,
1521 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1522 {
1523 (self.inner, self.is_terminated)
1524 }
1525
1526 fn from_inner(
1527 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1528 is_terminated: bool,
1529 ) -> Self {
1530 Self { inner, is_terminated }
1531 }
1532}
1533
1534impl futures::Stream for NodeRequestStream {
1535 type Item = Result<NodeRequest, fidl::Error>;
1536
1537 fn poll_next(
1538 mut self: std::pin::Pin<&mut Self>,
1539 cx: &mut std::task::Context<'_>,
1540 ) -> std::task::Poll<Option<Self::Item>> {
1541 let this = &mut *self;
1542 if this.inner.check_shutdown(cx) {
1543 this.is_terminated = true;
1544 return std::task::Poll::Ready(None);
1545 }
1546 if this.is_terminated {
1547 panic!("polled NodeRequestStream after completion");
1548 }
1549 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1550 |bytes, handles| {
1551 match this.inner.channel().read_etc(cx, bytes, handles) {
1552 std::task::Poll::Ready(Ok(())) => {}
1553 std::task::Poll::Pending => return std::task::Poll::Pending,
1554 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1555 this.is_terminated = true;
1556 return std::task::Poll::Ready(None);
1557 }
1558 std::task::Poll::Ready(Err(e)) => {
1559 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1560 e.into(),
1561 ))));
1562 }
1563 }
1564
1565 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1567
1568 std::task::Poll::Ready(Some(match header.ordinal {
1569 0x77d10dff3c1ea129 => {
1570 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1571 let mut req = fidl::new_empty!(
1572 NodeAddChildRequest,
1573 fidl::encoding::DefaultFuchsiaResourceDialect
1574 );
1575 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeAddChildRequest>(&header, _body_bytes, handles, &mut req)?;
1576 let control_handle = NodeControlHandle { inner: this.inner.clone() };
1577 Ok(NodeRequest::AddChild {
1578 args: req.args,
1579 controller: req.controller,
1580 node: req.node,
1581
1582 responder: NodeAddChildResponder {
1583 control_handle: std::mem::ManuallyDrop::new(control_handle),
1584 tx_id: header.tx_id,
1585 },
1586 })
1587 }
1588 _ if header.tx_id == 0
1589 && header
1590 .dynamic_flags()
1591 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1592 {
1593 Ok(NodeRequest::_UnknownMethod {
1594 ordinal: header.ordinal,
1595 control_handle: NodeControlHandle { inner: this.inner.clone() },
1596 method_type: fidl::MethodType::OneWay,
1597 })
1598 }
1599 _ if header
1600 .dynamic_flags()
1601 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1602 {
1603 this.inner.send_framework_err(
1604 fidl::encoding::FrameworkErr::UnknownMethod,
1605 header.tx_id,
1606 header.ordinal,
1607 header.dynamic_flags(),
1608 (bytes, handles),
1609 )?;
1610 Ok(NodeRequest::_UnknownMethod {
1611 ordinal: header.ordinal,
1612 control_handle: NodeControlHandle { inner: this.inner.clone() },
1613 method_type: fidl::MethodType::TwoWay,
1614 })
1615 }
1616 _ => Err(fidl::Error::UnknownOrdinal {
1617 ordinal: header.ordinal,
1618 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1619 }),
1620 }))
1621 },
1622 )
1623 }
1624}
1625
1626#[derive(Debug)]
1634pub enum NodeRequest {
1635 AddChild {
1641 args: NodeAddArgs,
1642 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1643 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1644 responder: NodeAddChildResponder,
1645 },
1646 #[non_exhaustive]
1648 _UnknownMethod {
1649 ordinal: u64,
1651 control_handle: NodeControlHandle,
1652 method_type: fidl::MethodType,
1653 },
1654}
1655
1656impl NodeRequest {
1657 #[allow(irrefutable_let_patterns)]
1658 pub fn into_add_child(
1659 self,
1660 ) -> Option<(
1661 NodeAddArgs,
1662 fidl::endpoints::ServerEnd<NodeControllerMarker>,
1663 Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1664 NodeAddChildResponder,
1665 )> {
1666 if let NodeRequest::AddChild { args, controller, node, responder } = self {
1667 Some((args, controller, node, responder))
1668 } else {
1669 None
1670 }
1671 }
1672
1673 pub fn method_name(&self) -> &'static str {
1675 match *self {
1676 NodeRequest::AddChild { .. } => "add_child",
1677 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1678 "unknown one-way method"
1679 }
1680 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1681 "unknown two-way method"
1682 }
1683 }
1684 }
1685}
1686
1687#[derive(Debug, Clone)]
1688pub struct NodeControlHandle {
1689 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1690}
1691
1692impl fidl::endpoints::ControlHandle for NodeControlHandle {
1693 fn shutdown(&self) {
1694 self.inner.shutdown()
1695 }
1696
1697 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1698 self.inner.shutdown_with_epitaph(status)
1699 }
1700
1701 fn is_closed(&self) -> bool {
1702 self.inner.channel().is_closed()
1703 }
1704 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1705 self.inner.channel().on_closed()
1706 }
1707
1708 #[cfg(target_os = "fuchsia")]
1709 fn signal_peer(
1710 &self,
1711 clear_mask: zx::Signals,
1712 set_mask: zx::Signals,
1713 ) -> Result<(), zx_status::Status> {
1714 use fidl::Peered;
1715 self.inner.channel().signal_peer(clear_mask, set_mask)
1716 }
1717}
1718
1719impl NodeControlHandle {}
1720
1721#[must_use = "FIDL methods require a response to be sent"]
1722#[derive(Debug)]
1723pub struct NodeAddChildResponder {
1724 control_handle: std::mem::ManuallyDrop<NodeControlHandle>,
1725 tx_id: u32,
1726}
1727
1728impl std::ops::Drop for NodeAddChildResponder {
1732 fn drop(&mut self) {
1733 self.control_handle.shutdown();
1734 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1736 }
1737}
1738
1739impl fidl::endpoints::Responder for NodeAddChildResponder {
1740 type ControlHandle = NodeControlHandle;
1741
1742 fn control_handle(&self) -> &NodeControlHandle {
1743 &self.control_handle
1744 }
1745
1746 fn drop_without_shutdown(mut self) {
1747 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1749 std::mem::forget(self);
1751 }
1752}
1753
1754impl NodeAddChildResponder {
1755 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1759 let _result = self.send_raw(result);
1760 if _result.is_err() {
1761 self.control_handle.shutdown();
1762 }
1763 self.drop_without_shutdown();
1764 _result
1765 }
1766
1767 pub fn send_no_shutdown_on_err(
1769 self,
1770 mut result: Result<(), NodeError>,
1771 ) -> Result<(), fidl::Error> {
1772 let _result = self.send_raw(result);
1773 self.drop_without_shutdown();
1774 _result
1775 }
1776
1777 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1778 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1779 fidl::encoding::EmptyStruct,
1780 NodeError,
1781 >>(
1782 fidl::encoding::FlexibleResult::new(result),
1783 self.tx_id,
1784 0x77d10dff3c1ea129,
1785 fidl::encoding::DynamicFlags::FLEXIBLE,
1786 )
1787 }
1788}
1789
1790#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1791pub struct NodeControllerMarker;
1792
1793impl fidl::endpoints::ProtocolMarker for NodeControllerMarker {
1794 type Proxy = NodeControllerProxy;
1795 type RequestStream = NodeControllerRequestStream;
1796 #[cfg(target_os = "fuchsia")]
1797 type SynchronousProxy = NodeControllerSynchronousProxy;
1798
1799 const DEBUG_NAME: &'static str = "(anonymous) NodeController";
1800}
1801pub type NodeControllerRequestBindResult = Result<(), i32>;
1802pub type NodeControllerWaitForDriverResult = Result<DriverResult, i32>;
1803
1804pub trait NodeControllerProxyInterface: Send + Sync {
1805 fn r#remove(&self) -> Result<(), fidl::Error>;
1806 type RequestBindResponseFut: std::future::Future<Output = Result<NodeControllerRequestBindResult, fidl::Error>>
1807 + Send;
1808 fn r#request_bind(
1809 &self,
1810 payload: &NodeControllerRequestBindRequest,
1811 ) -> Self::RequestBindResponseFut;
1812 type WaitForDriverResponseFut: std::future::Future<Output = Result<NodeControllerWaitForDriverResult, fidl::Error>>
1813 + Send;
1814 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut;
1815}
1816#[derive(Debug)]
1817#[cfg(target_os = "fuchsia")]
1818pub struct NodeControllerSynchronousProxy {
1819 client: fidl::client::sync::Client,
1820}
1821
1822#[cfg(target_os = "fuchsia")]
1823impl fidl::endpoints::SynchronousProxy for NodeControllerSynchronousProxy {
1824 type Proxy = NodeControllerProxy;
1825 type Protocol = NodeControllerMarker;
1826
1827 fn from_channel(inner: fidl::Channel) -> Self {
1828 Self::new(inner)
1829 }
1830
1831 fn into_channel(self) -> fidl::Channel {
1832 self.client.into_channel()
1833 }
1834
1835 fn as_channel(&self) -> &fidl::Channel {
1836 self.client.as_channel()
1837 }
1838}
1839
1840#[cfg(target_os = "fuchsia")]
1841impl NodeControllerSynchronousProxy {
1842 pub fn new(channel: fidl::Channel) -> Self {
1843 Self { client: fidl::client::sync::Client::new(channel) }
1844 }
1845
1846 pub fn into_channel(self) -> fidl::Channel {
1847 self.client.into_channel()
1848 }
1849
1850 pub fn wait_for_event(
1853 &self,
1854 deadline: zx::MonotonicInstant,
1855 ) -> Result<NodeControllerEvent, fidl::Error> {
1856 NodeControllerEvent::decode(self.client.wait_for_event::<NodeControllerMarker>(deadline)?)
1857 }
1858
1859 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1861 self.client.send::<fidl::encoding::EmptyPayload>(
1862 (),
1863 0x54fa8b3dfe7bb341,
1864 fidl::encoding::DynamicFlags::FLEXIBLE,
1865 )
1866 }
1867
1868 pub fn r#request_bind(
1875 &self,
1876 mut payload: &NodeControllerRequestBindRequest,
1877 ___deadline: zx::MonotonicInstant,
1878 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1879 let _response = self.client.send_query::<
1880 NodeControllerRequestBindRequest,
1881 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1882 NodeControllerMarker,
1883 >(
1884 payload,
1885 0x41b954726b13508f,
1886 fidl::encoding::DynamicFlags::FLEXIBLE,
1887 ___deadline,
1888 )?
1889 .into_result::<NodeControllerMarker>("request_bind")?;
1890 Ok(_response.map(|x| x))
1891 }
1892
1893 pub fn r#wait_for_driver(
1900 &self,
1901 ___deadline: zx::MonotonicInstant,
1902 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1903 let _response = self.client.send_query::<
1904 fidl::encoding::EmptyPayload,
1905 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1906 NodeControllerMarker,
1907 >(
1908 (),
1909 0x69f7106e47d81387,
1910 fidl::encoding::DynamicFlags::FLEXIBLE,
1911 ___deadline,
1912 )?
1913 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1914 Ok(_response.map(|x| x))
1915 }
1916}
1917
1918#[cfg(target_os = "fuchsia")]
1919impl From<NodeControllerSynchronousProxy> for zx::NullableHandle {
1920 fn from(value: NodeControllerSynchronousProxy) -> Self {
1921 value.into_channel().into()
1922 }
1923}
1924
1925#[cfg(target_os = "fuchsia")]
1926impl From<fidl::Channel> for NodeControllerSynchronousProxy {
1927 fn from(value: fidl::Channel) -> Self {
1928 Self::new(value)
1929 }
1930}
1931
1932#[cfg(target_os = "fuchsia")]
1933impl fidl::endpoints::FromClient for NodeControllerSynchronousProxy {
1934 type Protocol = NodeControllerMarker;
1935
1936 fn from_client(value: fidl::endpoints::ClientEnd<NodeControllerMarker>) -> Self {
1937 Self::new(value.into_channel())
1938 }
1939}
1940
1941#[derive(Debug, Clone)]
1942pub struct NodeControllerProxy {
1943 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1944}
1945
1946impl fidl::endpoints::Proxy for NodeControllerProxy {
1947 type Protocol = NodeControllerMarker;
1948
1949 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1950 Self::new(inner)
1951 }
1952
1953 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1954 self.client.into_channel().map_err(|client| Self { client })
1955 }
1956
1957 fn as_channel(&self) -> &::fidl::AsyncChannel {
1958 self.client.as_channel()
1959 }
1960}
1961
1962impl NodeControllerProxy {
1963 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1965 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1966 Self { client: fidl::client::Client::new(channel, protocol_name) }
1967 }
1968
1969 pub fn take_event_stream(&self) -> NodeControllerEventStream {
1975 NodeControllerEventStream { event_receiver: self.client.take_event_receiver() }
1976 }
1977
1978 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1980 NodeControllerProxyInterface::r#remove(self)
1981 }
1982
1983 pub fn r#request_bind(
1990 &self,
1991 mut payload: &NodeControllerRequestBindRequest,
1992 ) -> fidl::client::QueryResponseFut<
1993 NodeControllerRequestBindResult,
1994 fidl::encoding::DefaultFuchsiaResourceDialect,
1995 > {
1996 NodeControllerProxyInterface::r#request_bind(self, payload)
1997 }
1998
1999 pub fn r#wait_for_driver(
2006 &self,
2007 ) -> fidl::client::QueryResponseFut<
2008 NodeControllerWaitForDriverResult,
2009 fidl::encoding::DefaultFuchsiaResourceDialect,
2010 > {
2011 NodeControllerProxyInterface::r#wait_for_driver(self)
2012 }
2013}
2014
2015impl NodeControllerProxyInterface for NodeControllerProxy {
2016 fn r#remove(&self) -> Result<(), fidl::Error> {
2017 self.client.send::<fidl::encoding::EmptyPayload>(
2018 (),
2019 0x54fa8b3dfe7bb341,
2020 fidl::encoding::DynamicFlags::FLEXIBLE,
2021 )
2022 }
2023
2024 type RequestBindResponseFut = fidl::client::QueryResponseFut<
2025 NodeControllerRequestBindResult,
2026 fidl::encoding::DefaultFuchsiaResourceDialect,
2027 >;
2028 fn r#request_bind(
2029 &self,
2030 mut payload: &NodeControllerRequestBindRequest,
2031 ) -> Self::RequestBindResponseFut {
2032 fn _decode(
2033 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2034 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
2035 let _response = fidl::client::decode_transaction_body::<
2036 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
2037 fidl::encoding::DefaultFuchsiaResourceDialect,
2038 0x41b954726b13508f,
2039 >(_buf?)?
2040 .into_result::<NodeControllerMarker>("request_bind")?;
2041 Ok(_response.map(|x| x))
2042 }
2043 self.client.send_query_and_decode::<
2044 NodeControllerRequestBindRequest,
2045 NodeControllerRequestBindResult,
2046 >(
2047 payload,
2048 0x41b954726b13508f,
2049 fidl::encoding::DynamicFlags::FLEXIBLE,
2050 _decode,
2051 )
2052 }
2053
2054 type WaitForDriverResponseFut = fidl::client::QueryResponseFut<
2055 NodeControllerWaitForDriverResult,
2056 fidl::encoding::DefaultFuchsiaResourceDialect,
2057 >;
2058 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut {
2059 fn _decode(
2060 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2061 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
2062 let _response = fidl::client::decode_transaction_body::<
2063 fidl::encoding::FlexibleResultType<DriverResult, i32>,
2064 fidl::encoding::DefaultFuchsiaResourceDialect,
2065 0x69f7106e47d81387,
2066 >(_buf?)?
2067 .into_result::<NodeControllerMarker>("wait_for_driver")?;
2068 Ok(_response.map(|x| x))
2069 }
2070 self.client.send_query_and_decode::<
2071 fidl::encoding::EmptyPayload,
2072 NodeControllerWaitForDriverResult,
2073 >(
2074 (),
2075 0x69f7106e47d81387,
2076 fidl::encoding::DynamicFlags::FLEXIBLE,
2077 _decode,
2078 )
2079 }
2080}
2081
2082pub struct NodeControllerEventStream {
2083 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2084}
2085
2086impl std::marker::Unpin for NodeControllerEventStream {}
2087
2088impl futures::stream::FusedStream for NodeControllerEventStream {
2089 fn is_terminated(&self) -> bool {
2090 self.event_receiver.is_terminated()
2091 }
2092}
2093
2094impl futures::Stream for NodeControllerEventStream {
2095 type Item = Result<NodeControllerEvent, fidl::Error>;
2096
2097 fn poll_next(
2098 mut self: std::pin::Pin<&mut Self>,
2099 cx: &mut std::task::Context<'_>,
2100 ) -> std::task::Poll<Option<Self::Item>> {
2101 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2102 &mut self.event_receiver,
2103 cx
2104 )?) {
2105 Some(buf) => std::task::Poll::Ready(Some(NodeControllerEvent::decode(buf))),
2106 None => std::task::Poll::Ready(None),
2107 }
2108 }
2109}
2110
2111#[derive(Debug)]
2112pub enum NodeControllerEvent {
2113 OnBind {
2114 payload: NodeControllerOnBindRequest,
2115 },
2116 #[non_exhaustive]
2117 _UnknownEvent {
2118 ordinal: u64,
2120 },
2121}
2122
2123impl NodeControllerEvent {
2124 #[allow(irrefutable_let_patterns)]
2125 pub fn into_on_bind(self) -> Option<NodeControllerOnBindRequest> {
2126 if let NodeControllerEvent::OnBind { payload } = self { Some((payload)) } else { None }
2127 }
2128
2129 fn decode(
2131 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2132 ) -> Result<NodeControllerEvent, fidl::Error> {
2133 let (bytes, _handles) = buf.split_mut();
2134 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2135 debug_assert_eq!(tx_header.tx_id, 0);
2136 match tx_header.ordinal {
2137 0x51f4165bc5ea202a => {
2138 let mut out = fidl::new_empty!(
2139 NodeControllerOnBindRequest,
2140 fidl::encoding::DefaultFuchsiaResourceDialect
2141 );
2142 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerOnBindRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
2143 Ok((NodeControllerEvent::OnBind { payload: out }))
2144 }
2145 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2146 Ok(NodeControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2147 }
2148 _ => Err(fidl::Error::UnknownOrdinal {
2149 ordinal: tx_header.ordinal,
2150 protocol_name:
2151 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2152 }),
2153 }
2154 }
2155}
2156
2157pub struct NodeControllerRequestStream {
2159 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2160 is_terminated: bool,
2161}
2162
2163impl std::marker::Unpin for NodeControllerRequestStream {}
2164
2165impl futures::stream::FusedStream for NodeControllerRequestStream {
2166 fn is_terminated(&self) -> bool {
2167 self.is_terminated
2168 }
2169}
2170
2171impl fidl::endpoints::RequestStream for NodeControllerRequestStream {
2172 type Protocol = NodeControllerMarker;
2173 type ControlHandle = NodeControllerControlHandle;
2174
2175 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2176 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2177 }
2178
2179 fn control_handle(&self) -> Self::ControlHandle {
2180 NodeControllerControlHandle { inner: self.inner.clone() }
2181 }
2182
2183 fn into_inner(
2184 self,
2185 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2186 {
2187 (self.inner, self.is_terminated)
2188 }
2189
2190 fn from_inner(
2191 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2192 is_terminated: bool,
2193 ) -> Self {
2194 Self { inner, is_terminated }
2195 }
2196}
2197
2198impl futures::Stream for NodeControllerRequestStream {
2199 type Item = Result<NodeControllerRequest, fidl::Error>;
2200
2201 fn poll_next(
2202 mut self: std::pin::Pin<&mut Self>,
2203 cx: &mut std::task::Context<'_>,
2204 ) -> std::task::Poll<Option<Self::Item>> {
2205 let this = &mut *self;
2206 if this.inner.check_shutdown(cx) {
2207 this.is_terminated = true;
2208 return std::task::Poll::Ready(None);
2209 }
2210 if this.is_terminated {
2211 panic!("polled NodeControllerRequestStream after completion");
2212 }
2213 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2214 |bytes, handles| {
2215 match this.inner.channel().read_etc(cx, bytes, handles) {
2216 std::task::Poll::Ready(Ok(())) => {}
2217 std::task::Poll::Pending => return std::task::Poll::Pending,
2218 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2219 this.is_terminated = true;
2220 return std::task::Poll::Ready(None);
2221 }
2222 std::task::Poll::Ready(Err(e)) => {
2223 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2224 e.into(),
2225 ))));
2226 }
2227 }
2228
2229 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2231
2232 std::task::Poll::Ready(Some(match header.ordinal {
2233 0x54fa8b3dfe7bb341 => {
2234 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2235 let mut req = fidl::new_empty!(
2236 fidl::encoding::EmptyPayload,
2237 fidl::encoding::DefaultFuchsiaResourceDialect
2238 );
2239 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2240 let control_handle =
2241 NodeControllerControlHandle { inner: this.inner.clone() };
2242 Ok(NodeControllerRequest::Remove { control_handle })
2243 }
2244 0x41b954726b13508f => {
2245 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2246 let mut req = fidl::new_empty!(
2247 NodeControllerRequestBindRequest,
2248 fidl::encoding::DefaultFuchsiaResourceDialect
2249 );
2250 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerRequestBindRequest>(&header, _body_bytes, handles, &mut req)?;
2251 let control_handle =
2252 NodeControllerControlHandle { inner: this.inner.clone() };
2253 Ok(NodeControllerRequest::RequestBind {
2254 payload: req,
2255 responder: NodeControllerRequestBindResponder {
2256 control_handle: std::mem::ManuallyDrop::new(control_handle),
2257 tx_id: header.tx_id,
2258 },
2259 })
2260 }
2261 0x69f7106e47d81387 => {
2262 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2263 let mut req = fidl::new_empty!(
2264 fidl::encoding::EmptyPayload,
2265 fidl::encoding::DefaultFuchsiaResourceDialect
2266 );
2267 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2268 let control_handle =
2269 NodeControllerControlHandle { inner: this.inner.clone() };
2270 Ok(NodeControllerRequest::WaitForDriver {
2271 responder: NodeControllerWaitForDriverResponder {
2272 control_handle: std::mem::ManuallyDrop::new(control_handle),
2273 tx_id: header.tx_id,
2274 },
2275 })
2276 }
2277 _ if header.tx_id == 0
2278 && header
2279 .dynamic_flags()
2280 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2281 {
2282 Ok(NodeControllerRequest::_UnknownMethod {
2283 ordinal: header.ordinal,
2284 control_handle: NodeControllerControlHandle {
2285 inner: this.inner.clone(),
2286 },
2287 method_type: fidl::MethodType::OneWay,
2288 })
2289 }
2290 _ if header
2291 .dynamic_flags()
2292 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2293 {
2294 this.inner.send_framework_err(
2295 fidl::encoding::FrameworkErr::UnknownMethod,
2296 header.tx_id,
2297 header.ordinal,
2298 header.dynamic_flags(),
2299 (bytes, handles),
2300 )?;
2301 Ok(NodeControllerRequest::_UnknownMethod {
2302 ordinal: header.ordinal,
2303 control_handle: NodeControllerControlHandle {
2304 inner: this.inner.clone(),
2305 },
2306 method_type: fidl::MethodType::TwoWay,
2307 })
2308 }
2309 _ => Err(fidl::Error::UnknownOrdinal {
2310 ordinal: header.ordinal,
2311 protocol_name:
2312 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2313 }),
2314 }))
2315 },
2316 )
2317 }
2318}
2319
2320#[derive(Debug)]
2322pub enum NodeControllerRequest {
2323 Remove { control_handle: NodeControllerControlHandle },
2325 RequestBind {
2332 payload: NodeControllerRequestBindRequest,
2333 responder: NodeControllerRequestBindResponder,
2334 },
2335 WaitForDriver { responder: NodeControllerWaitForDriverResponder },
2342 #[non_exhaustive]
2344 _UnknownMethod {
2345 ordinal: u64,
2347 control_handle: NodeControllerControlHandle,
2348 method_type: fidl::MethodType,
2349 },
2350}
2351
2352impl NodeControllerRequest {
2353 #[allow(irrefutable_let_patterns)]
2354 pub fn into_remove(self) -> Option<(NodeControllerControlHandle)> {
2355 if let NodeControllerRequest::Remove { control_handle } = self {
2356 Some((control_handle))
2357 } else {
2358 None
2359 }
2360 }
2361
2362 #[allow(irrefutable_let_patterns)]
2363 pub fn into_request_bind(
2364 self,
2365 ) -> Option<(NodeControllerRequestBindRequest, NodeControllerRequestBindResponder)> {
2366 if let NodeControllerRequest::RequestBind { payload, responder } = self {
2367 Some((payload, responder))
2368 } else {
2369 None
2370 }
2371 }
2372
2373 #[allow(irrefutable_let_patterns)]
2374 pub fn into_wait_for_driver(self) -> Option<(NodeControllerWaitForDriverResponder)> {
2375 if let NodeControllerRequest::WaitForDriver { responder } = self {
2376 Some((responder))
2377 } else {
2378 None
2379 }
2380 }
2381
2382 pub fn method_name(&self) -> &'static str {
2384 match *self {
2385 NodeControllerRequest::Remove { .. } => "remove",
2386 NodeControllerRequest::RequestBind { .. } => "request_bind",
2387 NodeControllerRequest::WaitForDriver { .. } => "wait_for_driver",
2388 NodeControllerRequest::_UnknownMethod {
2389 method_type: fidl::MethodType::OneWay, ..
2390 } => "unknown one-way method",
2391 NodeControllerRequest::_UnknownMethod {
2392 method_type: fidl::MethodType::TwoWay, ..
2393 } => "unknown two-way method",
2394 }
2395 }
2396}
2397
2398#[derive(Debug, Clone)]
2399pub struct NodeControllerControlHandle {
2400 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2401}
2402
2403impl fidl::endpoints::ControlHandle for NodeControllerControlHandle {
2404 fn shutdown(&self) {
2405 self.inner.shutdown()
2406 }
2407
2408 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2409 self.inner.shutdown_with_epitaph(status)
2410 }
2411
2412 fn is_closed(&self) -> bool {
2413 self.inner.channel().is_closed()
2414 }
2415 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2416 self.inner.channel().on_closed()
2417 }
2418
2419 #[cfg(target_os = "fuchsia")]
2420 fn signal_peer(
2421 &self,
2422 clear_mask: zx::Signals,
2423 set_mask: zx::Signals,
2424 ) -> Result<(), zx_status::Status> {
2425 use fidl::Peered;
2426 self.inner.channel().signal_peer(clear_mask, set_mask)
2427 }
2428}
2429
2430impl NodeControllerControlHandle {
2431 pub fn send_on_bind(
2432 &self,
2433 mut payload: NodeControllerOnBindRequest,
2434 ) -> Result<(), fidl::Error> {
2435 self.inner.send::<NodeControllerOnBindRequest>(
2436 &mut payload,
2437 0,
2438 0x51f4165bc5ea202a,
2439 fidl::encoding::DynamicFlags::FLEXIBLE,
2440 )
2441 }
2442}
2443
2444#[must_use = "FIDL methods require a response to be sent"]
2445#[derive(Debug)]
2446pub struct NodeControllerRequestBindResponder {
2447 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2448 tx_id: u32,
2449}
2450
2451impl std::ops::Drop for NodeControllerRequestBindResponder {
2455 fn drop(&mut self) {
2456 self.control_handle.shutdown();
2457 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2459 }
2460}
2461
2462impl fidl::endpoints::Responder for NodeControllerRequestBindResponder {
2463 type ControlHandle = NodeControllerControlHandle;
2464
2465 fn control_handle(&self) -> &NodeControllerControlHandle {
2466 &self.control_handle
2467 }
2468
2469 fn drop_without_shutdown(mut self) {
2470 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2472 std::mem::forget(self);
2474 }
2475}
2476
2477impl NodeControllerRequestBindResponder {
2478 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2482 let _result = self.send_raw(result);
2483 if _result.is_err() {
2484 self.control_handle.shutdown();
2485 }
2486 self.drop_without_shutdown();
2487 _result
2488 }
2489
2490 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2492 let _result = self.send_raw(result);
2493 self.drop_without_shutdown();
2494 _result
2495 }
2496
2497 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2498 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2499 fidl::encoding::EmptyStruct,
2500 i32,
2501 >>(
2502 fidl::encoding::FlexibleResult::new(result),
2503 self.tx_id,
2504 0x41b954726b13508f,
2505 fidl::encoding::DynamicFlags::FLEXIBLE,
2506 )
2507 }
2508}
2509
2510#[must_use = "FIDL methods require a response to be sent"]
2511#[derive(Debug)]
2512pub struct NodeControllerWaitForDriverResponder {
2513 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2514 tx_id: u32,
2515}
2516
2517impl std::ops::Drop for NodeControllerWaitForDriverResponder {
2521 fn drop(&mut self) {
2522 self.control_handle.shutdown();
2523 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2525 }
2526}
2527
2528impl fidl::endpoints::Responder for NodeControllerWaitForDriverResponder {
2529 type ControlHandle = NodeControllerControlHandle;
2530
2531 fn control_handle(&self) -> &NodeControllerControlHandle {
2532 &self.control_handle
2533 }
2534
2535 fn drop_without_shutdown(mut self) {
2536 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2538 std::mem::forget(self);
2540 }
2541}
2542
2543impl NodeControllerWaitForDriverResponder {
2544 pub fn send(self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2548 let _result = self.send_raw(result);
2549 if _result.is_err() {
2550 self.control_handle.shutdown();
2551 }
2552 self.drop_without_shutdown();
2553 _result
2554 }
2555
2556 pub fn send_no_shutdown_on_err(
2558 self,
2559 mut result: Result<DriverResult, i32>,
2560 ) -> Result<(), fidl::Error> {
2561 let _result = self.send_raw(result);
2562 self.drop_without_shutdown();
2563 _result
2564 }
2565
2566 fn send_raw(&self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2567 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<DriverResult, i32>>(
2568 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
2569 self.tx_id,
2570 0x69f7106e47d81387,
2571 fidl::encoding::DynamicFlags::FLEXIBLE,
2572 )
2573 }
2574}
2575
2576mod internal {
2577 use super::*;
2578
2579 impl fidl::encoding::ResourceTypeMarker for DriverResumeRequest {
2580 type Borrowed<'a> = &'a mut Self;
2581 fn take_or_borrow<'a>(
2582 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2583 ) -> Self::Borrowed<'a> {
2584 value
2585 }
2586 }
2587
2588 unsafe impl fidl::encoding::TypeMarker for DriverResumeRequest {
2589 type Owned = Self;
2590
2591 #[inline(always)]
2592 fn inline_align(_context: fidl::encoding::Context) -> usize {
2593 4
2594 }
2595
2596 #[inline(always)]
2597 fn inline_size(_context: fidl::encoding::Context) -> usize {
2598 4
2599 }
2600 }
2601
2602 unsafe impl
2603 fidl::encoding::Encode<DriverResumeRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2604 for &mut DriverResumeRequest
2605 {
2606 #[inline]
2607 unsafe fn encode(
2608 self,
2609 encoder: &mut fidl::encoding::Encoder<
2610 '_,
2611 fidl::encoding::DefaultFuchsiaResourceDialect,
2612 >,
2613 offset: usize,
2614 _depth: fidl::encoding::Depth,
2615 ) -> fidl::Result<()> {
2616 encoder.debug_check_bounds::<DriverResumeRequest>(offset);
2617 fidl::encoding::Encode::<
2619 DriverResumeRequest,
2620 fidl::encoding::DefaultFuchsiaResourceDialect,
2621 >::encode(
2622 (<fidl::encoding::Optional<
2623 fidl::encoding::HandleType<
2624 fidl::EventPair,
2625 { fidl::ObjectType::EVENTPAIR.into_raw() },
2626 24579,
2627 >,
2628 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2629 &mut self.power_element_lease,
2630 ),),
2631 encoder,
2632 offset,
2633 _depth,
2634 )
2635 }
2636 }
2637 unsafe impl<
2638 T0: fidl::encoding::Encode<
2639 fidl::encoding::Optional<
2640 fidl::encoding::HandleType<
2641 fidl::EventPair,
2642 { fidl::ObjectType::EVENTPAIR.into_raw() },
2643 24579,
2644 >,
2645 >,
2646 fidl::encoding::DefaultFuchsiaResourceDialect,
2647 >,
2648 > fidl::encoding::Encode<DriverResumeRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2649 for (T0,)
2650 {
2651 #[inline]
2652 unsafe fn encode(
2653 self,
2654 encoder: &mut fidl::encoding::Encoder<
2655 '_,
2656 fidl::encoding::DefaultFuchsiaResourceDialect,
2657 >,
2658 offset: usize,
2659 depth: fidl::encoding::Depth,
2660 ) -> fidl::Result<()> {
2661 encoder.debug_check_bounds::<DriverResumeRequest>(offset);
2662 self.0.encode(encoder, offset + 0, depth)?;
2666 Ok(())
2667 }
2668 }
2669
2670 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2671 for DriverResumeRequest
2672 {
2673 #[inline(always)]
2674 fn new_empty() -> Self {
2675 Self {
2676 power_element_lease: fidl::new_empty!(
2677 fidl::encoding::Optional<
2678 fidl::encoding::HandleType<
2679 fidl::EventPair,
2680 { fidl::ObjectType::EVENTPAIR.into_raw() },
2681 24579,
2682 >,
2683 >,
2684 fidl::encoding::DefaultFuchsiaResourceDialect
2685 ),
2686 }
2687 }
2688
2689 #[inline]
2690 unsafe fn decode(
2691 &mut self,
2692 decoder: &mut fidl::encoding::Decoder<
2693 '_,
2694 fidl::encoding::DefaultFuchsiaResourceDialect,
2695 >,
2696 offset: usize,
2697 _depth: fidl::encoding::Depth,
2698 ) -> fidl::Result<()> {
2699 decoder.debug_check_bounds::<Self>(offset);
2700 fidl::decode!(
2702 fidl::encoding::Optional<
2703 fidl::encoding::HandleType<
2704 fidl::EventPair,
2705 { fidl::ObjectType::EVENTPAIR.into_raw() },
2706 24579,
2707 >,
2708 >,
2709 fidl::encoding::DefaultFuchsiaResourceDialect,
2710 &mut self.power_element_lease,
2711 decoder,
2712 offset + 0,
2713 _depth
2714 )?;
2715 Ok(())
2716 }
2717 }
2718
2719 impl fidl::encoding::ResourceTypeMarker for DriverStartRequest {
2720 type Borrowed<'a> = &'a mut Self;
2721 fn take_or_borrow<'a>(
2722 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2723 ) -> Self::Borrowed<'a> {
2724 value
2725 }
2726 }
2727
2728 unsafe impl fidl::encoding::TypeMarker for DriverStartRequest {
2729 type Owned = Self;
2730
2731 #[inline(always)]
2732 fn inline_align(_context: fidl::encoding::Context) -> usize {
2733 8
2734 }
2735
2736 #[inline(always)]
2737 fn inline_size(_context: fidl::encoding::Context) -> usize {
2738 16
2739 }
2740 }
2741
2742 unsafe impl
2743 fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2744 for &mut DriverStartRequest
2745 {
2746 #[inline]
2747 unsafe fn encode(
2748 self,
2749 encoder: &mut fidl::encoding::Encoder<
2750 '_,
2751 fidl::encoding::DefaultFuchsiaResourceDialect,
2752 >,
2753 offset: usize,
2754 _depth: fidl::encoding::Depth,
2755 ) -> fidl::Result<()> {
2756 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2757 fidl::encoding::Encode::<
2759 DriverStartRequest,
2760 fidl::encoding::DefaultFuchsiaResourceDialect,
2761 >::encode(
2762 (<DriverStartArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2763 &mut self.start_args,
2764 ),),
2765 encoder,
2766 offset,
2767 _depth,
2768 )
2769 }
2770 }
2771 unsafe impl<
2772 T0: fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2773 > fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2774 for (T0,)
2775 {
2776 #[inline]
2777 unsafe fn encode(
2778 self,
2779 encoder: &mut fidl::encoding::Encoder<
2780 '_,
2781 fidl::encoding::DefaultFuchsiaResourceDialect,
2782 >,
2783 offset: usize,
2784 depth: fidl::encoding::Depth,
2785 ) -> fidl::Result<()> {
2786 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2787 self.0.encode(encoder, offset + 0, depth)?;
2791 Ok(())
2792 }
2793 }
2794
2795 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2796 for DriverStartRequest
2797 {
2798 #[inline(always)]
2799 fn new_empty() -> Self {
2800 Self {
2801 start_args: fidl::new_empty!(
2802 DriverStartArgs,
2803 fidl::encoding::DefaultFuchsiaResourceDialect
2804 ),
2805 }
2806 }
2807
2808 #[inline]
2809 unsafe fn decode(
2810 &mut self,
2811 decoder: &mut fidl::encoding::Decoder<
2812 '_,
2813 fidl::encoding::DefaultFuchsiaResourceDialect,
2814 >,
2815 offset: usize,
2816 _depth: fidl::encoding::Depth,
2817 ) -> fidl::Result<()> {
2818 decoder.debug_check_bounds::<Self>(offset);
2819 fidl::decode!(
2821 DriverStartArgs,
2822 fidl::encoding::DefaultFuchsiaResourceDialect,
2823 &mut self.start_args,
2824 decoder,
2825 offset + 0,
2826 _depth
2827 )?;
2828 Ok(())
2829 }
2830 }
2831
2832 impl fidl::encoding::ResourceTypeMarker for NodeAddChildRequest {
2833 type Borrowed<'a> = &'a mut Self;
2834 fn take_or_borrow<'a>(
2835 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2836 ) -> Self::Borrowed<'a> {
2837 value
2838 }
2839 }
2840
2841 unsafe impl fidl::encoding::TypeMarker for NodeAddChildRequest {
2842 type Owned = Self;
2843
2844 #[inline(always)]
2845 fn inline_align(_context: fidl::encoding::Context) -> usize {
2846 8
2847 }
2848
2849 #[inline(always)]
2850 fn inline_size(_context: fidl::encoding::Context) -> usize {
2851 24
2852 }
2853 }
2854
2855 unsafe impl
2856 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2857 for &mut NodeAddChildRequest
2858 {
2859 #[inline]
2860 unsafe fn encode(
2861 self,
2862 encoder: &mut fidl::encoding::Encoder<
2863 '_,
2864 fidl::encoding::DefaultFuchsiaResourceDialect,
2865 >,
2866 offset: usize,
2867 _depth: fidl::encoding::Depth,
2868 ) -> fidl::Result<()> {
2869 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2870 fidl::encoding::Encode::<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2872 (
2873 <NodeAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.args),
2874 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
2875 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node),
2876 ),
2877 encoder, offset, _depth
2878 )
2879 }
2880 }
2881 unsafe impl<
2882 T0: fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2883 T1: fidl::encoding::Encode<
2884 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2885 fidl::encoding::DefaultFuchsiaResourceDialect,
2886 >,
2887 T2: fidl::encoding::Encode<
2888 fidl::encoding::Optional<
2889 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2890 >,
2891 fidl::encoding::DefaultFuchsiaResourceDialect,
2892 >,
2893 > fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2894 for (T0, T1, T2)
2895 {
2896 #[inline]
2897 unsafe fn encode(
2898 self,
2899 encoder: &mut fidl::encoding::Encoder<
2900 '_,
2901 fidl::encoding::DefaultFuchsiaResourceDialect,
2902 >,
2903 offset: usize,
2904 depth: fidl::encoding::Depth,
2905 ) -> fidl::Result<()> {
2906 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2907 self.0.encode(encoder, offset + 0, depth)?;
2911 self.1.encode(encoder, offset + 16, depth)?;
2912 self.2.encode(encoder, offset + 20, depth)?;
2913 Ok(())
2914 }
2915 }
2916
2917 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2918 for NodeAddChildRequest
2919 {
2920 #[inline(always)]
2921 fn new_empty() -> Self {
2922 Self {
2923 args: fidl::new_empty!(NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect),
2924 controller: fidl::new_empty!(
2925 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2926 fidl::encoding::DefaultFuchsiaResourceDialect
2927 ),
2928 node: fidl::new_empty!(
2929 fidl::encoding::Optional<
2930 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2931 >,
2932 fidl::encoding::DefaultFuchsiaResourceDialect
2933 ),
2934 }
2935 }
2936
2937 #[inline]
2938 unsafe fn decode(
2939 &mut self,
2940 decoder: &mut fidl::encoding::Decoder<
2941 '_,
2942 fidl::encoding::DefaultFuchsiaResourceDialect,
2943 >,
2944 offset: usize,
2945 _depth: fidl::encoding::Depth,
2946 ) -> fidl::Result<()> {
2947 decoder.debug_check_bounds::<Self>(offset);
2948 fidl::decode!(
2950 NodeAddArgs,
2951 fidl::encoding::DefaultFuchsiaResourceDialect,
2952 &mut self.args,
2953 decoder,
2954 offset + 0,
2955 _depth
2956 )?;
2957 fidl::decode!(
2958 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2959 fidl::encoding::DefaultFuchsiaResourceDialect,
2960 &mut self.controller,
2961 decoder,
2962 offset + 16,
2963 _depth
2964 )?;
2965 fidl::decode!(
2966 fidl::encoding::Optional<
2967 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2968 >,
2969 fidl::encoding::DefaultFuchsiaResourceDialect,
2970 &mut self.node,
2971 decoder,
2972 offset + 20,
2973 _depth
2974 )?;
2975 Ok(())
2976 }
2977 }
2978
2979 impl DevfsAddArgs {
2980 #[inline(always)]
2981 fn max_ordinal_present(&self) -> u64 {
2982 if let Some(_) = self.controller_connector {
2983 return 5;
2984 }
2985 if let Some(_) = self.connector_supports {
2986 return 4;
2987 }
2988 if let Some(_) = self.inspect {
2989 return 3;
2990 }
2991 if let Some(_) = self.class_name {
2992 return 2;
2993 }
2994 if let Some(_) = self.connector {
2995 return 1;
2996 }
2997 0
2998 }
2999 }
3000
3001 impl fidl::encoding::ResourceTypeMarker for DevfsAddArgs {
3002 type Borrowed<'a> = &'a mut Self;
3003 fn take_or_borrow<'a>(
3004 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3005 ) -> Self::Borrowed<'a> {
3006 value
3007 }
3008 }
3009
3010 unsafe impl fidl::encoding::TypeMarker for DevfsAddArgs {
3011 type Owned = Self;
3012
3013 #[inline(always)]
3014 fn inline_align(_context: fidl::encoding::Context) -> usize {
3015 8
3016 }
3017
3018 #[inline(always)]
3019 fn inline_size(_context: fidl::encoding::Context) -> usize {
3020 16
3021 }
3022 }
3023
3024 unsafe impl fidl::encoding::Encode<DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
3025 for &mut DevfsAddArgs
3026 {
3027 unsafe fn encode(
3028 self,
3029 encoder: &mut fidl::encoding::Encoder<
3030 '_,
3031 fidl::encoding::DefaultFuchsiaResourceDialect,
3032 >,
3033 offset: usize,
3034 mut depth: fidl::encoding::Depth,
3035 ) -> fidl::Result<()> {
3036 encoder.debug_check_bounds::<DevfsAddArgs>(offset);
3037 let max_ordinal: u64 = self.max_ordinal_present();
3039 encoder.write_num(max_ordinal, offset);
3040 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3041 if max_ordinal == 0 {
3043 return Ok(());
3044 }
3045 depth.increment()?;
3046 let envelope_size = 8;
3047 let bytes_len = max_ordinal as usize * envelope_size;
3048 #[allow(unused_variables)]
3049 let offset = encoder.out_of_line_offset(bytes_len);
3050 let mut _prev_end_offset: usize = 0;
3051 if 1 > max_ordinal {
3052 return Ok(());
3053 }
3054
3055 let cur_offset: usize = (1 - 1) * envelope_size;
3058
3059 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3061
3062 fidl::encoding::encode_in_envelope_optional::<
3067 fidl::encoding::Endpoint<
3068 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3069 >,
3070 fidl::encoding::DefaultFuchsiaResourceDialect,
3071 >(
3072 self.connector.as_mut().map(
3073 <fidl::encoding::Endpoint<
3074 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3075 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3076 ),
3077 encoder,
3078 offset + cur_offset,
3079 depth,
3080 )?;
3081
3082 _prev_end_offset = cur_offset + envelope_size;
3083 if 2 > max_ordinal {
3084 return Ok(());
3085 }
3086
3087 let cur_offset: usize = (2 - 1) * envelope_size;
3090
3091 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3093
3094 fidl::encoding::encode_in_envelope_optional::<
3099 fidl::encoding::BoundedString<255>,
3100 fidl::encoding::DefaultFuchsiaResourceDialect,
3101 >(
3102 self.class_name.as_ref().map(
3103 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3104 ),
3105 encoder,
3106 offset + cur_offset,
3107 depth,
3108 )?;
3109
3110 _prev_end_offset = cur_offset + envelope_size;
3111 if 3 > max_ordinal {
3112 return Ok(());
3113 }
3114
3115 let cur_offset: usize = (3 - 1) * envelope_size;
3118
3119 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3121
3122 fidl::encoding::encode_in_envelope_optional::<
3127 fidl::encoding::HandleType<
3128 fidl::Vmo,
3129 { fidl::ObjectType::VMO.into_raw() },
3130 2147483648,
3131 >,
3132 fidl::encoding::DefaultFuchsiaResourceDialect,
3133 >(
3134 self.inspect.as_mut().map(
3135 <fidl::encoding::HandleType<
3136 fidl::Vmo,
3137 { fidl::ObjectType::VMO.into_raw() },
3138 2147483648,
3139 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3140 ),
3141 encoder,
3142 offset + cur_offset,
3143 depth,
3144 )?;
3145
3146 _prev_end_offset = cur_offset + envelope_size;
3147 if 4 > max_ordinal {
3148 return Ok(());
3149 }
3150
3151 let cur_offset: usize = (4 - 1) * envelope_size;
3154
3155 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3157
3158 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_device_fs::ConnectionType, fidl::encoding::DefaultFuchsiaResourceDialect>(
3163 self.connector_supports.as_ref().map(<fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::ValueTypeMarker>::borrow),
3164 encoder, offset + cur_offset, depth
3165 )?;
3166
3167 _prev_end_offset = cur_offset + envelope_size;
3168 if 5 > max_ordinal {
3169 return Ok(());
3170 }
3171
3172 let cur_offset: usize = (5 - 1) * envelope_size;
3175
3176 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3178
3179 fidl::encoding::encode_in_envelope_optional::<
3184 fidl::encoding::Endpoint<
3185 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3186 >,
3187 fidl::encoding::DefaultFuchsiaResourceDialect,
3188 >(
3189 self.controller_connector.as_mut().map(
3190 <fidl::encoding::Endpoint<
3191 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3192 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3193 ),
3194 encoder,
3195 offset + cur_offset,
3196 depth,
3197 )?;
3198
3199 _prev_end_offset = cur_offset + envelope_size;
3200
3201 Ok(())
3202 }
3203 }
3204
3205 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {
3206 #[inline(always)]
3207 fn new_empty() -> Self {
3208 Self::default()
3209 }
3210
3211 unsafe fn decode(
3212 &mut self,
3213 decoder: &mut fidl::encoding::Decoder<
3214 '_,
3215 fidl::encoding::DefaultFuchsiaResourceDialect,
3216 >,
3217 offset: usize,
3218 mut depth: fidl::encoding::Depth,
3219 ) -> fidl::Result<()> {
3220 decoder.debug_check_bounds::<Self>(offset);
3221 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3222 None => return Err(fidl::Error::NotNullable),
3223 Some(len) => len,
3224 };
3225 if len == 0 {
3227 return Ok(());
3228 };
3229 depth.increment()?;
3230 let envelope_size = 8;
3231 let bytes_len = len * envelope_size;
3232 let offset = decoder.out_of_line_offset(bytes_len)?;
3233 let mut _next_ordinal_to_read = 0;
3235 let mut next_offset = offset;
3236 let end_offset = offset + bytes_len;
3237 _next_ordinal_to_read += 1;
3238 if next_offset >= end_offset {
3239 return Ok(());
3240 }
3241
3242 while _next_ordinal_to_read < 1 {
3244 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3245 _next_ordinal_to_read += 1;
3246 next_offset += envelope_size;
3247 }
3248
3249 let next_out_of_line = decoder.next_out_of_line();
3250 let handles_before = decoder.remaining_handles();
3251 if let Some((inlined, num_bytes, num_handles)) =
3252 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3253 {
3254 let member_inline_size = <fidl::encoding::Endpoint<
3255 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3256 > as fidl::encoding::TypeMarker>::inline_size(
3257 decoder.context
3258 );
3259 if inlined != (member_inline_size <= 4) {
3260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3261 }
3262 let inner_offset;
3263 let mut inner_depth = depth.clone();
3264 if inlined {
3265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3266 inner_offset = next_offset;
3267 } else {
3268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3269 inner_depth.increment()?;
3270 }
3271 let val_ref = self.connector.get_or_insert_with(|| {
3272 fidl::new_empty!(
3273 fidl::encoding::Endpoint<
3274 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3275 >,
3276 fidl::encoding::DefaultFuchsiaResourceDialect
3277 )
3278 });
3279 fidl::decode!(
3280 fidl::encoding::Endpoint<
3281 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3282 >,
3283 fidl::encoding::DefaultFuchsiaResourceDialect,
3284 val_ref,
3285 decoder,
3286 inner_offset,
3287 inner_depth
3288 )?;
3289 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3290 {
3291 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3292 }
3293 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3294 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3295 }
3296 }
3297
3298 next_offset += envelope_size;
3299 _next_ordinal_to_read += 1;
3300 if next_offset >= end_offset {
3301 return Ok(());
3302 }
3303
3304 while _next_ordinal_to_read < 2 {
3306 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3307 _next_ordinal_to_read += 1;
3308 next_offset += envelope_size;
3309 }
3310
3311 let next_out_of_line = decoder.next_out_of_line();
3312 let handles_before = decoder.remaining_handles();
3313 if let Some((inlined, num_bytes, num_handles)) =
3314 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3315 {
3316 let member_inline_size =
3317 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
3318 decoder.context,
3319 );
3320 if inlined != (member_inline_size <= 4) {
3321 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3322 }
3323 let inner_offset;
3324 let mut inner_depth = depth.clone();
3325 if inlined {
3326 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3327 inner_offset = next_offset;
3328 } else {
3329 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3330 inner_depth.increment()?;
3331 }
3332 let val_ref = self.class_name.get_or_insert_with(|| {
3333 fidl::new_empty!(
3334 fidl::encoding::BoundedString<255>,
3335 fidl::encoding::DefaultFuchsiaResourceDialect
3336 )
3337 });
3338 fidl::decode!(
3339 fidl::encoding::BoundedString<255>,
3340 fidl::encoding::DefaultFuchsiaResourceDialect,
3341 val_ref,
3342 decoder,
3343 inner_offset,
3344 inner_depth
3345 )?;
3346 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3347 {
3348 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3349 }
3350 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3351 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3352 }
3353 }
3354
3355 next_offset += envelope_size;
3356 _next_ordinal_to_read += 1;
3357 if next_offset >= end_offset {
3358 return Ok(());
3359 }
3360
3361 while _next_ordinal_to_read < 3 {
3363 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3364 _next_ordinal_to_read += 1;
3365 next_offset += envelope_size;
3366 }
3367
3368 let next_out_of_line = decoder.next_out_of_line();
3369 let handles_before = decoder.remaining_handles();
3370 if let Some((inlined, num_bytes, num_handles)) =
3371 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3372 {
3373 let member_inline_size = <fidl::encoding::HandleType<
3374 fidl::Vmo,
3375 { fidl::ObjectType::VMO.into_raw() },
3376 2147483648,
3377 > as fidl::encoding::TypeMarker>::inline_size(
3378 decoder.context
3379 );
3380 if inlined != (member_inline_size <= 4) {
3381 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3382 }
3383 let inner_offset;
3384 let mut inner_depth = depth.clone();
3385 if inlined {
3386 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3387 inner_offset = next_offset;
3388 } else {
3389 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3390 inner_depth.increment()?;
3391 }
3392 let val_ref =
3393 self.inspect.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3394 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3395 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3396 {
3397 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3398 }
3399 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3400 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3401 }
3402 }
3403
3404 next_offset += envelope_size;
3405 _next_ordinal_to_read += 1;
3406 if next_offset >= end_offset {
3407 return Ok(());
3408 }
3409
3410 while _next_ordinal_to_read < 4 {
3412 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3413 _next_ordinal_to_read += 1;
3414 next_offset += envelope_size;
3415 }
3416
3417 let next_out_of_line = decoder.next_out_of_line();
3418 let handles_before = decoder.remaining_handles();
3419 if let Some((inlined, num_bytes, num_handles)) =
3420 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3421 {
3422 let member_inline_size = <fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3423 if inlined != (member_inline_size <= 4) {
3424 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3425 }
3426 let inner_offset;
3427 let mut inner_depth = depth.clone();
3428 if inlined {
3429 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3430 inner_offset = next_offset;
3431 } else {
3432 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3433 inner_depth.increment()?;
3434 }
3435 let val_ref = self.connector_supports.get_or_insert_with(|| {
3436 fidl::new_empty!(
3437 fidl_fuchsia_device_fs::ConnectionType,
3438 fidl::encoding::DefaultFuchsiaResourceDialect
3439 )
3440 });
3441 fidl::decode!(
3442 fidl_fuchsia_device_fs::ConnectionType,
3443 fidl::encoding::DefaultFuchsiaResourceDialect,
3444 val_ref,
3445 decoder,
3446 inner_offset,
3447 inner_depth
3448 )?;
3449 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3450 {
3451 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3452 }
3453 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3454 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3455 }
3456 }
3457
3458 next_offset += envelope_size;
3459 _next_ordinal_to_read += 1;
3460 if next_offset >= end_offset {
3461 return Ok(());
3462 }
3463
3464 while _next_ordinal_to_read < 5 {
3466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3467 _next_ordinal_to_read += 1;
3468 next_offset += envelope_size;
3469 }
3470
3471 let next_out_of_line = decoder.next_out_of_line();
3472 let handles_before = decoder.remaining_handles();
3473 if let Some((inlined, num_bytes, num_handles)) =
3474 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3475 {
3476 let member_inline_size = <fidl::encoding::Endpoint<
3477 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3478 > as fidl::encoding::TypeMarker>::inline_size(
3479 decoder.context
3480 );
3481 if inlined != (member_inline_size <= 4) {
3482 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3483 }
3484 let inner_offset;
3485 let mut inner_depth = depth.clone();
3486 if inlined {
3487 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3488 inner_offset = next_offset;
3489 } else {
3490 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3491 inner_depth.increment()?;
3492 }
3493 let val_ref = self.controller_connector.get_or_insert_with(|| {
3494 fidl::new_empty!(
3495 fidl::encoding::Endpoint<
3496 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3497 >,
3498 fidl::encoding::DefaultFuchsiaResourceDialect
3499 )
3500 });
3501 fidl::decode!(
3502 fidl::encoding::Endpoint<
3503 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3504 >,
3505 fidl::encoding::DefaultFuchsiaResourceDialect,
3506 val_ref,
3507 decoder,
3508 inner_offset,
3509 inner_depth
3510 )?;
3511 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3512 {
3513 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3514 }
3515 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3516 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3517 }
3518 }
3519
3520 next_offset += envelope_size;
3521
3522 while next_offset < end_offset {
3524 _next_ordinal_to_read += 1;
3525 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3526 next_offset += envelope_size;
3527 }
3528
3529 Ok(())
3530 }
3531 }
3532
3533 impl DriverStartArgs {
3534 #[inline(always)]
3535 fn max_ordinal_present(&self) -> u64 {
3536 if let Some(_) = self.log_sink {
3537 return 15;
3538 }
3539 if let Some(_) = self.power_element_args {
3540 return 14;
3541 }
3542 if let Some(_) = self.vmar {
3543 return 13;
3544 }
3545 if let Some(_) = self.node_properties_2 {
3546 return 12;
3547 }
3548 if let Some(_) = self.node_token {
3549 return 11;
3550 }
3551 if let Some(_) = self.node_offers {
3552 return 10;
3553 }
3554 if let Some(_) = self.node_properties {
3555 return 9;
3556 }
3557 if let Some(_) = self.node_name {
3558 return 8;
3559 }
3560 if let Some(_) = self.config {
3561 return 7;
3562 }
3563 if let Some(_) = self.outgoing_dir {
3564 return 6;
3565 }
3566 if let Some(_) = self.incoming {
3567 return 5;
3568 }
3569 if let Some(_) = self.program {
3570 return 4;
3571 }
3572 if let Some(_) = self.url {
3573 return 3;
3574 }
3575 if let Some(_) = self.symbols {
3576 return 2;
3577 }
3578 if let Some(_) = self.node {
3579 return 1;
3580 }
3581 0
3582 }
3583 }
3584
3585 impl fidl::encoding::ResourceTypeMarker for DriverStartArgs {
3586 type Borrowed<'a> = &'a mut Self;
3587 fn take_or_borrow<'a>(
3588 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3589 ) -> Self::Borrowed<'a> {
3590 value
3591 }
3592 }
3593
3594 unsafe impl fidl::encoding::TypeMarker for DriverStartArgs {
3595 type Owned = Self;
3596
3597 #[inline(always)]
3598 fn inline_align(_context: fidl::encoding::Context) -> usize {
3599 8
3600 }
3601
3602 #[inline(always)]
3603 fn inline_size(_context: fidl::encoding::Context) -> usize {
3604 16
3605 }
3606 }
3607
3608 unsafe impl
3609 fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
3610 for &mut DriverStartArgs
3611 {
3612 unsafe fn encode(
3613 self,
3614 encoder: &mut fidl::encoding::Encoder<
3615 '_,
3616 fidl::encoding::DefaultFuchsiaResourceDialect,
3617 >,
3618 offset: usize,
3619 mut depth: fidl::encoding::Depth,
3620 ) -> fidl::Result<()> {
3621 encoder.debug_check_bounds::<DriverStartArgs>(offset);
3622 let max_ordinal: u64 = self.max_ordinal_present();
3624 encoder.write_num(max_ordinal, offset);
3625 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3626 if max_ordinal == 0 {
3628 return Ok(());
3629 }
3630 depth.increment()?;
3631 let envelope_size = 8;
3632 let bytes_len = max_ordinal as usize * envelope_size;
3633 #[allow(unused_variables)]
3634 let offset = encoder.out_of_line_offset(bytes_len);
3635 let mut _prev_end_offset: usize = 0;
3636 if 1 > max_ordinal {
3637 return Ok(());
3638 }
3639
3640 let cur_offset: usize = (1 - 1) * envelope_size;
3643
3644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3646
3647 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3652 self.node.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3653 encoder, offset + cur_offset, depth
3654 )?;
3655
3656 _prev_end_offset = cur_offset + envelope_size;
3657 if 2 > max_ordinal {
3658 return Ok(());
3659 }
3660
3661 let cur_offset: usize = (2 - 1) * envelope_size;
3664
3665 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3667
3668 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3673 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3674 encoder, offset + cur_offset, depth
3675 )?;
3676
3677 _prev_end_offset = cur_offset + envelope_size;
3678 if 3 > max_ordinal {
3679 return Ok(());
3680 }
3681
3682 let cur_offset: usize = (3 - 1) * envelope_size;
3685
3686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3688
3689 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3694 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3695 encoder, offset + cur_offset, depth
3696 )?;
3697
3698 _prev_end_offset = cur_offset + envelope_size;
3699 if 4 > max_ordinal {
3700 return Ok(());
3701 }
3702
3703 let cur_offset: usize = (4 - 1) * envelope_size;
3706
3707 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3709
3710 fidl::encoding::encode_in_envelope_optional::<
3715 fidl_fuchsia_data::Dictionary,
3716 fidl::encoding::DefaultFuchsiaResourceDialect,
3717 >(
3718 self.program.as_ref().map(
3719 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
3720 ),
3721 encoder,
3722 offset + cur_offset,
3723 depth,
3724 )?;
3725
3726 _prev_end_offset = cur_offset + envelope_size;
3727 if 5 > max_ordinal {
3728 return Ok(());
3729 }
3730
3731 let cur_offset: usize = (5 - 1) * envelope_size;
3734
3735 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3737
3738 fidl::encoding::encode_in_envelope_optional::<
3743 fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>,
3744 fidl::encoding::DefaultFuchsiaResourceDialect,
3745 >(
3746 self.incoming.as_mut().map(
3747 <fidl::encoding::Vector<
3748 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3749 32,
3750 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3751 ),
3752 encoder,
3753 offset + cur_offset,
3754 depth,
3755 )?;
3756
3757 _prev_end_offset = cur_offset + envelope_size;
3758 if 6 > max_ordinal {
3759 return Ok(());
3760 }
3761
3762 let cur_offset: usize = (6 - 1) * envelope_size;
3765
3766 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3768
3769 fidl::encoding::encode_in_envelope_optional::<
3774 fidl::encoding::Endpoint<
3775 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3776 >,
3777 fidl::encoding::DefaultFuchsiaResourceDialect,
3778 >(
3779 self.outgoing_dir.as_mut().map(
3780 <fidl::encoding::Endpoint<
3781 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3782 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3783 ),
3784 encoder,
3785 offset + cur_offset,
3786 depth,
3787 )?;
3788
3789 _prev_end_offset = cur_offset + envelope_size;
3790 if 7 > max_ordinal {
3791 return Ok(());
3792 }
3793
3794 let cur_offset: usize = (7 - 1) * envelope_size;
3797
3798 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3800
3801 fidl::encoding::encode_in_envelope_optional::<
3806 fidl::encoding::HandleType<
3807 fidl::Vmo,
3808 { fidl::ObjectType::VMO.into_raw() },
3809 2147483648,
3810 >,
3811 fidl::encoding::DefaultFuchsiaResourceDialect,
3812 >(
3813 self.config.as_mut().map(
3814 <fidl::encoding::HandleType<
3815 fidl::Vmo,
3816 { fidl::ObjectType::VMO.into_raw() },
3817 2147483648,
3818 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3819 ),
3820 encoder,
3821 offset + cur_offset,
3822 depth,
3823 )?;
3824
3825 _prev_end_offset = cur_offset + envelope_size;
3826 if 8 > max_ordinal {
3827 return Ok(());
3828 }
3829
3830 let cur_offset: usize = (8 - 1) * envelope_size;
3833
3834 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3836
3837 fidl::encoding::encode_in_envelope_optional::<
3842 fidl::encoding::UnboundedString,
3843 fidl::encoding::DefaultFuchsiaResourceDialect,
3844 >(
3845 self.node_name.as_ref().map(
3846 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3847 ),
3848 encoder,
3849 offset + cur_offset,
3850 depth,
3851 )?;
3852
3853 _prev_end_offset = cur_offset + envelope_size;
3854 if 9 > max_ordinal {
3855 return Ok(());
3856 }
3857
3858 let cur_offset: usize = (9 - 1) * envelope_size;
3861
3862 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3864
3865 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3870 self.node_properties.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::ValueTypeMarker>::borrow),
3871 encoder, offset + cur_offset, depth
3872 )?;
3873
3874 _prev_end_offset = cur_offset + envelope_size;
3875 if 10 > max_ordinal {
3876 return Ok(());
3877 }
3878
3879 let cur_offset: usize = (10 - 1) * envelope_size;
3882
3883 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3885
3886 fidl::encoding::encode_in_envelope_optional::<
3891 fidl::encoding::Vector<Offer, 128>,
3892 fidl::encoding::DefaultFuchsiaResourceDialect,
3893 >(
3894 self.node_offers.as_ref().map(
3895 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
3896 ),
3897 encoder,
3898 offset + cur_offset,
3899 depth,
3900 )?;
3901
3902 _prev_end_offset = cur_offset + envelope_size;
3903 if 11 > max_ordinal {
3904 return Ok(());
3905 }
3906
3907 let cur_offset: usize = (11 - 1) * envelope_size;
3910
3911 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3913
3914 fidl::encoding::encode_in_envelope_optional::<
3919 fidl::encoding::HandleType<
3920 fidl::Event,
3921 { fidl::ObjectType::EVENT.into_raw() },
3922 2147483648,
3923 >,
3924 fidl::encoding::DefaultFuchsiaResourceDialect,
3925 >(
3926 self.node_token.as_mut().map(
3927 <fidl::encoding::HandleType<
3928 fidl::Event,
3929 { fidl::ObjectType::EVENT.into_raw() },
3930 2147483648,
3931 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3932 ),
3933 encoder,
3934 offset + cur_offset,
3935 depth,
3936 )?;
3937
3938 _prev_end_offset = cur_offset + envelope_size;
3939 if 12 > max_ordinal {
3940 return Ok(());
3941 }
3942
3943 let cur_offset: usize = (12 - 1) * envelope_size;
3946
3947 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3949
3950 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry2>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3955 self.node_properties_2.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::ValueTypeMarker>::borrow),
3956 encoder, offset + cur_offset, depth
3957 )?;
3958
3959 _prev_end_offset = cur_offset + envelope_size;
3960 if 13 > max_ordinal {
3961 return Ok(());
3962 }
3963
3964 let cur_offset: usize = (13 - 1) * envelope_size;
3967
3968 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3970
3971 fidl::encoding::encode_in_envelope_optional::<
3976 fidl::encoding::HandleType<
3977 fidl::Vmar,
3978 { fidl::ObjectType::VMAR.into_raw() },
3979 2147483648,
3980 >,
3981 fidl::encoding::DefaultFuchsiaResourceDialect,
3982 >(
3983 self.vmar.as_mut().map(
3984 <fidl::encoding::HandleType<
3985 fidl::Vmar,
3986 { fidl::ObjectType::VMAR.into_raw() },
3987 2147483648,
3988 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3989 ),
3990 encoder,
3991 offset + cur_offset,
3992 depth,
3993 )?;
3994
3995 _prev_end_offset = cur_offset + envelope_size;
3996 if 14 > max_ordinal {
3997 return Ok(());
3998 }
3999
4000 let cur_offset: usize = (14 - 1) * envelope_size;
4003
4004 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4006
4007 fidl::encoding::encode_in_envelope_optional::<
4012 PowerElementArgs,
4013 fidl::encoding::DefaultFuchsiaResourceDialect,
4014 >(
4015 self.power_element_args
4016 .as_mut()
4017 .map(<PowerElementArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4018 encoder,
4019 offset + cur_offset,
4020 depth,
4021 )?;
4022
4023 _prev_end_offset = cur_offset + envelope_size;
4024 if 15 > max_ordinal {
4025 return Ok(());
4026 }
4027
4028 let cur_offset: usize = (15 - 1) * envelope_size;
4031
4032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4034
4035 fidl::encoding::encode_in_envelope_optional::<
4040 fidl::encoding::Endpoint<
4041 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4042 >,
4043 fidl::encoding::DefaultFuchsiaResourceDialect,
4044 >(
4045 self.log_sink.as_mut().map(
4046 <fidl::encoding::Endpoint<
4047 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4048 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4049 ),
4050 encoder,
4051 offset + cur_offset,
4052 depth,
4053 )?;
4054
4055 _prev_end_offset = cur_offset + envelope_size;
4056
4057 Ok(())
4058 }
4059 }
4060
4061 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4062 for DriverStartArgs
4063 {
4064 #[inline(always)]
4065 fn new_empty() -> Self {
4066 Self::default()
4067 }
4068
4069 unsafe fn decode(
4070 &mut self,
4071 decoder: &mut fidl::encoding::Decoder<
4072 '_,
4073 fidl::encoding::DefaultFuchsiaResourceDialect,
4074 >,
4075 offset: usize,
4076 mut depth: fidl::encoding::Depth,
4077 ) -> fidl::Result<()> {
4078 decoder.debug_check_bounds::<Self>(offset);
4079 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4080 None => return Err(fidl::Error::NotNullable),
4081 Some(len) => len,
4082 };
4083 if len == 0 {
4085 return Ok(());
4086 };
4087 depth.increment()?;
4088 let envelope_size = 8;
4089 let bytes_len = len * envelope_size;
4090 let offset = decoder.out_of_line_offset(bytes_len)?;
4091 let mut _next_ordinal_to_read = 0;
4093 let mut next_offset = offset;
4094 let end_offset = offset + bytes_len;
4095 _next_ordinal_to_read += 1;
4096 if next_offset >= end_offset {
4097 return Ok(());
4098 }
4099
4100 while _next_ordinal_to_read < 1 {
4102 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4103 _next_ordinal_to_read += 1;
4104 next_offset += envelope_size;
4105 }
4106
4107 let next_out_of_line = decoder.next_out_of_line();
4108 let handles_before = decoder.remaining_handles();
4109 if let Some((inlined, num_bytes, num_handles)) =
4110 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4111 {
4112 let member_inline_size = <fidl::encoding::Endpoint<
4113 fidl::endpoints::ClientEnd<NodeMarker>,
4114 > as fidl::encoding::TypeMarker>::inline_size(
4115 decoder.context
4116 );
4117 if inlined != (member_inline_size <= 4) {
4118 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4119 }
4120 let inner_offset;
4121 let mut inner_depth = depth.clone();
4122 if inlined {
4123 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4124 inner_offset = next_offset;
4125 } else {
4126 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4127 inner_depth.increment()?;
4128 }
4129 let val_ref = self.node.get_or_insert_with(|| {
4130 fidl::new_empty!(
4131 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
4132 fidl::encoding::DefaultFuchsiaResourceDialect
4133 )
4134 });
4135 fidl::decode!(
4136 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
4137 fidl::encoding::DefaultFuchsiaResourceDialect,
4138 val_ref,
4139 decoder,
4140 inner_offset,
4141 inner_depth
4142 )?;
4143 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4144 {
4145 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4146 }
4147 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4148 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4149 }
4150 }
4151
4152 next_offset += envelope_size;
4153 _next_ordinal_to_read += 1;
4154 if next_offset >= end_offset {
4155 return Ok(());
4156 }
4157
4158 while _next_ordinal_to_read < 2 {
4160 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4161 _next_ordinal_to_read += 1;
4162 next_offset += envelope_size;
4163 }
4164
4165 let next_out_of_line = decoder.next_out_of_line();
4166 let handles_before = decoder.remaining_handles();
4167 if let Some((inlined, num_bytes, num_handles)) =
4168 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4169 {
4170 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4171 if inlined != (member_inline_size <= 4) {
4172 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4173 }
4174 let inner_offset;
4175 let mut inner_depth = depth.clone();
4176 if inlined {
4177 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4178 inner_offset = next_offset;
4179 } else {
4180 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4181 inner_depth.increment()?;
4182 }
4183 let val_ref =
4184 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4185 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4186 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4187 {
4188 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4189 }
4190 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4191 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4192 }
4193 }
4194
4195 next_offset += envelope_size;
4196 _next_ordinal_to_read += 1;
4197 if next_offset >= end_offset {
4198 return Ok(());
4199 }
4200
4201 while _next_ordinal_to_read < 3 {
4203 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4204 _next_ordinal_to_read += 1;
4205 next_offset += envelope_size;
4206 }
4207
4208 let next_out_of_line = decoder.next_out_of_line();
4209 let handles_before = decoder.remaining_handles();
4210 if let Some((inlined, num_bytes, num_handles)) =
4211 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4212 {
4213 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4214 if inlined != (member_inline_size <= 4) {
4215 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4216 }
4217 let inner_offset;
4218 let mut inner_depth = depth.clone();
4219 if inlined {
4220 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4221 inner_offset = next_offset;
4222 } else {
4223 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4224 inner_depth.increment()?;
4225 }
4226 let val_ref = self.url.get_or_insert_with(|| {
4227 fidl::new_empty!(
4228 fidl::encoding::BoundedString<4096>,
4229 fidl::encoding::DefaultFuchsiaResourceDialect
4230 )
4231 });
4232 fidl::decode!(
4233 fidl::encoding::BoundedString<4096>,
4234 fidl::encoding::DefaultFuchsiaResourceDialect,
4235 val_ref,
4236 decoder,
4237 inner_offset,
4238 inner_depth
4239 )?;
4240 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4241 {
4242 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4243 }
4244 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4245 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4246 }
4247 }
4248
4249 next_offset += envelope_size;
4250 _next_ordinal_to_read += 1;
4251 if next_offset >= end_offset {
4252 return Ok(());
4253 }
4254
4255 while _next_ordinal_to_read < 4 {
4257 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4258 _next_ordinal_to_read += 1;
4259 next_offset += envelope_size;
4260 }
4261
4262 let next_out_of_line = decoder.next_out_of_line();
4263 let handles_before = decoder.remaining_handles();
4264 if let Some((inlined, num_bytes, num_handles)) =
4265 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4266 {
4267 let member_inline_size =
4268 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
4269 decoder.context,
4270 );
4271 if inlined != (member_inline_size <= 4) {
4272 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4273 }
4274 let inner_offset;
4275 let mut inner_depth = depth.clone();
4276 if inlined {
4277 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4278 inner_offset = next_offset;
4279 } else {
4280 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4281 inner_depth.increment()?;
4282 }
4283 let val_ref = self.program.get_or_insert_with(|| {
4284 fidl::new_empty!(
4285 fidl_fuchsia_data::Dictionary,
4286 fidl::encoding::DefaultFuchsiaResourceDialect
4287 )
4288 });
4289 fidl::decode!(
4290 fidl_fuchsia_data::Dictionary,
4291 fidl::encoding::DefaultFuchsiaResourceDialect,
4292 val_ref,
4293 decoder,
4294 inner_offset,
4295 inner_depth
4296 )?;
4297 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4298 {
4299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4300 }
4301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4303 }
4304 }
4305
4306 next_offset += envelope_size;
4307 _next_ordinal_to_read += 1;
4308 if next_offset >= end_offset {
4309 return Ok(());
4310 }
4311
4312 while _next_ordinal_to_read < 5 {
4314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4315 _next_ordinal_to_read += 1;
4316 next_offset += envelope_size;
4317 }
4318
4319 let next_out_of_line = decoder.next_out_of_line();
4320 let handles_before = decoder.remaining_handles();
4321 if let Some((inlined, num_bytes, num_handles)) =
4322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4323 {
4324 let member_inline_size = <fidl::encoding::Vector<
4325 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
4326 32,
4327 > as fidl::encoding::TypeMarker>::inline_size(
4328 decoder.context
4329 );
4330 if inlined != (member_inline_size <= 4) {
4331 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4332 }
4333 let inner_offset;
4334 let mut inner_depth = depth.clone();
4335 if inlined {
4336 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4337 inner_offset = next_offset;
4338 } else {
4339 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4340 inner_depth.increment()?;
4341 }
4342 let val_ref =
4343 self.incoming.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
4344 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4345 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4346 {
4347 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4348 }
4349 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4350 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4351 }
4352 }
4353
4354 next_offset += envelope_size;
4355 _next_ordinal_to_read += 1;
4356 if next_offset >= end_offset {
4357 return Ok(());
4358 }
4359
4360 while _next_ordinal_to_read < 6 {
4362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4363 _next_ordinal_to_read += 1;
4364 next_offset += envelope_size;
4365 }
4366
4367 let next_out_of_line = decoder.next_out_of_line();
4368 let handles_before = decoder.remaining_handles();
4369 if let Some((inlined, num_bytes, num_handles)) =
4370 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4371 {
4372 let member_inline_size = <fidl::encoding::Endpoint<
4373 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4374 > as fidl::encoding::TypeMarker>::inline_size(
4375 decoder.context
4376 );
4377 if inlined != (member_inline_size <= 4) {
4378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4379 }
4380 let inner_offset;
4381 let mut inner_depth = depth.clone();
4382 if inlined {
4383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4384 inner_offset = next_offset;
4385 } else {
4386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4387 inner_depth.increment()?;
4388 }
4389 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
4390 fidl::new_empty!(
4391 fidl::encoding::Endpoint<
4392 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4393 >,
4394 fidl::encoding::DefaultFuchsiaResourceDialect
4395 )
4396 });
4397 fidl::decode!(
4398 fidl::encoding::Endpoint<
4399 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4400 >,
4401 fidl::encoding::DefaultFuchsiaResourceDialect,
4402 val_ref,
4403 decoder,
4404 inner_offset,
4405 inner_depth
4406 )?;
4407 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4408 {
4409 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4410 }
4411 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4412 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4413 }
4414 }
4415
4416 next_offset += envelope_size;
4417 _next_ordinal_to_read += 1;
4418 if next_offset >= end_offset {
4419 return Ok(());
4420 }
4421
4422 while _next_ordinal_to_read < 7 {
4424 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4425 _next_ordinal_to_read += 1;
4426 next_offset += envelope_size;
4427 }
4428
4429 let next_out_of_line = decoder.next_out_of_line();
4430 let handles_before = decoder.remaining_handles();
4431 if let Some((inlined, num_bytes, num_handles)) =
4432 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4433 {
4434 let member_inline_size = <fidl::encoding::HandleType<
4435 fidl::Vmo,
4436 { fidl::ObjectType::VMO.into_raw() },
4437 2147483648,
4438 > as fidl::encoding::TypeMarker>::inline_size(
4439 decoder.context
4440 );
4441 if inlined != (member_inline_size <= 4) {
4442 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4443 }
4444 let inner_offset;
4445 let mut inner_depth = depth.clone();
4446 if inlined {
4447 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4448 inner_offset = next_offset;
4449 } else {
4450 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4451 inner_depth.increment()?;
4452 }
4453 let val_ref =
4454 self.config.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4455 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4456 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4457 {
4458 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4459 }
4460 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4461 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4462 }
4463 }
4464
4465 next_offset += envelope_size;
4466 _next_ordinal_to_read += 1;
4467 if next_offset >= end_offset {
4468 return Ok(());
4469 }
4470
4471 while _next_ordinal_to_read < 8 {
4473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4474 _next_ordinal_to_read += 1;
4475 next_offset += envelope_size;
4476 }
4477
4478 let next_out_of_line = decoder.next_out_of_line();
4479 let handles_before = decoder.remaining_handles();
4480 if let Some((inlined, num_bytes, num_handles)) =
4481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4482 {
4483 let member_inline_size =
4484 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4485 decoder.context,
4486 );
4487 if inlined != (member_inline_size <= 4) {
4488 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4489 }
4490 let inner_offset;
4491 let mut inner_depth = depth.clone();
4492 if inlined {
4493 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4494 inner_offset = next_offset;
4495 } else {
4496 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4497 inner_depth.increment()?;
4498 }
4499 let val_ref = self.node_name.get_or_insert_with(|| {
4500 fidl::new_empty!(
4501 fidl::encoding::UnboundedString,
4502 fidl::encoding::DefaultFuchsiaResourceDialect
4503 )
4504 });
4505 fidl::decode!(
4506 fidl::encoding::UnboundedString,
4507 fidl::encoding::DefaultFuchsiaResourceDialect,
4508 val_ref,
4509 decoder,
4510 inner_offset,
4511 inner_depth
4512 )?;
4513 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4514 {
4515 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4516 }
4517 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4518 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4519 }
4520 }
4521
4522 next_offset += envelope_size;
4523 _next_ordinal_to_read += 1;
4524 if next_offset >= end_offset {
4525 return Ok(());
4526 }
4527
4528 while _next_ordinal_to_read < 9 {
4530 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4531 _next_ordinal_to_read += 1;
4532 next_offset += envelope_size;
4533 }
4534
4535 let next_out_of_line = decoder.next_out_of_line();
4536 let handles_before = decoder.remaining_handles();
4537 if let Some((inlined, num_bytes, num_handles)) =
4538 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4539 {
4540 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4541 if inlined != (member_inline_size <= 4) {
4542 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4543 }
4544 let inner_offset;
4545 let mut inner_depth = depth.clone();
4546 if inlined {
4547 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4548 inner_offset = next_offset;
4549 } else {
4550 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4551 inner_depth.increment()?;
4552 }
4553 let val_ref = self.node_properties.get_or_insert_with(|| {
4554 fidl::new_empty!(
4555 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4556 fidl::encoding::DefaultFuchsiaResourceDialect
4557 )
4558 });
4559 fidl::decode!(
4560 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4561 fidl::encoding::DefaultFuchsiaResourceDialect,
4562 val_ref,
4563 decoder,
4564 inner_offset,
4565 inner_depth
4566 )?;
4567 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4568 {
4569 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4570 }
4571 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4572 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4573 }
4574 }
4575
4576 next_offset += envelope_size;
4577 _next_ordinal_to_read += 1;
4578 if next_offset >= end_offset {
4579 return Ok(());
4580 }
4581
4582 while _next_ordinal_to_read < 10 {
4584 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4585 _next_ordinal_to_read += 1;
4586 next_offset += envelope_size;
4587 }
4588
4589 let next_out_of_line = decoder.next_out_of_line();
4590 let handles_before = decoder.remaining_handles();
4591 if let Some((inlined, num_bytes, num_handles)) =
4592 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4593 {
4594 let member_inline_size =
4595 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
4596 decoder.context,
4597 );
4598 if inlined != (member_inline_size <= 4) {
4599 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4600 }
4601 let inner_offset;
4602 let mut inner_depth = depth.clone();
4603 if inlined {
4604 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4605 inner_offset = next_offset;
4606 } else {
4607 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4608 inner_depth.increment()?;
4609 }
4610 let val_ref =
4611 self.node_offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
4612 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4614 {
4615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4616 }
4617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4619 }
4620 }
4621
4622 next_offset += envelope_size;
4623 _next_ordinal_to_read += 1;
4624 if next_offset >= end_offset {
4625 return Ok(());
4626 }
4627
4628 while _next_ordinal_to_read < 11 {
4630 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4631 _next_ordinal_to_read += 1;
4632 next_offset += envelope_size;
4633 }
4634
4635 let next_out_of_line = decoder.next_out_of_line();
4636 let handles_before = decoder.remaining_handles();
4637 if let Some((inlined, num_bytes, num_handles)) =
4638 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4639 {
4640 let member_inline_size = <fidl::encoding::HandleType<
4641 fidl::Event,
4642 { fidl::ObjectType::EVENT.into_raw() },
4643 2147483648,
4644 > as fidl::encoding::TypeMarker>::inline_size(
4645 decoder.context
4646 );
4647 if inlined != (member_inline_size <= 4) {
4648 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4649 }
4650 let inner_offset;
4651 let mut inner_depth = depth.clone();
4652 if inlined {
4653 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4654 inner_offset = next_offset;
4655 } else {
4656 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4657 inner_depth.increment()?;
4658 }
4659 let val_ref =
4660 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4661 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4662 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4663 {
4664 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4665 }
4666 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4667 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4668 }
4669 }
4670
4671 next_offset += envelope_size;
4672 _next_ordinal_to_read += 1;
4673 if next_offset >= end_offset {
4674 return Ok(());
4675 }
4676
4677 while _next_ordinal_to_read < 12 {
4679 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4680 _next_ordinal_to_read += 1;
4681 next_offset += envelope_size;
4682 }
4683
4684 let next_out_of_line = decoder.next_out_of_line();
4685 let handles_before = decoder.remaining_handles();
4686 if let Some((inlined, num_bytes, num_handles)) =
4687 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4688 {
4689 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4690 if inlined != (member_inline_size <= 4) {
4691 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4692 }
4693 let inner_offset;
4694 let mut inner_depth = depth.clone();
4695 if inlined {
4696 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4697 inner_offset = next_offset;
4698 } else {
4699 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4700 inner_depth.increment()?;
4701 }
4702 let val_ref = self.node_properties_2.get_or_insert_with(|| {
4703 fidl::new_empty!(
4704 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4705 fidl::encoding::DefaultFuchsiaResourceDialect
4706 )
4707 });
4708 fidl::decode!(
4709 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4710 fidl::encoding::DefaultFuchsiaResourceDialect,
4711 val_ref,
4712 decoder,
4713 inner_offset,
4714 inner_depth
4715 )?;
4716 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4717 {
4718 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4719 }
4720 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4721 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4722 }
4723 }
4724
4725 next_offset += envelope_size;
4726 _next_ordinal_to_read += 1;
4727 if next_offset >= end_offset {
4728 return Ok(());
4729 }
4730
4731 while _next_ordinal_to_read < 13 {
4733 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4734 _next_ordinal_to_read += 1;
4735 next_offset += envelope_size;
4736 }
4737
4738 let next_out_of_line = decoder.next_out_of_line();
4739 let handles_before = decoder.remaining_handles();
4740 if let Some((inlined, num_bytes, num_handles)) =
4741 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4742 {
4743 let member_inline_size = <fidl::encoding::HandleType<
4744 fidl::Vmar,
4745 { fidl::ObjectType::VMAR.into_raw() },
4746 2147483648,
4747 > as fidl::encoding::TypeMarker>::inline_size(
4748 decoder.context
4749 );
4750 if inlined != (member_inline_size <= 4) {
4751 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4752 }
4753 let inner_offset;
4754 let mut inner_depth = depth.clone();
4755 if inlined {
4756 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4757 inner_offset = next_offset;
4758 } else {
4759 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4760 inner_depth.increment()?;
4761 }
4762 let val_ref =
4763 self.vmar.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4764 fidl::decode!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4765 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4766 {
4767 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4768 }
4769 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4770 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4771 }
4772 }
4773
4774 next_offset += envelope_size;
4775 _next_ordinal_to_read += 1;
4776 if next_offset >= end_offset {
4777 return Ok(());
4778 }
4779
4780 while _next_ordinal_to_read < 14 {
4782 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4783 _next_ordinal_to_read += 1;
4784 next_offset += envelope_size;
4785 }
4786
4787 let next_out_of_line = decoder.next_out_of_line();
4788 let handles_before = decoder.remaining_handles();
4789 if let Some((inlined, num_bytes, num_handles)) =
4790 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4791 {
4792 let member_inline_size =
4793 <PowerElementArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4794 if inlined != (member_inline_size <= 4) {
4795 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4796 }
4797 let inner_offset;
4798 let mut inner_depth = depth.clone();
4799 if inlined {
4800 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4801 inner_offset = next_offset;
4802 } else {
4803 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4804 inner_depth.increment()?;
4805 }
4806 let val_ref = self.power_element_args.get_or_insert_with(|| {
4807 fidl::new_empty!(
4808 PowerElementArgs,
4809 fidl::encoding::DefaultFuchsiaResourceDialect
4810 )
4811 });
4812 fidl::decode!(
4813 PowerElementArgs,
4814 fidl::encoding::DefaultFuchsiaResourceDialect,
4815 val_ref,
4816 decoder,
4817 inner_offset,
4818 inner_depth
4819 )?;
4820 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4821 {
4822 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4823 }
4824 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4825 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4826 }
4827 }
4828
4829 next_offset += envelope_size;
4830 _next_ordinal_to_read += 1;
4831 if next_offset >= end_offset {
4832 return Ok(());
4833 }
4834
4835 while _next_ordinal_to_read < 15 {
4837 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4838 _next_ordinal_to_read += 1;
4839 next_offset += envelope_size;
4840 }
4841
4842 let next_out_of_line = decoder.next_out_of_line();
4843 let handles_before = decoder.remaining_handles();
4844 if let Some((inlined, num_bytes, num_handles)) =
4845 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4846 {
4847 let member_inline_size = <fidl::encoding::Endpoint<
4848 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4849 > as fidl::encoding::TypeMarker>::inline_size(
4850 decoder.context
4851 );
4852 if inlined != (member_inline_size <= 4) {
4853 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4854 }
4855 let inner_offset;
4856 let mut inner_depth = depth.clone();
4857 if inlined {
4858 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4859 inner_offset = next_offset;
4860 } else {
4861 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4862 inner_depth.increment()?;
4863 }
4864 let val_ref = self.log_sink.get_or_insert_with(|| {
4865 fidl::new_empty!(
4866 fidl::encoding::Endpoint<
4867 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4868 >,
4869 fidl::encoding::DefaultFuchsiaResourceDialect
4870 )
4871 });
4872 fidl::decode!(
4873 fidl::encoding::Endpoint<
4874 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4875 >,
4876 fidl::encoding::DefaultFuchsiaResourceDialect,
4877 val_ref,
4878 decoder,
4879 inner_offset,
4880 inner_depth
4881 )?;
4882 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4883 {
4884 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4885 }
4886 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4887 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4888 }
4889 }
4890
4891 next_offset += envelope_size;
4892
4893 while next_offset < end_offset {
4895 _next_ordinal_to_read += 1;
4896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4897 next_offset += envelope_size;
4898 }
4899
4900 Ok(())
4901 }
4902 }
4903
4904 impl NodeAddArgs {
4905 #[inline(always)]
4906 fn max_ordinal_present(&self) -> u64 {
4907 if let Some(_) = self.driver_host {
4908 return 10;
4909 }
4910 if let Some(_) = self.offers_dictionary {
4911 return 9;
4912 }
4913 if let Some(_) = self.properties2 {
4914 return 8;
4915 }
4916 if let Some(_) = self.bus_info {
4917 return 7;
4918 }
4919 if let Some(_) = self.offers2 {
4920 return 6;
4921 }
4922 if let Some(_) = self.devfs_args {
4923 return 5;
4924 }
4925 if let Some(_) = self.properties {
4926 return 4;
4927 }
4928 if let Some(_) = self.symbols {
4929 return 3;
4930 }
4931 if let Some(_) = self.name {
4932 return 1;
4933 }
4934 0
4935 }
4936 }
4937
4938 impl fidl::encoding::ResourceTypeMarker for NodeAddArgs {
4939 type Borrowed<'a> = &'a mut Self;
4940 fn take_or_borrow<'a>(
4941 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4942 ) -> Self::Borrowed<'a> {
4943 value
4944 }
4945 }
4946
4947 unsafe impl fidl::encoding::TypeMarker for NodeAddArgs {
4948 type Owned = Self;
4949
4950 #[inline(always)]
4951 fn inline_align(_context: fidl::encoding::Context) -> usize {
4952 8
4953 }
4954
4955 #[inline(always)]
4956 fn inline_size(_context: fidl::encoding::Context) -> usize {
4957 16
4958 }
4959 }
4960
4961 unsafe impl fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
4962 for &mut NodeAddArgs
4963 {
4964 unsafe fn encode(
4965 self,
4966 encoder: &mut fidl::encoding::Encoder<
4967 '_,
4968 fidl::encoding::DefaultFuchsiaResourceDialect,
4969 >,
4970 offset: usize,
4971 mut depth: fidl::encoding::Depth,
4972 ) -> fidl::Result<()> {
4973 encoder.debug_check_bounds::<NodeAddArgs>(offset);
4974 let max_ordinal: u64 = self.max_ordinal_present();
4976 encoder.write_num(max_ordinal, offset);
4977 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4978 if max_ordinal == 0 {
4980 return Ok(());
4981 }
4982 depth.increment()?;
4983 let envelope_size = 8;
4984 let bytes_len = max_ordinal as usize * envelope_size;
4985 #[allow(unused_variables)]
4986 let offset = encoder.out_of_line_offset(bytes_len);
4987 let mut _prev_end_offset: usize = 0;
4988 if 1 > max_ordinal {
4989 return Ok(());
4990 }
4991
4992 let cur_offset: usize = (1 - 1) * envelope_size;
4995
4996 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4998
4999 fidl::encoding::encode_in_envelope_optional::<
5004 fidl::encoding::BoundedString<128>,
5005 fidl::encoding::DefaultFuchsiaResourceDialect,
5006 >(
5007 self.name.as_ref().map(
5008 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5009 ),
5010 encoder,
5011 offset + cur_offset,
5012 depth,
5013 )?;
5014
5015 _prev_end_offset = cur_offset + envelope_size;
5016 if 3 > max_ordinal {
5017 return Ok(());
5018 }
5019
5020 let cur_offset: usize = (3 - 1) * envelope_size;
5023
5024 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5026
5027 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5032 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5033 encoder, offset + cur_offset, depth
5034 )?;
5035
5036 _prev_end_offset = cur_offset + envelope_size;
5037 if 4 > max_ordinal {
5038 return Ok(());
5039 }
5040
5041 let cur_offset: usize = (4 - 1) * envelope_size;
5044
5045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5047
5048 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5053 self.properties.as_ref().map(<fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5054 encoder, offset + cur_offset, depth
5055 )?;
5056
5057 _prev_end_offset = cur_offset + envelope_size;
5058 if 5 > max_ordinal {
5059 return Ok(());
5060 }
5061
5062 let cur_offset: usize = (5 - 1) * envelope_size;
5065
5066 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5068
5069 fidl::encoding::encode_in_envelope_optional::<
5074 DevfsAddArgs,
5075 fidl::encoding::DefaultFuchsiaResourceDialect,
5076 >(
5077 self.devfs_args
5078 .as_mut()
5079 .map(<DevfsAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5080 encoder,
5081 offset + cur_offset,
5082 depth,
5083 )?;
5084
5085 _prev_end_offset = cur_offset + envelope_size;
5086 if 6 > max_ordinal {
5087 return Ok(());
5088 }
5089
5090 let cur_offset: usize = (6 - 1) * envelope_size;
5093
5094 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5096
5097 fidl::encoding::encode_in_envelope_optional::<
5102 fidl::encoding::Vector<Offer, 128>,
5103 fidl::encoding::DefaultFuchsiaResourceDialect,
5104 >(
5105 self.offers2.as_ref().map(
5106 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
5107 ),
5108 encoder,
5109 offset + cur_offset,
5110 depth,
5111 )?;
5112
5113 _prev_end_offset = cur_offset + envelope_size;
5114 if 7 > max_ordinal {
5115 return Ok(());
5116 }
5117
5118 let cur_offset: usize = (7 - 1) * envelope_size;
5121
5122 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5124
5125 fidl::encoding::encode_in_envelope_optional::<
5130 BusInfo,
5131 fidl::encoding::DefaultFuchsiaResourceDialect,
5132 >(
5133 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
5134 encoder,
5135 offset + cur_offset,
5136 depth,
5137 )?;
5138
5139 _prev_end_offset = cur_offset + envelope_size;
5140 if 8 > max_ordinal {
5141 return Ok(());
5142 }
5143
5144 let cur_offset: usize = (8 - 1) * envelope_size;
5147
5148 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5150
5151 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5156 self.properties2.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5157 encoder, offset + cur_offset, depth
5158 )?;
5159
5160 _prev_end_offset = cur_offset + envelope_size;
5161 if 9 > max_ordinal {
5162 return Ok(());
5163 }
5164
5165 let cur_offset: usize = (9 - 1) * envelope_size;
5168
5169 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5171
5172 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
5177 self.offers_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5178 encoder, offset + cur_offset, depth
5179 )?;
5180
5181 _prev_end_offset = cur_offset + envelope_size;
5182 if 10 > max_ordinal {
5183 return Ok(());
5184 }
5185
5186 let cur_offset: usize = (10 - 1) * envelope_size;
5189
5190 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5192
5193 fidl::encoding::encode_in_envelope_optional::<
5198 fidl::encoding::BoundedString<128>,
5199 fidl::encoding::DefaultFuchsiaResourceDialect,
5200 >(
5201 self.driver_host.as_ref().map(
5202 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5203 ),
5204 encoder,
5205 offset + cur_offset,
5206 depth,
5207 )?;
5208
5209 _prev_end_offset = cur_offset + envelope_size;
5210
5211 Ok(())
5212 }
5213 }
5214
5215 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {
5216 #[inline(always)]
5217 fn new_empty() -> Self {
5218 Self::default()
5219 }
5220
5221 unsafe fn decode(
5222 &mut self,
5223 decoder: &mut fidl::encoding::Decoder<
5224 '_,
5225 fidl::encoding::DefaultFuchsiaResourceDialect,
5226 >,
5227 offset: usize,
5228 mut depth: fidl::encoding::Depth,
5229 ) -> fidl::Result<()> {
5230 decoder.debug_check_bounds::<Self>(offset);
5231 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5232 None => return Err(fidl::Error::NotNullable),
5233 Some(len) => len,
5234 };
5235 if len == 0 {
5237 return Ok(());
5238 };
5239 depth.increment()?;
5240 let envelope_size = 8;
5241 let bytes_len = len * envelope_size;
5242 let offset = decoder.out_of_line_offset(bytes_len)?;
5243 let mut _next_ordinal_to_read = 0;
5245 let mut next_offset = offset;
5246 let end_offset = offset + bytes_len;
5247 _next_ordinal_to_read += 1;
5248 if next_offset >= end_offset {
5249 return Ok(());
5250 }
5251
5252 while _next_ordinal_to_read < 1 {
5254 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5255 _next_ordinal_to_read += 1;
5256 next_offset += envelope_size;
5257 }
5258
5259 let next_out_of_line = decoder.next_out_of_line();
5260 let handles_before = decoder.remaining_handles();
5261 if let Some((inlined, num_bytes, num_handles)) =
5262 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5263 {
5264 let member_inline_size =
5265 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5266 decoder.context,
5267 );
5268 if inlined != (member_inline_size <= 4) {
5269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5270 }
5271 let inner_offset;
5272 let mut inner_depth = depth.clone();
5273 if inlined {
5274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5275 inner_offset = next_offset;
5276 } else {
5277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5278 inner_depth.increment()?;
5279 }
5280 let val_ref = self.name.get_or_insert_with(|| {
5281 fidl::new_empty!(
5282 fidl::encoding::BoundedString<128>,
5283 fidl::encoding::DefaultFuchsiaResourceDialect
5284 )
5285 });
5286 fidl::decode!(
5287 fidl::encoding::BoundedString<128>,
5288 fidl::encoding::DefaultFuchsiaResourceDialect,
5289 val_ref,
5290 decoder,
5291 inner_offset,
5292 inner_depth
5293 )?;
5294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5295 {
5296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5297 }
5298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5300 }
5301 }
5302
5303 next_offset += envelope_size;
5304 _next_ordinal_to_read += 1;
5305 if next_offset >= end_offset {
5306 return Ok(());
5307 }
5308
5309 while _next_ordinal_to_read < 3 {
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::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5322 if inlined != (member_inline_size <= 4) {
5323 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5324 }
5325 let inner_offset;
5326 let mut inner_depth = depth.clone();
5327 if inlined {
5328 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5329 inner_offset = next_offset;
5330 } else {
5331 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5332 inner_depth.increment()?;
5333 }
5334 let val_ref =
5335 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5336 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5337 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5338 {
5339 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5340 }
5341 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5342 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5343 }
5344 }
5345
5346 next_offset += envelope_size;
5347 _next_ordinal_to_read += 1;
5348 if next_offset >= end_offset {
5349 return Ok(());
5350 }
5351
5352 while _next_ordinal_to_read < 4 {
5354 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5355 _next_ordinal_to_read += 1;
5356 next_offset += envelope_size;
5357 }
5358
5359 let next_out_of_line = decoder.next_out_of_line();
5360 let handles_before = decoder.remaining_handles();
5361 if let Some((inlined, num_bytes, num_handles)) =
5362 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5363 {
5364 let member_inline_size = <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5365 if inlined != (member_inline_size <= 4) {
5366 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5367 }
5368 let inner_offset;
5369 let mut inner_depth = depth.clone();
5370 if inlined {
5371 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5372 inner_offset = next_offset;
5373 } else {
5374 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5375 inner_depth.increment()?;
5376 }
5377 let val_ref =
5378 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5379 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5380 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5381 {
5382 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5383 }
5384 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5385 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5386 }
5387 }
5388
5389 next_offset += envelope_size;
5390 _next_ordinal_to_read += 1;
5391 if next_offset >= end_offset {
5392 return Ok(());
5393 }
5394
5395 while _next_ordinal_to_read < 5 {
5397 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5398 _next_ordinal_to_read += 1;
5399 next_offset += envelope_size;
5400 }
5401
5402 let next_out_of_line = decoder.next_out_of_line();
5403 let handles_before = decoder.remaining_handles();
5404 if let Some((inlined, num_bytes, num_handles)) =
5405 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5406 {
5407 let member_inline_size =
5408 <DevfsAddArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5409 if inlined != (member_inline_size <= 4) {
5410 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5411 }
5412 let inner_offset;
5413 let mut inner_depth = depth.clone();
5414 if inlined {
5415 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5416 inner_offset = next_offset;
5417 } else {
5418 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5419 inner_depth.increment()?;
5420 }
5421 let val_ref = self.devfs_args.get_or_insert_with(|| {
5422 fidl::new_empty!(DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect)
5423 });
5424 fidl::decode!(
5425 DevfsAddArgs,
5426 fidl::encoding::DefaultFuchsiaResourceDialect,
5427 val_ref,
5428 decoder,
5429 inner_offset,
5430 inner_depth
5431 )?;
5432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5433 {
5434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5435 }
5436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5438 }
5439 }
5440
5441 next_offset += envelope_size;
5442 _next_ordinal_to_read += 1;
5443 if next_offset >= end_offset {
5444 return Ok(());
5445 }
5446
5447 while _next_ordinal_to_read < 6 {
5449 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5450 _next_ordinal_to_read += 1;
5451 next_offset += envelope_size;
5452 }
5453
5454 let next_out_of_line = decoder.next_out_of_line();
5455 let handles_before = decoder.remaining_handles();
5456 if let Some((inlined, num_bytes, num_handles)) =
5457 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5458 {
5459 let member_inline_size =
5460 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
5461 decoder.context,
5462 );
5463 if inlined != (member_inline_size <= 4) {
5464 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5465 }
5466 let inner_offset;
5467 let mut inner_depth = depth.clone();
5468 if inlined {
5469 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5470 inner_offset = next_offset;
5471 } else {
5472 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5473 inner_depth.increment()?;
5474 }
5475 let val_ref =
5476 self.offers2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
5477 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5478 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5479 {
5480 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5481 }
5482 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5483 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5484 }
5485 }
5486
5487 next_offset += envelope_size;
5488 _next_ordinal_to_read += 1;
5489 if next_offset >= end_offset {
5490 return Ok(());
5491 }
5492
5493 while _next_ordinal_to_read < 7 {
5495 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5496 _next_ordinal_to_read += 1;
5497 next_offset += envelope_size;
5498 }
5499
5500 let next_out_of_line = decoder.next_out_of_line();
5501 let handles_before = decoder.remaining_handles();
5502 if let Some((inlined, num_bytes, num_handles)) =
5503 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5504 {
5505 let member_inline_size =
5506 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5507 if inlined != (member_inline_size <= 4) {
5508 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5509 }
5510 let inner_offset;
5511 let mut inner_depth = depth.clone();
5512 if inlined {
5513 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5514 inner_offset = next_offset;
5515 } else {
5516 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5517 inner_depth.increment()?;
5518 }
5519 let val_ref = self.bus_info.get_or_insert_with(|| {
5520 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
5521 });
5522 fidl::decode!(
5523 BusInfo,
5524 fidl::encoding::DefaultFuchsiaResourceDialect,
5525 val_ref,
5526 decoder,
5527 inner_offset,
5528 inner_depth
5529 )?;
5530 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5531 {
5532 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5533 }
5534 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5535 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5536 }
5537 }
5538
5539 next_offset += envelope_size;
5540 _next_ordinal_to_read += 1;
5541 if next_offset >= end_offset {
5542 return Ok(());
5543 }
5544
5545 while _next_ordinal_to_read < 8 {
5547 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5548 _next_ordinal_to_read += 1;
5549 next_offset += envelope_size;
5550 }
5551
5552 let next_out_of_line = decoder.next_out_of_line();
5553 let handles_before = decoder.remaining_handles();
5554 if let Some((inlined, num_bytes, num_handles)) =
5555 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5556 {
5557 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5558 if inlined != (member_inline_size <= 4) {
5559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5560 }
5561 let inner_offset;
5562 let mut inner_depth = depth.clone();
5563 if inlined {
5564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5565 inner_offset = next_offset;
5566 } else {
5567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5568 inner_depth.increment()?;
5569 }
5570 let val_ref =
5571 self.properties2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5572 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5573 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5574 {
5575 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5576 }
5577 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5578 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5579 }
5580 }
5581
5582 next_offset += envelope_size;
5583 _next_ordinal_to_read += 1;
5584 if next_offset >= end_offset {
5585 return Ok(());
5586 }
5587
5588 while _next_ordinal_to_read < 9 {
5590 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5591 _next_ordinal_to_read += 1;
5592 next_offset += envelope_size;
5593 }
5594
5595 let next_out_of_line = decoder.next_out_of_line();
5596 let handles_before = decoder.remaining_handles();
5597 if let Some((inlined, num_bytes, num_handles)) =
5598 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5599 {
5600 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5601 if inlined != (member_inline_size <= 4) {
5602 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5603 }
5604 let inner_offset;
5605 let mut inner_depth = depth.clone();
5606 if inlined {
5607 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5608 inner_offset = next_offset;
5609 } else {
5610 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5611 inner_depth.increment()?;
5612 }
5613 let val_ref = self.offers_dictionary.get_or_insert_with(|| {
5614 fidl::new_empty!(
5615 fidl_fuchsia_component_sandbox::DictionaryRef,
5616 fidl::encoding::DefaultFuchsiaResourceDialect
5617 )
5618 });
5619 fidl::decode!(
5620 fidl_fuchsia_component_sandbox::DictionaryRef,
5621 fidl::encoding::DefaultFuchsiaResourceDialect,
5622 val_ref,
5623 decoder,
5624 inner_offset,
5625 inner_depth
5626 )?;
5627 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5628 {
5629 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5630 }
5631 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5632 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5633 }
5634 }
5635
5636 next_offset += envelope_size;
5637 _next_ordinal_to_read += 1;
5638 if next_offset >= end_offset {
5639 return Ok(());
5640 }
5641
5642 while _next_ordinal_to_read < 10 {
5644 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5645 _next_ordinal_to_read += 1;
5646 next_offset += envelope_size;
5647 }
5648
5649 let next_out_of_line = decoder.next_out_of_line();
5650 let handles_before = decoder.remaining_handles();
5651 if let Some((inlined, num_bytes, num_handles)) =
5652 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5653 {
5654 let member_inline_size =
5655 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5656 decoder.context,
5657 );
5658 if inlined != (member_inline_size <= 4) {
5659 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5660 }
5661 let inner_offset;
5662 let mut inner_depth = depth.clone();
5663 if inlined {
5664 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5665 inner_offset = next_offset;
5666 } else {
5667 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5668 inner_depth.increment()?;
5669 }
5670 let val_ref = self.driver_host.get_or_insert_with(|| {
5671 fidl::new_empty!(
5672 fidl::encoding::BoundedString<128>,
5673 fidl::encoding::DefaultFuchsiaResourceDialect
5674 )
5675 });
5676 fidl::decode!(
5677 fidl::encoding::BoundedString<128>,
5678 fidl::encoding::DefaultFuchsiaResourceDialect,
5679 val_ref,
5680 decoder,
5681 inner_offset,
5682 inner_depth
5683 )?;
5684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5685 {
5686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5687 }
5688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5690 }
5691 }
5692
5693 next_offset += envelope_size;
5694
5695 while next_offset < end_offset {
5697 _next_ordinal_to_read += 1;
5698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5699 next_offset += envelope_size;
5700 }
5701
5702 Ok(())
5703 }
5704 }
5705
5706 impl NodeControllerOnBindRequest {
5707 #[inline(always)]
5708 fn max_ordinal_present(&self) -> u64 {
5709 if let Some(_) = self.node_token {
5710 return 1;
5711 }
5712 0
5713 }
5714 }
5715
5716 impl fidl::encoding::ResourceTypeMarker for NodeControllerOnBindRequest {
5717 type Borrowed<'a> = &'a mut Self;
5718 fn take_or_borrow<'a>(
5719 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5720 ) -> Self::Borrowed<'a> {
5721 value
5722 }
5723 }
5724
5725 unsafe impl fidl::encoding::TypeMarker for NodeControllerOnBindRequest {
5726 type Owned = Self;
5727
5728 #[inline(always)]
5729 fn inline_align(_context: fidl::encoding::Context) -> usize {
5730 8
5731 }
5732
5733 #[inline(always)]
5734 fn inline_size(_context: fidl::encoding::Context) -> usize {
5735 16
5736 }
5737 }
5738
5739 unsafe impl
5740 fidl::encoding::Encode<
5741 NodeControllerOnBindRequest,
5742 fidl::encoding::DefaultFuchsiaResourceDialect,
5743 > for &mut NodeControllerOnBindRequest
5744 {
5745 unsafe fn encode(
5746 self,
5747 encoder: &mut fidl::encoding::Encoder<
5748 '_,
5749 fidl::encoding::DefaultFuchsiaResourceDialect,
5750 >,
5751 offset: usize,
5752 mut depth: fidl::encoding::Depth,
5753 ) -> fidl::Result<()> {
5754 encoder.debug_check_bounds::<NodeControllerOnBindRequest>(offset);
5755 let max_ordinal: u64 = self.max_ordinal_present();
5757 encoder.write_num(max_ordinal, offset);
5758 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5759 if max_ordinal == 0 {
5761 return Ok(());
5762 }
5763 depth.increment()?;
5764 let envelope_size = 8;
5765 let bytes_len = max_ordinal as usize * envelope_size;
5766 #[allow(unused_variables)]
5767 let offset = encoder.out_of_line_offset(bytes_len);
5768 let mut _prev_end_offset: usize = 0;
5769 if 1 > max_ordinal {
5770 return Ok(());
5771 }
5772
5773 let cur_offset: usize = (1 - 1) * envelope_size;
5776
5777 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5779
5780 fidl::encoding::encode_in_envelope_optional::<
5785 fidl::encoding::HandleType<
5786 fidl::Event,
5787 { fidl::ObjectType::EVENT.into_raw() },
5788 2147483648,
5789 >,
5790 fidl::encoding::DefaultFuchsiaResourceDialect,
5791 >(
5792 self.node_token.as_mut().map(
5793 <fidl::encoding::HandleType<
5794 fidl::Event,
5795 { fidl::ObjectType::EVENT.into_raw() },
5796 2147483648,
5797 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5798 ),
5799 encoder,
5800 offset + cur_offset,
5801 depth,
5802 )?;
5803
5804 _prev_end_offset = cur_offset + envelope_size;
5805
5806 Ok(())
5807 }
5808 }
5809
5810 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5811 for NodeControllerOnBindRequest
5812 {
5813 #[inline(always)]
5814 fn new_empty() -> Self {
5815 Self::default()
5816 }
5817
5818 unsafe fn decode(
5819 &mut self,
5820 decoder: &mut fidl::encoding::Decoder<
5821 '_,
5822 fidl::encoding::DefaultFuchsiaResourceDialect,
5823 >,
5824 offset: usize,
5825 mut depth: fidl::encoding::Depth,
5826 ) -> fidl::Result<()> {
5827 decoder.debug_check_bounds::<Self>(offset);
5828 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5829 None => return Err(fidl::Error::NotNullable),
5830 Some(len) => len,
5831 };
5832 if len == 0 {
5834 return Ok(());
5835 };
5836 depth.increment()?;
5837 let envelope_size = 8;
5838 let bytes_len = len * envelope_size;
5839 let offset = decoder.out_of_line_offset(bytes_len)?;
5840 let mut _next_ordinal_to_read = 0;
5842 let mut next_offset = offset;
5843 let end_offset = offset + bytes_len;
5844 _next_ordinal_to_read += 1;
5845 if next_offset >= end_offset {
5846 return Ok(());
5847 }
5848
5849 while _next_ordinal_to_read < 1 {
5851 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5852 _next_ordinal_to_read += 1;
5853 next_offset += envelope_size;
5854 }
5855
5856 let next_out_of_line = decoder.next_out_of_line();
5857 let handles_before = decoder.remaining_handles();
5858 if let Some((inlined, num_bytes, num_handles)) =
5859 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5860 {
5861 let member_inline_size = <fidl::encoding::HandleType<
5862 fidl::Event,
5863 { fidl::ObjectType::EVENT.into_raw() },
5864 2147483648,
5865 > as fidl::encoding::TypeMarker>::inline_size(
5866 decoder.context
5867 );
5868 if inlined != (member_inline_size <= 4) {
5869 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5870 }
5871 let inner_offset;
5872 let mut inner_depth = depth.clone();
5873 if inlined {
5874 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5875 inner_offset = next_offset;
5876 } else {
5877 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5878 inner_depth.increment()?;
5879 }
5880 let val_ref =
5881 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5882 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5883 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5884 {
5885 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5886 }
5887 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5888 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5889 }
5890 }
5891
5892 next_offset += envelope_size;
5893
5894 while next_offset < end_offset {
5896 _next_ordinal_to_read += 1;
5897 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5898 next_offset += envelope_size;
5899 }
5900
5901 Ok(())
5902 }
5903 }
5904
5905 impl PowerElementArgs {
5906 #[inline(always)]
5907 fn max_ordinal_present(&self) -> u64 {
5908 if let Some(_) = self.token {
5909 return 4;
5910 }
5911 if let Some(_) = self.lessor_client {
5912 return 3;
5913 }
5914 if let Some(_) = self.runner_server {
5915 return 2;
5916 }
5917 if let Some(_) = self.control_client {
5918 return 1;
5919 }
5920 0
5921 }
5922 }
5923
5924 impl fidl::encoding::ResourceTypeMarker for PowerElementArgs {
5925 type Borrowed<'a> = &'a mut Self;
5926 fn take_or_borrow<'a>(
5927 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5928 ) -> Self::Borrowed<'a> {
5929 value
5930 }
5931 }
5932
5933 unsafe impl fidl::encoding::TypeMarker for PowerElementArgs {
5934 type Owned = Self;
5935
5936 #[inline(always)]
5937 fn inline_align(_context: fidl::encoding::Context) -> usize {
5938 8
5939 }
5940
5941 #[inline(always)]
5942 fn inline_size(_context: fidl::encoding::Context) -> usize {
5943 16
5944 }
5945 }
5946
5947 unsafe impl
5948 fidl::encoding::Encode<PowerElementArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
5949 for &mut PowerElementArgs
5950 {
5951 unsafe fn encode(
5952 self,
5953 encoder: &mut fidl::encoding::Encoder<
5954 '_,
5955 fidl::encoding::DefaultFuchsiaResourceDialect,
5956 >,
5957 offset: usize,
5958 mut depth: fidl::encoding::Depth,
5959 ) -> fidl::Result<()> {
5960 encoder.debug_check_bounds::<PowerElementArgs>(offset);
5961 let max_ordinal: u64 = self.max_ordinal_present();
5963 encoder.write_num(max_ordinal, offset);
5964 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5965 if max_ordinal == 0 {
5967 return Ok(());
5968 }
5969 depth.increment()?;
5970 let envelope_size = 8;
5971 let bytes_len = max_ordinal as usize * envelope_size;
5972 #[allow(unused_variables)]
5973 let offset = encoder.out_of_line_offset(bytes_len);
5974 let mut _prev_end_offset: usize = 0;
5975 if 1 > max_ordinal {
5976 return Ok(());
5977 }
5978
5979 let cur_offset: usize = (1 - 1) * envelope_size;
5982
5983 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5985
5986 fidl::encoding::encode_in_envelope_optional::<
5991 fidl::encoding::Endpoint<
5992 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5993 >,
5994 fidl::encoding::DefaultFuchsiaResourceDialect,
5995 >(
5996 self.control_client.as_mut().map(
5997 <fidl::encoding::Endpoint<
5998 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5999 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6000 ),
6001 encoder,
6002 offset + cur_offset,
6003 depth,
6004 )?;
6005
6006 _prev_end_offset = cur_offset + envelope_size;
6007 if 2 > max_ordinal {
6008 return Ok(());
6009 }
6010
6011 let cur_offset: usize = (2 - 1) * envelope_size;
6014
6015 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6017
6018 fidl::encoding::encode_in_envelope_optional::<
6023 fidl::encoding::Endpoint<
6024 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6025 >,
6026 fidl::encoding::DefaultFuchsiaResourceDialect,
6027 >(
6028 self.runner_server.as_mut().map(
6029 <fidl::encoding::Endpoint<
6030 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6031 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6032 ),
6033 encoder,
6034 offset + cur_offset,
6035 depth,
6036 )?;
6037
6038 _prev_end_offset = cur_offset + envelope_size;
6039 if 3 > max_ordinal {
6040 return Ok(());
6041 }
6042
6043 let cur_offset: usize = (3 - 1) * envelope_size;
6046
6047 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6049
6050 fidl::encoding::encode_in_envelope_optional::<
6055 fidl::encoding::Endpoint<
6056 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6057 >,
6058 fidl::encoding::DefaultFuchsiaResourceDialect,
6059 >(
6060 self.lessor_client.as_mut().map(
6061 <fidl::encoding::Endpoint<
6062 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6063 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6064 ),
6065 encoder,
6066 offset + cur_offset,
6067 depth,
6068 )?;
6069
6070 _prev_end_offset = cur_offset + envelope_size;
6071 if 4 > max_ordinal {
6072 return Ok(());
6073 }
6074
6075 let cur_offset: usize = (4 - 1) * envelope_size;
6078
6079 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6081
6082 fidl::encoding::encode_in_envelope_optional::<
6087 fidl::encoding::HandleType<
6088 fidl::Event,
6089 { fidl::ObjectType::EVENT.into_raw() },
6090 2147483648,
6091 >,
6092 fidl::encoding::DefaultFuchsiaResourceDialect,
6093 >(
6094 self.token.as_mut().map(
6095 <fidl::encoding::HandleType<
6096 fidl::Event,
6097 { fidl::ObjectType::EVENT.into_raw() },
6098 2147483648,
6099 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6100 ),
6101 encoder,
6102 offset + cur_offset,
6103 depth,
6104 )?;
6105
6106 _prev_end_offset = cur_offset + envelope_size;
6107
6108 Ok(())
6109 }
6110 }
6111
6112 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6113 for PowerElementArgs
6114 {
6115 #[inline(always)]
6116 fn new_empty() -> Self {
6117 Self::default()
6118 }
6119
6120 unsafe fn decode(
6121 &mut self,
6122 decoder: &mut fidl::encoding::Decoder<
6123 '_,
6124 fidl::encoding::DefaultFuchsiaResourceDialect,
6125 >,
6126 offset: usize,
6127 mut depth: fidl::encoding::Depth,
6128 ) -> fidl::Result<()> {
6129 decoder.debug_check_bounds::<Self>(offset);
6130 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6131 None => return Err(fidl::Error::NotNullable),
6132 Some(len) => len,
6133 };
6134 if len == 0 {
6136 return Ok(());
6137 };
6138 depth.increment()?;
6139 let envelope_size = 8;
6140 let bytes_len = len * envelope_size;
6141 let offset = decoder.out_of_line_offset(bytes_len)?;
6142 let mut _next_ordinal_to_read = 0;
6144 let mut next_offset = offset;
6145 let end_offset = offset + bytes_len;
6146 _next_ordinal_to_read += 1;
6147 if next_offset >= end_offset {
6148 return Ok(());
6149 }
6150
6151 while _next_ordinal_to_read < 1 {
6153 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6154 _next_ordinal_to_read += 1;
6155 next_offset += envelope_size;
6156 }
6157
6158 let next_out_of_line = decoder.next_out_of_line();
6159 let handles_before = decoder.remaining_handles();
6160 if let Some((inlined, num_bytes, num_handles)) =
6161 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6162 {
6163 let member_inline_size = <fidl::encoding::Endpoint<
6164 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
6165 > as fidl::encoding::TypeMarker>::inline_size(
6166 decoder.context
6167 );
6168 if inlined != (member_inline_size <= 4) {
6169 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6170 }
6171 let inner_offset;
6172 let mut inner_depth = depth.clone();
6173 if inlined {
6174 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6175 inner_offset = next_offset;
6176 } else {
6177 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6178 inner_depth.increment()?;
6179 }
6180 let val_ref = self.control_client.get_or_insert_with(|| {
6181 fidl::new_empty!(
6182 fidl::encoding::Endpoint<
6183 fidl::endpoints::ClientEnd<
6184 fidl_fuchsia_power_broker::ElementControlMarker,
6185 >,
6186 >,
6187 fidl::encoding::DefaultFuchsiaResourceDialect
6188 )
6189 });
6190 fidl::decode!(
6191 fidl::encoding::Endpoint<
6192 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
6193 >,
6194 fidl::encoding::DefaultFuchsiaResourceDialect,
6195 val_ref,
6196 decoder,
6197 inner_offset,
6198 inner_depth
6199 )?;
6200 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6201 {
6202 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6203 }
6204 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6205 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6206 }
6207 }
6208
6209 next_offset += envelope_size;
6210 _next_ordinal_to_read += 1;
6211 if next_offset >= end_offset {
6212 return Ok(());
6213 }
6214
6215 while _next_ordinal_to_read < 2 {
6217 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6218 _next_ordinal_to_read += 1;
6219 next_offset += envelope_size;
6220 }
6221
6222 let next_out_of_line = decoder.next_out_of_line();
6223 let handles_before = decoder.remaining_handles();
6224 if let Some((inlined, num_bytes, num_handles)) =
6225 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6226 {
6227 let member_inline_size = <fidl::encoding::Endpoint<
6228 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6229 > as fidl::encoding::TypeMarker>::inline_size(
6230 decoder.context
6231 );
6232 if inlined != (member_inline_size <= 4) {
6233 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6234 }
6235 let inner_offset;
6236 let mut inner_depth = depth.clone();
6237 if inlined {
6238 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6239 inner_offset = next_offset;
6240 } else {
6241 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6242 inner_depth.increment()?;
6243 }
6244 let val_ref = self.runner_server.get_or_insert_with(|| {
6245 fidl::new_empty!(
6246 fidl::encoding::Endpoint<
6247 fidl::endpoints::ServerEnd<
6248 fidl_fuchsia_power_broker::ElementRunnerMarker,
6249 >,
6250 >,
6251 fidl::encoding::DefaultFuchsiaResourceDialect
6252 )
6253 });
6254 fidl::decode!(
6255 fidl::encoding::Endpoint<
6256 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6257 >,
6258 fidl::encoding::DefaultFuchsiaResourceDialect,
6259 val_ref,
6260 decoder,
6261 inner_offset,
6262 inner_depth
6263 )?;
6264 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6265 {
6266 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6267 }
6268 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6269 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6270 }
6271 }
6272
6273 next_offset += envelope_size;
6274 _next_ordinal_to_read += 1;
6275 if next_offset >= end_offset {
6276 return Ok(());
6277 }
6278
6279 while _next_ordinal_to_read < 3 {
6281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6282 _next_ordinal_to_read += 1;
6283 next_offset += envelope_size;
6284 }
6285
6286 let next_out_of_line = decoder.next_out_of_line();
6287 let handles_before = decoder.remaining_handles();
6288 if let Some((inlined, num_bytes, num_handles)) =
6289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6290 {
6291 let member_inline_size = <fidl::encoding::Endpoint<
6292 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6293 > as fidl::encoding::TypeMarker>::inline_size(
6294 decoder.context
6295 );
6296 if inlined != (member_inline_size <= 4) {
6297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6298 }
6299 let inner_offset;
6300 let mut inner_depth = depth.clone();
6301 if inlined {
6302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6303 inner_offset = next_offset;
6304 } else {
6305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6306 inner_depth.increment()?;
6307 }
6308 let val_ref = self.lessor_client.get_or_insert_with(|| {
6309 fidl::new_empty!(
6310 fidl::encoding::Endpoint<
6311 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6312 >,
6313 fidl::encoding::DefaultFuchsiaResourceDialect
6314 )
6315 });
6316 fidl::decode!(
6317 fidl::encoding::Endpoint<
6318 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6319 >,
6320 fidl::encoding::DefaultFuchsiaResourceDialect,
6321 val_ref,
6322 decoder,
6323 inner_offset,
6324 inner_depth
6325 )?;
6326 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6327 {
6328 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6329 }
6330 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6331 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6332 }
6333 }
6334
6335 next_offset += envelope_size;
6336 _next_ordinal_to_read += 1;
6337 if next_offset >= end_offset {
6338 return Ok(());
6339 }
6340
6341 while _next_ordinal_to_read < 4 {
6343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6344 _next_ordinal_to_read += 1;
6345 next_offset += envelope_size;
6346 }
6347
6348 let next_out_of_line = decoder.next_out_of_line();
6349 let handles_before = decoder.remaining_handles();
6350 if let Some((inlined, num_bytes, num_handles)) =
6351 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6352 {
6353 let member_inline_size = <fidl::encoding::HandleType<
6354 fidl::Event,
6355 { fidl::ObjectType::EVENT.into_raw() },
6356 2147483648,
6357 > as fidl::encoding::TypeMarker>::inline_size(
6358 decoder.context
6359 );
6360 if inlined != (member_inline_size <= 4) {
6361 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6362 }
6363 let inner_offset;
6364 let mut inner_depth = depth.clone();
6365 if inlined {
6366 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6367 inner_offset = next_offset;
6368 } else {
6369 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6370 inner_depth.increment()?;
6371 }
6372 let val_ref =
6373 self.token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
6374 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6375 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6376 {
6377 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6378 }
6379 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6380 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6381 }
6382 }
6383
6384 next_offset += envelope_size;
6385
6386 while next_offset < end_offset {
6388 _next_ordinal_to_read += 1;
6389 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6390 next_offset += envelope_size;
6391 }
6392
6393 Ok(())
6394 }
6395 }
6396
6397 impl fidl::encoding::ResourceTypeMarker for DriverResult {
6398 type Borrowed<'a> = &'a mut Self;
6399 fn take_or_borrow<'a>(
6400 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6401 ) -> Self::Borrowed<'a> {
6402 value
6403 }
6404 }
6405
6406 unsafe impl fidl::encoding::TypeMarker for DriverResult {
6407 type Owned = Self;
6408
6409 #[inline(always)]
6410 fn inline_align(_context: fidl::encoding::Context) -> usize {
6411 8
6412 }
6413
6414 #[inline(always)]
6415 fn inline_size(_context: fidl::encoding::Context) -> usize {
6416 16
6417 }
6418 }
6419
6420 unsafe impl fidl::encoding::Encode<DriverResult, fidl::encoding::DefaultFuchsiaResourceDialect>
6421 for &mut DriverResult
6422 {
6423 #[inline]
6424 unsafe fn encode(
6425 self,
6426 encoder: &mut fidl::encoding::Encoder<
6427 '_,
6428 fidl::encoding::DefaultFuchsiaResourceDialect,
6429 >,
6430 offset: usize,
6431 _depth: fidl::encoding::Depth,
6432 ) -> fidl::Result<()> {
6433 encoder.debug_check_bounds::<DriverResult>(offset);
6434 encoder.write_num::<u64>(self.ordinal(), offset);
6435 match self {
6436 DriverResult::DriverStartedNodeToken(ref mut val) => {
6437 fidl::encoding::encode_in_envelope::<
6438 fidl::encoding::HandleType<
6439 fidl::Event,
6440 { fidl::ObjectType::EVENT.into_raw() },
6441 2147483648,
6442 >,
6443 fidl::encoding::DefaultFuchsiaResourceDialect,
6444 >(
6445 <fidl::encoding::HandleType<
6446 fidl::Event,
6447 { fidl::ObjectType::EVENT.into_raw() },
6448 2147483648,
6449 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
6450 val
6451 ),
6452 encoder,
6453 offset + 8,
6454 _depth,
6455 )
6456 }
6457 DriverResult::MatchError(ref val) => fidl::encoding::encode_in_envelope::<
6458 i32,
6459 fidl::encoding::DefaultFuchsiaResourceDialect,
6460 >(
6461 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6462 encoder,
6463 offset + 8,
6464 _depth,
6465 ),
6466 DriverResult::StartError(ref val) => fidl::encoding::encode_in_envelope::<
6467 i32,
6468 fidl::encoding::DefaultFuchsiaResourceDialect,
6469 >(
6470 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6471 encoder,
6472 offset + 8,
6473 _depth,
6474 ),
6475 DriverResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6476 }
6477 }
6478 }
6479
6480 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {
6481 #[inline(always)]
6482 fn new_empty() -> Self {
6483 Self::__SourceBreaking { unknown_ordinal: 0 }
6484 }
6485
6486 #[inline]
6487 unsafe fn decode(
6488 &mut self,
6489 decoder: &mut fidl::encoding::Decoder<
6490 '_,
6491 fidl::encoding::DefaultFuchsiaResourceDialect,
6492 >,
6493 offset: usize,
6494 mut depth: fidl::encoding::Depth,
6495 ) -> fidl::Result<()> {
6496 decoder.debug_check_bounds::<Self>(offset);
6497 #[allow(unused_variables)]
6498 let next_out_of_line = decoder.next_out_of_line();
6499 let handles_before = decoder.remaining_handles();
6500 let (ordinal, inlined, num_bytes, num_handles) =
6501 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6502
6503 let member_inline_size = match ordinal {
6504 1 => <fidl::encoding::HandleType<
6505 fidl::Event,
6506 { fidl::ObjectType::EVENT.into_raw() },
6507 2147483648,
6508 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6509 2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6510 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6511 0 => return Err(fidl::Error::UnknownUnionTag),
6512 _ => num_bytes as usize,
6513 };
6514
6515 if inlined != (member_inline_size <= 4) {
6516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6517 }
6518 let _inner_offset;
6519 if inlined {
6520 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6521 _inner_offset = offset + 8;
6522 } else {
6523 depth.increment()?;
6524 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6525 }
6526 match ordinal {
6527 1 => {
6528 #[allow(irrefutable_let_patterns)]
6529 if let DriverResult::DriverStartedNodeToken(_) = self {
6530 } else {
6532 *self = DriverResult::DriverStartedNodeToken(
6534 fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
6535 );
6536 }
6537 #[allow(irrefutable_let_patterns)]
6538 if let DriverResult::DriverStartedNodeToken(ref mut val) = self {
6539 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
6540 } else {
6541 unreachable!()
6542 }
6543 }
6544 2 => {
6545 #[allow(irrefutable_let_patterns)]
6546 if let DriverResult::MatchError(_) = self {
6547 } else {
6549 *self = DriverResult::MatchError(fidl::new_empty!(
6551 i32,
6552 fidl::encoding::DefaultFuchsiaResourceDialect
6553 ));
6554 }
6555 #[allow(irrefutable_let_patterns)]
6556 if let DriverResult::MatchError(ref mut val) = self {
6557 fidl::decode!(
6558 i32,
6559 fidl::encoding::DefaultFuchsiaResourceDialect,
6560 val,
6561 decoder,
6562 _inner_offset,
6563 depth
6564 )?;
6565 } else {
6566 unreachable!()
6567 }
6568 }
6569 3 => {
6570 #[allow(irrefutable_let_patterns)]
6571 if let DriverResult::StartError(_) = self {
6572 } else {
6574 *self = DriverResult::StartError(fidl::new_empty!(
6576 i32,
6577 fidl::encoding::DefaultFuchsiaResourceDialect
6578 ));
6579 }
6580 #[allow(irrefutable_let_patterns)]
6581 if let DriverResult::StartError(ref mut val) = self {
6582 fidl::decode!(
6583 i32,
6584 fidl::encoding::DefaultFuchsiaResourceDialect,
6585 val,
6586 decoder,
6587 _inner_offset,
6588 depth
6589 )?;
6590 } else {
6591 unreachable!()
6592 }
6593 }
6594 #[allow(deprecated)]
6595 ordinal => {
6596 for _ in 0..num_handles {
6597 decoder.drop_next_handle()?;
6598 }
6599 *self = DriverResult::__SourceBreaking { unknown_ordinal: ordinal };
6600 }
6601 }
6602 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6603 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6604 }
6605 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6606 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6607 }
6608 Ok(())
6609 }
6610 }
6611}