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