1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_driver_framework_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct NodeAddChildRequest {
16 pub args: NodeAddArgs,
17 pub controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
18 pub node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
19}
20
21impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddChildRequest {}
22
23#[derive(Debug, PartialEq)]
24pub struct NodeManagerAddNodeRequest {
25 pub node: Node2,
26 pub controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
27 pub node_ref: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeManagerAddNodeRequest {}
31
32#[derive(Debug, PartialEq)]
33pub struct NodeProvideResourceRequest {
34 pub resource: ResourceArgs,
35 pub controller: fidl::endpoints::ServerEnd<ResourceControllerMarker>,
36}
37
38impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
39 for NodeProvideResourceRequest
40{
41}
42
43#[derive(Debug, Default, PartialEq)]
44pub struct DevfsAddArgs {
45 pub connector: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
49 pub class_name: Option<String>,
54 pub inspect: Option<fidl::Vmo>,
57 pub connector_supports: Option<fidl_fuchsia_device_fs::ConnectionType>,
62 pub controller_connector:
68 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>>,
69 #[doc(hidden)]
70 pub __source_breaking: fidl::marker::SourceBreaking,
71}
72
73impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {}
74
75#[derive(Debug, Default, PartialEq)]
77pub struct DriverStartArgs {
78 pub node: Option<fidl::endpoints::ClientEnd<NodeMarker>>,
80 pub symbols: Option<Vec<NodeSymbol>>,
84 pub url: Option<String>,
87 pub program: Option<fidl_fuchsia_data::Dictionary>,
103 pub incoming: Option<Vec<fidl_fuchsia_component_runner::ComponentNamespaceEntry>>,
105 pub outgoing_dir: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>>,
107 pub config: Option<fidl::Vmo>,
109 pub node_name: Option<String>,
111 pub node_offers: Option<Vec<Offer>>,
113 pub node_token: Option<fidl::Event>,
116 pub node_properties_2: Option<Vec<NodePropertyEntry2>>,
117 pub vmar: Option<fidl::Vmar>,
120 pub power_element_args: Option<PowerElementArgs>,
127 pub log_sink: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>>,
129 #[doc(hidden)]
130 pub __source_breaking: fidl::marker::SourceBreaking,
131}
132
133impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverStartArgs {}
134
135#[derive(Debug, Default, PartialEq)]
137pub struct NodeAddArgs {
138 pub name: Option<String>,
140 pub symbols: Option<Vec<NodeSymbol>>,
142 pub devfs_args: Option<DevfsAddArgs>,
144 pub offers2: Option<Vec<Offer>>,
149 pub bus_info: Option<BusInfo>,
152 pub properties2: Option<Vec<NodeProperty2>>,
154 pub offers_dictionary: Option<fidl_fuchsia_component_sandbox::DictionaryRef>,
158 pub driver_host: Option<String>,
165 #[doc(hidden)]
166 pub __source_breaking: fidl::marker::SourceBreaking,
167}
168
169impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {}
170
171#[derive(Debug, Default, PartialEq)]
172pub struct NodeControllerOnBindRequest {
173 pub node_token: Option<fidl::Event>,
176 #[doc(hidden)]
177 pub __source_breaking: fidl::marker::SourceBreaking,
178}
179
180impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
181 for NodeControllerOnBindRequest
182{
183}
184
185#[derive(Debug, Default, PartialEq)]
186pub struct PowerElementArgs {
187 pub control_client:
188 Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>>,
189 pub runner_server:
190 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>>,
191 pub lessor_client: Option<fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>>,
192 pub token: Option<fidl::Event>,
193 #[doc(hidden)]
194 pub __source_breaking: fidl::marker::SourceBreaking,
195}
196
197impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for PowerElementArgs {}
198
199#[derive(Debug, Default, PartialEq)]
201pub struct ResourceArgs {
202 pub name: Option<String>,
204 pub properties: Option<Vec<NodeProperty2>>,
206 pub offers: Option<Vec<Offer>>,
208 pub bus_info: Option<BusInfo>,
211 #[doc(hidden)]
212 pub __source_breaking: fidl::marker::SourceBreaking,
213}
214
215impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ResourceArgs {}
216
217#[derive(Debug)]
218pub enum DriverResult {
219 DriverStartedNodeToken(fidl::Event),
221 MatchError(i32),
223 StartError(i32),
225 #[doc(hidden)]
226 __SourceBreaking { unknown_ordinal: u64 },
227}
228
229#[macro_export]
231macro_rules! DriverResultUnknown {
232 () => {
233 _
234 };
235}
236
237impl PartialEq for DriverResult {
239 fn eq(&self, other: &Self) -> bool {
240 match (self, other) {
241 (Self::DriverStartedNodeToken(x), Self::DriverStartedNodeToken(y)) => *x == *y,
242 (Self::MatchError(x), Self::MatchError(y)) => *x == *y,
243 (Self::StartError(x), Self::StartError(y)) => *x == *y,
244 _ => false,
245 }
246 }
247}
248
249impl DriverResult {
250 #[inline]
251 pub fn ordinal(&self) -> u64 {
252 match *self {
253 Self::DriverStartedNodeToken(_) => 1,
254 Self::MatchError(_) => 2,
255 Self::StartError(_) => 3,
256 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
257 }
258 }
259
260 #[inline]
261 pub fn unknown_variant_for_testing() -> Self {
262 Self::__SourceBreaking { unknown_ordinal: 0 }
263 }
264
265 #[inline]
266 pub fn is_unknown(&self) -> bool {
267 match self {
268 Self::__SourceBreaking { .. } => true,
269 _ => false,
270 }
271 }
272}
273
274impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {}
275
276#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
277pub struct CompositeNodeManagerMarker;
278
279impl fidl::endpoints::ProtocolMarker for CompositeNodeManagerMarker {
280 type Proxy = CompositeNodeManagerProxy;
281 type RequestStream = CompositeNodeManagerRequestStream;
282 #[cfg(target_os = "fuchsia")]
283 type SynchronousProxy = CompositeNodeManagerSynchronousProxy;
284
285 const DEBUG_NAME: &'static str = "fuchsia.driver.framework.CompositeNodeManager";
286}
287impl fidl::endpoints::DiscoverableProtocolMarker for CompositeNodeManagerMarker {}
288pub type CompositeNodeManagerAddSpecResult = Result<(), CompositeNodeSpecError>;
289
290pub trait CompositeNodeManagerProxyInterface: Send + Sync {
291 type AddSpecResponseFut: std::future::Future<Output = Result<CompositeNodeManagerAddSpecResult, fidl::Error>>
292 + Send;
293 fn r#add_spec(&self, payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut;
294}
295#[derive(Debug)]
296#[cfg(target_os = "fuchsia")]
297pub struct CompositeNodeManagerSynchronousProxy {
298 client: fidl::client::sync::Client,
299}
300
301#[cfg(target_os = "fuchsia")]
302impl fidl::endpoints::SynchronousProxy for CompositeNodeManagerSynchronousProxy {
303 type Proxy = CompositeNodeManagerProxy;
304 type Protocol = CompositeNodeManagerMarker;
305
306 fn from_channel(inner: fidl::Channel) -> Self {
307 Self::new(inner)
308 }
309
310 fn into_channel(self) -> fidl::Channel {
311 self.client.into_channel()
312 }
313
314 fn as_channel(&self) -> &fidl::Channel {
315 self.client.as_channel()
316 }
317}
318
319#[cfg(target_os = "fuchsia")]
320impl CompositeNodeManagerSynchronousProxy {
321 pub fn new(channel: fidl::Channel) -> Self {
322 Self { client: fidl::client::sync::Client::new(channel) }
323 }
324
325 pub fn into_channel(self) -> fidl::Channel {
326 self.client.into_channel()
327 }
328
329 pub fn wait_for_event(
332 &self,
333 deadline: zx::MonotonicInstant,
334 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
335 CompositeNodeManagerEvent::decode(
336 self.client.wait_for_event::<CompositeNodeManagerMarker>(deadline)?,
337 )
338 }
339
340 pub fn r#add_spec(
342 &self,
343 mut payload: &CompositeNodeSpec,
344 ___deadline: zx::MonotonicInstant,
345 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
346 let _response =
347 self.client
348 .send_query::<CompositeNodeSpec, fidl::encoding::FlexibleResultType<
349 fidl::encoding::EmptyStruct,
350 CompositeNodeSpecError,
351 >, CompositeNodeManagerMarker>(
352 payload,
353 0x524e353c8130cc74,
354 fidl::encoding::DynamicFlags::FLEXIBLE,
355 ___deadline,
356 )?
357 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
358 Ok(_response.map(|x| x))
359 }
360}
361
362#[cfg(target_os = "fuchsia")]
363impl From<CompositeNodeManagerSynchronousProxy> for zx::NullableHandle {
364 fn from(value: CompositeNodeManagerSynchronousProxy) -> Self {
365 value.into_channel().into()
366 }
367}
368
369#[cfg(target_os = "fuchsia")]
370impl From<fidl::Channel> for CompositeNodeManagerSynchronousProxy {
371 fn from(value: fidl::Channel) -> Self {
372 Self::new(value)
373 }
374}
375
376#[cfg(target_os = "fuchsia")]
377impl fidl::endpoints::FromClient for CompositeNodeManagerSynchronousProxy {
378 type Protocol = CompositeNodeManagerMarker;
379
380 fn from_client(value: fidl::endpoints::ClientEnd<CompositeNodeManagerMarker>) -> Self {
381 Self::new(value.into_channel())
382 }
383}
384
385#[derive(Debug, Clone)]
386pub struct CompositeNodeManagerProxy {
387 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
388}
389
390impl fidl::endpoints::Proxy for CompositeNodeManagerProxy {
391 type Protocol = CompositeNodeManagerMarker;
392
393 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
394 Self::new(inner)
395 }
396
397 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
398 self.client.into_channel().map_err(|client| Self { client })
399 }
400
401 fn as_channel(&self) -> &::fidl::AsyncChannel {
402 self.client.as_channel()
403 }
404}
405
406impl CompositeNodeManagerProxy {
407 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
409 let protocol_name =
410 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
411 Self { client: fidl::client::Client::new(channel, protocol_name) }
412 }
413
414 pub fn take_event_stream(&self) -> CompositeNodeManagerEventStream {
420 CompositeNodeManagerEventStream { event_receiver: self.client.take_event_receiver() }
421 }
422
423 pub fn r#add_spec(
425 &self,
426 mut payload: &CompositeNodeSpec,
427 ) -> fidl::client::QueryResponseFut<
428 CompositeNodeManagerAddSpecResult,
429 fidl::encoding::DefaultFuchsiaResourceDialect,
430 > {
431 CompositeNodeManagerProxyInterface::r#add_spec(self, payload)
432 }
433}
434
435impl CompositeNodeManagerProxyInterface for CompositeNodeManagerProxy {
436 type AddSpecResponseFut = fidl::client::QueryResponseFut<
437 CompositeNodeManagerAddSpecResult,
438 fidl::encoding::DefaultFuchsiaResourceDialect,
439 >;
440 fn r#add_spec(&self, mut payload: &CompositeNodeSpec) -> Self::AddSpecResponseFut {
441 fn _decode(
442 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
443 ) -> Result<CompositeNodeManagerAddSpecResult, fidl::Error> {
444 let _response = fidl::client::decode_transaction_body::<
445 fidl::encoding::FlexibleResultType<
446 fidl::encoding::EmptyStruct,
447 CompositeNodeSpecError,
448 >,
449 fidl::encoding::DefaultFuchsiaResourceDialect,
450 0x524e353c8130cc74,
451 >(_buf?)?
452 .into_result::<CompositeNodeManagerMarker>("add_spec")?;
453 Ok(_response.map(|x| x))
454 }
455 self.client.send_query_and_decode::<CompositeNodeSpec, CompositeNodeManagerAddSpecResult>(
456 payload,
457 0x524e353c8130cc74,
458 fidl::encoding::DynamicFlags::FLEXIBLE,
459 _decode,
460 )
461 }
462}
463
464pub struct CompositeNodeManagerEventStream {
465 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
466}
467
468impl std::marker::Unpin for CompositeNodeManagerEventStream {}
469
470impl futures::stream::FusedStream for CompositeNodeManagerEventStream {
471 fn is_terminated(&self) -> bool {
472 self.event_receiver.is_terminated()
473 }
474}
475
476impl futures::Stream for CompositeNodeManagerEventStream {
477 type Item = Result<CompositeNodeManagerEvent, fidl::Error>;
478
479 fn poll_next(
480 mut self: std::pin::Pin<&mut Self>,
481 cx: &mut std::task::Context<'_>,
482 ) -> std::task::Poll<Option<Self::Item>> {
483 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
484 &mut self.event_receiver,
485 cx
486 )?) {
487 Some(buf) => std::task::Poll::Ready(Some(CompositeNodeManagerEvent::decode(buf))),
488 None => std::task::Poll::Ready(None),
489 }
490 }
491}
492
493#[derive(Debug)]
494pub enum CompositeNodeManagerEvent {
495 #[non_exhaustive]
496 _UnknownEvent {
497 ordinal: u64,
499 },
500}
501
502impl CompositeNodeManagerEvent {
503 fn decode(
505 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
506 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
507 let (bytes, _handles) = buf.split_mut();
508 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
509 debug_assert_eq!(tx_header.tx_id, 0);
510 match tx_header.ordinal {
511 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
512 Ok(CompositeNodeManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
513 }
514 _ => Err(fidl::Error::UnknownOrdinal {
515 ordinal: tx_header.ordinal,
516 protocol_name:
517 <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
518 }),
519 }
520 }
521}
522
523pub struct CompositeNodeManagerRequestStream {
525 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
526 is_terminated: bool,
527}
528
529impl std::marker::Unpin for CompositeNodeManagerRequestStream {}
530
531impl futures::stream::FusedStream for CompositeNodeManagerRequestStream {
532 fn is_terminated(&self) -> bool {
533 self.is_terminated
534 }
535}
536
537impl fidl::endpoints::RequestStream for CompositeNodeManagerRequestStream {
538 type Protocol = CompositeNodeManagerMarker;
539 type ControlHandle = CompositeNodeManagerControlHandle;
540
541 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
542 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
543 }
544
545 fn control_handle(&self) -> Self::ControlHandle {
546 CompositeNodeManagerControlHandle { inner: self.inner.clone() }
547 }
548
549 fn into_inner(
550 self,
551 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
552 {
553 (self.inner, self.is_terminated)
554 }
555
556 fn from_inner(
557 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
558 is_terminated: bool,
559 ) -> Self {
560 Self { inner, is_terminated }
561 }
562}
563
564impl futures::Stream for CompositeNodeManagerRequestStream {
565 type Item = Result<CompositeNodeManagerRequest, fidl::Error>;
566
567 fn poll_next(
568 mut self: std::pin::Pin<&mut Self>,
569 cx: &mut std::task::Context<'_>,
570 ) -> std::task::Poll<Option<Self::Item>> {
571 let this = &mut *self;
572 if this.inner.check_shutdown(cx) {
573 this.is_terminated = true;
574 return std::task::Poll::Ready(None);
575 }
576 if this.is_terminated {
577 panic!("polled CompositeNodeManagerRequestStream after completion");
578 }
579 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
580 |bytes, handles| {
581 match this.inner.channel().read_etc(cx, bytes, handles) {
582 std::task::Poll::Ready(Ok(())) => {}
583 std::task::Poll::Pending => return std::task::Poll::Pending,
584 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
585 this.is_terminated = true;
586 return std::task::Poll::Ready(None);
587 }
588 std::task::Poll::Ready(Err(e)) => {
589 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
590 e.into(),
591 ))));
592 }
593 }
594
595 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
597
598 std::task::Poll::Ready(Some(match header.ordinal {
599 0x524e353c8130cc74 => {
600 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
601 let mut req = fidl::new_empty!(CompositeNodeSpec, fidl::encoding::DefaultFuchsiaResourceDialect);
602 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<CompositeNodeSpec>(&header, _body_bytes, handles, &mut req)?;
603 let control_handle = CompositeNodeManagerControlHandle {
604 inner: this.inner.clone(),
605 };
606 Ok(CompositeNodeManagerRequest::AddSpec {payload: req,
607 responder: CompositeNodeManagerAddSpecResponder {
608 control_handle: std::mem::ManuallyDrop::new(control_handle),
609 tx_id: header.tx_id,
610 },
611 })
612 }
613 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
614 Ok(CompositeNodeManagerRequest::_UnknownMethod {
615 ordinal: header.ordinal,
616 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
617 method_type: fidl::MethodType::OneWay,
618 })
619 }
620 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
621 this.inner.send_framework_err(
622 fidl::encoding::FrameworkErr::UnknownMethod,
623 header.tx_id,
624 header.ordinal,
625 header.dynamic_flags(),
626 (bytes, handles),
627 )?;
628 Ok(CompositeNodeManagerRequest::_UnknownMethod {
629 ordinal: header.ordinal,
630 control_handle: CompositeNodeManagerControlHandle { inner: this.inner.clone() },
631 method_type: fidl::MethodType::TwoWay,
632 })
633 }
634 _ => Err(fidl::Error::UnknownOrdinal {
635 ordinal: header.ordinal,
636 protocol_name: <CompositeNodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
637 }),
638 }))
639 },
640 )
641 }
642}
643
644#[derive(Debug)]
650pub enum CompositeNodeManagerRequest {
651 AddSpec { payload: CompositeNodeSpec, responder: CompositeNodeManagerAddSpecResponder },
653 #[non_exhaustive]
655 _UnknownMethod {
656 ordinal: u64,
658 control_handle: CompositeNodeManagerControlHandle,
659 method_type: fidl::MethodType,
660 },
661}
662
663impl CompositeNodeManagerRequest {
664 #[allow(irrefutable_let_patterns)]
665 pub fn into_add_spec(
666 self,
667 ) -> Option<(CompositeNodeSpec, CompositeNodeManagerAddSpecResponder)> {
668 if let CompositeNodeManagerRequest::AddSpec { payload, responder } = self {
669 Some((payload, responder))
670 } else {
671 None
672 }
673 }
674
675 pub fn method_name(&self) -> &'static str {
677 match *self {
678 CompositeNodeManagerRequest::AddSpec { .. } => "add_spec",
679 CompositeNodeManagerRequest::_UnknownMethod {
680 method_type: fidl::MethodType::OneWay,
681 ..
682 } => "unknown one-way method",
683 CompositeNodeManagerRequest::_UnknownMethod {
684 method_type: fidl::MethodType::TwoWay,
685 ..
686 } => "unknown two-way method",
687 }
688 }
689}
690
691#[derive(Debug, Clone)]
692pub struct CompositeNodeManagerControlHandle {
693 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
694}
695
696impl CompositeNodeManagerControlHandle {
697 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
698 self.inner.shutdown_with_epitaph(status.into())
699 }
700}
701
702impl fidl::endpoints::ControlHandle for CompositeNodeManagerControlHandle {
703 fn shutdown(&self) {
704 self.inner.shutdown()
705 }
706
707 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
708 self.inner.shutdown_with_epitaph(status)
709 }
710
711 fn is_closed(&self) -> bool {
712 self.inner.channel().is_closed()
713 }
714 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
715 self.inner.channel().on_closed()
716 }
717
718 #[cfg(target_os = "fuchsia")]
719 fn signal_peer(
720 &self,
721 clear_mask: zx::Signals,
722 set_mask: zx::Signals,
723 ) -> Result<(), zx_status::Status> {
724 use fidl::Peered;
725 self.inner.channel().signal_peer(clear_mask, set_mask)
726 }
727}
728
729impl CompositeNodeManagerControlHandle {}
730
731#[must_use = "FIDL methods require a response to be sent"]
732#[derive(Debug)]
733pub struct CompositeNodeManagerAddSpecResponder {
734 control_handle: std::mem::ManuallyDrop<CompositeNodeManagerControlHandle>,
735 tx_id: u32,
736}
737
738impl std::ops::Drop for CompositeNodeManagerAddSpecResponder {
742 fn drop(&mut self) {
743 self.control_handle.shutdown();
744 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
746 }
747}
748
749impl fidl::endpoints::Responder for CompositeNodeManagerAddSpecResponder {
750 type ControlHandle = CompositeNodeManagerControlHandle;
751
752 fn control_handle(&self) -> &CompositeNodeManagerControlHandle {
753 &self.control_handle
754 }
755
756 fn drop_without_shutdown(mut self) {
757 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
759 std::mem::forget(self);
761 }
762}
763
764impl CompositeNodeManagerAddSpecResponder {
765 pub fn send(self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
769 let _result = self.send_raw(result);
770 if _result.is_err() {
771 self.control_handle.shutdown();
772 }
773 self.drop_without_shutdown();
774 _result
775 }
776
777 pub fn send_no_shutdown_on_err(
779 self,
780 mut result: Result<(), CompositeNodeSpecError>,
781 ) -> Result<(), fidl::Error> {
782 let _result = self.send_raw(result);
783 self.drop_without_shutdown();
784 _result
785 }
786
787 fn send_raw(&self, mut result: Result<(), CompositeNodeSpecError>) -> Result<(), fidl::Error> {
788 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
789 fidl::encoding::EmptyStruct,
790 CompositeNodeSpecError,
791 >>(
792 fidl::encoding::FlexibleResult::new(result),
793 self.tx_id,
794 0x524e353c8130cc74,
795 fidl::encoding::DynamicFlags::FLEXIBLE,
796 )
797 }
798}
799
800#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
801pub struct NodeMarker;
802
803impl fidl::endpoints::ProtocolMarker for NodeMarker {
804 type Proxy = NodeProxy;
805 type RequestStream = NodeRequestStream;
806 #[cfg(target_os = "fuchsia")]
807 type SynchronousProxy = NodeSynchronousProxy;
808
809 const DEBUG_NAME: &'static str = "(anonymous) Node";
810}
811pub type NodeAddChildResult = Result<(), NodeError>;
812pub type NodeProvideResourceResult = Result<(), NodeError>;
813
814pub trait NodeProxyInterface: Send + Sync {
815 type AddChildResponseFut: std::future::Future<Output = Result<NodeAddChildResult, fidl::Error>>
816 + Send;
817 fn r#add_child(
818 &self,
819 args: NodeAddArgs,
820 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
821 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
822 ) -> Self::AddChildResponseFut;
823 type ProvideResourceResponseFut: std::future::Future<Output = Result<NodeProvideResourceResult, fidl::Error>>
824 + Send;
825 fn r#provide_resource(
826 &self,
827 resource: ResourceArgs,
828 controller: fidl::endpoints::ServerEnd<ResourceControllerMarker>,
829 ) -> Self::ProvideResourceResponseFut;
830}
831#[derive(Debug)]
832#[cfg(target_os = "fuchsia")]
833pub struct NodeSynchronousProxy {
834 client: fidl::client::sync::Client,
835}
836
837#[cfg(target_os = "fuchsia")]
838impl fidl::endpoints::SynchronousProxy for NodeSynchronousProxy {
839 type Proxy = NodeProxy;
840 type Protocol = NodeMarker;
841
842 fn from_channel(inner: fidl::Channel) -> Self {
843 Self::new(inner)
844 }
845
846 fn into_channel(self) -> fidl::Channel {
847 self.client.into_channel()
848 }
849
850 fn as_channel(&self) -> &fidl::Channel {
851 self.client.as_channel()
852 }
853}
854
855#[cfg(target_os = "fuchsia")]
856impl NodeSynchronousProxy {
857 pub fn new(channel: fidl::Channel) -> Self {
858 Self { client: fidl::client::sync::Client::new(channel) }
859 }
860
861 pub fn into_channel(self) -> fidl::Channel {
862 self.client.into_channel()
863 }
864
865 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<NodeEvent, fidl::Error> {
868 NodeEvent::decode(self.client.wait_for_event::<NodeMarker>(deadline)?)
869 }
870
871 pub fn r#add_child(
877 &self,
878 mut args: NodeAddArgs,
879 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
880 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
881 ___deadline: zx::MonotonicInstant,
882 ) -> Result<NodeAddChildResult, fidl::Error> {
883 let _response = self.client.send_query::<
884 NodeAddChildRequest,
885 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
886 NodeMarker,
887 >(
888 (&mut args, controller, node,),
889 0x77d10dff3c1ea129,
890 fidl::encoding::DynamicFlags::FLEXIBLE,
891 ___deadline,
892 )?
893 .into_result::<NodeMarker>("add_child")?;
894 Ok(_response.map(|x| x))
895 }
896
897 pub fn r#provide_resource(
901 &self,
902 mut resource: ResourceArgs,
903 mut controller: fidl::endpoints::ServerEnd<ResourceControllerMarker>,
904 ___deadline: zx::MonotonicInstant,
905 ) -> Result<NodeProvideResourceResult, fidl::Error> {
906 let _response = self.client.send_query::<
907 NodeProvideResourceRequest,
908 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
909 NodeMarker,
910 >(
911 (&mut resource, controller,),
912 0x2ba4a8e5f3409ace,
913 fidl::encoding::DynamicFlags::FLEXIBLE,
914 ___deadline,
915 )?
916 .into_result::<NodeMarker>("provide_resource")?;
917 Ok(_response.map(|x| x))
918 }
919}
920
921#[cfg(target_os = "fuchsia")]
922impl From<NodeSynchronousProxy> for zx::NullableHandle {
923 fn from(value: NodeSynchronousProxy) -> Self {
924 value.into_channel().into()
925 }
926}
927
928#[cfg(target_os = "fuchsia")]
929impl From<fidl::Channel> for NodeSynchronousProxy {
930 fn from(value: fidl::Channel) -> Self {
931 Self::new(value)
932 }
933}
934
935#[cfg(target_os = "fuchsia")]
936impl fidl::endpoints::FromClient for NodeSynchronousProxy {
937 type Protocol = NodeMarker;
938
939 fn from_client(value: fidl::endpoints::ClientEnd<NodeMarker>) -> Self {
940 Self::new(value.into_channel())
941 }
942}
943
944#[derive(Debug, Clone)]
945pub struct NodeProxy {
946 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
947}
948
949impl fidl::endpoints::Proxy for NodeProxy {
950 type Protocol = NodeMarker;
951
952 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
953 Self::new(inner)
954 }
955
956 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
957 self.client.into_channel().map_err(|client| Self { client })
958 }
959
960 fn as_channel(&self) -> &::fidl::AsyncChannel {
961 self.client.as_channel()
962 }
963}
964
965impl NodeProxy {
966 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
968 let protocol_name = <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
969 Self { client: fidl::client::Client::new(channel, protocol_name) }
970 }
971
972 pub fn take_event_stream(&self) -> NodeEventStream {
978 NodeEventStream { event_receiver: self.client.take_event_receiver() }
979 }
980
981 pub fn r#add_child(
987 &self,
988 mut args: NodeAddArgs,
989 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
990 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
991 ) -> fidl::client::QueryResponseFut<
992 NodeAddChildResult,
993 fidl::encoding::DefaultFuchsiaResourceDialect,
994 > {
995 NodeProxyInterface::r#add_child(self, args, controller, node)
996 }
997
998 pub fn r#provide_resource(
1002 &self,
1003 mut resource: ResourceArgs,
1004 mut controller: fidl::endpoints::ServerEnd<ResourceControllerMarker>,
1005 ) -> fidl::client::QueryResponseFut<
1006 NodeProvideResourceResult,
1007 fidl::encoding::DefaultFuchsiaResourceDialect,
1008 > {
1009 NodeProxyInterface::r#provide_resource(self, resource, controller)
1010 }
1011}
1012
1013impl NodeProxyInterface for NodeProxy {
1014 type AddChildResponseFut = fidl::client::QueryResponseFut<
1015 NodeAddChildResult,
1016 fidl::encoding::DefaultFuchsiaResourceDialect,
1017 >;
1018 fn r#add_child(
1019 &self,
1020 mut args: NodeAddArgs,
1021 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1022 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1023 ) -> Self::AddChildResponseFut {
1024 fn _decode(
1025 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1026 ) -> Result<NodeAddChildResult, fidl::Error> {
1027 let _response = fidl::client::decode_transaction_body::<
1028 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1029 fidl::encoding::DefaultFuchsiaResourceDialect,
1030 0x77d10dff3c1ea129,
1031 >(_buf?)?
1032 .into_result::<NodeMarker>("add_child")?;
1033 Ok(_response.map(|x| x))
1034 }
1035 self.client.send_query_and_decode::<NodeAddChildRequest, NodeAddChildResult>(
1036 (&mut args, controller, node),
1037 0x77d10dff3c1ea129,
1038 fidl::encoding::DynamicFlags::FLEXIBLE,
1039 _decode,
1040 )
1041 }
1042
1043 type ProvideResourceResponseFut = fidl::client::QueryResponseFut<
1044 NodeProvideResourceResult,
1045 fidl::encoding::DefaultFuchsiaResourceDialect,
1046 >;
1047 fn r#provide_resource(
1048 &self,
1049 mut resource: ResourceArgs,
1050 mut controller: fidl::endpoints::ServerEnd<ResourceControllerMarker>,
1051 ) -> Self::ProvideResourceResponseFut {
1052 fn _decode(
1053 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1054 ) -> Result<NodeProvideResourceResult, fidl::Error> {
1055 let _response = fidl::client::decode_transaction_body::<
1056 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1057 fidl::encoding::DefaultFuchsiaResourceDialect,
1058 0x2ba4a8e5f3409ace,
1059 >(_buf?)?
1060 .into_result::<NodeMarker>("provide_resource")?;
1061 Ok(_response.map(|x| x))
1062 }
1063 self.client.send_query_and_decode::<NodeProvideResourceRequest, NodeProvideResourceResult>(
1064 (&mut resource, controller),
1065 0x2ba4a8e5f3409ace,
1066 fidl::encoding::DynamicFlags::FLEXIBLE,
1067 _decode,
1068 )
1069 }
1070}
1071
1072pub struct NodeEventStream {
1073 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1074}
1075
1076impl std::marker::Unpin for NodeEventStream {}
1077
1078impl futures::stream::FusedStream for NodeEventStream {
1079 fn is_terminated(&self) -> bool {
1080 self.event_receiver.is_terminated()
1081 }
1082}
1083
1084impl futures::Stream for NodeEventStream {
1085 type Item = Result<NodeEvent, fidl::Error>;
1086
1087 fn poll_next(
1088 mut self: std::pin::Pin<&mut Self>,
1089 cx: &mut std::task::Context<'_>,
1090 ) -> std::task::Poll<Option<Self::Item>> {
1091 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1092 &mut self.event_receiver,
1093 cx
1094 )?) {
1095 Some(buf) => std::task::Poll::Ready(Some(NodeEvent::decode(buf))),
1096 None => std::task::Poll::Ready(None),
1097 }
1098 }
1099}
1100
1101#[derive(Debug)]
1102pub enum NodeEvent {
1103 #[non_exhaustive]
1104 _UnknownEvent {
1105 ordinal: u64,
1107 },
1108}
1109
1110impl NodeEvent {
1111 fn decode(
1113 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1114 ) -> Result<NodeEvent, fidl::Error> {
1115 let (bytes, _handles) = buf.split_mut();
1116 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1117 debug_assert_eq!(tx_header.tx_id, 0);
1118 match tx_header.ordinal {
1119 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1120 Ok(NodeEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1121 }
1122 _ => Err(fidl::Error::UnknownOrdinal {
1123 ordinal: tx_header.ordinal,
1124 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1125 }),
1126 }
1127 }
1128}
1129
1130pub struct NodeRequestStream {
1132 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1133 is_terminated: bool,
1134}
1135
1136impl std::marker::Unpin for NodeRequestStream {}
1137
1138impl futures::stream::FusedStream for NodeRequestStream {
1139 fn is_terminated(&self) -> bool {
1140 self.is_terminated
1141 }
1142}
1143
1144impl fidl::endpoints::RequestStream for NodeRequestStream {
1145 type Protocol = NodeMarker;
1146 type ControlHandle = NodeControlHandle;
1147
1148 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1149 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1150 }
1151
1152 fn control_handle(&self) -> Self::ControlHandle {
1153 NodeControlHandle { inner: self.inner.clone() }
1154 }
1155
1156 fn into_inner(
1157 self,
1158 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1159 {
1160 (self.inner, self.is_terminated)
1161 }
1162
1163 fn from_inner(
1164 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1165 is_terminated: bool,
1166 ) -> Self {
1167 Self { inner, is_terminated }
1168 }
1169}
1170
1171impl futures::Stream for NodeRequestStream {
1172 type Item = Result<NodeRequest, fidl::Error>;
1173
1174 fn poll_next(
1175 mut self: std::pin::Pin<&mut Self>,
1176 cx: &mut std::task::Context<'_>,
1177 ) -> std::task::Poll<Option<Self::Item>> {
1178 let this = &mut *self;
1179 if this.inner.check_shutdown(cx) {
1180 this.is_terminated = true;
1181 return std::task::Poll::Ready(None);
1182 }
1183 if this.is_terminated {
1184 panic!("polled NodeRequestStream after completion");
1185 }
1186 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1187 |bytes, handles| {
1188 match this.inner.channel().read_etc(cx, bytes, handles) {
1189 std::task::Poll::Ready(Ok(())) => {}
1190 std::task::Poll::Pending => return std::task::Poll::Pending,
1191 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1192 this.is_terminated = true;
1193 return std::task::Poll::Ready(None);
1194 }
1195 std::task::Poll::Ready(Err(e)) => {
1196 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1197 e.into(),
1198 ))));
1199 }
1200 }
1201
1202 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1204
1205 std::task::Poll::Ready(Some(match header.ordinal {
1206 0x77d10dff3c1ea129 => {
1207 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1208 let mut req = fidl::new_empty!(
1209 NodeAddChildRequest,
1210 fidl::encoding::DefaultFuchsiaResourceDialect
1211 );
1212 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeAddChildRequest>(&header, _body_bytes, handles, &mut req)?;
1213 let control_handle = NodeControlHandle { inner: this.inner.clone() };
1214 Ok(NodeRequest::AddChild {
1215 args: req.args,
1216 controller: req.controller,
1217 node: req.node,
1218
1219 responder: NodeAddChildResponder {
1220 control_handle: std::mem::ManuallyDrop::new(control_handle),
1221 tx_id: header.tx_id,
1222 },
1223 })
1224 }
1225 0x2ba4a8e5f3409ace => {
1226 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1227 let mut req = fidl::new_empty!(
1228 NodeProvideResourceRequest,
1229 fidl::encoding::DefaultFuchsiaResourceDialect
1230 );
1231 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeProvideResourceRequest>(&header, _body_bytes, handles, &mut req)?;
1232 let control_handle = NodeControlHandle { inner: this.inner.clone() };
1233 Ok(NodeRequest::ProvideResource {
1234 resource: req.resource,
1235 controller: req.controller,
1236
1237 responder: NodeProvideResourceResponder {
1238 control_handle: std::mem::ManuallyDrop::new(control_handle),
1239 tx_id: header.tx_id,
1240 },
1241 })
1242 }
1243 _ if header.tx_id == 0
1244 && header
1245 .dynamic_flags()
1246 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1247 {
1248 Ok(NodeRequest::_UnknownMethod {
1249 ordinal: header.ordinal,
1250 control_handle: NodeControlHandle { inner: this.inner.clone() },
1251 method_type: fidl::MethodType::OneWay,
1252 })
1253 }
1254 _ if header
1255 .dynamic_flags()
1256 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
1257 {
1258 this.inner.send_framework_err(
1259 fidl::encoding::FrameworkErr::UnknownMethod,
1260 header.tx_id,
1261 header.ordinal,
1262 header.dynamic_flags(),
1263 (bytes, handles),
1264 )?;
1265 Ok(NodeRequest::_UnknownMethod {
1266 ordinal: header.ordinal,
1267 control_handle: NodeControlHandle { inner: this.inner.clone() },
1268 method_type: fidl::MethodType::TwoWay,
1269 })
1270 }
1271 _ => Err(fidl::Error::UnknownOrdinal {
1272 ordinal: header.ordinal,
1273 protocol_name: <NodeMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1274 }),
1275 }))
1276 },
1277 )
1278 }
1279}
1280
1281#[derive(Debug)]
1289pub enum NodeRequest {
1290 AddChild {
1296 args: NodeAddArgs,
1297 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1298 node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1299 responder: NodeAddChildResponder,
1300 },
1301 ProvideResource {
1305 resource: ResourceArgs,
1306 controller: fidl::endpoints::ServerEnd<ResourceControllerMarker>,
1307 responder: NodeProvideResourceResponder,
1308 },
1309 #[non_exhaustive]
1311 _UnknownMethod {
1312 ordinal: u64,
1314 control_handle: NodeControlHandle,
1315 method_type: fidl::MethodType,
1316 },
1317}
1318
1319impl NodeRequest {
1320 #[allow(irrefutable_let_patterns)]
1321 pub fn into_add_child(
1322 self,
1323 ) -> Option<(
1324 NodeAddArgs,
1325 fidl::endpoints::ServerEnd<NodeControllerMarker>,
1326 Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1327 NodeAddChildResponder,
1328 )> {
1329 if let NodeRequest::AddChild { args, controller, node, responder } = self {
1330 Some((args, controller, node, responder))
1331 } else {
1332 None
1333 }
1334 }
1335
1336 #[allow(irrefutable_let_patterns)]
1337 pub fn into_provide_resource(
1338 self,
1339 ) -> Option<(
1340 ResourceArgs,
1341 fidl::endpoints::ServerEnd<ResourceControllerMarker>,
1342 NodeProvideResourceResponder,
1343 )> {
1344 if let NodeRequest::ProvideResource { resource, controller, responder } = self {
1345 Some((resource, controller, responder))
1346 } else {
1347 None
1348 }
1349 }
1350
1351 pub fn method_name(&self) -> &'static str {
1353 match *self {
1354 NodeRequest::AddChild { .. } => "add_child",
1355 NodeRequest::ProvideResource { .. } => "provide_resource",
1356 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
1357 "unknown one-way method"
1358 }
1359 NodeRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
1360 "unknown two-way method"
1361 }
1362 }
1363 }
1364}
1365
1366#[derive(Debug, Clone)]
1367pub struct NodeControlHandle {
1368 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1369}
1370
1371impl NodeControlHandle {
1372 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
1373 self.inner.shutdown_with_epitaph(status.into())
1374 }
1375}
1376
1377impl fidl::endpoints::ControlHandle for NodeControlHandle {
1378 fn shutdown(&self) {
1379 self.inner.shutdown()
1380 }
1381
1382 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
1383 self.inner.shutdown_with_epitaph(status)
1384 }
1385
1386 fn is_closed(&self) -> bool {
1387 self.inner.channel().is_closed()
1388 }
1389 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1390 self.inner.channel().on_closed()
1391 }
1392
1393 #[cfg(target_os = "fuchsia")]
1394 fn signal_peer(
1395 &self,
1396 clear_mask: zx::Signals,
1397 set_mask: zx::Signals,
1398 ) -> Result<(), zx_status::Status> {
1399 use fidl::Peered;
1400 self.inner.channel().signal_peer(clear_mask, set_mask)
1401 }
1402}
1403
1404impl NodeControlHandle {}
1405
1406#[must_use = "FIDL methods require a response to be sent"]
1407#[derive(Debug)]
1408pub struct NodeAddChildResponder {
1409 control_handle: std::mem::ManuallyDrop<NodeControlHandle>,
1410 tx_id: u32,
1411}
1412
1413impl std::ops::Drop for NodeAddChildResponder {
1417 fn drop(&mut self) {
1418 self.control_handle.shutdown();
1419 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1421 }
1422}
1423
1424impl fidl::endpoints::Responder for NodeAddChildResponder {
1425 type ControlHandle = NodeControlHandle;
1426
1427 fn control_handle(&self) -> &NodeControlHandle {
1428 &self.control_handle
1429 }
1430
1431 fn drop_without_shutdown(mut self) {
1432 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1434 std::mem::forget(self);
1436 }
1437}
1438
1439impl NodeAddChildResponder {
1440 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1444 let _result = self.send_raw(result);
1445 if _result.is_err() {
1446 self.control_handle.shutdown();
1447 }
1448 self.drop_without_shutdown();
1449 _result
1450 }
1451
1452 pub fn send_no_shutdown_on_err(
1454 self,
1455 mut result: Result<(), NodeError>,
1456 ) -> Result<(), fidl::Error> {
1457 let _result = self.send_raw(result);
1458 self.drop_without_shutdown();
1459 _result
1460 }
1461
1462 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1463 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1464 fidl::encoding::EmptyStruct,
1465 NodeError,
1466 >>(
1467 fidl::encoding::FlexibleResult::new(result),
1468 self.tx_id,
1469 0x77d10dff3c1ea129,
1470 fidl::encoding::DynamicFlags::FLEXIBLE,
1471 )
1472 }
1473}
1474
1475#[must_use = "FIDL methods require a response to be sent"]
1476#[derive(Debug)]
1477pub struct NodeProvideResourceResponder {
1478 control_handle: std::mem::ManuallyDrop<NodeControlHandle>,
1479 tx_id: u32,
1480}
1481
1482impl std::ops::Drop for NodeProvideResourceResponder {
1486 fn drop(&mut self) {
1487 self.control_handle.shutdown();
1488 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1490 }
1491}
1492
1493impl fidl::endpoints::Responder for NodeProvideResourceResponder {
1494 type ControlHandle = NodeControlHandle;
1495
1496 fn control_handle(&self) -> &NodeControlHandle {
1497 &self.control_handle
1498 }
1499
1500 fn drop_without_shutdown(mut self) {
1501 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1503 std::mem::forget(self);
1505 }
1506}
1507
1508impl NodeProvideResourceResponder {
1509 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1513 let _result = self.send_raw(result);
1514 if _result.is_err() {
1515 self.control_handle.shutdown();
1516 }
1517 self.drop_without_shutdown();
1518 _result
1519 }
1520
1521 pub fn send_no_shutdown_on_err(
1523 self,
1524 mut result: Result<(), NodeError>,
1525 ) -> Result<(), fidl::Error> {
1526 let _result = self.send_raw(result);
1527 self.drop_without_shutdown();
1528 _result
1529 }
1530
1531 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
1532 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
1533 fidl::encoding::EmptyStruct,
1534 NodeError,
1535 >>(
1536 fidl::encoding::FlexibleResult::new(result),
1537 self.tx_id,
1538 0x2ba4a8e5f3409ace,
1539 fidl::encoding::DynamicFlags::FLEXIBLE,
1540 )
1541 }
1542}
1543
1544#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1545pub struct NodeControllerMarker;
1546
1547impl fidl::endpoints::ProtocolMarker for NodeControllerMarker {
1548 type Proxy = NodeControllerProxy;
1549 type RequestStream = NodeControllerRequestStream;
1550 #[cfg(target_os = "fuchsia")]
1551 type SynchronousProxy = NodeControllerSynchronousProxy;
1552
1553 const DEBUG_NAME: &'static str = "(anonymous) NodeController";
1554}
1555pub type NodeControllerRequestBindResult = Result<(), i32>;
1556pub type NodeControllerWaitForDriverResult = Result<DriverResult, i32>;
1557
1558pub trait NodeControllerProxyInterface: Send + Sync {
1559 fn r#remove(&self) -> Result<(), fidl::Error>;
1560 type RequestBindResponseFut: std::future::Future<Output = Result<NodeControllerRequestBindResult, fidl::Error>>
1561 + Send;
1562 fn r#request_bind(
1563 &self,
1564 payload: &NodeControllerRequestBindRequest,
1565 ) -> Self::RequestBindResponseFut;
1566 type WaitForDriverResponseFut: std::future::Future<Output = Result<NodeControllerWaitForDriverResult, fidl::Error>>
1567 + Send;
1568 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut;
1569}
1570#[derive(Debug)]
1571#[cfg(target_os = "fuchsia")]
1572pub struct NodeControllerSynchronousProxy {
1573 client: fidl::client::sync::Client,
1574}
1575
1576#[cfg(target_os = "fuchsia")]
1577impl fidl::endpoints::SynchronousProxy for NodeControllerSynchronousProxy {
1578 type Proxy = NodeControllerProxy;
1579 type Protocol = NodeControllerMarker;
1580
1581 fn from_channel(inner: fidl::Channel) -> Self {
1582 Self::new(inner)
1583 }
1584
1585 fn into_channel(self) -> fidl::Channel {
1586 self.client.into_channel()
1587 }
1588
1589 fn as_channel(&self) -> &fidl::Channel {
1590 self.client.as_channel()
1591 }
1592}
1593
1594#[cfg(target_os = "fuchsia")]
1595impl NodeControllerSynchronousProxy {
1596 pub fn new(channel: fidl::Channel) -> Self {
1597 Self { client: fidl::client::sync::Client::new(channel) }
1598 }
1599
1600 pub fn into_channel(self) -> fidl::Channel {
1601 self.client.into_channel()
1602 }
1603
1604 pub fn wait_for_event(
1607 &self,
1608 deadline: zx::MonotonicInstant,
1609 ) -> Result<NodeControllerEvent, fidl::Error> {
1610 NodeControllerEvent::decode(self.client.wait_for_event::<NodeControllerMarker>(deadline)?)
1611 }
1612
1613 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1615 self.client.send::<fidl::encoding::EmptyPayload>(
1616 (),
1617 0x54fa8b3dfe7bb341,
1618 fidl::encoding::DynamicFlags::FLEXIBLE,
1619 )
1620 }
1621
1622 pub fn r#request_bind(
1629 &self,
1630 mut payload: &NodeControllerRequestBindRequest,
1631 ___deadline: zx::MonotonicInstant,
1632 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1633 let _response = self.client.send_query::<
1634 NodeControllerRequestBindRequest,
1635 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1636 NodeControllerMarker,
1637 >(
1638 payload,
1639 0x41b954726b13508f,
1640 fidl::encoding::DynamicFlags::FLEXIBLE,
1641 ___deadline,
1642 )?
1643 .into_result::<NodeControllerMarker>("request_bind")?;
1644 Ok(_response.map(|x| x))
1645 }
1646
1647 pub fn r#wait_for_driver(
1654 &self,
1655 ___deadline: zx::MonotonicInstant,
1656 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1657 let _response = self.client.send_query::<
1658 fidl::encoding::EmptyPayload,
1659 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1660 NodeControllerMarker,
1661 >(
1662 (),
1663 0x69f7106e47d81387,
1664 fidl::encoding::DynamicFlags::FLEXIBLE,
1665 ___deadline,
1666 )?
1667 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1668 Ok(_response.map(|x| x))
1669 }
1670}
1671
1672#[cfg(target_os = "fuchsia")]
1673impl From<NodeControllerSynchronousProxy> for zx::NullableHandle {
1674 fn from(value: NodeControllerSynchronousProxy) -> Self {
1675 value.into_channel().into()
1676 }
1677}
1678
1679#[cfg(target_os = "fuchsia")]
1680impl From<fidl::Channel> for NodeControllerSynchronousProxy {
1681 fn from(value: fidl::Channel) -> Self {
1682 Self::new(value)
1683 }
1684}
1685
1686#[cfg(target_os = "fuchsia")]
1687impl fidl::endpoints::FromClient for NodeControllerSynchronousProxy {
1688 type Protocol = NodeControllerMarker;
1689
1690 fn from_client(value: fidl::endpoints::ClientEnd<NodeControllerMarker>) -> Self {
1691 Self::new(value.into_channel())
1692 }
1693}
1694
1695#[derive(Debug, Clone)]
1696pub struct NodeControllerProxy {
1697 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1698}
1699
1700impl fidl::endpoints::Proxy for NodeControllerProxy {
1701 type Protocol = NodeControllerMarker;
1702
1703 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1704 Self::new(inner)
1705 }
1706
1707 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1708 self.client.into_channel().map_err(|client| Self { client })
1709 }
1710
1711 fn as_channel(&self) -> &::fidl::AsyncChannel {
1712 self.client.as_channel()
1713 }
1714}
1715
1716impl NodeControllerProxy {
1717 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1719 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1720 Self { client: fidl::client::Client::new(channel, protocol_name) }
1721 }
1722
1723 pub fn take_event_stream(&self) -> NodeControllerEventStream {
1729 NodeControllerEventStream { event_receiver: self.client.take_event_receiver() }
1730 }
1731
1732 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1734 NodeControllerProxyInterface::r#remove(self)
1735 }
1736
1737 pub fn r#request_bind(
1744 &self,
1745 mut payload: &NodeControllerRequestBindRequest,
1746 ) -> fidl::client::QueryResponseFut<
1747 NodeControllerRequestBindResult,
1748 fidl::encoding::DefaultFuchsiaResourceDialect,
1749 > {
1750 NodeControllerProxyInterface::r#request_bind(self, payload)
1751 }
1752
1753 pub fn r#wait_for_driver(
1760 &self,
1761 ) -> fidl::client::QueryResponseFut<
1762 NodeControllerWaitForDriverResult,
1763 fidl::encoding::DefaultFuchsiaResourceDialect,
1764 > {
1765 NodeControllerProxyInterface::r#wait_for_driver(self)
1766 }
1767}
1768
1769impl NodeControllerProxyInterface for NodeControllerProxy {
1770 fn r#remove(&self) -> Result<(), fidl::Error> {
1771 self.client.send::<fidl::encoding::EmptyPayload>(
1772 (),
1773 0x54fa8b3dfe7bb341,
1774 fidl::encoding::DynamicFlags::FLEXIBLE,
1775 )
1776 }
1777
1778 type RequestBindResponseFut = fidl::client::QueryResponseFut<
1779 NodeControllerRequestBindResult,
1780 fidl::encoding::DefaultFuchsiaResourceDialect,
1781 >;
1782 fn r#request_bind(
1783 &self,
1784 mut payload: &NodeControllerRequestBindRequest,
1785 ) -> Self::RequestBindResponseFut {
1786 fn _decode(
1787 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1788 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1789 let _response = fidl::client::decode_transaction_body::<
1790 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1791 fidl::encoding::DefaultFuchsiaResourceDialect,
1792 0x41b954726b13508f,
1793 >(_buf?)?
1794 .into_result::<NodeControllerMarker>("request_bind")?;
1795 Ok(_response.map(|x| x))
1796 }
1797 self.client.send_query_and_decode::<
1798 NodeControllerRequestBindRequest,
1799 NodeControllerRequestBindResult,
1800 >(
1801 payload,
1802 0x41b954726b13508f,
1803 fidl::encoding::DynamicFlags::FLEXIBLE,
1804 _decode,
1805 )
1806 }
1807
1808 type WaitForDriverResponseFut = fidl::client::QueryResponseFut<
1809 NodeControllerWaitForDriverResult,
1810 fidl::encoding::DefaultFuchsiaResourceDialect,
1811 >;
1812 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut {
1813 fn _decode(
1814 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1815 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1816 let _response = fidl::client::decode_transaction_body::<
1817 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1818 fidl::encoding::DefaultFuchsiaResourceDialect,
1819 0x69f7106e47d81387,
1820 >(_buf?)?
1821 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1822 Ok(_response.map(|x| x))
1823 }
1824 self.client.send_query_and_decode::<
1825 fidl::encoding::EmptyPayload,
1826 NodeControllerWaitForDriverResult,
1827 >(
1828 (),
1829 0x69f7106e47d81387,
1830 fidl::encoding::DynamicFlags::FLEXIBLE,
1831 _decode,
1832 )
1833 }
1834}
1835
1836pub struct NodeControllerEventStream {
1837 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1838}
1839
1840impl std::marker::Unpin for NodeControllerEventStream {}
1841
1842impl futures::stream::FusedStream for NodeControllerEventStream {
1843 fn is_terminated(&self) -> bool {
1844 self.event_receiver.is_terminated()
1845 }
1846}
1847
1848impl futures::Stream for NodeControllerEventStream {
1849 type Item = Result<NodeControllerEvent, fidl::Error>;
1850
1851 fn poll_next(
1852 mut self: std::pin::Pin<&mut Self>,
1853 cx: &mut std::task::Context<'_>,
1854 ) -> std::task::Poll<Option<Self::Item>> {
1855 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1856 &mut self.event_receiver,
1857 cx
1858 )?) {
1859 Some(buf) => std::task::Poll::Ready(Some(NodeControllerEvent::decode(buf))),
1860 None => std::task::Poll::Ready(None),
1861 }
1862 }
1863}
1864
1865#[derive(Debug)]
1866pub enum NodeControllerEvent {
1867 OnBind {
1868 payload: NodeControllerOnBindRequest,
1869 },
1870 #[non_exhaustive]
1871 _UnknownEvent {
1872 ordinal: u64,
1874 },
1875}
1876
1877impl NodeControllerEvent {
1878 #[allow(irrefutable_let_patterns)]
1879 pub fn into_on_bind(self) -> Option<NodeControllerOnBindRequest> {
1880 if let NodeControllerEvent::OnBind { payload } = self { Some((payload)) } else { None }
1881 }
1882
1883 fn decode(
1885 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1886 ) -> Result<NodeControllerEvent, fidl::Error> {
1887 let (bytes, _handles) = buf.split_mut();
1888 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1889 debug_assert_eq!(tx_header.tx_id, 0);
1890 match tx_header.ordinal {
1891 0x51f4165bc5ea202a => {
1892 let mut out = fidl::new_empty!(
1893 NodeControllerOnBindRequest,
1894 fidl::encoding::DefaultFuchsiaResourceDialect
1895 );
1896 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerOnBindRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
1897 Ok((NodeControllerEvent::OnBind { payload: out }))
1898 }
1899 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1900 Ok(NodeControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1901 }
1902 _ => Err(fidl::Error::UnknownOrdinal {
1903 ordinal: tx_header.ordinal,
1904 protocol_name:
1905 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1906 }),
1907 }
1908 }
1909}
1910
1911pub struct NodeControllerRequestStream {
1913 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1914 is_terminated: bool,
1915}
1916
1917impl std::marker::Unpin for NodeControllerRequestStream {}
1918
1919impl futures::stream::FusedStream for NodeControllerRequestStream {
1920 fn is_terminated(&self) -> bool {
1921 self.is_terminated
1922 }
1923}
1924
1925impl fidl::endpoints::RequestStream for NodeControllerRequestStream {
1926 type Protocol = NodeControllerMarker;
1927 type ControlHandle = NodeControllerControlHandle;
1928
1929 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1930 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1931 }
1932
1933 fn control_handle(&self) -> Self::ControlHandle {
1934 NodeControllerControlHandle { inner: self.inner.clone() }
1935 }
1936
1937 fn into_inner(
1938 self,
1939 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1940 {
1941 (self.inner, self.is_terminated)
1942 }
1943
1944 fn from_inner(
1945 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1946 is_terminated: bool,
1947 ) -> Self {
1948 Self { inner, is_terminated }
1949 }
1950}
1951
1952impl futures::Stream for NodeControllerRequestStream {
1953 type Item = Result<NodeControllerRequest, fidl::Error>;
1954
1955 fn poll_next(
1956 mut self: std::pin::Pin<&mut Self>,
1957 cx: &mut std::task::Context<'_>,
1958 ) -> std::task::Poll<Option<Self::Item>> {
1959 let this = &mut *self;
1960 if this.inner.check_shutdown(cx) {
1961 this.is_terminated = true;
1962 return std::task::Poll::Ready(None);
1963 }
1964 if this.is_terminated {
1965 panic!("polled NodeControllerRequestStream after completion");
1966 }
1967 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1968 |bytes, handles| {
1969 match this.inner.channel().read_etc(cx, bytes, handles) {
1970 std::task::Poll::Ready(Ok(())) => {}
1971 std::task::Poll::Pending => return std::task::Poll::Pending,
1972 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1973 this.is_terminated = true;
1974 return std::task::Poll::Ready(None);
1975 }
1976 std::task::Poll::Ready(Err(e)) => {
1977 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1978 e.into(),
1979 ))));
1980 }
1981 }
1982
1983 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1985
1986 std::task::Poll::Ready(Some(match header.ordinal {
1987 0x54fa8b3dfe7bb341 => {
1988 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1989 let mut req = fidl::new_empty!(
1990 fidl::encoding::EmptyPayload,
1991 fidl::encoding::DefaultFuchsiaResourceDialect
1992 );
1993 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1994 let control_handle =
1995 NodeControllerControlHandle { inner: this.inner.clone() };
1996 Ok(NodeControllerRequest::Remove { control_handle })
1997 }
1998 0x41b954726b13508f => {
1999 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2000 let mut req = fidl::new_empty!(
2001 NodeControllerRequestBindRequest,
2002 fidl::encoding::DefaultFuchsiaResourceDialect
2003 );
2004 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerRequestBindRequest>(&header, _body_bytes, handles, &mut req)?;
2005 let control_handle =
2006 NodeControllerControlHandle { inner: this.inner.clone() };
2007 Ok(NodeControllerRequest::RequestBind {
2008 payload: req,
2009 responder: NodeControllerRequestBindResponder {
2010 control_handle: std::mem::ManuallyDrop::new(control_handle),
2011 tx_id: header.tx_id,
2012 },
2013 })
2014 }
2015 0x69f7106e47d81387 => {
2016 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2017 let mut req = fidl::new_empty!(
2018 fidl::encoding::EmptyPayload,
2019 fidl::encoding::DefaultFuchsiaResourceDialect
2020 );
2021 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2022 let control_handle =
2023 NodeControllerControlHandle { inner: this.inner.clone() };
2024 Ok(NodeControllerRequest::WaitForDriver {
2025 responder: NodeControllerWaitForDriverResponder {
2026 control_handle: std::mem::ManuallyDrop::new(control_handle),
2027 tx_id: header.tx_id,
2028 },
2029 })
2030 }
2031 _ if header.tx_id == 0
2032 && header
2033 .dynamic_flags()
2034 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2035 {
2036 Ok(NodeControllerRequest::_UnknownMethod {
2037 ordinal: header.ordinal,
2038 control_handle: NodeControllerControlHandle {
2039 inner: this.inner.clone(),
2040 },
2041 method_type: fidl::MethodType::OneWay,
2042 })
2043 }
2044 _ if header
2045 .dynamic_flags()
2046 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2047 {
2048 this.inner.send_framework_err(
2049 fidl::encoding::FrameworkErr::UnknownMethod,
2050 header.tx_id,
2051 header.ordinal,
2052 header.dynamic_flags(),
2053 (bytes, handles),
2054 )?;
2055 Ok(NodeControllerRequest::_UnknownMethod {
2056 ordinal: header.ordinal,
2057 control_handle: NodeControllerControlHandle {
2058 inner: this.inner.clone(),
2059 },
2060 method_type: fidl::MethodType::TwoWay,
2061 })
2062 }
2063 _ => Err(fidl::Error::UnknownOrdinal {
2064 ordinal: header.ordinal,
2065 protocol_name:
2066 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2067 }),
2068 }))
2069 },
2070 )
2071 }
2072}
2073
2074#[derive(Debug)]
2076pub enum NodeControllerRequest {
2077 Remove { control_handle: NodeControllerControlHandle },
2079 RequestBind {
2086 payload: NodeControllerRequestBindRequest,
2087 responder: NodeControllerRequestBindResponder,
2088 },
2089 WaitForDriver { responder: NodeControllerWaitForDriverResponder },
2096 #[non_exhaustive]
2098 _UnknownMethod {
2099 ordinal: u64,
2101 control_handle: NodeControllerControlHandle,
2102 method_type: fidl::MethodType,
2103 },
2104}
2105
2106impl NodeControllerRequest {
2107 #[allow(irrefutable_let_patterns)]
2108 pub fn into_remove(self) -> Option<(NodeControllerControlHandle)> {
2109 if let NodeControllerRequest::Remove { control_handle } = self {
2110 Some((control_handle))
2111 } else {
2112 None
2113 }
2114 }
2115
2116 #[allow(irrefutable_let_patterns)]
2117 pub fn into_request_bind(
2118 self,
2119 ) -> Option<(NodeControllerRequestBindRequest, NodeControllerRequestBindResponder)> {
2120 if let NodeControllerRequest::RequestBind { payload, responder } = self {
2121 Some((payload, responder))
2122 } else {
2123 None
2124 }
2125 }
2126
2127 #[allow(irrefutable_let_patterns)]
2128 pub fn into_wait_for_driver(self) -> Option<(NodeControllerWaitForDriverResponder)> {
2129 if let NodeControllerRequest::WaitForDriver { responder } = self {
2130 Some((responder))
2131 } else {
2132 None
2133 }
2134 }
2135
2136 pub fn method_name(&self) -> &'static str {
2138 match *self {
2139 NodeControllerRequest::Remove { .. } => "remove",
2140 NodeControllerRequest::RequestBind { .. } => "request_bind",
2141 NodeControllerRequest::WaitForDriver { .. } => "wait_for_driver",
2142 NodeControllerRequest::_UnknownMethod {
2143 method_type: fidl::MethodType::OneWay, ..
2144 } => "unknown one-way method",
2145 NodeControllerRequest::_UnknownMethod {
2146 method_type: fidl::MethodType::TwoWay, ..
2147 } => "unknown two-way method",
2148 }
2149 }
2150}
2151
2152#[derive(Debug, Clone)]
2153pub struct NodeControllerControlHandle {
2154 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2155}
2156
2157impl NodeControllerControlHandle {
2158 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2159 self.inner.shutdown_with_epitaph(status.into())
2160 }
2161}
2162
2163impl fidl::endpoints::ControlHandle for NodeControllerControlHandle {
2164 fn shutdown(&self) {
2165 self.inner.shutdown()
2166 }
2167
2168 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2169 self.inner.shutdown_with_epitaph(status)
2170 }
2171
2172 fn is_closed(&self) -> bool {
2173 self.inner.channel().is_closed()
2174 }
2175 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2176 self.inner.channel().on_closed()
2177 }
2178
2179 #[cfg(target_os = "fuchsia")]
2180 fn signal_peer(
2181 &self,
2182 clear_mask: zx::Signals,
2183 set_mask: zx::Signals,
2184 ) -> Result<(), zx_status::Status> {
2185 use fidl::Peered;
2186 self.inner.channel().signal_peer(clear_mask, set_mask)
2187 }
2188}
2189
2190impl NodeControllerControlHandle {
2191 pub fn send_on_bind(
2192 &self,
2193 mut payload: NodeControllerOnBindRequest,
2194 ) -> Result<(), fidl::Error> {
2195 self.inner.send::<NodeControllerOnBindRequest>(
2196 &mut payload,
2197 0,
2198 0x51f4165bc5ea202a,
2199 fidl::encoding::DynamicFlags::FLEXIBLE,
2200 )
2201 }
2202}
2203
2204#[must_use = "FIDL methods require a response to be sent"]
2205#[derive(Debug)]
2206pub struct NodeControllerRequestBindResponder {
2207 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2208 tx_id: u32,
2209}
2210
2211impl std::ops::Drop for NodeControllerRequestBindResponder {
2215 fn drop(&mut self) {
2216 self.control_handle.shutdown();
2217 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2219 }
2220}
2221
2222impl fidl::endpoints::Responder for NodeControllerRequestBindResponder {
2223 type ControlHandle = NodeControllerControlHandle;
2224
2225 fn control_handle(&self) -> &NodeControllerControlHandle {
2226 &self.control_handle
2227 }
2228
2229 fn drop_without_shutdown(mut self) {
2230 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2232 std::mem::forget(self);
2234 }
2235}
2236
2237impl NodeControllerRequestBindResponder {
2238 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2242 let _result = self.send_raw(result);
2243 if _result.is_err() {
2244 self.control_handle.shutdown();
2245 }
2246 self.drop_without_shutdown();
2247 _result
2248 }
2249
2250 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2252 let _result = self.send_raw(result);
2253 self.drop_without_shutdown();
2254 _result
2255 }
2256
2257 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2258 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2259 fidl::encoding::EmptyStruct,
2260 i32,
2261 >>(
2262 fidl::encoding::FlexibleResult::new(result),
2263 self.tx_id,
2264 0x41b954726b13508f,
2265 fidl::encoding::DynamicFlags::FLEXIBLE,
2266 )
2267 }
2268}
2269
2270#[must_use = "FIDL methods require a response to be sent"]
2271#[derive(Debug)]
2272pub struct NodeControllerWaitForDriverResponder {
2273 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2274 tx_id: u32,
2275}
2276
2277impl std::ops::Drop for NodeControllerWaitForDriverResponder {
2281 fn drop(&mut self) {
2282 self.control_handle.shutdown();
2283 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2285 }
2286}
2287
2288impl fidl::endpoints::Responder for NodeControllerWaitForDriverResponder {
2289 type ControlHandle = NodeControllerControlHandle;
2290
2291 fn control_handle(&self) -> &NodeControllerControlHandle {
2292 &self.control_handle
2293 }
2294
2295 fn drop_without_shutdown(mut self) {
2296 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2298 std::mem::forget(self);
2300 }
2301}
2302
2303impl NodeControllerWaitForDriverResponder {
2304 pub fn send(self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2308 let _result = self.send_raw(result);
2309 if _result.is_err() {
2310 self.control_handle.shutdown();
2311 }
2312 self.drop_without_shutdown();
2313 _result
2314 }
2315
2316 pub fn send_no_shutdown_on_err(
2318 self,
2319 mut result: Result<DriverResult, i32>,
2320 ) -> Result<(), fidl::Error> {
2321 let _result = self.send_raw(result);
2322 self.drop_without_shutdown();
2323 _result
2324 }
2325
2326 fn send_raw(&self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2327 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<DriverResult, i32>>(
2328 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
2329 self.tx_id,
2330 0x69f7106e47d81387,
2331 fidl::encoding::DynamicFlags::FLEXIBLE,
2332 )
2333 }
2334}
2335
2336#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2337pub struct NodeManagerMarker;
2338
2339impl fidl::endpoints::ProtocolMarker for NodeManagerMarker {
2340 type Proxy = NodeManagerProxy;
2341 type RequestStream = NodeManagerRequestStream;
2342 #[cfg(target_os = "fuchsia")]
2343 type SynchronousProxy = NodeManagerSynchronousProxy;
2344
2345 const DEBUG_NAME: &'static str = "fuchsia.driver.framework.NodeManager";
2346}
2347impl fidl::endpoints::DiscoverableProtocolMarker for NodeManagerMarker {}
2348pub type NodeManagerAddNodeResult = Result<(), NodeError>;
2349
2350pub trait NodeManagerProxyInterface: Send + Sync {
2351 type AddNodeResponseFut: std::future::Future<Output = Result<NodeManagerAddNodeResult, fidl::Error>>
2352 + Send;
2353 fn r#add_node(
2354 &self,
2355 node: &Node2,
2356 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
2357 node_ref: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2358 ) -> Self::AddNodeResponseFut;
2359}
2360#[derive(Debug)]
2361#[cfg(target_os = "fuchsia")]
2362pub struct NodeManagerSynchronousProxy {
2363 client: fidl::client::sync::Client,
2364}
2365
2366#[cfg(target_os = "fuchsia")]
2367impl fidl::endpoints::SynchronousProxy for NodeManagerSynchronousProxy {
2368 type Proxy = NodeManagerProxy;
2369 type Protocol = NodeManagerMarker;
2370
2371 fn from_channel(inner: fidl::Channel) -> Self {
2372 Self::new(inner)
2373 }
2374
2375 fn into_channel(self) -> fidl::Channel {
2376 self.client.into_channel()
2377 }
2378
2379 fn as_channel(&self) -> &fidl::Channel {
2380 self.client.as_channel()
2381 }
2382}
2383
2384#[cfg(target_os = "fuchsia")]
2385impl NodeManagerSynchronousProxy {
2386 pub fn new(channel: fidl::Channel) -> Self {
2387 Self { client: fidl::client::sync::Client::new(channel) }
2388 }
2389
2390 pub fn into_channel(self) -> fidl::Channel {
2391 self.client.into_channel()
2392 }
2393
2394 pub fn wait_for_event(
2397 &self,
2398 deadline: zx::MonotonicInstant,
2399 ) -> Result<NodeManagerEvent, fidl::Error> {
2400 NodeManagerEvent::decode(self.client.wait_for_event::<NodeManagerMarker>(deadline)?)
2401 }
2402
2403 pub fn r#add_node(
2405 &self,
2406 mut node: &Node2,
2407 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
2408 mut node_ref: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2409 ___deadline: zx::MonotonicInstant,
2410 ) -> Result<NodeManagerAddNodeResult, fidl::Error> {
2411 let _response = self.client.send_query::<
2412 NodeManagerAddNodeRequest,
2413 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
2414 NodeManagerMarker,
2415 >(
2416 (node, controller, node_ref,),
2417 0x71873eed0baf16fd,
2418 fidl::encoding::DynamicFlags::FLEXIBLE,
2419 ___deadline,
2420 )?
2421 .into_result::<NodeManagerMarker>("add_node")?;
2422 Ok(_response.map(|x| x))
2423 }
2424}
2425
2426#[cfg(target_os = "fuchsia")]
2427impl From<NodeManagerSynchronousProxy> for zx::NullableHandle {
2428 fn from(value: NodeManagerSynchronousProxy) -> Self {
2429 value.into_channel().into()
2430 }
2431}
2432
2433#[cfg(target_os = "fuchsia")]
2434impl From<fidl::Channel> for NodeManagerSynchronousProxy {
2435 fn from(value: fidl::Channel) -> Self {
2436 Self::new(value)
2437 }
2438}
2439
2440#[cfg(target_os = "fuchsia")]
2441impl fidl::endpoints::FromClient for NodeManagerSynchronousProxy {
2442 type Protocol = NodeManagerMarker;
2443
2444 fn from_client(value: fidl::endpoints::ClientEnd<NodeManagerMarker>) -> Self {
2445 Self::new(value.into_channel())
2446 }
2447}
2448
2449#[derive(Debug, Clone)]
2450pub struct NodeManagerProxy {
2451 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2452}
2453
2454impl fidl::endpoints::Proxy for NodeManagerProxy {
2455 type Protocol = NodeManagerMarker;
2456
2457 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2458 Self::new(inner)
2459 }
2460
2461 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2462 self.client.into_channel().map_err(|client| Self { client })
2463 }
2464
2465 fn as_channel(&self) -> &::fidl::AsyncChannel {
2466 self.client.as_channel()
2467 }
2468}
2469
2470impl NodeManagerProxy {
2471 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2473 let protocol_name = <NodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2474 Self { client: fidl::client::Client::new(channel, protocol_name) }
2475 }
2476
2477 pub fn take_event_stream(&self) -> NodeManagerEventStream {
2483 NodeManagerEventStream { event_receiver: self.client.take_event_receiver() }
2484 }
2485
2486 pub fn r#add_node(
2488 &self,
2489 mut node: &Node2,
2490 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
2491 mut node_ref: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2492 ) -> fidl::client::QueryResponseFut<
2493 NodeManagerAddNodeResult,
2494 fidl::encoding::DefaultFuchsiaResourceDialect,
2495 > {
2496 NodeManagerProxyInterface::r#add_node(self, node, controller, node_ref)
2497 }
2498}
2499
2500impl NodeManagerProxyInterface for NodeManagerProxy {
2501 type AddNodeResponseFut = fidl::client::QueryResponseFut<
2502 NodeManagerAddNodeResult,
2503 fidl::encoding::DefaultFuchsiaResourceDialect,
2504 >;
2505 fn r#add_node(
2506 &self,
2507 mut node: &Node2,
2508 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
2509 mut node_ref: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2510 ) -> Self::AddNodeResponseFut {
2511 fn _decode(
2512 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2513 ) -> Result<NodeManagerAddNodeResult, fidl::Error> {
2514 let _response = fidl::client::decode_transaction_body::<
2515 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
2516 fidl::encoding::DefaultFuchsiaResourceDialect,
2517 0x71873eed0baf16fd,
2518 >(_buf?)?
2519 .into_result::<NodeManagerMarker>("add_node")?;
2520 Ok(_response.map(|x| x))
2521 }
2522 self.client.send_query_and_decode::<NodeManagerAddNodeRequest, NodeManagerAddNodeResult>(
2523 (node, controller, node_ref),
2524 0x71873eed0baf16fd,
2525 fidl::encoding::DynamicFlags::FLEXIBLE,
2526 _decode,
2527 )
2528 }
2529}
2530
2531pub struct NodeManagerEventStream {
2532 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2533}
2534
2535impl std::marker::Unpin for NodeManagerEventStream {}
2536
2537impl futures::stream::FusedStream for NodeManagerEventStream {
2538 fn is_terminated(&self) -> bool {
2539 self.event_receiver.is_terminated()
2540 }
2541}
2542
2543impl futures::Stream for NodeManagerEventStream {
2544 type Item = Result<NodeManagerEvent, fidl::Error>;
2545
2546 fn poll_next(
2547 mut self: std::pin::Pin<&mut Self>,
2548 cx: &mut std::task::Context<'_>,
2549 ) -> std::task::Poll<Option<Self::Item>> {
2550 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2551 &mut self.event_receiver,
2552 cx
2553 )?) {
2554 Some(buf) => std::task::Poll::Ready(Some(NodeManagerEvent::decode(buf))),
2555 None => std::task::Poll::Ready(None),
2556 }
2557 }
2558}
2559
2560#[derive(Debug)]
2561pub enum NodeManagerEvent {
2562 #[non_exhaustive]
2563 _UnknownEvent {
2564 ordinal: u64,
2566 },
2567}
2568
2569impl NodeManagerEvent {
2570 fn decode(
2572 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2573 ) -> Result<NodeManagerEvent, fidl::Error> {
2574 let (bytes, _handles) = buf.split_mut();
2575 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2576 debug_assert_eq!(tx_header.tx_id, 0);
2577 match tx_header.ordinal {
2578 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
2579 Ok(NodeManagerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
2580 }
2581 _ => Err(fidl::Error::UnknownOrdinal {
2582 ordinal: tx_header.ordinal,
2583 protocol_name: <NodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2584 }),
2585 }
2586 }
2587}
2588
2589pub struct NodeManagerRequestStream {
2591 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2592 is_terminated: bool,
2593}
2594
2595impl std::marker::Unpin for NodeManagerRequestStream {}
2596
2597impl futures::stream::FusedStream for NodeManagerRequestStream {
2598 fn is_terminated(&self) -> bool {
2599 self.is_terminated
2600 }
2601}
2602
2603impl fidl::endpoints::RequestStream for NodeManagerRequestStream {
2604 type Protocol = NodeManagerMarker;
2605 type ControlHandle = NodeManagerControlHandle;
2606
2607 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2608 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2609 }
2610
2611 fn control_handle(&self) -> Self::ControlHandle {
2612 NodeManagerControlHandle { inner: self.inner.clone() }
2613 }
2614
2615 fn into_inner(
2616 self,
2617 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2618 {
2619 (self.inner, self.is_terminated)
2620 }
2621
2622 fn from_inner(
2623 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2624 is_terminated: bool,
2625 ) -> Self {
2626 Self { inner, is_terminated }
2627 }
2628}
2629
2630impl futures::Stream for NodeManagerRequestStream {
2631 type Item = Result<NodeManagerRequest, fidl::Error>;
2632
2633 fn poll_next(
2634 mut self: std::pin::Pin<&mut Self>,
2635 cx: &mut std::task::Context<'_>,
2636 ) -> std::task::Poll<Option<Self::Item>> {
2637 let this = &mut *self;
2638 if this.inner.check_shutdown(cx) {
2639 this.is_terminated = true;
2640 return std::task::Poll::Ready(None);
2641 }
2642 if this.is_terminated {
2643 panic!("polled NodeManagerRequestStream after completion");
2644 }
2645 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2646 |bytes, handles| {
2647 match this.inner.channel().read_etc(cx, bytes, handles) {
2648 std::task::Poll::Ready(Ok(())) => {}
2649 std::task::Poll::Pending => return std::task::Poll::Pending,
2650 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2651 this.is_terminated = true;
2652 return std::task::Poll::Ready(None);
2653 }
2654 std::task::Poll::Ready(Err(e)) => {
2655 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2656 e.into(),
2657 ))));
2658 }
2659 }
2660
2661 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2663
2664 std::task::Poll::Ready(Some(match header.ordinal {
2665 0x71873eed0baf16fd => {
2666 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2667 let mut req = fidl::new_empty!(
2668 NodeManagerAddNodeRequest,
2669 fidl::encoding::DefaultFuchsiaResourceDialect
2670 );
2671 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeManagerAddNodeRequest>(&header, _body_bytes, handles, &mut req)?;
2672 let control_handle = NodeManagerControlHandle { inner: this.inner.clone() };
2673 Ok(NodeManagerRequest::AddNode {
2674 node: req.node,
2675 controller: req.controller,
2676 node_ref: req.node_ref,
2677
2678 responder: NodeManagerAddNodeResponder {
2679 control_handle: std::mem::ManuallyDrop::new(control_handle),
2680 tx_id: header.tx_id,
2681 },
2682 })
2683 }
2684 _ if header.tx_id == 0
2685 && header
2686 .dynamic_flags()
2687 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2688 {
2689 Ok(NodeManagerRequest::_UnknownMethod {
2690 ordinal: header.ordinal,
2691 control_handle: NodeManagerControlHandle { inner: this.inner.clone() },
2692 method_type: fidl::MethodType::OneWay,
2693 })
2694 }
2695 _ if header
2696 .dynamic_flags()
2697 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2698 {
2699 this.inner.send_framework_err(
2700 fidl::encoding::FrameworkErr::UnknownMethod,
2701 header.tx_id,
2702 header.ordinal,
2703 header.dynamic_flags(),
2704 (bytes, handles),
2705 )?;
2706 Ok(NodeManagerRequest::_UnknownMethod {
2707 ordinal: header.ordinal,
2708 control_handle: NodeManagerControlHandle { inner: this.inner.clone() },
2709 method_type: fidl::MethodType::TwoWay,
2710 })
2711 }
2712 _ => Err(fidl::Error::UnknownOrdinal {
2713 ordinal: header.ordinal,
2714 protocol_name:
2715 <NodeManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2716 }),
2717 }))
2718 },
2719 )
2720 }
2721}
2722
2723#[derive(Debug)]
2725pub enum NodeManagerRequest {
2726 AddNode {
2728 node: Node2,
2729 controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
2730 node_ref: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2731 responder: NodeManagerAddNodeResponder,
2732 },
2733 #[non_exhaustive]
2735 _UnknownMethod {
2736 ordinal: u64,
2738 control_handle: NodeManagerControlHandle,
2739 method_type: fidl::MethodType,
2740 },
2741}
2742
2743impl NodeManagerRequest {
2744 #[allow(irrefutable_let_patterns)]
2745 pub fn into_add_node(
2746 self,
2747 ) -> Option<(
2748 Node2,
2749 fidl::endpoints::ServerEnd<NodeControllerMarker>,
2750 Option<fidl::endpoints::ServerEnd<NodeMarker>>,
2751 NodeManagerAddNodeResponder,
2752 )> {
2753 if let NodeManagerRequest::AddNode { node, controller, node_ref, responder } = self {
2754 Some((node, controller, node_ref, responder))
2755 } else {
2756 None
2757 }
2758 }
2759
2760 pub fn method_name(&self) -> &'static str {
2762 match *self {
2763 NodeManagerRequest::AddNode { .. } => "add_node",
2764 NodeManagerRequest::_UnknownMethod {
2765 method_type: fidl::MethodType::OneWay, ..
2766 } => "unknown one-way method",
2767 NodeManagerRequest::_UnknownMethod {
2768 method_type: fidl::MethodType::TwoWay, ..
2769 } => "unknown two-way method",
2770 }
2771 }
2772}
2773
2774#[derive(Debug, Clone)]
2775pub struct NodeManagerControlHandle {
2776 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2777}
2778
2779impl NodeManagerControlHandle {
2780 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
2781 self.inner.shutdown_with_epitaph(status.into())
2782 }
2783}
2784
2785impl fidl::endpoints::ControlHandle for NodeManagerControlHandle {
2786 fn shutdown(&self) {
2787 self.inner.shutdown()
2788 }
2789
2790 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
2791 self.inner.shutdown_with_epitaph(status)
2792 }
2793
2794 fn is_closed(&self) -> bool {
2795 self.inner.channel().is_closed()
2796 }
2797 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2798 self.inner.channel().on_closed()
2799 }
2800
2801 #[cfg(target_os = "fuchsia")]
2802 fn signal_peer(
2803 &self,
2804 clear_mask: zx::Signals,
2805 set_mask: zx::Signals,
2806 ) -> Result<(), zx_status::Status> {
2807 use fidl::Peered;
2808 self.inner.channel().signal_peer(clear_mask, set_mask)
2809 }
2810}
2811
2812impl NodeManagerControlHandle {}
2813
2814#[must_use = "FIDL methods require a response to be sent"]
2815#[derive(Debug)]
2816pub struct NodeManagerAddNodeResponder {
2817 control_handle: std::mem::ManuallyDrop<NodeManagerControlHandle>,
2818 tx_id: u32,
2819}
2820
2821impl std::ops::Drop for NodeManagerAddNodeResponder {
2825 fn drop(&mut self) {
2826 self.control_handle.shutdown();
2827 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2829 }
2830}
2831
2832impl fidl::endpoints::Responder for NodeManagerAddNodeResponder {
2833 type ControlHandle = NodeManagerControlHandle;
2834
2835 fn control_handle(&self) -> &NodeManagerControlHandle {
2836 &self.control_handle
2837 }
2838
2839 fn drop_without_shutdown(mut self) {
2840 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2842 std::mem::forget(self);
2844 }
2845}
2846
2847impl NodeManagerAddNodeResponder {
2848 pub fn send(self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
2852 let _result = self.send_raw(result);
2853 if _result.is_err() {
2854 self.control_handle.shutdown();
2855 }
2856 self.drop_without_shutdown();
2857 _result
2858 }
2859
2860 pub fn send_no_shutdown_on_err(
2862 self,
2863 mut result: Result<(), NodeError>,
2864 ) -> Result<(), fidl::Error> {
2865 let _result = self.send_raw(result);
2866 self.drop_without_shutdown();
2867 _result
2868 }
2869
2870 fn send_raw(&self, mut result: Result<(), NodeError>) -> Result<(), fidl::Error> {
2871 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2872 fidl::encoding::EmptyStruct,
2873 NodeError,
2874 >>(
2875 fidl::encoding::FlexibleResult::new(result),
2876 self.tx_id,
2877 0x71873eed0baf16fd,
2878 fidl::encoding::DynamicFlags::FLEXIBLE,
2879 )
2880 }
2881}
2882
2883#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2884pub struct ResourceControllerMarker;
2885
2886impl fidl::endpoints::ProtocolMarker for ResourceControllerMarker {
2887 type Proxy = ResourceControllerProxy;
2888 type RequestStream = ResourceControllerRequestStream;
2889 #[cfg(target_os = "fuchsia")]
2890 type SynchronousProxy = ResourceControllerSynchronousProxy;
2891
2892 const DEBUG_NAME: &'static str = "(anonymous) ResourceController";
2893}
2894
2895pub trait ResourceControllerProxyInterface: Send + Sync {
2896 fn r#remove(&self) -> Result<(), fidl::Error>;
2897}
2898#[derive(Debug)]
2899#[cfg(target_os = "fuchsia")]
2900pub struct ResourceControllerSynchronousProxy {
2901 client: fidl::client::sync::Client,
2902}
2903
2904#[cfg(target_os = "fuchsia")]
2905impl fidl::endpoints::SynchronousProxy for ResourceControllerSynchronousProxy {
2906 type Proxy = ResourceControllerProxy;
2907 type Protocol = ResourceControllerMarker;
2908
2909 fn from_channel(inner: fidl::Channel) -> Self {
2910 Self::new(inner)
2911 }
2912
2913 fn into_channel(self) -> fidl::Channel {
2914 self.client.into_channel()
2915 }
2916
2917 fn as_channel(&self) -> &fidl::Channel {
2918 self.client.as_channel()
2919 }
2920}
2921
2922#[cfg(target_os = "fuchsia")]
2923impl ResourceControllerSynchronousProxy {
2924 pub fn new(channel: fidl::Channel) -> Self {
2925 Self { client: fidl::client::sync::Client::new(channel) }
2926 }
2927
2928 pub fn into_channel(self) -> fidl::Channel {
2929 self.client.into_channel()
2930 }
2931
2932 pub fn wait_for_event(
2935 &self,
2936 deadline: zx::MonotonicInstant,
2937 ) -> Result<ResourceControllerEvent, fidl::Error> {
2938 ResourceControllerEvent::decode(
2939 self.client.wait_for_event::<ResourceControllerMarker>(deadline)?,
2940 )
2941 }
2942
2943 pub fn r#remove(&self) -> Result<(), fidl::Error> {
2945 self.client.send::<fidl::encoding::EmptyPayload>(
2946 (),
2947 0x1257bec06bde4f98,
2948 fidl::encoding::DynamicFlags::FLEXIBLE,
2949 )
2950 }
2951}
2952
2953#[cfg(target_os = "fuchsia")]
2954impl From<ResourceControllerSynchronousProxy> for zx::NullableHandle {
2955 fn from(value: ResourceControllerSynchronousProxy) -> Self {
2956 value.into_channel().into()
2957 }
2958}
2959
2960#[cfg(target_os = "fuchsia")]
2961impl From<fidl::Channel> for ResourceControllerSynchronousProxy {
2962 fn from(value: fidl::Channel) -> Self {
2963 Self::new(value)
2964 }
2965}
2966
2967#[cfg(target_os = "fuchsia")]
2968impl fidl::endpoints::FromClient for ResourceControllerSynchronousProxy {
2969 type Protocol = ResourceControllerMarker;
2970
2971 fn from_client(value: fidl::endpoints::ClientEnd<ResourceControllerMarker>) -> Self {
2972 Self::new(value.into_channel())
2973 }
2974}
2975
2976#[derive(Debug, Clone)]
2977pub struct ResourceControllerProxy {
2978 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2979}
2980
2981impl fidl::endpoints::Proxy for ResourceControllerProxy {
2982 type Protocol = ResourceControllerMarker;
2983
2984 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2985 Self::new(inner)
2986 }
2987
2988 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2989 self.client.into_channel().map_err(|client| Self { client })
2990 }
2991
2992 fn as_channel(&self) -> &::fidl::AsyncChannel {
2993 self.client.as_channel()
2994 }
2995}
2996
2997impl ResourceControllerProxy {
2998 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3000 let protocol_name =
3001 <ResourceControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3002 Self { client: fidl::client::Client::new(channel, protocol_name) }
3003 }
3004
3005 pub fn take_event_stream(&self) -> ResourceControllerEventStream {
3011 ResourceControllerEventStream { event_receiver: self.client.take_event_receiver() }
3012 }
3013
3014 pub fn r#remove(&self) -> Result<(), fidl::Error> {
3016 ResourceControllerProxyInterface::r#remove(self)
3017 }
3018}
3019
3020impl ResourceControllerProxyInterface for ResourceControllerProxy {
3021 fn r#remove(&self) -> Result<(), fidl::Error> {
3022 self.client.send::<fidl::encoding::EmptyPayload>(
3023 (),
3024 0x1257bec06bde4f98,
3025 fidl::encoding::DynamicFlags::FLEXIBLE,
3026 )
3027 }
3028}
3029
3030pub struct ResourceControllerEventStream {
3031 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3032}
3033
3034impl std::marker::Unpin for ResourceControllerEventStream {}
3035
3036impl futures::stream::FusedStream for ResourceControllerEventStream {
3037 fn is_terminated(&self) -> bool {
3038 self.event_receiver.is_terminated()
3039 }
3040}
3041
3042impl futures::Stream for ResourceControllerEventStream {
3043 type Item = Result<ResourceControllerEvent, fidl::Error>;
3044
3045 fn poll_next(
3046 mut self: std::pin::Pin<&mut Self>,
3047 cx: &mut std::task::Context<'_>,
3048 ) -> std::task::Poll<Option<Self::Item>> {
3049 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3050 &mut self.event_receiver,
3051 cx
3052 )?) {
3053 Some(buf) => std::task::Poll::Ready(Some(ResourceControllerEvent::decode(buf))),
3054 None => std::task::Poll::Ready(None),
3055 }
3056 }
3057}
3058
3059#[derive(Debug)]
3060pub enum ResourceControllerEvent {
3061 #[non_exhaustive]
3062 _UnknownEvent {
3063 ordinal: u64,
3065 },
3066}
3067
3068impl ResourceControllerEvent {
3069 fn decode(
3071 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3072 ) -> Result<ResourceControllerEvent, fidl::Error> {
3073 let (bytes, _handles) = buf.split_mut();
3074 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3075 debug_assert_eq!(tx_header.tx_id, 0);
3076 match tx_header.ordinal {
3077 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3078 Ok(ResourceControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
3079 }
3080 _ => Err(fidl::Error::UnknownOrdinal {
3081 ordinal: tx_header.ordinal,
3082 protocol_name:
3083 <ResourceControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3084 }),
3085 }
3086 }
3087}
3088
3089pub struct ResourceControllerRequestStream {
3091 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3092 is_terminated: bool,
3093}
3094
3095impl std::marker::Unpin for ResourceControllerRequestStream {}
3096
3097impl futures::stream::FusedStream for ResourceControllerRequestStream {
3098 fn is_terminated(&self) -> bool {
3099 self.is_terminated
3100 }
3101}
3102
3103impl fidl::endpoints::RequestStream for ResourceControllerRequestStream {
3104 type Protocol = ResourceControllerMarker;
3105 type ControlHandle = ResourceControllerControlHandle;
3106
3107 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3108 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3109 }
3110
3111 fn control_handle(&self) -> Self::ControlHandle {
3112 ResourceControllerControlHandle { inner: self.inner.clone() }
3113 }
3114
3115 fn into_inner(
3116 self,
3117 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3118 {
3119 (self.inner, self.is_terminated)
3120 }
3121
3122 fn from_inner(
3123 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3124 is_terminated: bool,
3125 ) -> Self {
3126 Self { inner, is_terminated }
3127 }
3128}
3129
3130impl futures::Stream for ResourceControllerRequestStream {
3131 type Item = Result<ResourceControllerRequest, fidl::Error>;
3132
3133 fn poll_next(
3134 mut self: std::pin::Pin<&mut Self>,
3135 cx: &mut std::task::Context<'_>,
3136 ) -> std::task::Poll<Option<Self::Item>> {
3137 let this = &mut *self;
3138 if this.inner.check_shutdown(cx) {
3139 this.is_terminated = true;
3140 return std::task::Poll::Ready(None);
3141 }
3142 if this.is_terminated {
3143 panic!("polled ResourceControllerRequestStream after completion");
3144 }
3145 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3146 |bytes, handles| {
3147 match this.inner.channel().read_etc(cx, bytes, handles) {
3148 std::task::Poll::Ready(Ok(())) => {}
3149 std::task::Poll::Pending => return std::task::Poll::Pending,
3150 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3151 this.is_terminated = true;
3152 return std::task::Poll::Ready(None);
3153 }
3154 std::task::Poll::Ready(Err(e)) => {
3155 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3156 e.into(),
3157 ))));
3158 }
3159 }
3160
3161 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3163
3164 std::task::Poll::Ready(Some(match header.ordinal {
3165 0x1257bec06bde4f98 => {
3166 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3167 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
3168 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
3169 let control_handle = ResourceControllerControlHandle {
3170 inner: this.inner.clone(),
3171 };
3172 Ok(ResourceControllerRequest::Remove {
3173 control_handle,
3174 })
3175 }
3176 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3177 Ok(ResourceControllerRequest::_UnknownMethod {
3178 ordinal: header.ordinal,
3179 control_handle: ResourceControllerControlHandle { inner: this.inner.clone() },
3180 method_type: fidl::MethodType::OneWay,
3181 })
3182 }
3183 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
3184 this.inner.send_framework_err(
3185 fidl::encoding::FrameworkErr::UnknownMethod,
3186 header.tx_id,
3187 header.ordinal,
3188 header.dynamic_flags(),
3189 (bytes, handles),
3190 )?;
3191 Ok(ResourceControllerRequest::_UnknownMethod {
3192 ordinal: header.ordinal,
3193 control_handle: ResourceControllerControlHandle { inner: this.inner.clone() },
3194 method_type: fidl::MethodType::TwoWay,
3195 })
3196 }
3197 _ => Err(fidl::Error::UnknownOrdinal {
3198 ordinal: header.ordinal,
3199 protocol_name: <ResourceControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3200 }),
3201 }))
3202 },
3203 )
3204 }
3205}
3206
3207#[derive(Debug)]
3209pub enum ResourceControllerRequest {
3210 Remove { control_handle: ResourceControllerControlHandle },
3212 #[non_exhaustive]
3214 _UnknownMethod {
3215 ordinal: u64,
3217 control_handle: ResourceControllerControlHandle,
3218 method_type: fidl::MethodType,
3219 },
3220}
3221
3222impl ResourceControllerRequest {
3223 #[allow(irrefutable_let_patterns)]
3224 pub fn into_remove(self) -> Option<(ResourceControllerControlHandle)> {
3225 if let ResourceControllerRequest::Remove { control_handle } = self {
3226 Some((control_handle))
3227 } else {
3228 None
3229 }
3230 }
3231
3232 pub fn method_name(&self) -> &'static str {
3234 match *self {
3235 ResourceControllerRequest::Remove { .. } => "remove",
3236 ResourceControllerRequest::_UnknownMethod {
3237 method_type: fidl::MethodType::OneWay,
3238 ..
3239 } => "unknown one-way method",
3240 ResourceControllerRequest::_UnknownMethod {
3241 method_type: fidl::MethodType::TwoWay,
3242 ..
3243 } => "unknown two-way method",
3244 }
3245 }
3246}
3247
3248#[derive(Debug, Clone)]
3249pub struct ResourceControllerControlHandle {
3250 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3251}
3252
3253impl ResourceControllerControlHandle {
3254 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
3255 self.inner.shutdown_with_epitaph(status.into())
3256 }
3257}
3258
3259impl fidl::endpoints::ControlHandle for ResourceControllerControlHandle {
3260 fn shutdown(&self) {
3261 self.inner.shutdown()
3262 }
3263
3264 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
3265 self.inner.shutdown_with_epitaph(status)
3266 }
3267
3268 fn is_closed(&self) -> bool {
3269 self.inner.channel().is_closed()
3270 }
3271 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3272 self.inner.channel().on_closed()
3273 }
3274
3275 #[cfg(target_os = "fuchsia")]
3276 fn signal_peer(
3277 &self,
3278 clear_mask: zx::Signals,
3279 set_mask: zx::Signals,
3280 ) -> Result<(), zx_status::Status> {
3281 use fidl::Peered;
3282 self.inner.channel().signal_peer(clear_mask, set_mask)
3283 }
3284}
3285
3286impl ResourceControllerControlHandle {}
3287
3288mod internal {
3289 use super::*;
3290
3291 impl fidl::encoding::ResourceTypeMarker for NodeAddChildRequest {
3292 type Borrowed<'a> = &'a mut Self;
3293 fn take_or_borrow<'a>(
3294 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3295 ) -> Self::Borrowed<'a> {
3296 value
3297 }
3298 }
3299
3300 unsafe impl fidl::encoding::TypeMarker for NodeAddChildRequest {
3301 type Owned = Self;
3302
3303 #[inline(always)]
3304 fn inline_align(_context: fidl::encoding::Context) -> usize {
3305 8
3306 }
3307
3308 #[inline(always)]
3309 fn inline_size(_context: fidl::encoding::Context) -> usize {
3310 24
3311 }
3312 }
3313
3314 unsafe impl
3315 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
3316 for &mut NodeAddChildRequest
3317 {
3318 #[inline]
3319 unsafe fn encode(
3320 self,
3321 encoder: &mut fidl::encoding::Encoder<
3322 '_,
3323 fidl::encoding::DefaultFuchsiaResourceDialect,
3324 >,
3325 offset: usize,
3326 _depth: fidl::encoding::Depth,
3327 ) -> fidl::Result<()> {
3328 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
3329 fidl::encoding::Encode::<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3331 (
3332 <NodeAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.args),
3333 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
3334 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node),
3335 ),
3336 encoder, offset, _depth
3337 )
3338 }
3339 }
3340 unsafe impl<
3341 T0: fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
3342 T1: fidl::encoding::Encode<
3343 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3344 fidl::encoding::DefaultFuchsiaResourceDialect,
3345 >,
3346 T2: fidl::encoding::Encode<
3347 fidl::encoding::Optional<
3348 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3349 >,
3350 fidl::encoding::DefaultFuchsiaResourceDialect,
3351 >,
3352 > fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
3353 for (T0, T1, T2)
3354 {
3355 #[inline]
3356 unsafe fn encode(
3357 self,
3358 encoder: &mut fidl::encoding::Encoder<
3359 '_,
3360 fidl::encoding::DefaultFuchsiaResourceDialect,
3361 >,
3362 offset: usize,
3363 depth: fidl::encoding::Depth,
3364 ) -> fidl::Result<()> {
3365 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
3366 self.0.encode(encoder, offset + 0, depth)?;
3370 self.1.encode(encoder, offset + 16, depth)?;
3371 self.2.encode(encoder, offset + 20, depth)?;
3372 Ok(())
3373 }
3374 }
3375
3376 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3377 for NodeAddChildRequest
3378 {
3379 #[inline(always)]
3380 fn new_empty() -> Self {
3381 Self {
3382 args: fidl::new_empty!(NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect),
3383 controller: fidl::new_empty!(
3384 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3385 fidl::encoding::DefaultFuchsiaResourceDialect
3386 ),
3387 node: fidl::new_empty!(
3388 fidl::encoding::Optional<
3389 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3390 >,
3391 fidl::encoding::DefaultFuchsiaResourceDialect
3392 ),
3393 }
3394 }
3395
3396 #[inline]
3397 unsafe fn decode(
3398 &mut self,
3399 decoder: &mut fidl::encoding::Decoder<
3400 '_,
3401 fidl::encoding::DefaultFuchsiaResourceDialect,
3402 >,
3403 offset: usize,
3404 _depth: fidl::encoding::Depth,
3405 ) -> fidl::Result<()> {
3406 decoder.debug_check_bounds::<Self>(offset);
3407 fidl::decode!(
3409 NodeAddArgs,
3410 fidl::encoding::DefaultFuchsiaResourceDialect,
3411 &mut self.args,
3412 decoder,
3413 offset + 0,
3414 _depth
3415 )?;
3416 fidl::decode!(
3417 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3418 fidl::encoding::DefaultFuchsiaResourceDialect,
3419 &mut self.controller,
3420 decoder,
3421 offset + 16,
3422 _depth
3423 )?;
3424 fidl::decode!(
3425 fidl::encoding::Optional<
3426 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3427 >,
3428 fidl::encoding::DefaultFuchsiaResourceDialect,
3429 &mut self.node,
3430 decoder,
3431 offset + 20,
3432 _depth
3433 )?;
3434 Ok(())
3435 }
3436 }
3437
3438 impl fidl::encoding::ResourceTypeMarker for NodeManagerAddNodeRequest {
3439 type Borrowed<'a> = &'a mut Self;
3440 fn take_or_borrow<'a>(
3441 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3442 ) -> Self::Borrowed<'a> {
3443 value
3444 }
3445 }
3446
3447 unsafe impl fidl::encoding::TypeMarker for NodeManagerAddNodeRequest {
3448 type Owned = Self;
3449
3450 #[inline(always)]
3451 fn inline_align(_context: fidl::encoding::Context) -> usize {
3452 8
3453 }
3454
3455 #[inline(always)]
3456 fn inline_size(_context: fidl::encoding::Context) -> usize {
3457 24
3458 }
3459 }
3460
3461 unsafe impl
3462 fidl::encoding::Encode<
3463 NodeManagerAddNodeRequest,
3464 fidl::encoding::DefaultFuchsiaResourceDialect,
3465 > for &mut NodeManagerAddNodeRequest
3466 {
3467 #[inline]
3468 unsafe fn encode(
3469 self,
3470 encoder: &mut fidl::encoding::Encoder<
3471 '_,
3472 fidl::encoding::DefaultFuchsiaResourceDialect,
3473 >,
3474 offset: usize,
3475 _depth: fidl::encoding::Depth,
3476 ) -> fidl::Result<()> {
3477 encoder.debug_check_bounds::<NodeManagerAddNodeRequest>(offset);
3478 fidl::encoding::Encode::<NodeManagerAddNodeRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3480 (
3481 <Node2 as fidl::encoding::ValueTypeMarker>::borrow(&self.node),
3482 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
3483 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node_ref),
3484 ),
3485 encoder, offset, _depth
3486 )
3487 }
3488 }
3489 unsafe impl<
3490 T0: fidl::encoding::Encode<Node2, fidl::encoding::DefaultFuchsiaResourceDialect>,
3491 T1: fidl::encoding::Encode<
3492 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3493 fidl::encoding::DefaultFuchsiaResourceDialect,
3494 >,
3495 T2: fidl::encoding::Encode<
3496 fidl::encoding::Optional<
3497 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3498 >,
3499 fidl::encoding::DefaultFuchsiaResourceDialect,
3500 >,
3501 >
3502 fidl::encoding::Encode<
3503 NodeManagerAddNodeRequest,
3504 fidl::encoding::DefaultFuchsiaResourceDialect,
3505 > for (T0, T1, T2)
3506 {
3507 #[inline]
3508 unsafe fn encode(
3509 self,
3510 encoder: &mut fidl::encoding::Encoder<
3511 '_,
3512 fidl::encoding::DefaultFuchsiaResourceDialect,
3513 >,
3514 offset: usize,
3515 depth: fidl::encoding::Depth,
3516 ) -> fidl::Result<()> {
3517 encoder.debug_check_bounds::<NodeManagerAddNodeRequest>(offset);
3518 self.0.encode(encoder, offset + 0, depth)?;
3522 self.1.encode(encoder, offset + 16, depth)?;
3523 self.2.encode(encoder, offset + 20, depth)?;
3524 Ok(())
3525 }
3526 }
3527
3528 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3529 for NodeManagerAddNodeRequest
3530 {
3531 #[inline(always)]
3532 fn new_empty() -> Self {
3533 Self {
3534 node: fidl::new_empty!(Node2, fidl::encoding::DefaultFuchsiaResourceDialect),
3535 controller: fidl::new_empty!(
3536 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3537 fidl::encoding::DefaultFuchsiaResourceDialect
3538 ),
3539 node_ref: fidl::new_empty!(
3540 fidl::encoding::Optional<
3541 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3542 >,
3543 fidl::encoding::DefaultFuchsiaResourceDialect
3544 ),
3545 }
3546 }
3547
3548 #[inline]
3549 unsafe fn decode(
3550 &mut self,
3551 decoder: &mut fidl::encoding::Decoder<
3552 '_,
3553 fidl::encoding::DefaultFuchsiaResourceDialect,
3554 >,
3555 offset: usize,
3556 _depth: fidl::encoding::Depth,
3557 ) -> fidl::Result<()> {
3558 decoder.debug_check_bounds::<Self>(offset);
3559 fidl::decode!(
3561 Node2,
3562 fidl::encoding::DefaultFuchsiaResourceDialect,
3563 &mut self.node,
3564 decoder,
3565 offset + 0,
3566 _depth
3567 )?;
3568 fidl::decode!(
3569 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
3570 fidl::encoding::DefaultFuchsiaResourceDialect,
3571 &mut self.controller,
3572 decoder,
3573 offset + 16,
3574 _depth
3575 )?;
3576 fidl::decode!(
3577 fidl::encoding::Optional<
3578 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
3579 >,
3580 fidl::encoding::DefaultFuchsiaResourceDialect,
3581 &mut self.node_ref,
3582 decoder,
3583 offset + 20,
3584 _depth
3585 )?;
3586 Ok(())
3587 }
3588 }
3589
3590 impl fidl::encoding::ResourceTypeMarker for NodeProvideResourceRequest {
3591 type Borrowed<'a> = &'a mut Self;
3592 fn take_or_borrow<'a>(
3593 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3594 ) -> Self::Borrowed<'a> {
3595 value
3596 }
3597 }
3598
3599 unsafe impl fidl::encoding::TypeMarker for NodeProvideResourceRequest {
3600 type Owned = Self;
3601
3602 #[inline(always)]
3603 fn inline_align(_context: fidl::encoding::Context) -> usize {
3604 8
3605 }
3606
3607 #[inline(always)]
3608 fn inline_size(_context: fidl::encoding::Context) -> usize {
3609 24
3610 }
3611 }
3612
3613 unsafe impl
3614 fidl::encoding::Encode<
3615 NodeProvideResourceRequest,
3616 fidl::encoding::DefaultFuchsiaResourceDialect,
3617 > for &mut NodeProvideResourceRequest
3618 {
3619 #[inline]
3620 unsafe fn encode(
3621 self,
3622 encoder: &mut fidl::encoding::Encoder<
3623 '_,
3624 fidl::encoding::DefaultFuchsiaResourceDialect,
3625 >,
3626 offset: usize,
3627 _depth: fidl::encoding::Depth,
3628 ) -> fidl::Result<()> {
3629 encoder.debug_check_bounds::<NodeProvideResourceRequest>(offset);
3630 fidl::encoding::Encode::<NodeProvideResourceRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
3632 (
3633 <ResourceArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.resource),
3634 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ResourceControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
3635 ),
3636 encoder, offset, _depth
3637 )
3638 }
3639 }
3640 unsafe impl<
3641 T0: fidl::encoding::Encode<ResourceArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
3642 T1: fidl::encoding::Encode<
3643 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ResourceControllerMarker>>,
3644 fidl::encoding::DefaultFuchsiaResourceDialect,
3645 >,
3646 >
3647 fidl::encoding::Encode<
3648 NodeProvideResourceRequest,
3649 fidl::encoding::DefaultFuchsiaResourceDialect,
3650 > for (T0, T1)
3651 {
3652 #[inline]
3653 unsafe fn encode(
3654 self,
3655 encoder: &mut fidl::encoding::Encoder<
3656 '_,
3657 fidl::encoding::DefaultFuchsiaResourceDialect,
3658 >,
3659 offset: usize,
3660 depth: fidl::encoding::Depth,
3661 ) -> fidl::Result<()> {
3662 encoder.debug_check_bounds::<NodeProvideResourceRequest>(offset);
3663 unsafe {
3666 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
3667 (ptr as *mut u64).write_unaligned(0);
3668 }
3669 self.0.encode(encoder, offset + 0, depth)?;
3671 self.1.encode(encoder, offset + 16, depth)?;
3672 Ok(())
3673 }
3674 }
3675
3676 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3677 for NodeProvideResourceRequest
3678 {
3679 #[inline(always)]
3680 fn new_empty() -> Self {
3681 Self {
3682 resource: fidl::new_empty!(
3683 ResourceArgs,
3684 fidl::encoding::DefaultFuchsiaResourceDialect
3685 ),
3686 controller: fidl::new_empty!(
3687 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ResourceControllerMarker>>,
3688 fidl::encoding::DefaultFuchsiaResourceDialect
3689 ),
3690 }
3691 }
3692
3693 #[inline]
3694 unsafe fn decode(
3695 &mut self,
3696 decoder: &mut fidl::encoding::Decoder<
3697 '_,
3698 fidl::encoding::DefaultFuchsiaResourceDialect,
3699 >,
3700 offset: usize,
3701 _depth: fidl::encoding::Depth,
3702 ) -> fidl::Result<()> {
3703 decoder.debug_check_bounds::<Self>(offset);
3704 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
3706 let padval = unsafe { (ptr as *const u64).read_unaligned() };
3707 let mask = 0xffffffff00000000u64;
3708 let maskedval = padval & mask;
3709 if maskedval != 0 {
3710 return Err(fidl::Error::NonZeroPadding {
3711 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
3712 });
3713 }
3714 fidl::decode!(
3715 ResourceArgs,
3716 fidl::encoding::DefaultFuchsiaResourceDialect,
3717 &mut self.resource,
3718 decoder,
3719 offset + 0,
3720 _depth
3721 )?;
3722 fidl::decode!(
3723 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<ResourceControllerMarker>>,
3724 fidl::encoding::DefaultFuchsiaResourceDialect,
3725 &mut self.controller,
3726 decoder,
3727 offset + 16,
3728 _depth
3729 )?;
3730 Ok(())
3731 }
3732 }
3733
3734 impl DevfsAddArgs {
3735 #[inline(always)]
3736 fn max_ordinal_present(&self) -> u64 {
3737 if let Some(_) = self.controller_connector {
3738 return 5;
3739 }
3740 if let Some(_) = self.connector_supports {
3741 return 4;
3742 }
3743 if let Some(_) = self.inspect {
3744 return 3;
3745 }
3746 if let Some(_) = self.class_name {
3747 return 2;
3748 }
3749 if let Some(_) = self.connector {
3750 return 1;
3751 }
3752 0
3753 }
3754 }
3755
3756 impl fidl::encoding::ResourceTypeMarker for DevfsAddArgs {
3757 type Borrowed<'a> = &'a mut Self;
3758 fn take_or_borrow<'a>(
3759 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3760 ) -> Self::Borrowed<'a> {
3761 value
3762 }
3763 }
3764
3765 unsafe impl fidl::encoding::TypeMarker for DevfsAddArgs {
3766 type Owned = Self;
3767
3768 #[inline(always)]
3769 fn inline_align(_context: fidl::encoding::Context) -> usize {
3770 8
3771 }
3772
3773 #[inline(always)]
3774 fn inline_size(_context: fidl::encoding::Context) -> usize {
3775 16
3776 }
3777 }
3778
3779 unsafe impl fidl::encoding::Encode<DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
3780 for &mut DevfsAddArgs
3781 {
3782 unsafe fn encode(
3783 self,
3784 encoder: &mut fidl::encoding::Encoder<
3785 '_,
3786 fidl::encoding::DefaultFuchsiaResourceDialect,
3787 >,
3788 offset: usize,
3789 mut depth: fidl::encoding::Depth,
3790 ) -> fidl::Result<()> {
3791 encoder.debug_check_bounds::<DevfsAddArgs>(offset);
3792 let max_ordinal: u64 = self.max_ordinal_present();
3794 encoder.write_num(max_ordinal, offset);
3795 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3796 if max_ordinal == 0 {
3798 return Ok(());
3799 }
3800 depth.increment()?;
3801 let envelope_size = 8;
3802 let bytes_len = max_ordinal as usize * envelope_size;
3803 #[allow(unused_variables)]
3804 let offset = encoder.out_of_line_offset(bytes_len);
3805 let mut _prev_end_offset: usize = 0;
3806 if 1 > max_ordinal {
3807 return Ok(());
3808 }
3809
3810 let cur_offset: usize = (1 - 1) * envelope_size;
3813
3814 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3816
3817 fidl::encoding::encode_in_envelope_optional::<
3822 fidl::encoding::Endpoint<
3823 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3824 >,
3825 fidl::encoding::DefaultFuchsiaResourceDialect,
3826 >(
3827 self.connector.as_mut().map(
3828 <fidl::encoding::Endpoint<
3829 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3830 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3831 ),
3832 encoder,
3833 offset + cur_offset,
3834 depth,
3835 )?;
3836
3837 _prev_end_offset = cur_offset + envelope_size;
3838 if 2 > max_ordinal {
3839 return Ok(());
3840 }
3841
3842 let cur_offset: usize = (2 - 1) * envelope_size;
3845
3846 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3848
3849 fidl::encoding::encode_in_envelope_optional::<
3854 fidl::encoding::BoundedString<255>,
3855 fidl::encoding::DefaultFuchsiaResourceDialect,
3856 >(
3857 self.class_name.as_ref().map(
3858 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
3859 ),
3860 encoder,
3861 offset + cur_offset,
3862 depth,
3863 )?;
3864
3865 _prev_end_offset = cur_offset + envelope_size;
3866 if 3 > max_ordinal {
3867 return Ok(());
3868 }
3869
3870 let cur_offset: usize = (3 - 1) * envelope_size;
3873
3874 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3876
3877 fidl::encoding::encode_in_envelope_optional::<
3882 fidl::encoding::HandleType<
3883 fidl::Vmo,
3884 { fidl::ObjectType::VMO.into_raw() },
3885 2147483648,
3886 >,
3887 fidl::encoding::DefaultFuchsiaResourceDialect,
3888 >(
3889 self.inspect.as_mut().map(
3890 <fidl::encoding::HandleType<
3891 fidl::Vmo,
3892 { fidl::ObjectType::VMO.into_raw() },
3893 2147483648,
3894 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3895 ),
3896 encoder,
3897 offset + cur_offset,
3898 depth,
3899 )?;
3900
3901 _prev_end_offset = cur_offset + envelope_size;
3902 if 4 > max_ordinal {
3903 return Ok(());
3904 }
3905
3906 let cur_offset: usize = (4 - 1) * envelope_size;
3909
3910 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3912
3913 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_device_fs::ConnectionType, fidl::encoding::DefaultFuchsiaResourceDialect>(
3918 self.connector_supports.as_ref().map(<fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::ValueTypeMarker>::borrow),
3919 encoder, offset + cur_offset, depth
3920 )?;
3921
3922 _prev_end_offset = cur_offset + envelope_size;
3923 if 5 > max_ordinal {
3924 return Ok(());
3925 }
3926
3927 let cur_offset: usize = (5 - 1) * envelope_size;
3930
3931 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3933
3934 fidl::encoding::encode_in_envelope_optional::<
3939 fidl::encoding::Endpoint<
3940 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3941 >,
3942 fidl::encoding::DefaultFuchsiaResourceDialect,
3943 >(
3944 self.controller_connector.as_mut().map(
3945 <fidl::encoding::Endpoint<
3946 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3947 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3948 ),
3949 encoder,
3950 offset + cur_offset,
3951 depth,
3952 )?;
3953
3954 _prev_end_offset = cur_offset + envelope_size;
3955
3956 Ok(())
3957 }
3958 }
3959
3960 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {
3961 #[inline(always)]
3962 fn new_empty() -> Self {
3963 Self::default()
3964 }
3965
3966 unsafe fn decode(
3967 &mut self,
3968 decoder: &mut fidl::encoding::Decoder<
3969 '_,
3970 fidl::encoding::DefaultFuchsiaResourceDialect,
3971 >,
3972 offset: usize,
3973 mut depth: fidl::encoding::Depth,
3974 ) -> fidl::Result<()> {
3975 decoder.debug_check_bounds::<Self>(offset);
3976 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3977 None => return Err(fidl::Error::NotNullable),
3978 Some(len) => len,
3979 };
3980 if len == 0 {
3982 return Ok(());
3983 };
3984 depth.increment()?;
3985 let envelope_size = 8;
3986 let bytes_len = len * envelope_size;
3987 let offset = decoder.out_of_line_offset(bytes_len)?;
3988 let mut _next_ordinal_to_read = 0;
3990 let mut next_offset = offset;
3991 let end_offset = offset + bytes_len;
3992 _next_ordinal_to_read += 1;
3993 if next_offset >= end_offset {
3994 return Ok(());
3995 }
3996
3997 while _next_ordinal_to_read < 1 {
3999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4000 _next_ordinal_to_read += 1;
4001 next_offset += envelope_size;
4002 }
4003
4004 let next_out_of_line = decoder.next_out_of_line();
4005 let handles_before = decoder.remaining_handles();
4006 if let Some((inlined, num_bytes, num_handles)) =
4007 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4008 {
4009 let member_inline_size = <fidl::encoding::Endpoint<
4010 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
4011 > as fidl::encoding::TypeMarker>::inline_size(
4012 decoder.context
4013 );
4014 if inlined != (member_inline_size <= 4) {
4015 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4016 }
4017 let inner_offset;
4018 let mut inner_depth = depth.clone();
4019 if inlined {
4020 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4021 inner_offset = next_offset;
4022 } else {
4023 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4024 inner_depth.increment()?;
4025 }
4026 let val_ref = self.connector.get_or_insert_with(|| {
4027 fidl::new_empty!(
4028 fidl::encoding::Endpoint<
4029 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
4030 >,
4031 fidl::encoding::DefaultFuchsiaResourceDialect
4032 )
4033 });
4034 fidl::decode!(
4035 fidl::encoding::Endpoint<
4036 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
4037 >,
4038 fidl::encoding::DefaultFuchsiaResourceDialect,
4039 val_ref,
4040 decoder,
4041 inner_offset,
4042 inner_depth
4043 )?;
4044 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4045 {
4046 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4047 }
4048 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4049 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4050 }
4051 }
4052
4053 next_offset += envelope_size;
4054 _next_ordinal_to_read += 1;
4055 if next_offset >= end_offset {
4056 return Ok(());
4057 }
4058
4059 while _next_ordinal_to_read < 2 {
4061 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4062 _next_ordinal_to_read += 1;
4063 next_offset += envelope_size;
4064 }
4065
4066 let next_out_of_line = decoder.next_out_of_line();
4067 let handles_before = decoder.remaining_handles();
4068 if let Some((inlined, num_bytes, num_handles)) =
4069 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4070 {
4071 let member_inline_size =
4072 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
4073 decoder.context,
4074 );
4075 if inlined != (member_inline_size <= 4) {
4076 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4077 }
4078 let inner_offset;
4079 let mut inner_depth = depth.clone();
4080 if inlined {
4081 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4082 inner_offset = next_offset;
4083 } else {
4084 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4085 inner_depth.increment()?;
4086 }
4087 let val_ref = self.class_name.get_or_insert_with(|| {
4088 fidl::new_empty!(
4089 fidl::encoding::BoundedString<255>,
4090 fidl::encoding::DefaultFuchsiaResourceDialect
4091 )
4092 });
4093 fidl::decode!(
4094 fidl::encoding::BoundedString<255>,
4095 fidl::encoding::DefaultFuchsiaResourceDialect,
4096 val_ref,
4097 decoder,
4098 inner_offset,
4099 inner_depth
4100 )?;
4101 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4102 {
4103 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4104 }
4105 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4106 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4107 }
4108 }
4109
4110 next_offset += envelope_size;
4111 _next_ordinal_to_read += 1;
4112 if next_offset >= end_offset {
4113 return Ok(());
4114 }
4115
4116 while _next_ordinal_to_read < 3 {
4118 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4119 _next_ordinal_to_read += 1;
4120 next_offset += envelope_size;
4121 }
4122
4123 let next_out_of_line = decoder.next_out_of_line();
4124 let handles_before = decoder.remaining_handles();
4125 if let Some((inlined, num_bytes, num_handles)) =
4126 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4127 {
4128 let member_inline_size = <fidl::encoding::HandleType<
4129 fidl::Vmo,
4130 { fidl::ObjectType::VMO.into_raw() },
4131 2147483648,
4132 > as fidl::encoding::TypeMarker>::inline_size(
4133 decoder.context
4134 );
4135 if inlined != (member_inline_size <= 4) {
4136 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4137 }
4138 let inner_offset;
4139 let mut inner_depth = depth.clone();
4140 if inlined {
4141 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4142 inner_offset = next_offset;
4143 } else {
4144 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4145 inner_depth.increment()?;
4146 }
4147 let val_ref =
4148 self.inspect.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4149 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4150 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4151 {
4152 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4153 }
4154 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4155 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4156 }
4157 }
4158
4159 next_offset += envelope_size;
4160 _next_ordinal_to_read += 1;
4161 if next_offset >= end_offset {
4162 return Ok(());
4163 }
4164
4165 while _next_ordinal_to_read < 4 {
4167 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4168 _next_ordinal_to_read += 1;
4169 next_offset += envelope_size;
4170 }
4171
4172 let next_out_of_line = decoder.next_out_of_line();
4173 let handles_before = decoder.remaining_handles();
4174 if let Some((inlined, num_bytes, num_handles)) =
4175 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4176 {
4177 let member_inline_size = <fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4178 if inlined != (member_inline_size <= 4) {
4179 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4180 }
4181 let inner_offset;
4182 let mut inner_depth = depth.clone();
4183 if inlined {
4184 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4185 inner_offset = next_offset;
4186 } else {
4187 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4188 inner_depth.increment()?;
4189 }
4190 let val_ref = self.connector_supports.get_or_insert_with(|| {
4191 fidl::new_empty!(
4192 fidl_fuchsia_device_fs::ConnectionType,
4193 fidl::encoding::DefaultFuchsiaResourceDialect
4194 )
4195 });
4196 fidl::decode!(
4197 fidl_fuchsia_device_fs::ConnectionType,
4198 fidl::encoding::DefaultFuchsiaResourceDialect,
4199 val_ref,
4200 decoder,
4201 inner_offset,
4202 inner_depth
4203 )?;
4204 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4205 {
4206 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4207 }
4208 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4209 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4210 }
4211 }
4212
4213 next_offset += envelope_size;
4214 _next_ordinal_to_read += 1;
4215 if next_offset >= end_offset {
4216 return Ok(());
4217 }
4218
4219 while _next_ordinal_to_read < 5 {
4221 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4222 _next_ordinal_to_read += 1;
4223 next_offset += envelope_size;
4224 }
4225
4226 let next_out_of_line = decoder.next_out_of_line();
4227 let handles_before = decoder.remaining_handles();
4228 if let Some((inlined, num_bytes, num_handles)) =
4229 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4230 {
4231 let member_inline_size = <fidl::encoding::Endpoint<
4232 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
4233 > as fidl::encoding::TypeMarker>::inline_size(
4234 decoder.context
4235 );
4236 if inlined != (member_inline_size <= 4) {
4237 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4238 }
4239 let inner_offset;
4240 let mut inner_depth = depth.clone();
4241 if inlined {
4242 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4243 inner_offset = next_offset;
4244 } else {
4245 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4246 inner_depth.increment()?;
4247 }
4248 let val_ref = self.controller_connector.get_or_insert_with(|| {
4249 fidl::new_empty!(
4250 fidl::encoding::Endpoint<
4251 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
4252 >,
4253 fidl::encoding::DefaultFuchsiaResourceDialect
4254 )
4255 });
4256 fidl::decode!(
4257 fidl::encoding::Endpoint<
4258 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
4259 >,
4260 fidl::encoding::DefaultFuchsiaResourceDialect,
4261 val_ref,
4262 decoder,
4263 inner_offset,
4264 inner_depth
4265 )?;
4266 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4267 {
4268 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4269 }
4270 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4271 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4272 }
4273 }
4274
4275 next_offset += envelope_size;
4276
4277 while next_offset < end_offset {
4279 _next_ordinal_to_read += 1;
4280 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4281 next_offset += envelope_size;
4282 }
4283
4284 Ok(())
4285 }
4286 }
4287
4288 impl DriverStartArgs {
4289 #[inline(always)]
4290 fn max_ordinal_present(&self) -> u64 {
4291 if let Some(_) = self.log_sink {
4292 return 15;
4293 }
4294 if let Some(_) = self.power_element_args {
4295 return 14;
4296 }
4297 if let Some(_) = self.vmar {
4298 return 13;
4299 }
4300 if let Some(_) = self.node_properties_2 {
4301 return 12;
4302 }
4303 if let Some(_) = self.node_token {
4304 return 11;
4305 }
4306 if let Some(_) = self.node_offers {
4307 return 10;
4308 }
4309 if let Some(_) = self.node_name {
4310 return 8;
4311 }
4312 if let Some(_) = self.config {
4313 return 7;
4314 }
4315 if let Some(_) = self.outgoing_dir {
4316 return 6;
4317 }
4318 if let Some(_) = self.incoming {
4319 return 5;
4320 }
4321 if let Some(_) = self.program {
4322 return 4;
4323 }
4324 if let Some(_) = self.url {
4325 return 3;
4326 }
4327 if let Some(_) = self.symbols {
4328 return 2;
4329 }
4330 if let Some(_) = self.node {
4331 return 1;
4332 }
4333 0
4334 }
4335 }
4336
4337 impl fidl::encoding::ResourceTypeMarker for DriverStartArgs {
4338 type Borrowed<'a> = &'a mut Self;
4339 fn take_or_borrow<'a>(
4340 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4341 ) -> Self::Borrowed<'a> {
4342 value
4343 }
4344 }
4345
4346 unsafe impl fidl::encoding::TypeMarker for DriverStartArgs {
4347 type Owned = Self;
4348
4349 #[inline(always)]
4350 fn inline_align(_context: fidl::encoding::Context) -> usize {
4351 8
4352 }
4353
4354 #[inline(always)]
4355 fn inline_size(_context: fidl::encoding::Context) -> usize {
4356 16
4357 }
4358 }
4359
4360 unsafe impl
4361 fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
4362 for &mut DriverStartArgs
4363 {
4364 unsafe fn encode(
4365 self,
4366 encoder: &mut fidl::encoding::Encoder<
4367 '_,
4368 fidl::encoding::DefaultFuchsiaResourceDialect,
4369 >,
4370 offset: usize,
4371 mut depth: fidl::encoding::Depth,
4372 ) -> fidl::Result<()> {
4373 encoder.debug_check_bounds::<DriverStartArgs>(offset);
4374 let max_ordinal: u64 = self.max_ordinal_present();
4376 encoder.write_num(max_ordinal, offset);
4377 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4378 if max_ordinal == 0 {
4380 return Ok(());
4381 }
4382 depth.increment()?;
4383 let envelope_size = 8;
4384 let bytes_len = max_ordinal as usize * envelope_size;
4385 #[allow(unused_variables)]
4386 let offset = encoder.out_of_line_offset(bytes_len);
4387 let mut _prev_end_offset: usize = 0;
4388 if 1 > max_ordinal {
4389 return Ok(());
4390 }
4391
4392 let cur_offset: usize = (1 - 1) * envelope_size;
4395
4396 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4398
4399 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4404 self.node.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4405 encoder, offset + cur_offset, depth
4406 )?;
4407
4408 _prev_end_offset = cur_offset + envelope_size;
4409 if 2 > max_ordinal {
4410 return Ok(());
4411 }
4412
4413 let cur_offset: usize = (2 - 1) * envelope_size;
4416
4417 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4419
4420 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4425 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4426 encoder, offset + cur_offset, depth
4427 )?;
4428
4429 _prev_end_offset = cur_offset + envelope_size;
4430 if 3 > max_ordinal {
4431 return Ok(());
4432 }
4433
4434 let cur_offset: usize = (3 - 1) * envelope_size;
4437
4438 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4440
4441 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4446 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
4447 encoder, offset + cur_offset, depth
4448 )?;
4449
4450 _prev_end_offset = cur_offset + envelope_size;
4451 if 4 > max_ordinal {
4452 return Ok(());
4453 }
4454
4455 let cur_offset: usize = (4 - 1) * envelope_size;
4458
4459 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4461
4462 fidl::encoding::encode_in_envelope_optional::<
4467 fidl_fuchsia_data::Dictionary,
4468 fidl::encoding::DefaultFuchsiaResourceDialect,
4469 >(
4470 self.program.as_ref().map(
4471 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
4472 ),
4473 encoder,
4474 offset + cur_offset,
4475 depth,
4476 )?;
4477
4478 _prev_end_offset = cur_offset + envelope_size;
4479 if 5 > max_ordinal {
4480 return Ok(());
4481 }
4482
4483 let cur_offset: usize = (5 - 1) * envelope_size;
4486
4487 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4489
4490 fidl::encoding::encode_in_envelope_optional::<
4495 fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>,
4496 fidl::encoding::DefaultFuchsiaResourceDialect,
4497 >(
4498 self.incoming.as_mut().map(
4499 <fidl::encoding::Vector<
4500 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
4501 32,
4502 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4503 ),
4504 encoder,
4505 offset + cur_offset,
4506 depth,
4507 )?;
4508
4509 _prev_end_offset = cur_offset + envelope_size;
4510 if 6 > max_ordinal {
4511 return Ok(());
4512 }
4513
4514 let cur_offset: usize = (6 - 1) * envelope_size;
4517
4518 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4520
4521 fidl::encoding::encode_in_envelope_optional::<
4526 fidl::encoding::Endpoint<
4527 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4528 >,
4529 fidl::encoding::DefaultFuchsiaResourceDialect,
4530 >(
4531 self.outgoing_dir.as_mut().map(
4532 <fidl::encoding::Endpoint<
4533 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4534 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4535 ),
4536 encoder,
4537 offset + cur_offset,
4538 depth,
4539 )?;
4540
4541 _prev_end_offset = cur_offset + envelope_size;
4542 if 7 > max_ordinal {
4543 return Ok(());
4544 }
4545
4546 let cur_offset: usize = (7 - 1) * envelope_size;
4549
4550 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4552
4553 fidl::encoding::encode_in_envelope_optional::<
4558 fidl::encoding::HandleType<
4559 fidl::Vmo,
4560 { fidl::ObjectType::VMO.into_raw() },
4561 2147483648,
4562 >,
4563 fidl::encoding::DefaultFuchsiaResourceDialect,
4564 >(
4565 self.config.as_mut().map(
4566 <fidl::encoding::HandleType<
4567 fidl::Vmo,
4568 { fidl::ObjectType::VMO.into_raw() },
4569 2147483648,
4570 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4571 ),
4572 encoder,
4573 offset + cur_offset,
4574 depth,
4575 )?;
4576
4577 _prev_end_offset = cur_offset + envelope_size;
4578 if 8 > max_ordinal {
4579 return Ok(());
4580 }
4581
4582 let cur_offset: usize = (8 - 1) * envelope_size;
4585
4586 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4588
4589 fidl::encoding::encode_in_envelope_optional::<
4594 fidl::encoding::UnboundedString,
4595 fidl::encoding::DefaultFuchsiaResourceDialect,
4596 >(
4597 self.node_name.as_ref().map(
4598 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
4599 ),
4600 encoder,
4601 offset + cur_offset,
4602 depth,
4603 )?;
4604
4605 _prev_end_offset = cur_offset + envelope_size;
4606 if 10 > max_ordinal {
4607 return Ok(());
4608 }
4609
4610 let cur_offset: usize = (10 - 1) * envelope_size;
4613
4614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4616
4617 fidl::encoding::encode_in_envelope_optional::<
4622 fidl::encoding::Vector<Offer, 128>,
4623 fidl::encoding::DefaultFuchsiaResourceDialect,
4624 >(
4625 self.node_offers.as_ref().map(
4626 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
4627 ),
4628 encoder,
4629 offset + cur_offset,
4630 depth,
4631 )?;
4632
4633 _prev_end_offset = cur_offset + envelope_size;
4634 if 11 > max_ordinal {
4635 return Ok(());
4636 }
4637
4638 let cur_offset: usize = (11 - 1) * envelope_size;
4641
4642 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4644
4645 fidl::encoding::encode_in_envelope_optional::<
4650 fidl::encoding::HandleType<
4651 fidl::Event,
4652 { fidl::ObjectType::EVENT.into_raw() },
4653 2147483648,
4654 >,
4655 fidl::encoding::DefaultFuchsiaResourceDialect,
4656 >(
4657 self.node_token.as_mut().map(
4658 <fidl::encoding::HandleType<
4659 fidl::Event,
4660 { fidl::ObjectType::EVENT.into_raw() },
4661 2147483648,
4662 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4663 ),
4664 encoder,
4665 offset + cur_offset,
4666 depth,
4667 )?;
4668
4669 _prev_end_offset = cur_offset + envelope_size;
4670 if 12 > max_ordinal {
4671 return Ok(());
4672 }
4673
4674 let cur_offset: usize = (12 - 1) * envelope_size;
4677
4678 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4680
4681 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry2>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4686 self.node_properties_2.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::ValueTypeMarker>::borrow),
4687 encoder, offset + cur_offset, depth
4688 )?;
4689
4690 _prev_end_offset = cur_offset + envelope_size;
4691 if 13 > max_ordinal {
4692 return Ok(());
4693 }
4694
4695 let cur_offset: usize = (13 - 1) * envelope_size;
4698
4699 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4701
4702 fidl::encoding::encode_in_envelope_optional::<
4707 fidl::encoding::HandleType<
4708 fidl::Vmar,
4709 { fidl::ObjectType::VMAR.into_raw() },
4710 2147483648,
4711 >,
4712 fidl::encoding::DefaultFuchsiaResourceDialect,
4713 >(
4714 self.vmar.as_mut().map(
4715 <fidl::encoding::HandleType<
4716 fidl::Vmar,
4717 { fidl::ObjectType::VMAR.into_raw() },
4718 2147483648,
4719 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4720 ),
4721 encoder,
4722 offset + cur_offset,
4723 depth,
4724 )?;
4725
4726 _prev_end_offset = cur_offset + envelope_size;
4727 if 14 > max_ordinal {
4728 return Ok(());
4729 }
4730
4731 let cur_offset: usize = (14 - 1) * envelope_size;
4734
4735 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4737
4738 fidl::encoding::encode_in_envelope_optional::<
4743 PowerElementArgs,
4744 fidl::encoding::DefaultFuchsiaResourceDialect,
4745 >(
4746 self.power_element_args
4747 .as_mut()
4748 .map(<PowerElementArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4749 encoder,
4750 offset + cur_offset,
4751 depth,
4752 )?;
4753
4754 _prev_end_offset = cur_offset + envelope_size;
4755 if 15 > max_ordinal {
4756 return Ok(());
4757 }
4758
4759 let cur_offset: usize = (15 - 1) * envelope_size;
4762
4763 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4765
4766 fidl::encoding::encode_in_envelope_optional::<
4771 fidl::encoding::Endpoint<
4772 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4773 >,
4774 fidl::encoding::DefaultFuchsiaResourceDialect,
4775 >(
4776 self.log_sink.as_mut().map(
4777 <fidl::encoding::Endpoint<
4778 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4779 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
4780 ),
4781 encoder,
4782 offset + cur_offset,
4783 depth,
4784 )?;
4785
4786 _prev_end_offset = cur_offset + envelope_size;
4787
4788 Ok(())
4789 }
4790 }
4791
4792 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4793 for DriverStartArgs
4794 {
4795 #[inline(always)]
4796 fn new_empty() -> Self {
4797 Self::default()
4798 }
4799
4800 unsafe fn decode(
4801 &mut self,
4802 decoder: &mut fidl::encoding::Decoder<
4803 '_,
4804 fidl::encoding::DefaultFuchsiaResourceDialect,
4805 >,
4806 offset: usize,
4807 mut depth: fidl::encoding::Depth,
4808 ) -> fidl::Result<()> {
4809 decoder.debug_check_bounds::<Self>(offset);
4810 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4811 None => return Err(fidl::Error::NotNullable),
4812 Some(len) => len,
4813 };
4814 if len == 0 {
4816 return Ok(());
4817 };
4818 depth.increment()?;
4819 let envelope_size = 8;
4820 let bytes_len = len * envelope_size;
4821 let offset = decoder.out_of_line_offset(bytes_len)?;
4822 let mut _next_ordinal_to_read = 0;
4824 let mut next_offset = offset;
4825 let end_offset = offset + bytes_len;
4826 _next_ordinal_to_read += 1;
4827 if next_offset >= end_offset {
4828 return Ok(());
4829 }
4830
4831 while _next_ordinal_to_read < 1 {
4833 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4834 _next_ordinal_to_read += 1;
4835 next_offset += envelope_size;
4836 }
4837
4838 let next_out_of_line = decoder.next_out_of_line();
4839 let handles_before = decoder.remaining_handles();
4840 if let Some((inlined, num_bytes, num_handles)) =
4841 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4842 {
4843 let member_inline_size = <fidl::encoding::Endpoint<
4844 fidl::endpoints::ClientEnd<NodeMarker>,
4845 > as fidl::encoding::TypeMarker>::inline_size(
4846 decoder.context
4847 );
4848 if inlined != (member_inline_size <= 4) {
4849 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4850 }
4851 let inner_offset;
4852 let mut inner_depth = depth.clone();
4853 if inlined {
4854 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4855 inner_offset = next_offset;
4856 } else {
4857 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4858 inner_depth.increment()?;
4859 }
4860 let val_ref = self.node.get_or_insert_with(|| {
4861 fidl::new_empty!(
4862 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
4863 fidl::encoding::DefaultFuchsiaResourceDialect
4864 )
4865 });
4866 fidl::decode!(
4867 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
4868 fidl::encoding::DefaultFuchsiaResourceDialect,
4869 val_ref,
4870 decoder,
4871 inner_offset,
4872 inner_depth
4873 )?;
4874 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4875 {
4876 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4877 }
4878 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4879 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4880 }
4881 }
4882
4883 next_offset += envelope_size;
4884 _next_ordinal_to_read += 1;
4885 if next_offset >= end_offset {
4886 return Ok(());
4887 }
4888
4889 while _next_ordinal_to_read < 2 {
4891 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4892 _next_ordinal_to_read += 1;
4893 next_offset += envelope_size;
4894 }
4895
4896 let next_out_of_line = decoder.next_out_of_line();
4897 let handles_before = decoder.remaining_handles();
4898 if let Some((inlined, num_bytes, num_handles)) =
4899 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4900 {
4901 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4902 if inlined != (member_inline_size <= 4) {
4903 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4904 }
4905 let inner_offset;
4906 let mut inner_depth = depth.clone();
4907 if inlined {
4908 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4909 inner_offset = next_offset;
4910 } else {
4911 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4912 inner_depth.increment()?;
4913 }
4914 let val_ref =
4915 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4916 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4918 {
4919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4920 }
4921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4923 }
4924 }
4925
4926 next_offset += envelope_size;
4927 _next_ordinal_to_read += 1;
4928 if next_offset >= end_offset {
4929 return Ok(());
4930 }
4931
4932 while _next_ordinal_to_read < 3 {
4934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4935 _next_ordinal_to_read += 1;
4936 next_offset += envelope_size;
4937 }
4938
4939 let next_out_of_line = decoder.next_out_of_line();
4940 let handles_before = decoder.remaining_handles();
4941 if let Some((inlined, num_bytes, num_handles)) =
4942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4943 {
4944 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4945 if inlined != (member_inline_size <= 4) {
4946 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4947 }
4948 let inner_offset;
4949 let mut inner_depth = depth.clone();
4950 if inlined {
4951 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4952 inner_offset = next_offset;
4953 } else {
4954 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4955 inner_depth.increment()?;
4956 }
4957 let val_ref = self.url.get_or_insert_with(|| {
4958 fidl::new_empty!(
4959 fidl::encoding::BoundedString<4096>,
4960 fidl::encoding::DefaultFuchsiaResourceDialect
4961 )
4962 });
4963 fidl::decode!(
4964 fidl::encoding::BoundedString<4096>,
4965 fidl::encoding::DefaultFuchsiaResourceDialect,
4966 val_ref,
4967 decoder,
4968 inner_offset,
4969 inner_depth
4970 )?;
4971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4972 {
4973 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4974 }
4975 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4976 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4977 }
4978 }
4979
4980 next_offset += envelope_size;
4981 _next_ordinal_to_read += 1;
4982 if next_offset >= end_offset {
4983 return Ok(());
4984 }
4985
4986 while _next_ordinal_to_read < 4 {
4988 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4989 _next_ordinal_to_read += 1;
4990 next_offset += envelope_size;
4991 }
4992
4993 let next_out_of_line = decoder.next_out_of_line();
4994 let handles_before = decoder.remaining_handles();
4995 if let Some((inlined, num_bytes, num_handles)) =
4996 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4997 {
4998 let member_inline_size =
4999 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
5000 decoder.context,
5001 );
5002 if inlined != (member_inline_size <= 4) {
5003 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5004 }
5005 let inner_offset;
5006 let mut inner_depth = depth.clone();
5007 if inlined {
5008 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5009 inner_offset = next_offset;
5010 } else {
5011 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5012 inner_depth.increment()?;
5013 }
5014 let val_ref = self.program.get_or_insert_with(|| {
5015 fidl::new_empty!(
5016 fidl_fuchsia_data::Dictionary,
5017 fidl::encoding::DefaultFuchsiaResourceDialect
5018 )
5019 });
5020 fidl::decode!(
5021 fidl_fuchsia_data::Dictionary,
5022 fidl::encoding::DefaultFuchsiaResourceDialect,
5023 val_ref,
5024 decoder,
5025 inner_offset,
5026 inner_depth
5027 )?;
5028 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5029 {
5030 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5031 }
5032 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5033 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5034 }
5035 }
5036
5037 next_offset += envelope_size;
5038 _next_ordinal_to_read += 1;
5039 if next_offset >= end_offset {
5040 return Ok(());
5041 }
5042
5043 while _next_ordinal_to_read < 5 {
5045 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5046 _next_ordinal_to_read += 1;
5047 next_offset += envelope_size;
5048 }
5049
5050 let next_out_of_line = decoder.next_out_of_line();
5051 let handles_before = decoder.remaining_handles();
5052 if let Some((inlined, num_bytes, num_handles)) =
5053 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5054 {
5055 let member_inline_size = <fidl::encoding::Vector<
5056 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
5057 32,
5058 > as fidl::encoding::TypeMarker>::inline_size(
5059 decoder.context
5060 );
5061 if inlined != (member_inline_size <= 4) {
5062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5063 }
5064 let inner_offset;
5065 let mut inner_depth = depth.clone();
5066 if inlined {
5067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5068 inner_offset = next_offset;
5069 } else {
5070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5071 inner_depth.increment()?;
5072 }
5073 let val_ref =
5074 self.incoming.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
5075 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5076 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5077 {
5078 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5079 }
5080 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5081 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5082 }
5083 }
5084
5085 next_offset += envelope_size;
5086 _next_ordinal_to_read += 1;
5087 if next_offset >= end_offset {
5088 return Ok(());
5089 }
5090
5091 while _next_ordinal_to_read < 6 {
5093 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5094 _next_ordinal_to_read += 1;
5095 next_offset += envelope_size;
5096 }
5097
5098 let next_out_of_line = decoder.next_out_of_line();
5099 let handles_before = decoder.remaining_handles();
5100 if let Some((inlined, num_bytes, num_handles)) =
5101 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5102 {
5103 let member_inline_size = <fidl::encoding::Endpoint<
5104 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
5105 > as fidl::encoding::TypeMarker>::inline_size(
5106 decoder.context
5107 );
5108 if inlined != (member_inline_size <= 4) {
5109 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5110 }
5111 let inner_offset;
5112 let mut inner_depth = depth.clone();
5113 if inlined {
5114 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5115 inner_offset = next_offset;
5116 } else {
5117 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5118 inner_depth.increment()?;
5119 }
5120 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
5121 fidl::new_empty!(
5122 fidl::encoding::Endpoint<
5123 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
5124 >,
5125 fidl::encoding::DefaultFuchsiaResourceDialect
5126 )
5127 });
5128 fidl::decode!(
5129 fidl::encoding::Endpoint<
5130 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
5131 >,
5132 fidl::encoding::DefaultFuchsiaResourceDialect,
5133 val_ref,
5134 decoder,
5135 inner_offset,
5136 inner_depth
5137 )?;
5138 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5139 {
5140 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5141 }
5142 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5143 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5144 }
5145 }
5146
5147 next_offset += envelope_size;
5148 _next_ordinal_to_read += 1;
5149 if next_offset >= end_offset {
5150 return Ok(());
5151 }
5152
5153 while _next_ordinal_to_read < 7 {
5155 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5156 _next_ordinal_to_read += 1;
5157 next_offset += envelope_size;
5158 }
5159
5160 let next_out_of_line = decoder.next_out_of_line();
5161 let handles_before = decoder.remaining_handles();
5162 if let Some((inlined, num_bytes, num_handles)) =
5163 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5164 {
5165 let member_inline_size = <fidl::encoding::HandleType<
5166 fidl::Vmo,
5167 { fidl::ObjectType::VMO.into_raw() },
5168 2147483648,
5169 > as fidl::encoding::TypeMarker>::inline_size(
5170 decoder.context
5171 );
5172 if inlined != (member_inline_size <= 4) {
5173 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5174 }
5175 let inner_offset;
5176 let mut inner_depth = depth.clone();
5177 if inlined {
5178 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5179 inner_offset = next_offset;
5180 } else {
5181 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5182 inner_depth.increment()?;
5183 }
5184 let val_ref =
5185 self.config.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5186 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5187 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5188 {
5189 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5190 }
5191 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5192 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5193 }
5194 }
5195
5196 next_offset += envelope_size;
5197 _next_ordinal_to_read += 1;
5198 if next_offset >= end_offset {
5199 return Ok(());
5200 }
5201
5202 while _next_ordinal_to_read < 8 {
5204 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5205 _next_ordinal_to_read += 1;
5206 next_offset += envelope_size;
5207 }
5208
5209 let next_out_of_line = decoder.next_out_of_line();
5210 let handles_before = decoder.remaining_handles();
5211 if let Some((inlined, num_bytes, num_handles)) =
5212 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5213 {
5214 let member_inline_size =
5215 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
5216 decoder.context,
5217 );
5218 if inlined != (member_inline_size <= 4) {
5219 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5220 }
5221 let inner_offset;
5222 let mut inner_depth = depth.clone();
5223 if inlined {
5224 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5225 inner_offset = next_offset;
5226 } else {
5227 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5228 inner_depth.increment()?;
5229 }
5230 let val_ref = self.node_name.get_or_insert_with(|| {
5231 fidl::new_empty!(
5232 fidl::encoding::UnboundedString,
5233 fidl::encoding::DefaultFuchsiaResourceDialect
5234 )
5235 });
5236 fidl::decode!(
5237 fidl::encoding::UnboundedString,
5238 fidl::encoding::DefaultFuchsiaResourceDialect,
5239 val_ref,
5240 decoder,
5241 inner_offset,
5242 inner_depth
5243 )?;
5244 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5245 {
5246 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5247 }
5248 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5249 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5250 }
5251 }
5252
5253 next_offset += envelope_size;
5254 _next_ordinal_to_read += 1;
5255 if next_offset >= end_offset {
5256 return Ok(());
5257 }
5258
5259 while _next_ordinal_to_read < 10 {
5261 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5262 _next_ordinal_to_read += 1;
5263 next_offset += envelope_size;
5264 }
5265
5266 let next_out_of_line = decoder.next_out_of_line();
5267 let handles_before = decoder.remaining_handles();
5268 if let Some((inlined, num_bytes, num_handles)) =
5269 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5270 {
5271 let member_inline_size =
5272 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
5273 decoder.context,
5274 );
5275 if inlined != (member_inline_size <= 4) {
5276 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5277 }
5278 let inner_offset;
5279 let mut inner_depth = depth.clone();
5280 if inlined {
5281 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5282 inner_offset = next_offset;
5283 } else {
5284 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5285 inner_depth.increment()?;
5286 }
5287 let val_ref =
5288 self.node_offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
5289 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5290 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5291 {
5292 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5293 }
5294 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5295 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5296 }
5297 }
5298
5299 next_offset += envelope_size;
5300 _next_ordinal_to_read += 1;
5301 if next_offset >= end_offset {
5302 return Ok(());
5303 }
5304
5305 while _next_ordinal_to_read < 11 {
5307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5308 _next_ordinal_to_read += 1;
5309 next_offset += envelope_size;
5310 }
5311
5312 let next_out_of_line = decoder.next_out_of_line();
5313 let handles_before = decoder.remaining_handles();
5314 if let Some((inlined, num_bytes, num_handles)) =
5315 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5316 {
5317 let member_inline_size = <fidl::encoding::HandleType<
5318 fidl::Event,
5319 { fidl::ObjectType::EVENT.into_raw() },
5320 2147483648,
5321 > as fidl::encoding::TypeMarker>::inline_size(
5322 decoder.context
5323 );
5324 if inlined != (member_inline_size <= 4) {
5325 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5326 }
5327 let inner_offset;
5328 let mut inner_depth = depth.clone();
5329 if inlined {
5330 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5331 inner_offset = next_offset;
5332 } else {
5333 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5334 inner_depth.increment()?;
5335 }
5336 let val_ref =
5337 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5338 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5339 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5340 {
5341 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5342 }
5343 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5344 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5345 }
5346 }
5347
5348 next_offset += envelope_size;
5349 _next_ordinal_to_read += 1;
5350 if next_offset >= end_offset {
5351 return Ok(());
5352 }
5353
5354 while _next_ordinal_to_read < 12 {
5356 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5357 _next_ordinal_to_read += 1;
5358 next_offset += envelope_size;
5359 }
5360
5361 let next_out_of_line = decoder.next_out_of_line();
5362 let handles_before = decoder.remaining_handles();
5363 if let Some((inlined, num_bytes, num_handles)) =
5364 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5365 {
5366 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5367 if inlined != (member_inline_size <= 4) {
5368 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5369 }
5370 let inner_offset;
5371 let mut inner_depth = depth.clone();
5372 if inlined {
5373 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5374 inner_offset = next_offset;
5375 } else {
5376 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5377 inner_depth.increment()?;
5378 }
5379 let val_ref = self.node_properties_2.get_or_insert_with(|| {
5380 fidl::new_empty!(
5381 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
5382 fidl::encoding::DefaultFuchsiaResourceDialect
5383 )
5384 });
5385 fidl::decode!(
5386 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
5387 fidl::encoding::DefaultFuchsiaResourceDialect,
5388 val_ref,
5389 decoder,
5390 inner_offset,
5391 inner_depth
5392 )?;
5393 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5394 {
5395 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5396 }
5397 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5398 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5399 }
5400 }
5401
5402 next_offset += envelope_size;
5403 _next_ordinal_to_read += 1;
5404 if next_offset >= end_offset {
5405 return Ok(());
5406 }
5407
5408 while _next_ordinal_to_read < 13 {
5410 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5411 _next_ordinal_to_read += 1;
5412 next_offset += envelope_size;
5413 }
5414
5415 let next_out_of_line = decoder.next_out_of_line();
5416 let handles_before = decoder.remaining_handles();
5417 if let Some((inlined, num_bytes, num_handles)) =
5418 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5419 {
5420 let member_inline_size = <fidl::encoding::HandleType<
5421 fidl::Vmar,
5422 { fidl::ObjectType::VMAR.into_raw() },
5423 2147483648,
5424 > as fidl::encoding::TypeMarker>::inline_size(
5425 decoder.context
5426 );
5427 if inlined != (member_inline_size <= 4) {
5428 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5429 }
5430 let inner_offset;
5431 let mut inner_depth = depth.clone();
5432 if inlined {
5433 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5434 inner_offset = next_offset;
5435 } else {
5436 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5437 inner_depth.increment()?;
5438 }
5439 let val_ref =
5440 self.vmar.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5441 fidl::decode!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5442 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5443 {
5444 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5445 }
5446 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5447 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5448 }
5449 }
5450
5451 next_offset += envelope_size;
5452 _next_ordinal_to_read += 1;
5453 if next_offset >= end_offset {
5454 return Ok(());
5455 }
5456
5457 while _next_ordinal_to_read < 14 {
5459 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5460 _next_ordinal_to_read += 1;
5461 next_offset += envelope_size;
5462 }
5463
5464 let next_out_of_line = decoder.next_out_of_line();
5465 let handles_before = decoder.remaining_handles();
5466 if let Some((inlined, num_bytes, num_handles)) =
5467 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5468 {
5469 let member_inline_size =
5470 <PowerElementArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5471 if inlined != (member_inline_size <= 4) {
5472 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5473 }
5474 let inner_offset;
5475 let mut inner_depth = depth.clone();
5476 if inlined {
5477 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5478 inner_offset = next_offset;
5479 } else {
5480 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5481 inner_depth.increment()?;
5482 }
5483 let val_ref = self.power_element_args.get_or_insert_with(|| {
5484 fidl::new_empty!(
5485 PowerElementArgs,
5486 fidl::encoding::DefaultFuchsiaResourceDialect
5487 )
5488 });
5489 fidl::decode!(
5490 PowerElementArgs,
5491 fidl::encoding::DefaultFuchsiaResourceDialect,
5492 val_ref,
5493 decoder,
5494 inner_offset,
5495 inner_depth
5496 )?;
5497 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5498 {
5499 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5500 }
5501 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5502 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5503 }
5504 }
5505
5506 next_offset += envelope_size;
5507 _next_ordinal_to_read += 1;
5508 if next_offset >= end_offset {
5509 return Ok(());
5510 }
5511
5512 while _next_ordinal_to_read < 15 {
5514 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5515 _next_ordinal_to_read += 1;
5516 next_offset += envelope_size;
5517 }
5518
5519 let next_out_of_line = decoder.next_out_of_line();
5520 let handles_before = decoder.remaining_handles();
5521 if let Some((inlined, num_bytes, num_handles)) =
5522 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5523 {
5524 let member_inline_size = <fidl::encoding::Endpoint<
5525 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
5526 > as fidl::encoding::TypeMarker>::inline_size(
5527 decoder.context
5528 );
5529 if inlined != (member_inline_size <= 4) {
5530 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5531 }
5532 let inner_offset;
5533 let mut inner_depth = depth.clone();
5534 if inlined {
5535 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5536 inner_offset = next_offset;
5537 } else {
5538 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5539 inner_depth.increment()?;
5540 }
5541 let val_ref = self.log_sink.get_or_insert_with(|| {
5542 fidl::new_empty!(
5543 fidl::encoding::Endpoint<
5544 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
5545 >,
5546 fidl::encoding::DefaultFuchsiaResourceDialect
5547 )
5548 });
5549 fidl::decode!(
5550 fidl::encoding::Endpoint<
5551 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
5552 >,
5553 fidl::encoding::DefaultFuchsiaResourceDialect,
5554 val_ref,
5555 decoder,
5556 inner_offset,
5557 inner_depth
5558 )?;
5559 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5560 {
5561 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5562 }
5563 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5564 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5565 }
5566 }
5567
5568 next_offset += envelope_size;
5569
5570 while next_offset < end_offset {
5572 _next_ordinal_to_read += 1;
5573 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5574 next_offset += envelope_size;
5575 }
5576
5577 Ok(())
5578 }
5579 }
5580
5581 impl NodeAddArgs {
5582 #[inline(always)]
5583 fn max_ordinal_present(&self) -> u64 {
5584 if let Some(_) = self.driver_host {
5585 return 10;
5586 }
5587 if let Some(_) = self.offers_dictionary {
5588 return 9;
5589 }
5590 if let Some(_) = self.properties2 {
5591 return 8;
5592 }
5593 if let Some(_) = self.bus_info {
5594 return 7;
5595 }
5596 if let Some(_) = self.offers2 {
5597 return 6;
5598 }
5599 if let Some(_) = self.devfs_args {
5600 return 5;
5601 }
5602 if let Some(_) = self.symbols {
5603 return 3;
5604 }
5605 if let Some(_) = self.name {
5606 return 1;
5607 }
5608 0
5609 }
5610 }
5611
5612 impl fidl::encoding::ResourceTypeMarker for NodeAddArgs {
5613 type Borrowed<'a> = &'a mut Self;
5614 fn take_or_borrow<'a>(
5615 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5616 ) -> Self::Borrowed<'a> {
5617 value
5618 }
5619 }
5620
5621 unsafe impl fidl::encoding::TypeMarker for NodeAddArgs {
5622 type Owned = Self;
5623
5624 #[inline(always)]
5625 fn inline_align(_context: fidl::encoding::Context) -> usize {
5626 8
5627 }
5628
5629 #[inline(always)]
5630 fn inline_size(_context: fidl::encoding::Context) -> usize {
5631 16
5632 }
5633 }
5634
5635 unsafe impl fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
5636 for &mut NodeAddArgs
5637 {
5638 unsafe fn encode(
5639 self,
5640 encoder: &mut fidl::encoding::Encoder<
5641 '_,
5642 fidl::encoding::DefaultFuchsiaResourceDialect,
5643 >,
5644 offset: usize,
5645 mut depth: fidl::encoding::Depth,
5646 ) -> fidl::Result<()> {
5647 encoder.debug_check_bounds::<NodeAddArgs>(offset);
5648 let max_ordinal: u64 = self.max_ordinal_present();
5650 encoder.write_num(max_ordinal, offset);
5651 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5652 if max_ordinal == 0 {
5654 return Ok(());
5655 }
5656 depth.increment()?;
5657 let envelope_size = 8;
5658 let bytes_len = max_ordinal as usize * envelope_size;
5659 #[allow(unused_variables)]
5660 let offset = encoder.out_of_line_offset(bytes_len);
5661 let mut _prev_end_offset: usize = 0;
5662 if 1 > max_ordinal {
5663 return Ok(());
5664 }
5665
5666 let cur_offset: usize = (1 - 1) * envelope_size;
5669
5670 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5672
5673 fidl::encoding::encode_in_envelope_optional::<
5678 fidl::encoding::BoundedString<128>,
5679 fidl::encoding::DefaultFuchsiaResourceDialect,
5680 >(
5681 self.name.as_ref().map(
5682 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5683 ),
5684 encoder,
5685 offset + cur_offset,
5686 depth,
5687 )?;
5688
5689 _prev_end_offset = cur_offset + envelope_size;
5690 if 3 > max_ordinal {
5691 return Ok(());
5692 }
5693
5694 let cur_offset: usize = (3 - 1) * envelope_size;
5697
5698 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5700
5701 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5706 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5707 encoder, offset + cur_offset, depth
5708 )?;
5709
5710 _prev_end_offset = cur_offset + envelope_size;
5711 if 5 > max_ordinal {
5712 return Ok(());
5713 }
5714
5715 let cur_offset: usize = (5 - 1) * envelope_size;
5718
5719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5721
5722 fidl::encoding::encode_in_envelope_optional::<
5727 DevfsAddArgs,
5728 fidl::encoding::DefaultFuchsiaResourceDialect,
5729 >(
5730 self.devfs_args
5731 .as_mut()
5732 .map(<DevfsAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5733 encoder,
5734 offset + cur_offset,
5735 depth,
5736 )?;
5737
5738 _prev_end_offset = cur_offset + envelope_size;
5739 if 6 > max_ordinal {
5740 return Ok(());
5741 }
5742
5743 let cur_offset: usize = (6 - 1) * envelope_size;
5746
5747 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5749
5750 fidl::encoding::encode_in_envelope_optional::<
5755 fidl::encoding::Vector<Offer, 128>,
5756 fidl::encoding::DefaultFuchsiaResourceDialect,
5757 >(
5758 self.offers2.as_ref().map(
5759 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
5760 ),
5761 encoder,
5762 offset + cur_offset,
5763 depth,
5764 )?;
5765
5766 _prev_end_offset = cur_offset + envelope_size;
5767 if 7 > max_ordinal {
5768 return Ok(());
5769 }
5770
5771 let cur_offset: usize = (7 - 1) * envelope_size;
5774
5775 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5777
5778 fidl::encoding::encode_in_envelope_optional::<
5783 BusInfo,
5784 fidl::encoding::DefaultFuchsiaResourceDialect,
5785 >(
5786 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
5787 encoder,
5788 offset + cur_offset,
5789 depth,
5790 )?;
5791
5792 _prev_end_offset = cur_offset + envelope_size;
5793 if 8 > max_ordinal {
5794 return Ok(());
5795 }
5796
5797 let cur_offset: usize = (8 - 1) * envelope_size;
5800
5801 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5803
5804 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
5809 self.properties2.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
5810 encoder, offset + cur_offset, depth
5811 )?;
5812
5813 _prev_end_offset = cur_offset + envelope_size;
5814 if 9 > max_ordinal {
5815 return Ok(());
5816 }
5817
5818 let cur_offset: usize = (9 - 1) * envelope_size;
5821
5822 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5824
5825 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
5830 self.offers_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
5831 encoder, offset + cur_offset, depth
5832 )?;
5833
5834 _prev_end_offset = cur_offset + envelope_size;
5835 if 10 > max_ordinal {
5836 return Ok(());
5837 }
5838
5839 let cur_offset: usize = (10 - 1) * envelope_size;
5842
5843 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5845
5846 fidl::encoding::encode_in_envelope_optional::<
5851 fidl::encoding::BoundedString<128>,
5852 fidl::encoding::DefaultFuchsiaResourceDialect,
5853 >(
5854 self.driver_host.as_ref().map(
5855 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5856 ),
5857 encoder,
5858 offset + cur_offset,
5859 depth,
5860 )?;
5861
5862 _prev_end_offset = cur_offset + envelope_size;
5863
5864 Ok(())
5865 }
5866 }
5867
5868 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {
5869 #[inline(always)]
5870 fn new_empty() -> Self {
5871 Self::default()
5872 }
5873
5874 unsafe fn decode(
5875 &mut self,
5876 decoder: &mut fidl::encoding::Decoder<
5877 '_,
5878 fidl::encoding::DefaultFuchsiaResourceDialect,
5879 >,
5880 offset: usize,
5881 mut depth: fidl::encoding::Depth,
5882 ) -> fidl::Result<()> {
5883 decoder.debug_check_bounds::<Self>(offset);
5884 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5885 None => return Err(fidl::Error::NotNullable),
5886 Some(len) => len,
5887 };
5888 if len == 0 {
5890 return Ok(());
5891 };
5892 depth.increment()?;
5893 let envelope_size = 8;
5894 let bytes_len = len * envelope_size;
5895 let offset = decoder.out_of_line_offset(bytes_len)?;
5896 let mut _next_ordinal_to_read = 0;
5898 let mut next_offset = offset;
5899 let end_offset = offset + bytes_len;
5900 _next_ordinal_to_read += 1;
5901 if next_offset >= end_offset {
5902 return Ok(());
5903 }
5904
5905 while _next_ordinal_to_read < 1 {
5907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5908 _next_ordinal_to_read += 1;
5909 next_offset += envelope_size;
5910 }
5911
5912 let next_out_of_line = decoder.next_out_of_line();
5913 let handles_before = decoder.remaining_handles();
5914 if let Some((inlined, num_bytes, num_handles)) =
5915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5916 {
5917 let member_inline_size =
5918 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5919 decoder.context,
5920 );
5921 if inlined != (member_inline_size <= 4) {
5922 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5923 }
5924 let inner_offset;
5925 let mut inner_depth = depth.clone();
5926 if inlined {
5927 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5928 inner_offset = next_offset;
5929 } else {
5930 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5931 inner_depth.increment()?;
5932 }
5933 let val_ref = self.name.get_or_insert_with(|| {
5934 fidl::new_empty!(
5935 fidl::encoding::BoundedString<128>,
5936 fidl::encoding::DefaultFuchsiaResourceDialect
5937 )
5938 });
5939 fidl::decode!(
5940 fidl::encoding::BoundedString<128>,
5941 fidl::encoding::DefaultFuchsiaResourceDialect,
5942 val_ref,
5943 decoder,
5944 inner_offset,
5945 inner_depth
5946 )?;
5947 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5948 {
5949 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5950 }
5951 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5952 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5953 }
5954 }
5955
5956 next_offset += envelope_size;
5957 _next_ordinal_to_read += 1;
5958 if next_offset >= end_offset {
5959 return Ok(());
5960 }
5961
5962 while _next_ordinal_to_read < 3 {
5964 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5965 _next_ordinal_to_read += 1;
5966 next_offset += envelope_size;
5967 }
5968
5969 let next_out_of_line = decoder.next_out_of_line();
5970 let handles_before = decoder.remaining_handles();
5971 if let Some((inlined, num_bytes, num_handles)) =
5972 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5973 {
5974 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5975 if inlined != (member_inline_size <= 4) {
5976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5977 }
5978 let inner_offset;
5979 let mut inner_depth = depth.clone();
5980 if inlined {
5981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5982 inner_offset = next_offset;
5983 } else {
5984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5985 inner_depth.increment()?;
5986 }
5987 let val_ref =
5988 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5989 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5990 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5991 {
5992 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5993 }
5994 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5995 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5996 }
5997 }
5998
5999 next_offset += envelope_size;
6000 _next_ordinal_to_read += 1;
6001 if next_offset >= end_offset {
6002 return Ok(());
6003 }
6004
6005 while _next_ordinal_to_read < 5 {
6007 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6008 _next_ordinal_to_read += 1;
6009 next_offset += envelope_size;
6010 }
6011
6012 let next_out_of_line = decoder.next_out_of_line();
6013 let handles_before = decoder.remaining_handles();
6014 if let Some((inlined, num_bytes, num_handles)) =
6015 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6016 {
6017 let member_inline_size =
6018 <DevfsAddArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6019 if inlined != (member_inline_size <= 4) {
6020 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6021 }
6022 let inner_offset;
6023 let mut inner_depth = depth.clone();
6024 if inlined {
6025 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6026 inner_offset = next_offset;
6027 } else {
6028 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6029 inner_depth.increment()?;
6030 }
6031 let val_ref = self.devfs_args.get_or_insert_with(|| {
6032 fidl::new_empty!(DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect)
6033 });
6034 fidl::decode!(
6035 DevfsAddArgs,
6036 fidl::encoding::DefaultFuchsiaResourceDialect,
6037 val_ref,
6038 decoder,
6039 inner_offset,
6040 inner_depth
6041 )?;
6042 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6043 {
6044 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6045 }
6046 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6047 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6048 }
6049 }
6050
6051 next_offset += envelope_size;
6052 _next_ordinal_to_read += 1;
6053 if next_offset >= end_offset {
6054 return Ok(());
6055 }
6056
6057 while _next_ordinal_to_read < 6 {
6059 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6060 _next_ordinal_to_read += 1;
6061 next_offset += envelope_size;
6062 }
6063
6064 let next_out_of_line = decoder.next_out_of_line();
6065 let handles_before = decoder.remaining_handles();
6066 if let Some((inlined, num_bytes, num_handles)) =
6067 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6068 {
6069 let member_inline_size =
6070 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
6071 decoder.context,
6072 );
6073 if inlined != (member_inline_size <= 4) {
6074 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6075 }
6076 let inner_offset;
6077 let mut inner_depth = depth.clone();
6078 if inlined {
6079 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6080 inner_offset = next_offset;
6081 } else {
6082 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6083 inner_depth.increment()?;
6084 }
6085 let val_ref =
6086 self.offers2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
6087 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6088 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6089 {
6090 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6091 }
6092 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6093 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6094 }
6095 }
6096
6097 next_offset += envelope_size;
6098 _next_ordinal_to_read += 1;
6099 if next_offset >= end_offset {
6100 return Ok(());
6101 }
6102
6103 while _next_ordinal_to_read < 7 {
6105 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6106 _next_ordinal_to_read += 1;
6107 next_offset += envelope_size;
6108 }
6109
6110 let next_out_of_line = decoder.next_out_of_line();
6111 let handles_before = decoder.remaining_handles();
6112 if let Some((inlined, num_bytes, num_handles)) =
6113 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6114 {
6115 let member_inline_size =
6116 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6117 if inlined != (member_inline_size <= 4) {
6118 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6119 }
6120 let inner_offset;
6121 let mut inner_depth = depth.clone();
6122 if inlined {
6123 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6124 inner_offset = next_offset;
6125 } else {
6126 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6127 inner_depth.increment()?;
6128 }
6129 let val_ref = self.bus_info.get_or_insert_with(|| {
6130 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
6131 });
6132 fidl::decode!(
6133 BusInfo,
6134 fidl::encoding::DefaultFuchsiaResourceDialect,
6135 val_ref,
6136 decoder,
6137 inner_offset,
6138 inner_depth
6139 )?;
6140 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6141 {
6142 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6143 }
6144 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6145 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6146 }
6147 }
6148
6149 next_offset += envelope_size;
6150 _next_ordinal_to_read += 1;
6151 if next_offset >= end_offset {
6152 return Ok(());
6153 }
6154
6155 while _next_ordinal_to_read < 8 {
6157 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6158 _next_ordinal_to_read += 1;
6159 next_offset += envelope_size;
6160 }
6161
6162 let next_out_of_line = decoder.next_out_of_line();
6163 let handles_before = decoder.remaining_handles();
6164 if let Some((inlined, num_bytes, num_handles)) =
6165 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6166 {
6167 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
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 =
6181 self.properties2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
6182 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6183 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6184 {
6185 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6186 }
6187 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6188 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6189 }
6190 }
6191
6192 next_offset += envelope_size;
6193 _next_ordinal_to_read += 1;
6194 if next_offset >= end_offset {
6195 return Ok(());
6196 }
6197
6198 while _next_ordinal_to_read < 9 {
6200 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6201 _next_ordinal_to_read += 1;
6202 next_offset += envelope_size;
6203 }
6204
6205 let next_out_of_line = decoder.next_out_of_line();
6206 let handles_before = decoder.remaining_handles();
6207 if let Some((inlined, num_bytes, num_handles)) =
6208 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6209 {
6210 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6211 if inlined != (member_inline_size <= 4) {
6212 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6213 }
6214 let inner_offset;
6215 let mut inner_depth = depth.clone();
6216 if inlined {
6217 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6218 inner_offset = next_offset;
6219 } else {
6220 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6221 inner_depth.increment()?;
6222 }
6223 let val_ref = self.offers_dictionary.get_or_insert_with(|| {
6224 fidl::new_empty!(
6225 fidl_fuchsia_component_sandbox::DictionaryRef,
6226 fidl::encoding::DefaultFuchsiaResourceDialect
6227 )
6228 });
6229 fidl::decode!(
6230 fidl_fuchsia_component_sandbox::DictionaryRef,
6231 fidl::encoding::DefaultFuchsiaResourceDialect,
6232 val_ref,
6233 decoder,
6234 inner_offset,
6235 inner_depth
6236 )?;
6237 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6238 {
6239 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6240 }
6241 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6242 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6243 }
6244 }
6245
6246 next_offset += envelope_size;
6247 _next_ordinal_to_read += 1;
6248 if next_offset >= end_offset {
6249 return Ok(());
6250 }
6251
6252 while _next_ordinal_to_read < 10 {
6254 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6255 _next_ordinal_to_read += 1;
6256 next_offset += envelope_size;
6257 }
6258
6259 let next_out_of_line = decoder.next_out_of_line();
6260 let handles_before = decoder.remaining_handles();
6261 if let Some((inlined, num_bytes, num_handles)) =
6262 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6263 {
6264 let member_inline_size =
6265 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
6266 decoder.context,
6267 );
6268 if inlined != (member_inline_size <= 4) {
6269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6270 }
6271 let inner_offset;
6272 let mut inner_depth = depth.clone();
6273 if inlined {
6274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6275 inner_offset = next_offset;
6276 } else {
6277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6278 inner_depth.increment()?;
6279 }
6280 let val_ref = self.driver_host.get_or_insert_with(|| {
6281 fidl::new_empty!(
6282 fidl::encoding::BoundedString<128>,
6283 fidl::encoding::DefaultFuchsiaResourceDialect
6284 )
6285 });
6286 fidl::decode!(
6287 fidl::encoding::BoundedString<128>,
6288 fidl::encoding::DefaultFuchsiaResourceDialect,
6289 val_ref,
6290 decoder,
6291 inner_offset,
6292 inner_depth
6293 )?;
6294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6295 {
6296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6297 }
6298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6300 }
6301 }
6302
6303 next_offset += envelope_size;
6304
6305 while next_offset < end_offset {
6307 _next_ordinal_to_read += 1;
6308 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6309 next_offset += envelope_size;
6310 }
6311
6312 Ok(())
6313 }
6314 }
6315
6316 impl NodeControllerOnBindRequest {
6317 #[inline(always)]
6318 fn max_ordinal_present(&self) -> u64 {
6319 if let Some(_) = self.node_token {
6320 return 1;
6321 }
6322 0
6323 }
6324 }
6325
6326 impl fidl::encoding::ResourceTypeMarker for NodeControllerOnBindRequest {
6327 type Borrowed<'a> = &'a mut Self;
6328 fn take_or_borrow<'a>(
6329 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6330 ) -> Self::Borrowed<'a> {
6331 value
6332 }
6333 }
6334
6335 unsafe impl fidl::encoding::TypeMarker for NodeControllerOnBindRequest {
6336 type Owned = Self;
6337
6338 #[inline(always)]
6339 fn inline_align(_context: fidl::encoding::Context) -> usize {
6340 8
6341 }
6342
6343 #[inline(always)]
6344 fn inline_size(_context: fidl::encoding::Context) -> usize {
6345 16
6346 }
6347 }
6348
6349 unsafe impl
6350 fidl::encoding::Encode<
6351 NodeControllerOnBindRequest,
6352 fidl::encoding::DefaultFuchsiaResourceDialect,
6353 > for &mut NodeControllerOnBindRequest
6354 {
6355 unsafe fn encode(
6356 self,
6357 encoder: &mut fidl::encoding::Encoder<
6358 '_,
6359 fidl::encoding::DefaultFuchsiaResourceDialect,
6360 >,
6361 offset: usize,
6362 mut depth: fidl::encoding::Depth,
6363 ) -> fidl::Result<()> {
6364 encoder.debug_check_bounds::<NodeControllerOnBindRequest>(offset);
6365 let max_ordinal: u64 = self.max_ordinal_present();
6367 encoder.write_num(max_ordinal, offset);
6368 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6369 if max_ordinal == 0 {
6371 return Ok(());
6372 }
6373 depth.increment()?;
6374 let envelope_size = 8;
6375 let bytes_len = max_ordinal as usize * envelope_size;
6376 #[allow(unused_variables)]
6377 let offset = encoder.out_of_line_offset(bytes_len);
6378 let mut _prev_end_offset: usize = 0;
6379 if 1 > max_ordinal {
6380 return Ok(());
6381 }
6382
6383 let cur_offset: usize = (1 - 1) * envelope_size;
6386
6387 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6389
6390 fidl::encoding::encode_in_envelope_optional::<
6395 fidl::encoding::HandleType<
6396 fidl::Event,
6397 { fidl::ObjectType::EVENT.into_raw() },
6398 2147483648,
6399 >,
6400 fidl::encoding::DefaultFuchsiaResourceDialect,
6401 >(
6402 self.node_token.as_mut().map(
6403 <fidl::encoding::HandleType<
6404 fidl::Event,
6405 { fidl::ObjectType::EVENT.into_raw() },
6406 2147483648,
6407 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6408 ),
6409 encoder,
6410 offset + cur_offset,
6411 depth,
6412 )?;
6413
6414 _prev_end_offset = cur_offset + envelope_size;
6415
6416 Ok(())
6417 }
6418 }
6419
6420 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6421 for NodeControllerOnBindRequest
6422 {
6423 #[inline(always)]
6424 fn new_empty() -> Self {
6425 Self::default()
6426 }
6427
6428 unsafe fn decode(
6429 &mut self,
6430 decoder: &mut fidl::encoding::Decoder<
6431 '_,
6432 fidl::encoding::DefaultFuchsiaResourceDialect,
6433 >,
6434 offset: usize,
6435 mut depth: fidl::encoding::Depth,
6436 ) -> fidl::Result<()> {
6437 decoder.debug_check_bounds::<Self>(offset);
6438 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6439 None => return Err(fidl::Error::NotNullable),
6440 Some(len) => len,
6441 };
6442 if len == 0 {
6444 return Ok(());
6445 };
6446 depth.increment()?;
6447 let envelope_size = 8;
6448 let bytes_len = len * envelope_size;
6449 let offset = decoder.out_of_line_offset(bytes_len)?;
6450 let mut _next_ordinal_to_read = 0;
6452 let mut next_offset = offset;
6453 let end_offset = offset + bytes_len;
6454 _next_ordinal_to_read += 1;
6455 if next_offset >= end_offset {
6456 return Ok(());
6457 }
6458
6459 while _next_ordinal_to_read < 1 {
6461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6462 _next_ordinal_to_read += 1;
6463 next_offset += envelope_size;
6464 }
6465
6466 let next_out_of_line = decoder.next_out_of_line();
6467 let handles_before = decoder.remaining_handles();
6468 if let Some((inlined, num_bytes, num_handles)) =
6469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6470 {
6471 let member_inline_size = <fidl::encoding::HandleType<
6472 fidl::Event,
6473 { fidl::ObjectType::EVENT.into_raw() },
6474 2147483648,
6475 > as fidl::encoding::TypeMarker>::inline_size(
6476 decoder.context
6477 );
6478 if inlined != (member_inline_size <= 4) {
6479 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6480 }
6481 let inner_offset;
6482 let mut inner_depth = depth.clone();
6483 if inlined {
6484 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6485 inner_offset = next_offset;
6486 } else {
6487 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6488 inner_depth.increment()?;
6489 }
6490 let val_ref =
6491 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
6492 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6493 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6494 {
6495 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6496 }
6497 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6498 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6499 }
6500 }
6501
6502 next_offset += envelope_size;
6503
6504 while next_offset < end_offset {
6506 _next_ordinal_to_read += 1;
6507 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6508 next_offset += envelope_size;
6509 }
6510
6511 Ok(())
6512 }
6513 }
6514
6515 impl PowerElementArgs {
6516 #[inline(always)]
6517 fn max_ordinal_present(&self) -> u64 {
6518 if let Some(_) = self.token {
6519 return 4;
6520 }
6521 if let Some(_) = self.lessor_client {
6522 return 3;
6523 }
6524 if let Some(_) = self.runner_server {
6525 return 2;
6526 }
6527 if let Some(_) = self.control_client {
6528 return 1;
6529 }
6530 0
6531 }
6532 }
6533
6534 impl fidl::encoding::ResourceTypeMarker for PowerElementArgs {
6535 type Borrowed<'a> = &'a mut Self;
6536 fn take_or_borrow<'a>(
6537 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6538 ) -> Self::Borrowed<'a> {
6539 value
6540 }
6541 }
6542
6543 unsafe impl fidl::encoding::TypeMarker for PowerElementArgs {
6544 type Owned = Self;
6545
6546 #[inline(always)]
6547 fn inline_align(_context: fidl::encoding::Context) -> usize {
6548 8
6549 }
6550
6551 #[inline(always)]
6552 fn inline_size(_context: fidl::encoding::Context) -> usize {
6553 16
6554 }
6555 }
6556
6557 unsafe impl
6558 fidl::encoding::Encode<PowerElementArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
6559 for &mut PowerElementArgs
6560 {
6561 unsafe fn encode(
6562 self,
6563 encoder: &mut fidl::encoding::Encoder<
6564 '_,
6565 fidl::encoding::DefaultFuchsiaResourceDialect,
6566 >,
6567 offset: usize,
6568 mut depth: fidl::encoding::Depth,
6569 ) -> fidl::Result<()> {
6570 encoder.debug_check_bounds::<PowerElementArgs>(offset);
6571 let max_ordinal: u64 = self.max_ordinal_present();
6573 encoder.write_num(max_ordinal, offset);
6574 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6575 if max_ordinal == 0 {
6577 return Ok(());
6578 }
6579 depth.increment()?;
6580 let envelope_size = 8;
6581 let bytes_len = max_ordinal as usize * envelope_size;
6582 #[allow(unused_variables)]
6583 let offset = encoder.out_of_line_offset(bytes_len);
6584 let mut _prev_end_offset: usize = 0;
6585 if 1 > max_ordinal {
6586 return Ok(());
6587 }
6588
6589 let cur_offset: usize = (1 - 1) * envelope_size;
6592
6593 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6595
6596 fidl::encoding::encode_in_envelope_optional::<
6601 fidl::encoding::Endpoint<
6602 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
6603 >,
6604 fidl::encoding::DefaultFuchsiaResourceDialect,
6605 >(
6606 self.control_client.as_mut().map(
6607 <fidl::encoding::Endpoint<
6608 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
6609 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6610 ),
6611 encoder,
6612 offset + cur_offset,
6613 depth,
6614 )?;
6615
6616 _prev_end_offset = cur_offset + envelope_size;
6617 if 2 > max_ordinal {
6618 return Ok(());
6619 }
6620
6621 let cur_offset: usize = (2 - 1) * envelope_size;
6624
6625 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6627
6628 fidl::encoding::encode_in_envelope_optional::<
6633 fidl::encoding::Endpoint<
6634 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6635 >,
6636 fidl::encoding::DefaultFuchsiaResourceDialect,
6637 >(
6638 self.runner_server.as_mut().map(
6639 <fidl::encoding::Endpoint<
6640 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6641 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6642 ),
6643 encoder,
6644 offset + cur_offset,
6645 depth,
6646 )?;
6647
6648 _prev_end_offset = cur_offset + envelope_size;
6649 if 3 > max_ordinal {
6650 return Ok(());
6651 }
6652
6653 let cur_offset: usize = (3 - 1) * envelope_size;
6656
6657 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6659
6660 fidl::encoding::encode_in_envelope_optional::<
6665 fidl::encoding::Endpoint<
6666 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6667 >,
6668 fidl::encoding::DefaultFuchsiaResourceDialect,
6669 >(
6670 self.lessor_client.as_mut().map(
6671 <fidl::encoding::Endpoint<
6672 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6673 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6674 ),
6675 encoder,
6676 offset + cur_offset,
6677 depth,
6678 )?;
6679
6680 _prev_end_offset = cur_offset + envelope_size;
6681 if 4 > max_ordinal {
6682 return Ok(());
6683 }
6684
6685 let cur_offset: usize = (4 - 1) * envelope_size;
6688
6689 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6691
6692 fidl::encoding::encode_in_envelope_optional::<
6697 fidl::encoding::HandleType<
6698 fidl::Event,
6699 { fidl::ObjectType::EVENT.into_raw() },
6700 2147483648,
6701 >,
6702 fidl::encoding::DefaultFuchsiaResourceDialect,
6703 >(
6704 self.token.as_mut().map(
6705 <fidl::encoding::HandleType<
6706 fidl::Event,
6707 { fidl::ObjectType::EVENT.into_raw() },
6708 2147483648,
6709 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
6710 ),
6711 encoder,
6712 offset + cur_offset,
6713 depth,
6714 )?;
6715
6716 _prev_end_offset = cur_offset + envelope_size;
6717
6718 Ok(())
6719 }
6720 }
6721
6722 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
6723 for PowerElementArgs
6724 {
6725 #[inline(always)]
6726 fn new_empty() -> Self {
6727 Self::default()
6728 }
6729
6730 unsafe fn decode(
6731 &mut self,
6732 decoder: &mut fidl::encoding::Decoder<
6733 '_,
6734 fidl::encoding::DefaultFuchsiaResourceDialect,
6735 >,
6736 offset: usize,
6737 mut depth: fidl::encoding::Depth,
6738 ) -> fidl::Result<()> {
6739 decoder.debug_check_bounds::<Self>(offset);
6740 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6741 None => return Err(fidl::Error::NotNullable),
6742 Some(len) => len,
6743 };
6744 if len == 0 {
6746 return Ok(());
6747 };
6748 depth.increment()?;
6749 let envelope_size = 8;
6750 let bytes_len = len * envelope_size;
6751 let offset = decoder.out_of_line_offset(bytes_len)?;
6752 let mut _next_ordinal_to_read = 0;
6754 let mut next_offset = offset;
6755 let end_offset = offset + bytes_len;
6756 _next_ordinal_to_read += 1;
6757 if next_offset >= end_offset {
6758 return Ok(());
6759 }
6760
6761 while _next_ordinal_to_read < 1 {
6763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6764 _next_ordinal_to_read += 1;
6765 next_offset += envelope_size;
6766 }
6767
6768 let next_out_of_line = decoder.next_out_of_line();
6769 let handles_before = decoder.remaining_handles();
6770 if let Some((inlined, num_bytes, num_handles)) =
6771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6772 {
6773 let member_inline_size = <fidl::encoding::Endpoint<
6774 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
6775 > as fidl::encoding::TypeMarker>::inline_size(
6776 decoder.context
6777 );
6778 if inlined != (member_inline_size <= 4) {
6779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6780 }
6781 let inner_offset;
6782 let mut inner_depth = depth.clone();
6783 if inlined {
6784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6785 inner_offset = next_offset;
6786 } else {
6787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6788 inner_depth.increment()?;
6789 }
6790 let val_ref = self.control_client.get_or_insert_with(|| {
6791 fidl::new_empty!(
6792 fidl::encoding::Endpoint<
6793 fidl::endpoints::ClientEnd<
6794 fidl_fuchsia_power_broker::ElementControlMarker,
6795 >,
6796 >,
6797 fidl::encoding::DefaultFuchsiaResourceDialect
6798 )
6799 });
6800 fidl::decode!(
6801 fidl::encoding::Endpoint<
6802 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
6803 >,
6804 fidl::encoding::DefaultFuchsiaResourceDialect,
6805 val_ref,
6806 decoder,
6807 inner_offset,
6808 inner_depth
6809 )?;
6810 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6811 {
6812 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6813 }
6814 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6815 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6816 }
6817 }
6818
6819 next_offset += envelope_size;
6820 _next_ordinal_to_read += 1;
6821 if next_offset >= end_offset {
6822 return Ok(());
6823 }
6824
6825 while _next_ordinal_to_read < 2 {
6827 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6828 _next_ordinal_to_read += 1;
6829 next_offset += envelope_size;
6830 }
6831
6832 let next_out_of_line = decoder.next_out_of_line();
6833 let handles_before = decoder.remaining_handles();
6834 if let Some((inlined, num_bytes, num_handles)) =
6835 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6836 {
6837 let member_inline_size = <fidl::encoding::Endpoint<
6838 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6839 > as fidl::encoding::TypeMarker>::inline_size(
6840 decoder.context
6841 );
6842 if inlined != (member_inline_size <= 4) {
6843 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6844 }
6845 let inner_offset;
6846 let mut inner_depth = depth.clone();
6847 if inlined {
6848 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6849 inner_offset = next_offset;
6850 } else {
6851 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6852 inner_depth.increment()?;
6853 }
6854 let val_ref = self.runner_server.get_or_insert_with(|| {
6855 fidl::new_empty!(
6856 fidl::encoding::Endpoint<
6857 fidl::endpoints::ServerEnd<
6858 fidl_fuchsia_power_broker::ElementRunnerMarker,
6859 >,
6860 >,
6861 fidl::encoding::DefaultFuchsiaResourceDialect
6862 )
6863 });
6864 fidl::decode!(
6865 fidl::encoding::Endpoint<
6866 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
6867 >,
6868 fidl::encoding::DefaultFuchsiaResourceDialect,
6869 val_ref,
6870 decoder,
6871 inner_offset,
6872 inner_depth
6873 )?;
6874 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6875 {
6876 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6877 }
6878 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6879 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6880 }
6881 }
6882
6883 next_offset += envelope_size;
6884 _next_ordinal_to_read += 1;
6885 if next_offset >= end_offset {
6886 return Ok(());
6887 }
6888
6889 while _next_ordinal_to_read < 3 {
6891 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6892 _next_ordinal_to_read += 1;
6893 next_offset += envelope_size;
6894 }
6895
6896 let next_out_of_line = decoder.next_out_of_line();
6897 let handles_before = decoder.remaining_handles();
6898 if let Some((inlined, num_bytes, num_handles)) =
6899 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6900 {
6901 let member_inline_size = <fidl::encoding::Endpoint<
6902 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6903 > as fidl::encoding::TypeMarker>::inline_size(
6904 decoder.context
6905 );
6906 if inlined != (member_inline_size <= 4) {
6907 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6908 }
6909 let inner_offset;
6910 let mut inner_depth = depth.clone();
6911 if inlined {
6912 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6913 inner_offset = next_offset;
6914 } else {
6915 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6916 inner_depth.increment()?;
6917 }
6918 let val_ref = self.lessor_client.get_or_insert_with(|| {
6919 fidl::new_empty!(
6920 fidl::encoding::Endpoint<
6921 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6922 >,
6923 fidl::encoding::DefaultFuchsiaResourceDialect
6924 )
6925 });
6926 fidl::decode!(
6927 fidl::encoding::Endpoint<
6928 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
6929 >,
6930 fidl::encoding::DefaultFuchsiaResourceDialect,
6931 val_ref,
6932 decoder,
6933 inner_offset,
6934 inner_depth
6935 )?;
6936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6937 {
6938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6939 }
6940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6942 }
6943 }
6944
6945 next_offset += envelope_size;
6946 _next_ordinal_to_read += 1;
6947 if next_offset >= end_offset {
6948 return Ok(());
6949 }
6950
6951 while _next_ordinal_to_read < 4 {
6953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6954 _next_ordinal_to_read += 1;
6955 next_offset += envelope_size;
6956 }
6957
6958 let next_out_of_line = decoder.next_out_of_line();
6959 let handles_before = decoder.remaining_handles();
6960 if let Some((inlined, num_bytes, num_handles)) =
6961 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6962 {
6963 let member_inline_size = <fidl::encoding::HandleType<
6964 fidl::Event,
6965 { fidl::ObjectType::EVENT.into_raw() },
6966 2147483648,
6967 > as fidl::encoding::TypeMarker>::inline_size(
6968 decoder.context
6969 );
6970 if inlined != (member_inline_size <= 4) {
6971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6972 }
6973 let inner_offset;
6974 let mut inner_depth = depth.clone();
6975 if inlined {
6976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6977 inner_offset = next_offset;
6978 } else {
6979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6980 inner_depth.increment()?;
6981 }
6982 let val_ref =
6983 self.token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
6984 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6985 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6986 {
6987 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6988 }
6989 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6990 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6991 }
6992 }
6993
6994 next_offset += envelope_size;
6995
6996 while next_offset < end_offset {
6998 _next_ordinal_to_read += 1;
6999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7000 next_offset += envelope_size;
7001 }
7002
7003 Ok(())
7004 }
7005 }
7006
7007 impl ResourceArgs {
7008 #[inline(always)]
7009 fn max_ordinal_present(&self) -> u64 {
7010 if let Some(_) = self.bus_info {
7011 return 4;
7012 }
7013 if let Some(_) = self.offers {
7014 return 3;
7015 }
7016 if let Some(_) = self.properties {
7017 return 2;
7018 }
7019 if let Some(_) = self.name {
7020 return 1;
7021 }
7022 0
7023 }
7024 }
7025
7026 impl fidl::encoding::ResourceTypeMarker for ResourceArgs {
7027 type Borrowed<'a> = &'a mut Self;
7028 fn take_or_borrow<'a>(
7029 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
7030 ) -> Self::Borrowed<'a> {
7031 value
7032 }
7033 }
7034
7035 unsafe impl fidl::encoding::TypeMarker for ResourceArgs {
7036 type Owned = Self;
7037
7038 #[inline(always)]
7039 fn inline_align(_context: fidl::encoding::Context) -> usize {
7040 8
7041 }
7042
7043 #[inline(always)]
7044 fn inline_size(_context: fidl::encoding::Context) -> usize {
7045 16
7046 }
7047 }
7048
7049 unsafe impl fidl::encoding::Encode<ResourceArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
7050 for &mut ResourceArgs
7051 {
7052 unsafe fn encode(
7053 self,
7054 encoder: &mut fidl::encoding::Encoder<
7055 '_,
7056 fidl::encoding::DefaultFuchsiaResourceDialect,
7057 >,
7058 offset: usize,
7059 mut depth: fidl::encoding::Depth,
7060 ) -> fidl::Result<()> {
7061 encoder.debug_check_bounds::<ResourceArgs>(offset);
7062 let max_ordinal: u64 = self.max_ordinal_present();
7064 encoder.write_num(max_ordinal, offset);
7065 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7066 if max_ordinal == 0 {
7068 return Ok(());
7069 }
7070 depth.increment()?;
7071 let envelope_size = 8;
7072 let bytes_len = max_ordinal as usize * envelope_size;
7073 #[allow(unused_variables)]
7074 let offset = encoder.out_of_line_offset(bytes_len);
7075 let mut _prev_end_offset: usize = 0;
7076 if 1 > max_ordinal {
7077 return Ok(());
7078 }
7079
7080 let cur_offset: usize = (1 - 1) * envelope_size;
7083
7084 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7086
7087 fidl::encoding::encode_in_envelope_optional::<
7092 fidl::encoding::BoundedString<128>,
7093 fidl::encoding::DefaultFuchsiaResourceDialect,
7094 >(
7095 self.name.as_ref().map(
7096 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
7097 ),
7098 encoder,
7099 offset + cur_offset,
7100 depth,
7101 )?;
7102
7103 _prev_end_offset = cur_offset + envelope_size;
7104 if 2 > max_ordinal {
7105 return Ok(());
7106 }
7107
7108 let cur_offset: usize = (2 - 1) * envelope_size;
7111
7112 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7114
7115 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
7120 self.properties.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
7121 encoder, offset + cur_offset, depth
7122 )?;
7123
7124 _prev_end_offset = cur_offset + envelope_size;
7125 if 3 > max_ordinal {
7126 return Ok(());
7127 }
7128
7129 let cur_offset: usize = (3 - 1) * envelope_size;
7132
7133 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7135
7136 fidl::encoding::encode_in_envelope_optional::<
7141 fidl::encoding::Vector<Offer, 128>,
7142 fidl::encoding::DefaultFuchsiaResourceDialect,
7143 >(
7144 self.offers.as_ref().map(
7145 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
7146 ),
7147 encoder,
7148 offset + cur_offset,
7149 depth,
7150 )?;
7151
7152 _prev_end_offset = cur_offset + envelope_size;
7153 if 4 > max_ordinal {
7154 return Ok(());
7155 }
7156
7157 let cur_offset: usize = (4 - 1) * envelope_size;
7160
7161 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7163
7164 fidl::encoding::encode_in_envelope_optional::<
7169 BusInfo,
7170 fidl::encoding::DefaultFuchsiaResourceDialect,
7171 >(
7172 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
7173 encoder,
7174 offset + cur_offset,
7175 depth,
7176 )?;
7177
7178 _prev_end_offset = cur_offset + envelope_size;
7179
7180 Ok(())
7181 }
7182 }
7183
7184 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for ResourceArgs {
7185 #[inline(always)]
7186 fn new_empty() -> Self {
7187 Self::default()
7188 }
7189
7190 unsafe fn decode(
7191 &mut self,
7192 decoder: &mut fidl::encoding::Decoder<
7193 '_,
7194 fidl::encoding::DefaultFuchsiaResourceDialect,
7195 >,
7196 offset: usize,
7197 mut depth: fidl::encoding::Depth,
7198 ) -> fidl::Result<()> {
7199 decoder.debug_check_bounds::<Self>(offset);
7200 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7201 None => return Err(fidl::Error::NotNullable),
7202 Some(len) => len,
7203 };
7204 if len == 0 {
7206 return Ok(());
7207 };
7208 depth.increment()?;
7209 let envelope_size = 8;
7210 let bytes_len = len * envelope_size;
7211 let offset = decoder.out_of_line_offset(bytes_len)?;
7212 let mut _next_ordinal_to_read = 0;
7214 let mut next_offset = offset;
7215 let end_offset = offset + bytes_len;
7216 _next_ordinal_to_read += 1;
7217 if next_offset >= end_offset {
7218 return Ok(());
7219 }
7220
7221 while _next_ordinal_to_read < 1 {
7223 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7224 _next_ordinal_to_read += 1;
7225 next_offset += envelope_size;
7226 }
7227
7228 let next_out_of_line = decoder.next_out_of_line();
7229 let handles_before = decoder.remaining_handles();
7230 if let Some((inlined, num_bytes, num_handles)) =
7231 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7232 {
7233 let member_inline_size =
7234 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
7235 decoder.context,
7236 );
7237 if inlined != (member_inline_size <= 4) {
7238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7239 }
7240 let inner_offset;
7241 let mut inner_depth = depth.clone();
7242 if inlined {
7243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7244 inner_offset = next_offset;
7245 } else {
7246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7247 inner_depth.increment()?;
7248 }
7249 let val_ref = self.name.get_or_insert_with(|| {
7250 fidl::new_empty!(
7251 fidl::encoding::BoundedString<128>,
7252 fidl::encoding::DefaultFuchsiaResourceDialect
7253 )
7254 });
7255 fidl::decode!(
7256 fidl::encoding::BoundedString<128>,
7257 fidl::encoding::DefaultFuchsiaResourceDialect,
7258 val_ref,
7259 decoder,
7260 inner_offset,
7261 inner_depth
7262 )?;
7263 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7264 {
7265 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7266 }
7267 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7268 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7269 }
7270 }
7271
7272 next_offset += envelope_size;
7273 _next_ordinal_to_read += 1;
7274 if next_offset >= end_offset {
7275 return Ok(());
7276 }
7277
7278 while _next_ordinal_to_read < 2 {
7280 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7281 _next_ordinal_to_read += 1;
7282 next_offset += envelope_size;
7283 }
7284
7285 let next_out_of_line = decoder.next_out_of_line();
7286 let handles_before = decoder.remaining_handles();
7287 if let Some((inlined, num_bytes, num_handles)) =
7288 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7289 {
7290 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7291 if inlined != (member_inline_size <= 4) {
7292 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7293 }
7294 let inner_offset;
7295 let mut inner_depth = depth.clone();
7296 if inlined {
7297 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7298 inner_offset = next_offset;
7299 } else {
7300 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7301 inner_depth.increment()?;
7302 }
7303 let val_ref =
7304 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
7305 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7306 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7307 {
7308 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7309 }
7310 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7311 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7312 }
7313 }
7314
7315 next_offset += envelope_size;
7316 _next_ordinal_to_read += 1;
7317 if next_offset >= end_offset {
7318 return Ok(());
7319 }
7320
7321 while _next_ordinal_to_read < 3 {
7323 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7324 _next_ordinal_to_read += 1;
7325 next_offset += envelope_size;
7326 }
7327
7328 let next_out_of_line = decoder.next_out_of_line();
7329 let handles_before = decoder.remaining_handles();
7330 if let Some((inlined, num_bytes, num_handles)) =
7331 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7332 {
7333 let member_inline_size =
7334 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
7335 decoder.context,
7336 );
7337 if inlined != (member_inline_size <= 4) {
7338 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7339 }
7340 let inner_offset;
7341 let mut inner_depth = depth.clone();
7342 if inlined {
7343 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7344 inner_offset = next_offset;
7345 } else {
7346 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7347 inner_depth.increment()?;
7348 }
7349 let val_ref =
7350 self.offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
7351 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
7352 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7353 {
7354 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7355 }
7356 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7357 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7358 }
7359 }
7360
7361 next_offset += envelope_size;
7362 _next_ordinal_to_read += 1;
7363 if next_offset >= end_offset {
7364 return Ok(());
7365 }
7366
7367 while _next_ordinal_to_read < 4 {
7369 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7370 _next_ordinal_to_read += 1;
7371 next_offset += envelope_size;
7372 }
7373
7374 let next_out_of_line = decoder.next_out_of_line();
7375 let handles_before = decoder.remaining_handles();
7376 if let Some((inlined, num_bytes, num_handles)) =
7377 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7378 {
7379 let member_inline_size =
7380 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7381 if inlined != (member_inline_size <= 4) {
7382 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7383 }
7384 let inner_offset;
7385 let mut inner_depth = depth.clone();
7386 if inlined {
7387 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7388 inner_offset = next_offset;
7389 } else {
7390 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7391 inner_depth.increment()?;
7392 }
7393 let val_ref = self.bus_info.get_or_insert_with(|| {
7394 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
7395 });
7396 fidl::decode!(
7397 BusInfo,
7398 fidl::encoding::DefaultFuchsiaResourceDialect,
7399 val_ref,
7400 decoder,
7401 inner_offset,
7402 inner_depth
7403 )?;
7404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7405 {
7406 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7407 }
7408 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7409 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7410 }
7411 }
7412
7413 next_offset += envelope_size;
7414
7415 while next_offset < end_offset {
7417 _next_ordinal_to_read += 1;
7418 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7419 next_offset += envelope_size;
7420 }
7421
7422 Ok(())
7423 }
7424 }
7425
7426 impl fidl::encoding::ResourceTypeMarker for DriverResult {
7427 type Borrowed<'a> = &'a mut Self;
7428 fn take_or_borrow<'a>(
7429 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
7430 ) -> Self::Borrowed<'a> {
7431 value
7432 }
7433 }
7434
7435 unsafe impl fidl::encoding::TypeMarker for DriverResult {
7436 type Owned = Self;
7437
7438 #[inline(always)]
7439 fn inline_align(_context: fidl::encoding::Context) -> usize {
7440 8
7441 }
7442
7443 #[inline(always)]
7444 fn inline_size(_context: fidl::encoding::Context) -> usize {
7445 16
7446 }
7447 }
7448
7449 unsafe impl fidl::encoding::Encode<DriverResult, fidl::encoding::DefaultFuchsiaResourceDialect>
7450 for &mut DriverResult
7451 {
7452 #[inline]
7453 unsafe fn encode(
7454 self,
7455 encoder: &mut fidl::encoding::Encoder<
7456 '_,
7457 fidl::encoding::DefaultFuchsiaResourceDialect,
7458 >,
7459 offset: usize,
7460 _depth: fidl::encoding::Depth,
7461 ) -> fidl::Result<()> {
7462 encoder.debug_check_bounds::<DriverResult>(offset);
7463 encoder.write_num::<u64>(self.ordinal(), offset);
7464 match self {
7465 DriverResult::DriverStartedNodeToken(ref mut val) => {
7466 fidl::encoding::encode_in_envelope::<
7467 fidl::encoding::HandleType<
7468 fidl::Event,
7469 { fidl::ObjectType::EVENT.into_raw() },
7470 2147483648,
7471 >,
7472 fidl::encoding::DefaultFuchsiaResourceDialect,
7473 >(
7474 <fidl::encoding::HandleType<
7475 fidl::Event,
7476 { fidl::ObjectType::EVENT.into_raw() },
7477 2147483648,
7478 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
7479 val
7480 ),
7481 encoder,
7482 offset + 8,
7483 _depth,
7484 )
7485 }
7486 DriverResult::MatchError(ref val) => fidl::encoding::encode_in_envelope::<
7487 i32,
7488 fidl::encoding::DefaultFuchsiaResourceDialect,
7489 >(
7490 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7491 encoder,
7492 offset + 8,
7493 _depth,
7494 ),
7495 DriverResult::StartError(ref val) => fidl::encoding::encode_in_envelope::<
7496 i32,
7497 fidl::encoding::DefaultFuchsiaResourceDialect,
7498 >(
7499 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7500 encoder,
7501 offset + 8,
7502 _depth,
7503 ),
7504 DriverResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7505 }
7506 }
7507 }
7508
7509 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {
7510 #[inline(always)]
7511 fn new_empty() -> Self {
7512 Self::__SourceBreaking { unknown_ordinal: 0 }
7513 }
7514
7515 #[inline]
7516 unsafe fn decode(
7517 &mut self,
7518 decoder: &mut fidl::encoding::Decoder<
7519 '_,
7520 fidl::encoding::DefaultFuchsiaResourceDialect,
7521 >,
7522 offset: usize,
7523 mut depth: fidl::encoding::Depth,
7524 ) -> fidl::Result<()> {
7525 decoder.debug_check_bounds::<Self>(offset);
7526 #[allow(unused_variables)]
7527 let next_out_of_line = decoder.next_out_of_line();
7528 let handles_before = decoder.remaining_handles();
7529 let (ordinal, inlined, num_bytes, num_handles) =
7530 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7531
7532 let member_inline_size = match ordinal {
7533 1 => <fidl::encoding::HandleType<
7534 fidl::Event,
7535 { fidl::ObjectType::EVENT.into_raw() },
7536 2147483648,
7537 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7538 2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7539 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7540 0 => return Err(fidl::Error::UnknownUnionTag),
7541 _ => num_bytes as usize,
7542 };
7543
7544 if inlined != (member_inline_size <= 4) {
7545 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7546 }
7547 let _inner_offset;
7548 if inlined {
7549 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7550 _inner_offset = offset + 8;
7551 } else {
7552 depth.increment()?;
7553 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7554 }
7555 match ordinal {
7556 1 => {
7557 #[allow(irrefutable_let_patterns)]
7558 if let DriverResult::DriverStartedNodeToken(_) = self {
7559 } else {
7561 *self = DriverResult::DriverStartedNodeToken(
7563 fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
7564 );
7565 }
7566 #[allow(irrefutable_let_patterns)]
7567 if let DriverResult::DriverStartedNodeToken(ref mut val) = self {
7568 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
7569 } else {
7570 unreachable!()
7571 }
7572 }
7573 2 => {
7574 #[allow(irrefutable_let_patterns)]
7575 if let DriverResult::MatchError(_) = self {
7576 } else {
7578 *self = DriverResult::MatchError(fidl::new_empty!(
7580 i32,
7581 fidl::encoding::DefaultFuchsiaResourceDialect
7582 ));
7583 }
7584 #[allow(irrefutable_let_patterns)]
7585 if let DriverResult::MatchError(ref mut val) = self {
7586 fidl::decode!(
7587 i32,
7588 fidl::encoding::DefaultFuchsiaResourceDialect,
7589 val,
7590 decoder,
7591 _inner_offset,
7592 depth
7593 )?;
7594 } else {
7595 unreachable!()
7596 }
7597 }
7598 3 => {
7599 #[allow(irrefutable_let_patterns)]
7600 if let DriverResult::StartError(_) = self {
7601 } else {
7603 *self = DriverResult::StartError(fidl::new_empty!(
7605 i32,
7606 fidl::encoding::DefaultFuchsiaResourceDialect
7607 ));
7608 }
7609 #[allow(irrefutable_let_patterns)]
7610 if let DriverResult::StartError(ref mut val) = self {
7611 fidl::decode!(
7612 i32,
7613 fidl::encoding::DefaultFuchsiaResourceDialect,
7614 val,
7615 decoder,
7616 _inner_offset,
7617 depth
7618 )?;
7619 } else {
7620 unreachable!()
7621 }
7622 }
7623 #[allow(deprecated)]
7624 ordinal => {
7625 for _ in 0..num_handles {
7626 decoder.drop_next_handle()?;
7627 }
7628 *self = DriverResult::__SourceBreaking { unknown_ordinal: ordinal };
7629 }
7630 }
7631 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7632 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7633 }
7634 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7635 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7636 }
7637 Ok(())
7638 }
7639 }
7640}