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 Self { client: fidl::client::sync::Client::new(channel) }
305 }
306
307 pub fn into_channel(self) -> fidl::Channel {
308 self.client.into_channel()
309 }
310
311 pub fn wait_for_event(
314 &self,
315 deadline: zx::MonotonicInstant,
316 ) -> Result<CompositeNodeManagerEvent, fidl::Error> {
317 CompositeNodeManagerEvent::decode(
318 self.client.wait_for_event::<CompositeNodeManagerMarker>(deadline)?,
319 )
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 >, CompositeNodeManagerMarker>(
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 Self { client: fidl::client::sync::Client::new(channel) }
1082 }
1083
1084 pub fn into_channel(self) -> fidl::Channel {
1085 self.client.into_channel()
1086 }
1087
1088 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<NodeEvent, fidl::Error> {
1091 NodeEvent::decode(self.client.wait_for_event::<NodeMarker>(deadline)?)
1092 }
1093
1094 pub fn r#add_child(
1100 &self,
1101 mut args: NodeAddArgs,
1102 mut controller: fidl::endpoints::ServerEnd<NodeControllerMarker>,
1103 mut node: Option<fidl::endpoints::ServerEnd<NodeMarker>>,
1104 ___deadline: zx::MonotonicInstant,
1105 ) -> Result<NodeAddChildResult, fidl::Error> {
1106 let _response = self.client.send_query::<
1107 NodeAddChildRequest,
1108 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, NodeError>,
1109 NodeMarker,
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 Self { client: fidl::client::sync::Client::new(channel) }
1639 }
1640
1641 pub fn into_channel(self) -> fidl::Channel {
1642 self.client.into_channel()
1643 }
1644
1645 pub fn wait_for_event(
1648 &self,
1649 deadline: zx::MonotonicInstant,
1650 ) -> Result<NodeControllerEvent, fidl::Error> {
1651 NodeControllerEvent::decode(self.client.wait_for_event::<NodeControllerMarker>(deadline)?)
1652 }
1653
1654 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1656 self.client.send::<fidl::encoding::EmptyPayload>(
1657 (),
1658 0x54fa8b3dfe7bb341,
1659 fidl::encoding::DynamicFlags::FLEXIBLE,
1660 )
1661 }
1662
1663 pub fn r#request_bind(
1670 &self,
1671 mut payload: &NodeControllerRequestBindRequest,
1672 ___deadline: zx::MonotonicInstant,
1673 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1674 let _response = self.client.send_query::<
1675 NodeControllerRequestBindRequest,
1676 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1677 NodeControllerMarker,
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 NodeControllerMarker,
1702 >(
1703 (),
1704 0x69f7106e47d81387,
1705 fidl::encoding::DynamicFlags::FLEXIBLE,
1706 ___deadline,
1707 )?
1708 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1709 Ok(_response.map(|x| x))
1710 }
1711}
1712
1713#[cfg(target_os = "fuchsia")]
1714impl From<NodeControllerSynchronousProxy> for zx::NullableHandle {
1715 fn from(value: NodeControllerSynchronousProxy) -> Self {
1716 value.into_channel().into()
1717 }
1718}
1719
1720#[cfg(target_os = "fuchsia")]
1721impl From<fidl::Channel> for NodeControllerSynchronousProxy {
1722 fn from(value: fidl::Channel) -> Self {
1723 Self::new(value)
1724 }
1725}
1726
1727#[cfg(target_os = "fuchsia")]
1728impl fidl::endpoints::FromClient for NodeControllerSynchronousProxy {
1729 type Protocol = NodeControllerMarker;
1730
1731 fn from_client(value: fidl::endpoints::ClientEnd<NodeControllerMarker>) -> Self {
1732 Self::new(value.into_channel())
1733 }
1734}
1735
1736#[derive(Debug, Clone)]
1737pub struct NodeControllerProxy {
1738 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1739}
1740
1741impl fidl::endpoints::Proxy for NodeControllerProxy {
1742 type Protocol = NodeControllerMarker;
1743
1744 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1745 Self::new(inner)
1746 }
1747
1748 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1749 self.client.into_channel().map_err(|client| Self { client })
1750 }
1751
1752 fn as_channel(&self) -> &::fidl::AsyncChannel {
1753 self.client.as_channel()
1754 }
1755}
1756
1757impl NodeControllerProxy {
1758 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1760 let protocol_name = <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1761 Self { client: fidl::client::Client::new(channel, protocol_name) }
1762 }
1763
1764 pub fn take_event_stream(&self) -> NodeControllerEventStream {
1770 NodeControllerEventStream { event_receiver: self.client.take_event_receiver() }
1771 }
1772
1773 pub fn r#remove(&self) -> Result<(), fidl::Error> {
1775 NodeControllerProxyInterface::r#remove(self)
1776 }
1777
1778 pub fn r#request_bind(
1785 &self,
1786 mut payload: &NodeControllerRequestBindRequest,
1787 ) -> fidl::client::QueryResponseFut<
1788 NodeControllerRequestBindResult,
1789 fidl::encoding::DefaultFuchsiaResourceDialect,
1790 > {
1791 NodeControllerProxyInterface::r#request_bind(self, payload)
1792 }
1793
1794 pub fn r#wait_for_driver(
1801 &self,
1802 ) -> fidl::client::QueryResponseFut<
1803 NodeControllerWaitForDriverResult,
1804 fidl::encoding::DefaultFuchsiaResourceDialect,
1805 > {
1806 NodeControllerProxyInterface::r#wait_for_driver(self)
1807 }
1808}
1809
1810impl NodeControllerProxyInterface for NodeControllerProxy {
1811 fn r#remove(&self) -> Result<(), fidl::Error> {
1812 self.client.send::<fidl::encoding::EmptyPayload>(
1813 (),
1814 0x54fa8b3dfe7bb341,
1815 fidl::encoding::DynamicFlags::FLEXIBLE,
1816 )
1817 }
1818
1819 type RequestBindResponseFut = fidl::client::QueryResponseFut<
1820 NodeControllerRequestBindResult,
1821 fidl::encoding::DefaultFuchsiaResourceDialect,
1822 >;
1823 fn r#request_bind(
1824 &self,
1825 mut payload: &NodeControllerRequestBindRequest,
1826 ) -> Self::RequestBindResponseFut {
1827 fn _decode(
1828 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1829 ) -> Result<NodeControllerRequestBindResult, fidl::Error> {
1830 let _response = fidl::client::decode_transaction_body::<
1831 fidl::encoding::FlexibleResultType<fidl::encoding::EmptyStruct, i32>,
1832 fidl::encoding::DefaultFuchsiaResourceDialect,
1833 0x41b954726b13508f,
1834 >(_buf?)?
1835 .into_result::<NodeControllerMarker>("request_bind")?;
1836 Ok(_response.map(|x| x))
1837 }
1838 self.client.send_query_and_decode::<
1839 NodeControllerRequestBindRequest,
1840 NodeControllerRequestBindResult,
1841 >(
1842 payload,
1843 0x41b954726b13508f,
1844 fidl::encoding::DynamicFlags::FLEXIBLE,
1845 _decode,
1846 )
1847 }
1848
1849 type WaitForDriverResponseFut = fidl::client::QueryResponseFut<
1850 NodeControllerWaitForDriverResult,
1851 fidl::encoding::DefaultFuchsiaResourceDialect,
1852 >;
1853 fn r#wait_for_driver(&self) -> Self::WaitForDriverResponseFut {
1854 fn _decode(
1855 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1856 ) -> Result<NodeControllerWaitForDriverResult, fidl::Error> {
1857 let _response = fidl::client::decode_transaction_body::<
1858 fidl::encoding::FlexibleResultType<DriverResult, i32>,
1859 fidl::encoding::DefaultFuchsiaResourceDialect,
1860 0x69f7106e47d81387,
1861 >(_buf?)?
1862 .into_result::<NodeControllerMarker>("wait_for_driver")?;
1863 Ok(_response.map(|x| x))
1864 }
1865 self.client.send_query_and_decode::<
1866 fidl::encoding::EmptyPayload,
1867 NodeControllerWaitForDriverResult,
1868 >(
1869 (),
1870 0x69f7106e47d81387,
1871 fidl::encoding::DynamicFlags::FLEXIBLE,
1872 _decode,
1873 )
1874 }
1875}
1876
1877pub struct NodeControllerEventStream {
1878 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1879}
1880
1881impl std::marker::Unpin for NodeControllerEventStream {}
1882
1883impl futures::stream::FusedStream for NodeControllerEventStream {
1884 fn is_terminated(&self) -> bool {
1885 self.event_receiver.is_terminated()
1886 }
1887}
1888
1889impl futures::Stream for NodeControllerEventStream {
1890 type Item = Result<NodeControllerEvent, fidl::Error>;
1891
1892 fn poll_next(
1893 mut self: std::pin::Pin<&mut Self>,
1894 cx: &mut std::task::Context<'_>,
1895 ) -> std::task::Poll<Option<Self::Item>> {
1896 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1897 &mut self.event_receiver,
1898 cx
1899 )?) {
1900 Some(buf) => std::task::Poll::Ready(Some(NodeControllerEvent::decode(buf))),
1901 None => std::task::Poll::Ready(None),
1902 }
1903 }
1904}
1905
1906#[derive(Debug)]
1907pub enum NodeControllerEvent {
1908 OnBind {
1909 payload: NodeControllerOnBindRequest,
1910 },
1911 #[non_exhaustive]
1912 _UnknownEvent {
1913 ordinal: u64,
1915 },
1916}
1917
1918impl NodeControllerEvent {
1919 #[allow(irrefutable_let_patterns)]
1920 pub fn into_on_bind(self) -> Option<NodeControllerOnBindRequest> {
1921 if let NodeControllerEvent::OnBind { payload } = self { Some((payload)) } else { None }
1922 }
1923
1924 fn decode(
1926 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1927 ) -> Result<NodeControllerEvent, fidl::Error> {
1928 let (bytes, _handles) = buf.split_mut();
1929 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1930 debug_assert_eq!(tx_header.tx_id, 0);
1931 match tx_header.ordinal {
1932 0x51f4165bc5ea202a => {
1933 let mut out = fidl::new_empty!(
1934 NodeControllerOnBindRequest,
1935 fidl::encoding::DefaultFuchsiaResourceDialect
1936 );
1937 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerOnBindRequest>(&tx_header, _body_bytes, _handles, &mut out)?;
1938 Ok((NodeControllerEvent::OnBind { payload: out }))
1939 }
1940 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1941 Ok(NodeControllerEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1942 }
1943 _ => Err(fidl::Error::UnknownOrdinal {
1944 ordinal: tx_header.ordinal,
1945 protocol_name:
1946 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1947 }),
1948 }
1949 }
1950}
1951
1952pub struct NodeControllerRequestStream {
1954 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1955 is_terminated: bool,
1956}
1957
1958impl std::marker::Unpin for NodeControllerRequestStream {}
1959
1960impl futures::stream::FusedStream for NodeControllerRequestStream {
1961 fn is_terminated(&self) -> bool {
1962 self.is_terminated
1963 }
1964}
1965
1966impl fidl::endpoints::RequestStream for NodeControllerRequestStream {
1967 type Protocol = NodeControllerMarker;
1968 type ControlHandle = NodeControllerControlHandle;
1969
1970 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1971 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1972 }
1973
1974 fn control_handle(&self) -> Self::ControlHandle {
1975 NodeControllerControlHandle { inner: self.inner.clone() }
1976 }
1977
1978 fn into_inner(
1979 self,
1980 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1981 {
1982 (self.inner, self.is_terminated)
1983 }
1984
1985 fn from_inner(
1986 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1987 is_terminated: bool,
1988 ) -> Self {
1989 Self { inner, is_terminated }
1990 }
1991}
1992
1993impl futures::Stream for NodeControllerRequestStream {
1994 type Item = Result<NodeControllerRequest, fidl::Error>;
1995
1996 fn poll_next(
1997 mut self: std::pin::Pin<&mut Self>,
1998 cx: &mut std::task::Context<'_>,
1999 ) -> std::task::Poll<Option<Self::Item>> {
2000 let this = &mut *self;
2001 if this.inner.check_shutdown(cx) {
2002 this.is_terminated = true;
2003 return std::task::Poll::Ready(None);
2004 }
2005 if this.is_terminated {
2006 panic!("polled NodeControllerRequestStream after completion");
2007 }
2008 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2009 |bytes, handles| {
2010 match this.inner.channel().read_etc(cx, bytes, handles) {
2011 std::task::Poll::Ready(Ok(())) => {}
2012 std::task::Poll::Pending => return std::task::Poll::Pending,
2013 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2014 this.is_terminated = true;
2015 return std::task::Poll::Ready(None);
2016 }
2017 std::task::Poll::Ready(Err(e)) => {
2018 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2019 e.into(),
2020 ))));
2021 }
2022 }
2023
2024 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2026
2027 std::task::Poll::Ready(Some(match header.ordinal {
2028 0x54fa8b3dfe7bb341 => {
2029 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2030 let mut req = fidl::new_empty!(
2031 fidl::encoding::EmptyPayload,
2032 fidl::encoding::DefaultFuchsiaResourceDialect
2033 );
2034 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2035 let control_handle =
2036 NodeControllerControlHandle { inner: this.inner.clone() };
2037 Ok(NodeControllerRequest::Remove { control_handle })
2038 }
2039 0x41b954726b13508f => {
2040 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2041 let mut req = fidl::new_empty!(
2042 NodeControllerRequestBindRequest,
2043 fidl::encoding::DefaultFuchsiaResourceDialect
2044 );
2045 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<NodeControllerRequestBindRequest>(&header, _body_bytes, handles, &mut req)?;
2046 let control_handle =
2047 NodeControllerControlHandle { inner: this.inner.clone() };
2048 Ok(NodeControllerRequest::RequestBind {
2049 payload: req,
2050 responder: NodeControllerRequestBindResponder {
2051 control_handle: std::mem::ManuallyDrop::new(control_handle),
2052 tx_id: header.tx_id,
2053 },
2054 })
2055 }
2056 0x69f7106e47d81387 => {
2057 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2058 let mut req = fidl::new_empty!(
2059 fidl::encoding::EmptyPayload,
2060 fidl::encoding::DefaultFuchsiaResourceDialect
2061 );
2062 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2063 let control_handle =
2064 NodeControllerControlHandle { inner: this.inner.clone() };
2065 Ok(NodeControllerRequest::WaitForDriver {
2066 responder: NodeControllerWaitForDriverResponder {
2067 control_handle: std::mem::ManuallyDrop::new(control_handle),
2068 tx_id: header.tx_id,
2069 },
2070 })
2071 }
2072 _ if header.tx_id == 0
2073 && header
2074 .dynamic_flags()
2075 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2076 {
2077 Ok(NodeControllerRequest::_UnknownMethod {
2078 ordinal: header.ordinal,
2079 control_handle: NodeControllerControlHandle {
2080 inner: this.inner.clone(),
2081 },
2082 method_type: fidl::MethodType::OneWay,
2083 })
2084 }
2085 _ if header
2086 .dynamic_flags()
2087 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
2088 {
2089 this.inner.send_framework_err(
2090 fidl::encoding::FrameworkErr::UnknownMethod,
2091 header.tx_id,
2092 header.ordinal,
2093 header.dynamic_flags(),
2094 (bytes, handles),
2095 )?;
2096 Ok(NodeControllerRequest::_UnknownMethod {
2097 ordinal: header.ordinal,
2098 control_handle: NodeControllerControlHandle {
2099 inner: this.inner.clone(),
2100 },
2101 method_type: fidl::MethodType::TwoWay,
2102 })
2103 }
2104 _ => Err(fidl::Error::UnknownOrdinal {
2105 ordinal: header.ordinal,
2106 protocol_name:
2107 <NodeControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2108 }),
2109 }))
2110 },
2111 )
2112 }
2113}
2114
2115#[derive(Debug)]
2117pub enum NodeControllerRequest {
2118 Remove { control_handle: NodeControllerControlHandle },
2120 RequestBind {
2127 payload: NodeControllerRequestBindRequest,
2128 responder: NodeControllerRequestBindResponder,
2129 },
2130 WaitForDriver { responder: NodeControllerWaitForDriverResponder },
2137 #[non_exhaustive]
2139 _UnknownMethod {
2140 ordinal: u64,
2142 control_handle: NodeControllerControlHandle,
2143 method_type: fidl::MethodType,
2144 },
2145}
2146
2147impl NodeControllerRequest {
2148 #[allow(irrefutable_let_patterns)]
2149 pub fn into_remove(self) -> Option<(NodeControllerControlHandle)> {
2150 if let NodeControllerRequest::Remove { control_handle } = self {
2151 Some((control_handle))
2152 } else {
2153 None
2154 }
2155 }
2156
2157 #[allow(irrefutable_let_patterns)]
2158 pub fn into_request_bind(
2159 self,
2160 ) -> Option<(NodeControllerRequestBindRequest, NodeControllerRequestBindResponder)> {
2161 if let NodeControllerRequest::RequestBind { payload, responder } = self {
2162 Some((payload, responder))
2163 } else {
2164 None
2165 }
2166 }
2167
2168 #[allow(irrefutable_let_patterns)]
2169 pub fn into_wait_for_driver(self) -> Option<(NodeControllerWaitForDriverResponder)> {
2170 if let NodeControllerRequest::WaitForDriver { responder } = self {
2171 Some((responder))
2172 } else {
2173 None
2174 }
2175 }
2176
2177 pub fn method_name(&self) -> &'static str {
2179 match *self {
2180 NodeControllerRequest::Remove { .. } => "remove",
2181 NodeControllerRequest::RequestBind { .. } => "request_bind",
2182 NodeControllerRequest::WaitForDriver { .. } => "wait_for_driver",
2183 NodeControllerRequest::_UnknownMethod {
2184 method_type: fidl::MethodType::OneWay, ..
2185 } => "unknown one-way method",
2186 NodeControllerRequest::_UnknownMethod {
2187 method_type: fidl::MethodType::TwoWay, ..
2188 } => "unknown two-way method",
2189 }
2190 }
2191}
2192
2193#[derive(Debug, Clone)]
2194pub struct NodeControllerControlHandle {
2195 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2196}
2197
2198impl fidl::endpoints::ControlHandle for NodeControllerControlHandle {
2199 fn shutdown(&self) {
2200 self.inner.shutdown()
2201 }
2202
2203 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2204 self.inner.shutdown_with_epitaph(status)
2205 }
2206
2207 fn is_closed(&self) -> bool {
2208 self.inner.channel().is_closed()
2209 }
2210 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2211 self.inner.channel().on_closed()
2212 }
2213
2214 #[cfg(target_os = "fuchsia")]
2215 fn signal_peer(
2216 &self,
2217 clear_mask: zx::Signals,
2218 set_mask: zx::Signals,
2219 ) -> Result<(), zx_status::Status> {
2220 use fidl::Peered;
2221 self.inner.channel().signal_peer(clear_mask, set_mask)
2222 }
2223}
2224
2225impl NodeControllerControlHandle {
2226 pub fn send_on_bind(
2227 &self,
2228 mut payload: NodeControllerOnBindRequest,
2229 ) -> Result<(), fidl::Error> {
2230 self.inner.send::<NodeControllerOnBindRequest>(
2231 &mut payload,
2232 0,
2233 0x51f4165bc5ea202a,
2234 fidl::encoding::DynamicFlags::FLEXIBLE,
2235 )
2236 }
2237}
2238
2239#[must_use = "FIDL methods require a response to be sent"]
2240#[derive(Debug)]
2241pub struct NodeControllerRequestBindResponder {
2242 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2243 tx_id: u32,
2244}
2245
2246impl std::ops::Drop for NodeControllerRequestBindResponder {
2250 fn drop(&mut self) {
2251 self.control_handle.shutdown();
2252 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2254 }
2255}
2256
2257impl fidl::endpoints::Responder for NodeControllerRequestBindResponder {
2258 type ControlHandle = NodeControllerControlHandle;
2259
2260 fn control_handle(&self) -> &NodeControllerControlHandle {
2261 &self.control_handle
2262 }
2263
2264 fn drop_without_shutdown(mut self) {
2265 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2267 std::mem::forget(self);
2269 }
2270}
2271
2272impl NodeControllerRequestBindResponder {
2273 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2277 let _result = self.send_raw(result);
2278 if _result.is_err() {
2279 self.control_handle.shutdown();
2280 }
2281 self.drop_without_shutdown();
2282 _result
2283 }
2284
2285 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2287 let _result = self.send_raw(result);
2288 self.drop_without_shutdown();
2289 _result
2290 }
2291
2292 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
2293 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2294 fidl::encoding::EmptyStruct,
2295 i32,
2296 >>(
2297 fidl::encoding::FlexibleResult::new(result),
2298 self.tx_id,
2299 0x41b954726b13508f,
2300 fidl::encoding::DynamicFlags::FLEXIBLE,
2301 )
2302 }
2303}
2304
2305#[must_use = "FIDL methods require a response to be sent"]
2306#[derive(Debug)]
2307pub struct NodeControllerWaitForDriverResponder {
2308 control_handle: std::mem::ManuallyDrop<NodeControllerControlHandle>,
2309 tx_id: u32,
2310}
2311
2312impl std::ops::Drop for NodeControllerWaitForDriverResponder {
2316 fn drop(&mut self) {
2317 self.control_handle.shutdown();
2318 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2320 }
2321}
2322
2323impl fidl::endpoints::Responder for NodeControllerWaitForDriverResponder {
2324 type ControlHandle = NodeControllerControlHandle;
2325
2326 fn control_handle(&self) -> &NodeControllerControlHandle {
2327 &self.control_handle
2328 }
2329
2330 fn drop_without_shutdown(mut self) {
2331 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2333 std::mem::forget(self);
2335 }
2336}
2337
2338impl NodeControllerWaitForDriverResponder {
2339 pub fn send(self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2343 let _result = self.send_raw(result);
2344 if _result.is_err() {
2345 self.control_handle.shutdown();
2346 }
2347 self.drop_without_shutdown();
2348 _result
2349 }
2350
2351 pub fn send_no_shutdown_on_err(
2353 self,
2354 mut result: Result<DriverResult, i32>,
2355 ) -> Result<(), fidl::Error> {
2356 let _result = self.send_raw(result);
2357 self.drop_without_shutdown();
2358 _result
2359 }
2360
2361 fn send_raw(&self, mut result: Result<DriverResult, i32>) -> Result<(), fidl::Error> {
2362 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<DriverResult, i32>>(
2363 fidl::encoding::FlexibleResult::new(result.as_mut().map_err(|e| *e)),
2364 self.tx_id,
2365 0x69f7106e47d81387,
2366 fidl::encoding::DynamicFlags::FLEXIBLE,
2367 )
2368 }
2369}
2370
2371mod internal {
2372 use super::*;
2373
2374 impl fidl::encoding::ResourceTypeMarker for DriverStartRequest {
2375 type Borrowed<'a> = &'a mut Self;
2376 fn take_or_borrow<'a>(
2377 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2378 ) -> Self::Borrowed<'a> {
2379 value
2380 }
2381 }
2382
2383 unsafe impl fidl::encoding::TypeMarker for DriverStartRequest {
2384 type Owned = Self;
2385
2386 #[inline(always)]
2387 fn inline_align(_context: fidl::encoding::Context) -> usize {
2388 8
2389 }
2390
2391 #[inline(always)]
2392 fn inline_size(_context: fidl::encoding::Context) -> usize {
2393 16
2394 }
2395 }
2396
2397 unsafe impl
2398 fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2399 for &mut DriverStartRequest
2400 {
2401 #[inline]
2402 unsafe fn encode(
2403 self,
2404 encoder: &mut fidl::encoding::Encoder<
2405 '_,
2406 fidl::encoding::DefaultFuchsiaResourceDialect,
2407 >,
2408 offset: usize,
2409 _depth: fidl::encoding::Depth,
2410 ) -> fidl::Result<()> {
2411 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2412 fidl::encoding::Encode::<
2414 DriverStartRequest,
2415 fidl::encoding::DefaultFuchsiaResourceDialect,
2416 >::encode(
2417 (<DriverStartArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2418 &mut self.start_args,
2419 ),),
2420 encoder,
2421 offset,
2422 _depth,
2423 )
2424 }
2425 }
2426 unsafe impl<
2427 T0: fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2428 > fidl::encoding::Encode<DriverStartRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2429 for (T0,)
2430 {
2431 #[inline]
2432 unsafe fn encode(
2433 self,
2434 encoder: &mut fidl::encoding::Encoder<
2435 '_,
2436 fidl::encoding::DefaultFuchsiaResourceDialect,
2437 >,
2438 offset: usize,
2439 depth: fidl::encoding::Depth,
2440 ) -> fidl::Result<()> {
2441 encoder.debug_check_bounds::<DriverStartRequest>(offset);
2442 self.0.encode(encoder, offset + 0, depth)?;
2446 Ok(())
2447 }
2448 }
2449
2450 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2451 for DriverStartRequest
2452 {
2453 #[inline(always)]
2454 fn new_empty() -> Self {
2455 Self {
2456 start_args: fidl::new_empty!(
2457 DriverStartArgs,
2458 fidl::encoding::DefaultFuchsiaResourceDialect
2459 ),
2460 }
2461 }
2462
2463 #[inline]
2464 unsafe fn decode(
2465 &mut self,
2466 decoder: &mut fidl::encoding::Decoder<
2467 '_,
2468 fidl::encoding::DefaultFuchsiaResourceDialect,
2469 >,
2470 offset: usize,
2471 _depth: fidl::encoding::Depth,
2472 ) -> fidl::Result<()> {
2473 decoder.debug_check_bounds::<Self>(offset);
2474 fidl::decode!(
2476 DriverStartArgs,
2477 fidl::encoding::DefaultFuchsiaResourceDialect,
2478 &mut self.start_args,
2479 decoder,
2480 offset + 0,
2481 _depth
2482 )?;
2483 Ok(())
2484 }
2485 }
2486
2487 impl fidl::encoding::ResourceTypeMarker for NodeAddChildRequest {
2488 type Borrowed<'a> = &'a mut Self;
2489 fn take_or_borrow<'a>(
2490 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2491 ) -> Self::Borrowed<'a> {
2492 value
2493 }
2494 }
2495
2496 unsafe impl fidl::encoding::TypeMarker for NodeAddChildRequest {
2497 type Owned = Self;
2498
2499 #[inline(always)]
2500 fn inline_align(_context: fidl::encoding::Context) -> usize {
2501 8
2502 }
2503
2504 #[inline(always)]
2505 fn inline_size(_context: fidl::encoding::Context) -> usize {
2506 24
2507 }
2508 }
2509
2510 unsafe impl
2511 fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2512 for &mut NodeAddChildRequest
2513 {
2514 #[inline]
2515 unsafe fn encode(
2516 self,
2517 encoder: &mut fidl::encoding::Encoder<
2518 '_,
2519 fidl::encoding::DefaultFuchsiaResourceDialect,
2520 >,
2521 offset: usize,
2522 _depth: fidl::encoding::Depth,
2523 ) -> fidl::Result<()> {
2524 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2525 fidl::encoding::Encode::<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2527 (
2528 <NodeAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.args),
2529 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.controller),
2530 <fidl::encoding::Optional<fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.node),
2531 ),
2532 encoder, offset, _depth
2533 )
2534 }
2535 }
2536 unsafe impl<
2537 T0: fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>,
2538 T1: fidl::encoding::Encode<
2539 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2540 fidl::encoding::DefaultFuchsiaResourceDialect,
2541 >,
2542 T2: fidl::encoding::Encode<
2543 fidl::encoding::Optional<
2544 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2545 >,
2546 fidl::encoding::DefaultFuchsiaResourceDialect,
2547 >,
2548 > fidl::encoding::Encode<NodeAddChildRequest, fidl::encoding::DefaultFuchsiaResourceDialect>
2549 for (T0, T1, T2)
2550 {
2551 #[inline]
2552 unsafe fn encode(
2553 self,
2554 encoder: &mut fidl::encoding::Encoder<
2555 '_,
2556 fidl::encoding::DefaultFuchsiaResourceDialect,
2557 >,
2558 offset: usize,
2559 depth: fidl::encoding::Depth,
2560 ) -> fidl::Result<()> {
2561 encoder.debug_check_bounds::<NodeAddChildRequest>(offset);
2562 self.0.encode(encoder, offset + 0, depth)?;
2566 self.1.encode(encoder, offset + 16, depth)?;
2567 self.2.encode(encoder, offset + 20, depth)?;
2568 Ok(())
2569 }
2570 }
2571
2572 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2573 for NodeAddChildRequest
2574 {
2575 #[inline(always)]
2576 fn new_empty() -> Self {
2577 Self {
2578 args: fidl::new_empty!(NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect),
2579 controller: fidl::new_empty!(
2580 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2581 fidl::encoding::DefaultFuchsiaResourceDialect
2582 ),
2583 node: fidl::new_empty!(
2584 fidl::encoding::Optional<
2585 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2586 >,
2587 fidl::encoding::DefaultFuchsiaResourceDialect
2588 ),
2589 }
2590 }
2591
2592 #[inline]
2593 unsafe fn decode(
2594 &mut self,
2595 decoder: &mut fidl::encoding::Decoder<
2596 '_,
2597 fidl::encoding::DefaultFuchsiaResourceDialect,
2598 >,
2599 offset: usize,
2600 _depth: fidl::encoding::Depth,
2601 ) -> fidl::Result<()> {
2602 decoder.debug_check_bounds::<Self>(offset);
2603 fidl::decode!(
2605 NodeAddArgs,
2606 fidl::encoding::DefaultFuchsiaResourceDialect,
2607 &mut self.args,
2608 decoder,
2609 offset + 0,
2610 _depth
2611 )?;
2612 fidl::decode!(
2613 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeControllerMarker>>,
2614 fidl::encoding::DefaultFuchsiaResourceDialect,
2615 &mut self.controller,
2616 decoder,
2617 offset + 16,
2618 _depth
2619 )?;
2620 fidl::decode!(
2621 fidl::encoding::Optional<
2622 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<NodeMarker>>,
2623 >,
2624 fidl::encoding::DefaultFuchsiaResourceDialect,
2625 &mut self.node,
2626 decoder,
2627 offset + 20,
2628 _depth
2629 )?;
2630 Ok(())
2631 }
2632 }
2633
2634 impl DevfsAddArgs {
2635 #[inline(always)]
2636 fn max_ordinal_present(&self) -> u64 {
2637 if let Some(_) = self.controller_connector {
2638 return 5;
2639 }
2640 if let Some(_) = self.connector_supports {
2641 return 4;
2642 }
2643 if let Some(_) = self.inspect {
2644 return 3;
2645 }
2646 if let Some(_) = self.class_name {
2647 return 2;
2648 }
2649 if let Some(_) = self.connector {
2650 return 1;
2651 }
2652 0
2653 }
2654 }
2655
2656 impl fidl::encoding::ResourceTypeMarker for DevfsAddArgs {
2657 type Borrowed<'a> = &'a mut Self;
2658 fn take_or_borrow<'a>(
2659 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2660 ) -> Self::Borrowed<'a> {
2661 value
2662 }
2663 }
2664
2665 unsafe impl fidl::encoding::TypeMarker for DevfsAddArgs {
2666 type Owned = Self;
2667
2668 #[inline(always)]
2669 fn inline_align(_context: fidl::encoding::Context) -> usize {
2670 8
2671 }
2672
2673 #[inline(always)]
2674 fn inline_size(_context: fidl::encoding::Context) -> usize {
2675 16
2676 }
2677 }
2678
2679 unsafe impl fidl::encoding::Encode<DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
2680 for &mut DevfsAddArgs
2681 {
2682 unsafe fn encode(
2683 self,
2684 encoder: &mut fidl::encoding::Encoder<
2685 '_,
2686 fidl::encoding::DefaultFuchsiaResourceDialect,
2687 >,
2688 offset: usize,
2689 mut depth: fidl::encoding::Depth,
2690 ) -> fidl::Result<()> {
2691 encoder.debug_check_bounds::<DevfsAddArgs>(offset);
2692 let max_ordinal: u64 = self.max_ordinal_present();
2694 encoder.write_num(max_ordinal, offset);
2695 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2696 if max_ordinal == 0 {
2698 return Ok(());
2699 }
2700 depth.increment()?;
2701 let envelope_size = 8;
2702 let bytes_len = max_ordinal as usize * envelope_size;
2703 #[allow(unused_variables)]
2704 let offset = encoder.out_of_line_offset(bytes_len);
2705 let mut _prev_end_offset: usize = 0;
2706 if 1 > max_ordinal {
2707 return Ok(());
2708 }
2709
2710 let cur_offset: usize = (1 - 1) * envelope_size;
2713
2714 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2716
2717 fidl::encoding::encode_in_envelope_optional::<
2722 fidl::encoding::Endpoint<
2723 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2724 >,
2725 fidl::encoding::DefaultFuchsiaResourceDialect,
2726 >(
2727 self.connector.as_mut().map(
2728 <fidl::encoding::Endpoint<
2729 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2730 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2731 ),
2732 encoder,
2733 offset + cur_offset,
2734 depth,
2735 )?;
2736
2737 _prev_end_offset = cur_offset + envelope_size;
2738 if 2 > max_ordinal {
2739 return Ok(());
2740 }
2741
2742 let cur_offset: usize = (2 - 1) * envelope_size;
2745
2746 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2748
2749 fidl::encoding::encode_in_envelope_optional::<
2754 fidl::encoding::BoundedString<255>,
2755 fidl::encoding::DefaultFuchsiaResourceDialect,
2756 >(
2757 self.class_name.as_ref().map(
2758 <fidl::encoding::BoundedString<255> as fidl::encoding::ValueTypeMarker>::borrow,
2759 ),
2760 encoder,
2761 offset + cur_offset,
2762 depth,
2763 )?;
2764
2765 _prev_end_offset = cur_offset + envelope_size;
2766 if 3 > max_ordinal {
2767 return Ok(());
2768 }
2769
2770 let cur_offset: usize = (3 - 1) * envelope_size;
2773
2774 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2776
2777 fidl::encoding::encode_in_envelope_optional::<
2782 fidl::encoding::HandleType<
2783 fidl::Vmo,
2784 { fidl::ObjectType::VMO.into_raw() },
2785 2147483648,
2786 >,
2787 fidl::encoding::DefaultFuchsiaResourceDialect,
2788 >(
2789 self.inspect.as_mut().map(
2790 <fidl::encoding::HandleType<
2791 fidl::Vmo,
2792 { fidl::ObjectType::VMO.into_raw() },
2793 2147483648,
2794 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2795 ),
2796 encoder,
2797 offset + cur_offset,
2798 depth,
2799 )?;
2800
2801 _prev_end_offset = cur_offset + envelope_size;
2802 if 4 > max_ordinal {
2803 return Ok(());
2804 }
2805
2806 let cur_offset: usize = (4 - 1) * envelope_size;
2809
2810 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2812
2813 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_device_fs::ConnectionType, fidl::encoding::DefaultFuchsiaResourceDialect>(
2818 self.connector_supports.as_ref().map(<fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::ValueTypeMarker>::borrow),
2819 encoder, offset + cur_offset, depth
2820 )?;
2821
2822 _prev_end_offset = cur_offset + envelope_size;
2823 if 5 > max_ordinal {
2824 return Ok(());
2825 }
2826
2827 let cur_offset: usize = (5 - 1) * envelope_size;
2830
2831 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2833
2834 fidl::encoding::encode_in_envelope_optional::<
2839 fidl::encoding::Endpoint<
2840 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2841 >,
2842 fidl::encoding::DefaultFuchsiaResourceDialect,
2843 >(
2844 self.controller_connector.as_mut().map(
2845 <fidl::encoding::Endpoint<
2846 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2847 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
2848 ),
2849 encoder,
2850 offset + cur_offset,
2851 depth,
2852 )?;
2853
2854 _prev_end_offset = cur_offset + envelope_size;
2855
2856 Ok(())
2857 }
2858 }
2859
2860 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DevfsAddArgs {
2861 #[inline(always)]
2862 fn new_empty() -> Self {
2863 Self::default()
2864 }
2865
2866 unsafe fn decode(
2867 &mut self,
2868 decoder: &mut fidl::encoding::Decoder<
2869 '_,
2870 fidl::encoding::DefaultFuchsiaResourceDialect,
2871 >,
2872 offset: usize,
2873 mut depth: fidl::encoding::Depth,
2874 ) -> fidl::Result<()> {
2875 decoder.debug_check_bounds::<Self>(offset);
2876 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2877 None => return Err(fidl::Error::NotNullable),
2878 Some(len) => len,
2879 };
2880 if len == 0 {
2882 return Ok(());
2883 };
2884 depth.increment()?;
2885 let envelope_size = 8;
2886 let bytes_len = len * envelope_size;
2887 let offset = decoder.out_of_line_offset(bytes_len)?;
2888 let mut _next_ordinal_to_read = 0;
2890 let mut next_offset = offset;
2891 let end_offset = offset + bytes_len;
2892 _next_ordinal_to_read += 1;
2893 if next_offset >= end_offset {
2894 return Ok(());
2895 }
2896
2897 while _next_ordinal_to_read < 1 {
2899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2900 _next_ordinal_to_read += 1;
2901 next_offset += envelope_size;
2902 }
2903
2904 let next_out_of_line = decoder.next_out_of_line();
2905 let handles_before = decoder.remaining_handles();
2906 if let Some((inlined, num_bytes, num_handles)) =
2907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2908 {
2909 let member_inline_size = <fidl::encoding::Endpoint<
2910 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2911 > as fidl::encoding::TypeMarker>::inline_size(
2912 decoder.context
2913 );
2914 if inlined != (member_inline_size <= 4) {
2915 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2916 }
2917 let inner_offset;
2918 let mut inner_depth = depth.clone();
2919 if inlined {
2920 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2921 inner_offset = next_offset;
2922 } else {
2923 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2924 inner_depth.increment()?;
2925 }
2926 let val_ref = self.connector.get_or_insert_with(|| {
2927 fidl::new_empty!(
2928 fidl::encoding::Endpoint<
2929 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2930 >,
2931 fidl::encoding::DefaultFuchsiaResourceDialect
2932 )
2933 });
2934 fidl::decode!(
2935 fidl::encoding::Endpoint<
2936 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
2937 >,
2938 fidl::encoding::DefaultFuchsiaResourceDialect,
2939 val_ref,
2940 decoder,
2941 inner_offset,
2942 inner_depth
2943 )?;
2944 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2945 {
2946 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2947 }
2948 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2949 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2950 }
2951 }
2952
2953 next_offset += envelope_size;
2954 _next_ordinal_to_read += 1;
2955 if next_offset >= end_offset {
2956 return Ok(());
2957 }
2958
2959 while _next_ordinal_to_read < 2 {
2961 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2962 _next_ordinal_to_read += 1;
2963 next_offset += envelope_size;
2964 }
2965
2966 let next_out_of_line = decoder.next_out_of_line();
2967 let handles_before = decoder.remaining_handles();
2968 if let Some((inlined, num_bytes, num_handles)) =
2969 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2970 {
2971 let member_inline_size =
2972 <fidl::encoding::BoundedString<255> as fidl::encoding::TypeMarker>::inline_size(
2973 decoder.context,
2974 );
2975 if inlined != (member_inline_size <= 4) {
2976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2977 }
2978 let inner_offset;
2979 let mut inner_depth = depth.clone();
2980 if inlined {
2981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2982 inner_offset = next_offset;
2983 } else {
2984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2985 inner_depth.increment()?;
2986 }
2987 let val_ref = self.class_name.get_or_insert_with(|| {
2988 fidl::new_empty!(
2989 fidl::encoding::BoundedString<255>,
2990 fidl::encoding::DefaultFuchsiaResourceDialect
2991 )
2992 });
2993 fidl::decode!(
2994 fidl::encoding::BoundedString<255>,
2995 fidl::encoding::DefaultFuchsiaResourceDialect,
2996 val_ref,
2997 decoder,
2998 inner_offset,
2999 inner_depth
3000 )?;
3001 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3002 {
3003 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3004 }
3005 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3006 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3007 }
3008 }
3009
3010 next_offset += envelope_size;
3011 _next_ordinal_to_read += 1;
3012 if next_offset >= end_offset {
3013 return Ok(());
3014 }
3015
3016 while _next_ordinal_to_read < 3 {
3018 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3019 _next_ordinal_to_read += 1;
3020 next_offset += envelope_size;
3021 }
3022
3023 let next_out_of_line = decoder.next_out_of_line();
3024 let handles_before = decoder.remaining_handles();
3025 if let Some((inlined, num_bytes, num_handles)) =
3026 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3027 {
3028 let member_inline_size = <fidl::encoding::HandleType<
3029 fidl::Vmo,
3030 { fidl::ObjectType::VMO.into_raw() },
3031 2147483648,
3032 > as fidl::encoding::TypeMarker>::inline_size(
3033 decoder.context
3034 );
3035 if inlined != (member_inline_size <= 4) {
3036 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3037 }
3038 let inner_offset;
3039 let mut inner_depth = depth.clone();
3040 if inlined {
3041 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3042 inner_offset = next_offset;
3043 } else {
3044 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3045 inner_depth.increment()?;
3046 }
3047 let val_ref =
3048 self.inspect.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
3049 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3050 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3051 {
3052 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3053 }
3054 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3055 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3056 }
3057 }
3058
3059 next_offset += envelope_size;
3060 _next_ordinal_to_read += 1;
3061 if next_offset >= end_offset {
3062 return Ok(());
3063 }
3064
3065 while _next_ordinal_to_read < 4 {
3067 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3068 _next_ordinal_to_read += 1;
3069 next_offset += envelope_size;
3070 }
3071
3072 let next_out_of_line = decoder.next_out_of_line();
3073 let handles_before = decoder.remaining_handles();
3074 if let Some((inlined, num_bytes, num_handles)) =
3075 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3076 {
3077 let member_inline_size = <fidl_fuchsia_device_fs::ConnectionType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3078 if inlined != (member_inline_size <= 4) {
3079 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3080 }
3081 let inner_offset;
3082 let mut inner_depth = depth.clone();
3083 if inlined {
3084 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3085 inner_offset = next_offset;
3086 } else {
3087 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3088 inner_depth.increment()?;
3089 }
3090 let val_ref = self.connector_supports.get_or_insert_with(|| {
3091 fidl::new_empty!(
3092 fidl_fuchsia_device_fs::ConnectionType,
3093 fidl::encoding::DefaultFuchsiaResourceDialect
3094 )
3095 });
3096 fidl::decode!(
3097 fidl_fuchsia_device_fs::ConnectionType,
3098 fidl::encoding::DefaultFuchsiaResourceDialect,
3099 val_ref,
3100 decoder,
3101 inner_offset,
3102 inner_depth
3103 )?;
3104 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3105 {
3106 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3107 }
3108 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3109 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3110 }
3111 }
3112
3113 next_offset += envelope_size;
3114 _next_ordinal_to_read += 1;
3115 if next_offset >= end_offset {
3116 return Ok(());
3117 }
3118
3119 while _next_ordinal_to_read < 5 {
3121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3122 _next_ordinal_to_read += 1;
3123 next_offset += envelope_size;
3124 }
3125
3126 let next_out_of_line = decoder.next_out_of_line();
3127 let handles_before = decoder.remaining_handles();
3128 if let Some((inlined, num_bytes, num_handles)) =
3129 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3130 {
3131 let member_inline_size = <fidl::encoding::Endpoint<
3132 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3133 > as fidl::encoding::TypeMarker>::inline_size(
3134 decoder.context
3135 );
3136 if inlined != (member_inline_size <= 4) {
3137 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3138 }
3139 let inner_offset;
3140 let mut inner_depth = depth.clone();
3141 if inlined {
3142 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3143 inner_offset = next_offset;
3144 } else {
3145 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3146 inner_depth.increment()?;
3147 }
3148 let val_ref = self.controller_connector.get_or_insert_with(|| {
3149 fidl::new_empty!(
3150 fidl::encoding::Endpoint<
3151 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3152 >,
3153 fidl::encoding::DefaultFuchsiaResourceDialect
3154 )
3155 });
3156 fidl::decode!(
3157 fidl::encoding::Endpoint<
3158 fidl::endpoints::ClientEnd<fidl_fuchsia_device_fs::ConnectorMarker>,
3159 >,
3160 fidl::encoding::DefaultFuchsiaResourceDialect,
3161 val_ref,
3162 decoder,
3163 inner_offset,
3164 inner_depth
3165 )?;
3166 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3167 {
3168 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3169 }
3170 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3171 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3172 }
3173 }
3174
3175 next_offset += envelope_size;
3176
3177 while next_offset < end_offset {
3179 _next_ordinal_to_read += 1;
3180 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3181 next_offset += envelope_size;
3182 }
3183
3184 Ok(())
3185 }
3186 }
3187
3188 impl DriverStartArgs {
3189 #[inline(always)]
3190 fn max_ordinal_present(&self) -> u64 {
3191 if let Some(_) = self.log_sink {
3192 return 15;
3193 }
3194 if let Some(_) = self.power_element_args {
3195 return 14;
3196 }
3197 if let Some(_) = self.vmar {
3198 return 13;
3199 }
3200 if let Some(_) = self.node_properties_2 {
3201 return 12;
3202 }
3203 if let Some(_) = self.node_token {
3204 return 11;
3205 }
3206 if let Some(_) = self.node_offers {
3207 return 10;
3208 }
3209 if let Some(_) = self.node_properties {
3210 return 9;
3211 }
3212 if let Some(_) = self.node_name {
3213 return 8;
3214 }
3215 if let Some(_) = self.config {
3216 return 7;
3217 }
3218 if let Some(_) = self.outgoing_dir {
3219 return 6;
3220 }
3221 if let Some(_) = self.incoming {
3222 return 5;
3223 }
3224 if let Some(_) = self.program {
3225 return 4;
3226 }
3227 if let Some(_) = self.url {
3228 return 3;
3229 }
3230 if let Some(_) = self.symbols {
3231 return 2;
3232 }
3233 if let Some(_) = self.node {
3234 return 1;
3235 }
3236 0
3237 }
3238 }
3239
3240 impl fidl::encoding::ResourceTypeMarker for DriverStartArgs {
3241 type Borrowed<'a> = &'a mut Self;
3242 fn take_or_borrow<'a>(
3243 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
3244 ) -> Self::Borrowed<'a> {
3245 value
3246 }
3247 }
3248
3249 unsafe impl fidl::encoding::TypeMarker for DriverStartArgs {
3250 type Owned = Self;
3251
3252 #[inline(always)]
3253 fn inline_align(_context: fidl::encoding::Context) -> usize {
3254 8
3255 }
3256
3257 #[inline(always)]
3258 fn inline_size(_context: fidl::encoding::Context) -> usize {
3259 16
3260 }
3261 }
3262
3263 unsafe impl
3264 fidl::encoding::Encode<DriverStartArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
3265 for &mut DriverStartArgs
3266 {
3267 unsafe fn encode(
3268 self,
3269 encoder: &mut fidl::encoding::Encoder<
3270 '_,
3271 fidl::encoding::DefaultFuchsiaResourceDialect,
3272 >,
3273 offset: usize,
3274 mut depth: fidl::encoding::Depth,
3275 ) -> fidl::Result<()> {
3276 encoder.debug_check_bounds::<DriverStartArgs>(offset);
3277 let max_ordinal: u64 = self.max_ordinal_present();
3279 encoder.write_num(max_ordinal, offset);
3280 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3281 if max_ordinal == 0 {
3283 return Ok(());
3284 }
3285 depth.increment()?;
3286 let envelope_size = 8;
3287 let bytes_len = max_ordinal as usize * envelope_size;
3288 #[allow(unused_variables)]
3289 let offset = encoder.out_of_line_offset(bytes_len);
3290 let mut _prev_end_offset: usize = 0;
3291 if 1 > max_ordinal {
3292 return Ok(());
3293 }
3294
3295 let cur_offset: usize = (1 - 1) * envelope_size;
3298
3299 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3301
3302 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3307 self.node.as_mut().map(<fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3308 encoder, offset + cur_offset, depth
3309 )?;
3310
3311 _prev_end_offset = cur_offset + envelope_size;
3312 if 2 > max_ordinal {
3313 return Ok(());
3314 }
3315
3316 let cur_offset: usize = (2 - 1) * envelope_size;
3319
3320 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3322
3323 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3328 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3329 encoder, offset + cur_offset, depth
3330 )?;
3331
3332 _prev_end_offset = cur_offset + envelope_size;
3333 if 3 > max_ordinal {
3334 return Ok(());
3335 }
3336
3337 let cur_offset: usize = (3 - 1) * envelope_size;
3340
3341 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3343
3344 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3349 self.url.as_ref().map(<fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow),
3350 encoder, offset + cur_offset, depth
3351 )?;
3352
3353 _prev_end_offset = cur_offset + envelope_size;
3354 if 4 > max_ordinal {
3355 return Ok(());
3356 }
3357
3358 let cur_offset: usize = (4 - 1) * envelope_size;
3361
3362 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3364
3365 fidl::encoding::encode_in_envelope_optional::<
3370 fidl_fuchsia_data::Dictionary,
3371 fidl::encoding::DefaultFuchsiaResourceDialect,
3372 >(
3373 self.program.as_ref().map(
3374 <fidl_fuchsia_data::Dictionary as fidl::encoding::ValueTypeMarker>::borrow,
3375 ),
3376 encoder,
3377 offset + cur_offset,
3378 depth,
3379 )?;
3380
3381 _prev_end_offset = cur_offset + envelope_size;
3382 if 5 > max_ordinal {
3383 return Ok(());
3384 }
3385
3386 let cur_offset: usize = (5 - 1) * envelope_size;
3389
3390 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3392
3393 fidl::encoding::encode_in_envelope_optional::<
3398 fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>,
3399 fidl::encoding::DefaultFuchsiaResourceDialect,
3400 >(
3401 self.incoming.as_mut().map(
3402 <fidl::encoding::Vector<
3403 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3404 32,
3405 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3406 ),
3407 encoder,
3408 offset + cur_offset,
3409 depth,
3410 )?;
3411
3412 _prev_end_offset = cur_offset + envelope_size;
3413 if 6 > max_ordinal {
3414 return Ok(());
3415 }
3416
3417 let cur_offset: usize = (6 - 1) * envelope_size;
3420
3421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3423
3424 fidl::encoding::encode_in_envelope_optional::<
3429 fidl::encoding::Endpoint<
3430 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3431 >,
3432 fidl::encoding::DefaultFuchsiaResourceDialect,
3433 >(
3434 self.outgoing_dir.as_mut().map(
3435 <fidl::encoding::Endpoint<
3436 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
3437 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3438 ),
3439 encoder,
3440 offset + cur_offset,
3441 depth,
3442 )?;
3443
3444 _prev_end_offset = cur_offset + envelope_size;
3445 if 7 > max_ordinal {
3446 return Ok(());
3447 }
3448
3449 let cur_offset: usize = (7 - 1) * envelope_size;
3452
3453 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3455
3456 fidl::encoding::encode_in_envelope_optional::<
3461 fidl::encoding::HandleType<
3462 fidl::Vmo,
3463 { fidl::ObjectType::VMO.into_raw() },
3464 2147483648,
3465 >,
3466 fidl::encoding::DefaultFuchsiaResourceDialect,
3467 >(
3468 self.config.as_mut().map(
3469 <fidl::encoding::HandleType<
3470 fidl::Vmo,
3471 { fidl::ObjectType::VMO.into_raw() },
3472 2147483648,
3473 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3474 ),
3475 encoder,
3476 offset + cur_offset,
3477 depth,
3478 )?;
3479
3480 _prev_end_offset = cur_offset + envelope_size;
3481 if 8 > max_ordinal {
3482 return Ok(());
3483 }
3484
3485 let cur_offset: usize = (8 - 1) * envelope_size;
3488
3489 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3491
3492 fidl::encoding::encode_in_envelope_optional::<
3497 fidl::encoding::UnboundedString,
3498 fidl::encoding::DefaultFuchsiaResourceDialect,
3499 >(
3500 self.node_name.as_ref().map(
3501 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
3502 ),
3503 encoder,
3504 offset + cur_offset,
3505 depth,
3506 )?;
3507
3508 _prev_end_offset = cur_offset + envelope_size;
3509 if 9 > max_ordinal {
3510 return Ok(());
3511 }
3512
3513 let cur_offset: usize = (9 - 1) * envelope_size;
3516
3517 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3519
3520 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3525 self.node_properties.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::ValueTypeMarker>::borrow),
3526 encoder, offset + cur_offset, depth
3527 )?;
3528
3529 _prev_end_offset = cur_offset + envelope_size;
3530 if 10 > max_ordinal {
3531 return Ok(());
3532 }
3533
3534 let cur_offset: usize = (10 - 1) * envelope_size;
3537
3538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3540
3541 fidl::encoding::encode_in_envelope_optional::<
3546 fidl::encoding::Vector<Offer, 128>,
3547 fidl::encoding::DefaultFuchsiaResourceDialect,
3548 >(
3549 self.node_offers.as_ref().map(
3550 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
3551 ),
3552 encoder,
3553 offset + cur_offset,
3554 depth,
3555 )?;
3556
3557 _prev_end_offset = cur_offset + envelope_size;
3558 if 11 > max_ordinal {
3559 return Ok(());
3560 }
3561
3562 let cur_offset: usize = (11 - 1) * envelope_size;
3565
3566 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3568
3569 fidl::encoding::encode_in_envelope_optional::<
3574 fidl::encoding::HandleType<
3575 fidl::Event,
3576 { fidl::ObjectType::EVENT.into_raw() },
3577 2147483648,
3578 >,
3579 fidl::encoding::DefaultFuchsiaResourceDialect,
3580 >(
3581 self.node_token.as_mut().map(
3582 <fidl::encoding::HandleType<
3583 fidl::Event,
3584 { fidl::ObjectType::EVENT.into_raw() },
3585 2147483648,
3586 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3587 ),
3588 encoder,
3589 offset + cur_offset,
3590 depth,
3591 )?;
3592
3593 _prev_end_offset = cur_offset + envelope_size;
3594 if 12 > max_ordinal {
3595 return Ok(());
3596 }
3597
3598 let cur_offset: usize = (12 - 1) * envelope_size;
3601
3602 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3604
3605 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<NodePropertyEntry2>, fidl::encoding::DefaultFuchsiaResourceDialect>(
3610 self.node_properties_2.as_ref().map(<fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::ValueTypeMarker>::borrow),
3611 encoder, offset + cur_offset, depth
3612 )?;
3613
3614 _prev_end_offset = cur_offset + envelope_size;
3615 if 13 > max_ordinal {
3616 return Ok(());
3617 }
3618
3619 let cur_offset: usize = (13 - 1) * envelope_size;
3622
3623 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3625
3626 fidl::encoding::encode_in_envelope_optional::<
3631 fidl::encoding::HandleType<
3632 fidl::Vmar,
3633 { fidl::ObjectType::VMAR.into_raw() },
3634 2147483648,
3635 >,
3636 fidl::encoding::DefaultFuchsiaResourceDialect,
3637 >(
3638 self.vmar.as_mut().map(
3639 <fidl::encoding::HandleType<
3640 fidl::Vmar,
3641 { fidl::ObjectType::VMAR.into_raw() },
3642 2147483648,
3643 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3644 ),
3645 encoder,
3646 offset + cur_offset,
3647 depth,
3648 )?;
3649
3650 _prev_end_offset = cur_offset + envelope_size;
3651 if 14 > max_ordinal {
3652 return Ok(());
3653 }
3654
3655 let cur_offset: usize = (14 - 1) * envelope_size;
3658
3659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3661
3662 fidl::encoding::encode_in_envelope_optional::<
3667 PowerElementArgs,
3668 fidl::encoding::DefaultFuchsiaResourceDialect,
3669 >(
3670 self.power_element_args
3671 .as_mut()
3672 .map(<PowerElementArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
3673 encoder,
3674 offset + cur_offset,
3675 depth,
3676 )?;
3677
3678 _prev_end_offset = cur_offset + envelope_size;
3679 if 15 > max_ordinal {
3680 return Ok(());
3681 }
3682
3683 let cur_offset: usize = (15 - 1) * envelope_size;
3686
3687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3689
3690 fidl::encoding::encode_in_envelope_optional::<
3695 fidl::encoding::Endpoint<
3696 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
3697 >,
3698 fidl::encoding::DefaultFuchsiaResourceDialect,
3699 >(
3700 self.log_sink.as_mut().map(
3701 <fidl::encoding::Endpoint<
3702 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
3703 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
3704 ),
3705 encoder,
3706 offset + cur_offset,
3707 depth,
3708 )?;
3709
3710 _prev_end_offset = cur_offset + envelope_size;
3711
3712 Ok(())
3713 }
3714 }
3715
3716 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
3717 for DriverStartArgs
3718 {
3719 #[inline(always)]
3720 fn new_empty() -> Self {
3721 Self::default()
3722 }
3723
3724 unsafe fn decode(
3725 &mut self,
3726 decoder: &mut fidl::encoding::Decoder<
3727 '_,
3728 fidl::encoding::DefaultFuchsiaResourceDialect,
3729 >,
3730 offset: usize,
3731 mut depth: fidl::encoding::Depth,
3732 ) -> fidl::Result<()> {
3733 decoder.debug_check_bounds::<Self>(offset);
3734 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3735 None => return Err(fidl::Error::NotNullable),
3736 Some(len) => len,
3737 };
3738 if len == 0 {
3740 return Ok(());
3741 };
3742 depth.increment()?;
3743 let envelope_size = 8;
3744 let bytes_len = len * envelope_size;
3745 let offset = decoder.out_of_line_offset(bytes_len)?;
3746 let mut _next_ordinal_to_read = 0;
3748 let mut next_offset = offset;
3749 let end_offset = offset + bytes_len;
3750 _next_ordinal_to_read += 1;
3751 if next_offset >= end_offset {
3752 return Ok(());
3753 }
3754
3755 while _next_ordinal_to_read < 1 {
3757 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3758 _next_ordinal_to_read += 1;
3759 next_offset += envelope_size;
3760 }
3761
3762 let next_out_of_line = decoder.next_out_of_line();
3763 let handles_before = decoder.remaining_handles();
3764 if let Some((inlined, num_bytes, num_handles)) =
3765 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3766 {
3767 let member_inline_size = <fidl::encoding::Endpoint<
3768 fidl::endpoints::ClientEnd<NodeMarker>,
3769 > as fidl::encoding::TypeMarker>::inline_size(
3770 decoder.context
3771 );
3772 if inlined != (member_inline_size <= 4) {
3773 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3774 }
3775 let inner_offset;
3776 let mut inner_depth = depth.clone();
3777 if inlined {
3778 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3779 inner_offset = next_offset;
3780 } else {
3781 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3782 inner_depth.increment()?;
3783 }
3784 let val_ref = self.node.get_or_insert_with(|| {
3785 fidl::new_empty!(
3786 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
3787 fidl::encoding::DefaultFuchsiaResourceDialect
3788 )
3789 });
3790 fidl::decode!(
3791 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<NodeMarker>>,
3792 fidl::encoding::DefaultFuchsiaResourceDialect,
3793 val_ref,
3794 decoder,
3795 inner_offset,
3796 inner_depth
3797 )?;
3798 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3799 {
3800 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3801 }
3802 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3803 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3804 }
3805 }
3806
3807 next_offset += envelope_size;
3808 _next_ordinal_to_read += 1;
3809 if next_offset >= end_offset {
3810 return Ok(());
3811 }
3812
3813 while _next_ordinal_to_read < 2 {
3815 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3816 _next_ordinal_to_read += 1;
3817 next_offset += envelope_size;
3818 }
3819
3820 let next_out_of_line = decoder.next_out_of_line();
3821 let handles_before = decoder.remaining_handles();
3822 if let Some((inlined, num_bytes, num_handles)) =
3823 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3824 {
3825 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3826 if inlined != (member_inline_size <= 4) {
3827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3828 }
3829 let inner_offset;
3830 let mut inner_depth = depth.clone();
3831 if inlined {
3832 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3833 inner_offset = next_offset;
3834 } else {
3835 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3836 inner_depth.increment()?;
3837 }
3838 let val_ref =
3839 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
3840 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
3841 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3842 {
3843 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3844 }
3845 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3846 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3847 }
3848 }
3849
3850 next_offset += envelope_size;
3851 _next_ordinal_to_read += 1;
3852 if next_offset >= end_offset {
3853 return Ok(());
3854 }
3855
3856 while _next_ordinal_to_read < 3 {
3858 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3859 _next_ordinal_to_read += 1;
3860 next_offset += envelope_size;
3861 }
3862
3863 let next_out_of_line = decoder.next_out_of_line();
3864 let handles_before = decoder.remaining_handles();
3865 if let Some((inlined, num_bytes, num_handles)) =
3866 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3867 {
3868 let member_inline_size = <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3869 if inlined != (member_inline_size <= 4) {
3870 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3871 }
3872 let inner_offset;
3873 let mut inner_depth = depth.clone();
3874 if inlined {
3875 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3876 inner_offset = next_offset;
3877 } else {
3878 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3879 inner_depth.increment()?;
3880 }
3881 let val_ref = self.url.get_or_insert_with(|| {
3882 fidl::new_empty!(
3883 fidl::encoding::BoundedString<4096>,
3884 fidl::encoding::DefaultFuchsiaResourceDialect
3885 )
3886 });
3887 fidl::decode!(
3888 fidl::encoding::BoundedString<4096>,
3889 fidl::encoding::DefaultFuchsiaResourceDialect,
3890 val_ref,
3891 decoder,
3892 inner_offset,
3893 inner_depth
3894 )?;
3895 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3896 {
3897 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3898 }
3899 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3900 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3901 }
3902 }
3903
3904 next_offset += envelope_size;
3905 _next_ordinal_to_read += 1;
3906 if next_offset >= end_offset {
3907 return Ok(());
3908 }
3909
3910 while _next_ordinal_to_read < 4 {
3912 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3913 _next_ordinal_to_read += 1;
3914 next_offset += envelope_size;
3915 }
3916
3917 let next_out_of_line = decoder.next_out_of_line();
3918 let handles_before = decoder.remaining_handles();
3919 if let Some((inlined, num_bytes, num_handles)) =
3920 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3921 {
3922 let member_inline_size =
3923 <fidl_fuchsia_data::Dictionary as fidl::encoding::TypeMarker>::inline_size(
3924 decoder.context,
3925 );
3926 if inlined != (member_inline_size <= 4) {
3927 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3928 }
3929 let inner_offset;
3930 let mut inner_depth = depth.clone();
3931 if inlined {
3932 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3933 inner_offset = next_offset;
3934 } else {
3935 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3936 inner_depth.increment()?;
3937 }
3938 let val_ref = self.program.get_or_insert_with(|| {
3939 fidl::new_empty!(
3940 fidl_fuchsia_data::Dictionary,
3941 fidl::encoding::DefaultFuchsiaResourceDialect
3942 )
3943 });
3944 fidl::decode!(
3945 fidl_fuchsia_data::Dictionary,
3946 fidl::encoding::DefaultFuchsiaResourceDialect,
3947 val_ref,
3948 decoder,
3949 inner_offset,
3950 inner_depth
3951 )?;
3952 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3953 {
3954 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3955 }
3956 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3957 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3958 }
3959 }
3960
3961 next_offset += envelope_size;
3962 _next_ordinal_to_read += 1;
3963 if next_offset >= end_offset {
3964 return Ok(());
3965 }
3966
3967 while _next_ordinal_to_read < 5 {
3969 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3970 _next_ordinal_to_read += 1;
3971 next_offset += envelope_size;
3972 }
3973
3974 let next_out_of_line = decoder.next_out_of_line();
3975 let handles_before = decoder.remaining_handles();
3976 if let Some((inlined, num_bytes, num_handles)) =
3977 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3978 {
3979 let member_inline_size = <fidl::encoding::Vector<
3980 fidl_fuchsia_component_runner::ComponentNamespaceEntry,
3981 32,
3982 > as fidl::encoding::TypeMarker>::inline_size(
3983 decoder.context
3984 );
3985 if inlined != (member_inline_size <= 4) {
3986 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3987 }
3988 let inner_offset;
3989 let mut inner_depth = depth.clone();
3990 if inlined {
3991 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3992 inner_offset = next_offset;
3993 } else {
3994 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3995 inner_depth.increment()?;
3996 }
3997 let val_ref =
3998 self.incoming.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect));
3999 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_component_runner::ComponentNamespaceEntry, 32>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4000 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4001 {
4002 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4003 }
4004 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4005 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4006 }
4007 }
4008
4009 next_offset += envelope_size;
4010 _next_ordinal_to_read += 1;
4011 if next_offset >= end_offset {
4012 return Ok(());
4013 }
4014
4015 while _next_ordinal_to_read < 6 {
4017 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4018 _next_ordinal_to_read += 1;
4019 next_offset += envelope_size;
4020 }
4021
4022 let next_out_of_line = decoder.next_out_of_line();
4023 let handles_before = decoder.remaining_handles();
4024 if let Some((inlined, num_bytes, num_handles)) =
4025 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4026 {
4027 let member_inline_size = <fidl::encoding::Endpoint<
4028 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4029 > as fidl::encoding::TypeMarker>::inline_size(
4030 decoder.context
4031 );
4032 if inlined != (member_inline_size <= 4) {
4033 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4034 }
4035 let inner_offset;
4036 let mut inner_depth = depth.clone();
4037 if inlined {
4038 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4039 inner_offset = next_offset;
4040 } else {
4041 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4042 inner_depth.increment()?;
4043 }
4044 let val_ref = self.outgoing_dir.get_or_insert_with(|| {
4045 fidl::new_empty!(
4046 fidl::encoding::Endpoint<
4047 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4048 >,
4049 fidl::encoding::DefaultFuchsiaResourceDialect
4050 )
4051 });
4052 fidl::decode!(
4053 fidl::encoding::Endpoint<
4054 fidl::endpoints::ServerEnd<fidl_fuchsia_io::DirectoryMarker>,
4055 >,
4056 fidl::encoding::DefaultFuchsiaResourceDialect,
4057 val_ref,
4058 decoder,
4059 inner_offset,
4060 inner_depth
4061 )?;
4062 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4063 {
4064 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4065 }
4066 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4067 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4068 }
4069 }
4070
4071 next_offset += envelope_size;
4072 _next_ordinal_to_read += 1;
4073 if next_offset >= end_offset {
4074 return Ok(());
4075 }
4076
4077 while _next_ordinal_to_read < 7 {
4079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4080 _next_ordinal_to_read += 1;
4081 next_offset += envelope_size;
4082 }
4083
4084 let next_out_of_line = decoder.next_out_of_line();
4085 let handles_before = decoder.remaining_handles();
4086 if let Some((inlined, num_bytes, num_handles)) =
4087 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4088 {
4089 let member_inline_size = <fidl::encoding::HandleType<
4090 fidl::Vmo,
4091 { fidl::ObjectType::VMO.into_raw() },
4092 2147483648,
4093 > as fidl::encoding::TypeMarker>::inline_size(
4094 decoder.context
4095 );
4096 if inlined != (member_inline_size <= 4) {
4097 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4098 }
4099 let inner_offset;
4100 let mut inner_depth = depth.clone();
4101 if inlined {
4102 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4103 inner_offset = next_offset;
4104 } else {
4105 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4106 inner_depth.increment()?;
4107 }
4108 let val_ref =
4109 self.config.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4110 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4111 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4112 {
4113 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4114 }
4115 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4116 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4117 }
4118 }
4119
4120 next_offset += envelope_size;
4121 _next_ordinal_to_read += 1;
4122 if next_offset >= end_offset {
4123 return Ok(());
4124 }
4125
4126 while _next_ordinal_to_read < 8 {
4128 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4129 _next_ordinal_to_read += 1;
4130 next_offset += envelope_size;
4131 }
4132
4133 let next_out_of_line = decoder.next_out_of_line();
4134 let handles_before = decoder.remaining_handles();
4135 if let Some((inlined, num_bytes, num_handles)) =
4136 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4137 {
4138 let member_inline_size =
4139 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
4140 decoder.context,
4141 );
4142 if inlined != (member_inline_size <= 4) {
4143 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4144 }
4145 let inner_offset;
4146 let mut inner_depth = depth.clone();
4147 if inlined {
4148 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4149 inner_offset = next_offset;
4150 } else {
4151 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4152 inner_depth.increment()?;
4153 }
4154 let val_ref = self.node_name.get_or_insert_with(|| {
4155 fidl::new_empty!(
4156 fidl::encoding::UnboundedString,
4157 fidl::encoding::DefaultFuchsiaResourceDialect
4158 )
4159 });
4160 fidl::decode!(
4161 fidl::encoding::UnboundedString,
4162 fidl::encoding::DefaultFuchsiaResourceDialect,
4163 val_ref,
4164 decoder,
4165 inner_offset,
4166 inner_depth
4167 )?;
4168 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4169 {
4170 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4171 }
4172 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4173 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4174 }
4175 }
4176
4177 next_offset += envelope_size;
4178 _next_ordinal_to_read += 1;
4179 if next_offset >= end_offset {
4180 return Ok(());
4181 }
4182
4183 while _next_ordinal_to_read < 9 {
4185 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4186 _next_ordinal_to_read += 1;
4187 next_offset += envelope_size;
4188 }
4189
4190 let next_out_of_line = decoder.next_out_of_line();
4191 let handles_before = decoder.remaining_handles();
4192 if let Some((inlined, num_bytes, num_handles)) =
4193 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4194 {
4195 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4196 if inlined != (member_inline_size <= 4) {
4197 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4198 }
4199 let inner_offset;
4200 let mut inner_depth = depth.clone();
4201 if inlined {
4202 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4203 inner_offset = next_offset;
4204 } else {
4205 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4206 inner_depth.increment()?;
4207 }
4208 let val_ref = self.node_properties.get_or_insert_with(|| {
4209 fidl::new_empty!(
4210 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4211 fidl::encoding::DefaultFuchsiaResourceDialect
4212 )
4213 });
4214 fidl::decode!(
4215 fidl::encoding::UnboundedVector<NodePropertyEntry>,
4216 fidl::encoding::DefaultFuchsiaResourceDialect,
4217 val_ref,
4218 decoder,
4219 inner_offset,
4220 inner_depth
4221 )?;
4222 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4223 {
4224 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4225 }
4226 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4227 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4228 }
4229 }
4230
4231 next_offset += envelope_size;
4232 _next_ordinal_to_read += 1;
4233 if next_offset >= end_offset {
4234 return Ok(());
4235 }
4236
4237 while _next_ordinal_to_read < 10 {
4239 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4240 _next_ordinal_to_read += 1;
4241 next_offset += envelope_size;
4242 }
4243
4244 let next_out_of_line = decoder.next_out_of_line();
4245 let handles_before = decoder.remaining_handles();
4246 if let Some((inlined, num_bytes, num_handles)) =
4247 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4248 {
4249 let member_inline_size =
4250 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
4251 decoder.context,
4252 );
4253 if inlined != (member_inline_size <= 4) {
4254 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4255 }
4256 let inner_offset;
4257 let mut inner_depth = depth.clone();
4258 if inlined {
4259 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4260 inner_offset = next_offset;
4261 } else {
4262 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4263 inner_depth.increment()?;
4264 }
4265 let val_ref =
4266 self.node_offers.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
4267 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4268 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4269 {
4270 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4271 }
4272 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4273 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4274 }
4275 }
4276
4277 next_offset += envelope_size;
4278 _next_ordinal_to_read += 1;
4279 if next_offset >= end_offset {
4280 return Ok(());
4281 }
4282
4283 while _next_ordinal_to_read < 11 {
4285 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4286 _next_ordinal_to_read += 1;
4287 next_offset += envelope_size;
4288 }
4289
4290 let next_out_of_line = decoder.next_out_of_line();
4291 let handles_before = decoder.remaining_handles();
4292 if let Some((inlined, num_bytes, num_handles)) =
4293 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4294 {
4295 let member_inline_size = <fidl::encoding::HandleType<
4296 fidl::Event,
4297 { fidl::ObjectType::EVENT.into_raw() },
4298 2147483648,
4299 > as fidl::encoding::TypeMarker>::inline_size(
4300 decoder.context
4301 );
4302 if inlined != (member_inline_size <= 4) {
4303 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4304 }
4305 let inner_offset;
4306 let mut inner_depth = depth.clone();
4307 if inlined {
4308 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4309 inner_offset = next_offset;
4310 } else {
4311 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4312 inner_depth.increment()?;
4313 }
4314 let val_ref =
4315 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4316 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4317 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4318 {
4319 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4320 }
4321 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4322 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4323 }
4324 }
4325
4326 next_offset += envelope_size;
4327 _next_ordinal_to_read += 1;
4328 if next_offset >= end_offset {
4329 return Ok(());
4330 }
4331
4332 while _next_ordinal_to_read < 12 {
4334 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4335 _next_ordinal_to_read += 1;
4336 next_offset += envelope_size;
4337 }
4338
4339 let next_out_of_line = decoder.next_out_of_line();
4340 let handles_before = decoder.remaining_handles();
4341 if let Some((inlined, num_bytes, num_handles)) =
4342 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4343 {
4344 let member_inline_size = <fidl::encoding::UnboundedVector<NodePropertyEntry2> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4345 if inlined != (member_inline_size <= 4) {
4346 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4347 }
4348 let inner_offset;
4349 let mut inner_depth = depth.clone();
4350 if inlined {
4351 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4352 inner_offset = next_offset;
4353 } else {
4354 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4355 inner_depth.increment()?;
4356 }
4357 let val_ref = self.node_properties_2.get_or_insert_with(|| {
4358 fidl::new_empty!(
4359 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4360 fidl::encoding::DefaultFuchsiaResourceDialect
4361 )
4362 });
4363 fidl::decode!(
4364 fidl::encoding::UnboundedVector<NodePropertyEntry2>,
4365 fidl::encoding::DefaultFuchsiaResourceDialect,
4366 val_ref,
4367 decoder,
4368 inner_offset,
4369 inner_depth
4370 )?;
4371 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4372 {
4373 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4374 }
4375 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4376 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4377 }
4378 }
4379
4380 next_offset += envelope_size;
4381 _next_ordinal_to_read += 1;
4382 if next_offset >= end_offset {
4383 return Ok(());
4384 }
4385
4386 while _next_ordinal_to_read < 13 {
4388 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4389 _next_ordinal_to_read += 1;
4390 next_offset += envelope_size;
4391 }
4392
4393 let next_out_of_line = decoder.next_out_of_line();
4394 let handles_before = decoder.remaining_handles();
4395 if let Some((inlined, num_bytes, num_handles)) =
4396 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4397 {
4398 let member_inline_size = <fidl::encoding::HandleType<
4399 fidl::Vmar,
4400 { fidl::ObjectType::VMAR.into_raw() },
4401 2147483648,
4402 > as fidl::encoding::TypeMarker>::inline_size(
4403 decoder.context
4404 );
4405 if inlined != (member_inline_size <= 4) {
4406 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4407 }
4408 let inner_offset;
4409 let mut inner_depth = depth.clone();
4410 if inlined {
4411 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4412 inner_offset = next_offset;
4413 } else {
4414 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4415 inner_depth.increment()?;
4416 }
4417 let val_ref =
4418 self.vmar.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
4419 fidl::decode!(fidl::encoding::HandleType<fidl::Vmar, { fidl::ObjectType::VMAR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4420 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4421 {
4422 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4423 }
4424 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4425 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4426 }
4427 }
4428
4429 next_offset += envelope_size;
4430 _next_ordinal_to_read += 1;
4431 if next_offset >= end_offset {
4432 return Ok(());
4433 }
4434
4435 while _next_ordinal_to_read < 14 {
4437 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4438 _next_ordinal_to_read += 1;
4439 next_offset += envelope_size;
4440 }
4441
4442 let next_out_of_line = decoder.next_out_of_line();
4443 let handles_before = decoder.remaining_handles();
4444 if let Some((inlined, num_bytes, num_handles)) =
4445 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4446 {
4447 let member_inline_size =
4448 <PowerElementArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4449 if inlined != (member_inline_size <= 4) {
4450 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4451 }
4452 let inner_offset;
4453 let mut inner_depth = depth.clone();
4454 if inlined {
4455 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4456 inner_offset = next_offset;
4457 } else {
4458 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4459 inner_depth.increment()?;
4460 }
4461 let val_ref = self.power_element_args.get_or_insert_with(|| {
4462 fidl::new_empty!(
4463 PowerElementArgs,
4464 fidl::encoding::DefaultFuchsiaResourceDialect
4465 )
4466 });
4467 fidl::decode!(
4468 PowerElementArgs,
4469 fidl::encoding::DefaultFuchsiaResourceDialect,
4470 val_ref,
4471 decoder,
4472 inner_offset,
4473 inner_depth
4474 )?;
4475 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4476 {
4477 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4478 }
4479 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4480 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4481 }
4482 }
4483
4484 next_offset += envelope_size;
4485 _next_ordinal_to_read += 1;
4486 if next_offset >= end_offset {
4487 return Ok(());
4488 }
4489
4490 while _next_ordinal_to_read < 15 {
4492 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4493 _next_ordinal_to_read += 1;
4494 next_offset += envelope_size;
4495 }
4496
4497 let next_out_of_line = decoder.next_out_of_line();
4498 let handles_before = decoder.remaining_handles();
4499 if let Some((inlined, num_bytes, num_handles)) =
4500 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4501 {
4502 let member_inline_size = <fidl::encoding::Endpoint<
4503 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4504 > as fidl::encoding::TypeMarker>::inline_size(
4505 decoder.context
4506 );
4507 if inlined != (member_inline_size <= 4) {
4508 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4509 }
4510 let inner_offset;
4511 let mut inner_depth = depth.clone();
4512 if inlined {
4513 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4514 inner_offset = next_offset;
4515 } else {
4516 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4517 inner_depth.increment()?;
4518 }
4519 let val_ref = self.log_sink.get_or_insert_with(|| {
4520 fidl::new_empty!(
4521 fidl::encoding::Endpoint<
4522 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4523 >,
4524 fidl::encoding::DefaultFuchsiaResourceDialect
4525 )
4526 });
4527 fidl::decode!(
4528 fidl::encoding::Endpoint<
4529 fidl::endpoints::ClientEnd<fidl_fuchsia_logger::LogSinkMarker>,
4530 >,
4531 fidl::encoding::DefaultFuchsiaResourceDialect,
4532 val_ref,
4533 decoder,
4534 inner_offset,
4535 inner_depth
4536 )?;
4537 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4538 {
4539 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4540 }
4541 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4542 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4543 }
4544 }
4545
4546 next_offset += envelope_size;
4547
4548 while next_offset < end_offset {
4550 _next_ordinal_to_read += 1;
4551 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4552 next_offset += envelope_size;
4553 }
4554
4555 Ok(())
4556 }
4557 }
4558
4559 impl NodeAddArgs {
4560 #[inline(always)]
4561 fn max_ordinal_present(&self) -> u64 {
4562 if let Some(_) = self.driver_host {
4563 return 10;
4564 }
4565 if let Some(_) = self.offers_dictionary {
4566 return 9;
4567 }
4568 if let Some(_) = self.properties2 {
4569 return 8;
4570 }
4571 if let Some(_) = self.bus_info {
4572 return 7;
4573 }
4574 if let Some(_) = self.offers2 {
4575 return 6;
4576 }
4577 if let Some(_) = self.devfs_args {
4578 return 5;
4579 }
4580 if let Some(_) = self.properties {
4581 return 4;
4582 }
4583 if let Some(_) = self.symbols {
4584 return 3;
4585 }
4586 if let Some(_) = self.name {
4587 return 1;
4588 }
4589 0
4590 }
4591 }
4592
4593 impl fidl::encoding::ResourceTypeMarker for NodeAddArgs {
4594 type Borrowed<'a> = &'a mut Self;
4595 fn take_or_borrow<'a>(
4596 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4597 ) -> Self::Borrowed<'a> {
4598 value
4599 }
4600 }
4601
4602 unsafe impl fidl::encoding::TypeMarker for NodeAddArgs {
4603 type Owned = Self;
4604
4605 #[inline(always)]
4606 fn inline_align(_context: fidl::encoding::Context) -> usize {
4607 8
4608 }
4609
4610 #[inline(always)]
4611 fn inline_size(_context: fidl::encoding::Context) -> usize {
4612 16
4613 }
4614 }
4615
4616 unsafe impl fidl::encoding::Encode<NodeAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
4617 for &mut NodeAddArgs
4618 {
4619 unsafe fn encode(
4620 self,
4621 encoder: &mut fidl::encoding::Encoder<
4622 '_,
4623 fidl::encoding::DefaultFuchsiaResourceDialect,
4624 >,
4625 offset: usize,
4626 mut depth: fidl::encoding::Depth,
4627 ) -> fidl::Result<()> {
4628 encoder.debug_check_bounds::<NodeAddArgs>(offset);
4629 let max_ordinal: u64 = self.max_ordinal_present();
4631 encoder.write_num(max_ordinal, offset);
4632 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4633 if max_ordinal == 0 {
4635 return Ok(());
4636 }
4637 depth.increment()?;
4638 let envelope_size = 8;
4639 let bytes_len = max_ordinal as usize * envelope_size;
4640 #[allow(unused_variables)]
4641 let offset = encoder.out_of_line_offset(bytes_len);
4642 let mut _prev_end_offset: usize = 0;
4643 if 1 > max_ordinal {
4644 return Ok(());
4645 }
4646
4647 let cur_offset: usize = (1 - 1) * envelope_size;
4650
4651 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4653
4654 fidl::encoding::encode_in_envelope_optional::<
4659 fidl::encoding::BoundedString<128>,
4660 fidl::encoding::DefaultFuchsiaResourceDialect,
4661 >(
4662 self.name.as_ref().map(
4663 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
4664 ),
4665 encoder,
4666 offset + cur_offset,
4667 depth,
4668 )?;
4669
4670 _prev_end_offset = cur_offset + envelope_size;
4671 if 3 > max_ordinal {
4672 return Ok(());
4673 }
4674
4675 let cur_offset: usize = (3 - 1) * envelope_size;
4678
4679 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4681
4682 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4687 self.symbols.as_ref().map(<fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4688 encoder, offset + cur_offset, depth
4689 )?;
4690
4691 _prev_end_offset = cur_offset + envelope_size;
4692 if 4 > max_ordinal {
4693 return Ok(());
4694 }
4695
4696 let cur_offset: usize = (4 - 1) * envelope_size;
4699
4700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4702
4703 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4708 self.properties.as_ref().map(<fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4709 encoder, offset + cur_offset, depth
4710 )?;
4711
4712 _prev_end_offset = cur_offset + envelope_size;
4713 if 5 > max_ordinal {
4714 return Ok(());
4715 }
4716
4717 let cur_offset: usize = (5 - 1) * envelope_size;
4720
4721 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4723
4724 fidl::encoding::encode_in_envelope_optional::<
4729 DevfsAddArgs,
4730 fidl::encoding::DefaultFuchsiaResourceDialect,
4731 >(
4732 self.devfs_args
4733 .as_mut()
4734 .map(<DevfsAddArgs as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4735 encoder,
4736 offset + cur_offset,
4737 depth,
4738 )?;
4739
4740 _prev_end_offset = cur_offset + envelope_size;
4741 if 6 > max_ordinal {
4742 return Ok(());
4743 }
4744
4745 let cur_offset: usize = (6 - 1) * envelope_size;
4748
4749 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4751
4752 fidl::encoding::encode_in_envelope_optional::<
4757 fidl::encoding::Vector<Offer, 128>,
4758 fidl::encoding::DefaultFuchsiaResourceDialect,
4759 >(
4760 self.offers2.as_ref().map(
4761 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::ValueTypeMarker>::borrow,
4762 ),
4763 encoder,
4764 offset + cur_offset,
4765 depth,
4766 )?;
4767
4768 _prev_end_offset = cur_offset + envelope_size;
4769 if 7 > max_ordinal {
4770 return Ok(());
4771 }
4772
4773 let cur_offset: usize = (7 - 1) * envelope_size;
4776
4777 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4779
4780 fidl::encoding::encode_in_envelope_optional::<
4785 BusInfo,
4786 fidl::encoding::DefaultFuchsiaResourceDialect,
4787 >(
4788 self.bus_info.as_ref().map(<BusInfo as fidl::encoding::ValueTypeMarker>::borrow),
4789 encoder,
4790 offset + cur_offset,
4791 depth,
4792 )?;
4793
4794 _prev_end_offset = cur_offset + envelope_size;
4795 if 8 > max_ordinal {
4796 return Ok(());
4797 }
4798
4799 let cur_offset: usize = (8 - 1) * envelope_size;
4802
4803 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4805
4806 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect>(
4811 self.properties2.as_ref().map(<fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::ValueTypeMarker>::borrow),
4812 encoder, offset + cur_offset, depth
4813 )?;
4814
4815 _prev_end_offset = cur_offset + envelope_size;
4816 if 9 > max_ordinal {
4817 return Ok(());
4818 }
4819
4820 let cur_offset: usize = (9 - 1) * envelope_size;
4823
4824 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4826
4827 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_component_sandbox::DictionaryRef, fidl::encoding::DefaultFuchsiaResourceDialect>(
4832 self.offers_dictionary.as_mut().map(<fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
4833 encoder, offset + cur_offset, depth
4834 )?;
4835
4836 _prev_end_offset = cur_offset + envelope_size;
4837 if 10 > max_ordinal {
4838 return Ok(());
4839 }
4840
4841 let cur_offset: usize = (10 - 1) * envelope_size;
4844
4845 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4847
4848 fidl::encoding::encode_in_envelope_optional::<
4853 fidl::encoding::BoundedString<128>,
4854 fidl::encoding::DefaultFuchsiaResourceDialect,
4855 >(
4856 self.driver_host.as_ref().map(
4857 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
4858 ),
4859 encoder,
4860 offset + cur_offset,
4861 depth,
4862 )?;
4863
4864 _prev_end_offset = cur_offset + envelope_size;
4865
4866 Ok(())
4867 }
4868 }
4869
4870 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for NodeAddArgs {
4871 #[inline(always)]
4872 fn new_empty() -> Self {
4873 Self::default()
4874 }
4875
4876 unsafe fn decode(
4877 &mut self,
4878 decoder: &mut fidl::encoding::Decoder<
4879 '_,
4880 fidl::encoding::DefaultFuchsiaResourceDialect,
4881 >,
4882 offset: usize,
4883 mut depth: fidl::encoding::Depth,
4884 ) -> fidl::Result<()> {
4885 decoder.debug_check_bounds::<Self>(offset);
4886 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4887 None => return Err(fidl::Error::NotNullable),
4888 Some(len) => len,
4889 };
4890 if len == 0 {
4892 return Ok(());
4893 };
4894 depth.increment()?;
4895 let envelope_size = 8;
4896 let bytes_len = len * envelope_size;
4897 let offset = decoder.out_of_line_offset(bytes_len)?;
4898 let mut _next_ordinal_to_read = 0;
4900 let mut next_offset = offset;
4901 let end_offset = offset + bytes_len;
4902 _next_ordinal_to_read += 1;
4903 if next_offset >= end_offset {
4904 return Ok(());
4905 }
4906
4907 while _next_ordinal_to_read < 1 {
4909 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4910 _next_ordinal_to_read += 1;
4911 next_offset += envelope_size;
4912 }
4913
4914 let next_out_of_line = decoder.next_out_of_line();
4915 let handles_before = decoder.remaining_handles();
4916 if let Some((inlined, num_bytes, num_handles)) =
4917 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4918 {
4919 let member_inline_size =
4920 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
4921 decoder.context,
4922 );
4923 if inlined != (member_inline_size <= 4) {
4924 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4925 }
4926 let inner_offset;
4927 let mut inner_depth = depth.clone();
4928 if inlined {
4929 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4930 inner_offset = next_offset;
4931 } else {
4932 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4933 inner_depth.increment()?;
4934 }
4935 let val_ref = self.name.get_or_insert_with(|| {
4936 fidl::new_empty!(
4937 fidl::encoding::BoundedString<128>,
4938 fidl::encoding::DefaultFuchsiaResourceDialect
4939 )
4940 });
4941 fidl::decode!(
4942 fidl::encoding::BoundedString<128>,
4943 fidl::encoding::DefaultFuchsiaResourceDialect,
4944 val_ref,
4945 decoder,
4946 inner_offset,
4947 inner_depth
4948 )?;
4949 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4950 {
4951 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4952 }
4953 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4954 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4955 }
4956 }
4957
4958 next_offset += envelope_size;
4959 _next_ordinal_to_read += 1;
4960 if next_offset >= end_offset {
4961 return Ok(());
4962 }
4963
4964 while _next_ordinal_to_read < 3 {
4966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4967 _next_ordinal_to_read += 1;
4968 next_offset += envelope_size;
4969 }
4970
4971 let next_out_of_line = decoder.next_out_of_line();
4972 let handles_before = decoder.remaining_handles();
4973 if let Some((inlined, num_bytes, num_handles)) =
4974 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4975 {
4976 let member_inline_size = <fidl::encoding::Vector<NodeSymbol, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4977 if inlined != (member_inline_size <= 4) {
4978 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4979 }
4980 let inner_offset;
4981 let mut inner_depth = depth.clone();
4982 if inlined {
4983 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4984 inner_offset = next_offset;
4985 } else {
4986 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4987 inner_depth.increment()?;
4988 }
4989 let val_ref =
4990 self.symbols.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
4991 fidl::decode!(fidl::encoding::Vector<NodeSymbol, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
4992 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4993 {
4994 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4995 }
4996 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4997 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4998 }
4999 }
5000
5001 next_offset += envelope_size;
5002 _next_ordinal_to_read += 1;
5003 if next_offset >= end_offset {
5004 return Ok(());
5005 }
5006
5007 while _next_ordinal_to_read < 4 {
5009 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5010 _next_ordinal_to_read += 1;
5011 next_offset += envelope_size;
5012 }
5013
5014 let next_out_of_line = decoder.next_out_of_line();
5015 let handles_before = decoder.remaining_handles();
5016 if let Some((inlined, num_bytes, num_handles)) =
5017 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5018 {
5019 let member_inline_size = <fidl::encoding::Vector<NodeProperty, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5020 if inlined != (member_inline_size <= 4) {
5021 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5022 }
5023 let inner_offset;
5024 let mut inner_depth = depth.clone();
5025 if inlined {
5026 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5027 inner_offset = next_offset;
5028 } else {
5029 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5030 inner_depth.increment()?;
5031 }
5032 let val_ref =
5033 self.properties.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5034 fidl::decode!(fidl::encoding::Vector<NodeProperty, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5035 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5036 {
5037 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5038 }
5039 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5040 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5041 }
5042 }
5043
5044 next_offset += envelope_size;
5045 _next_ordinal_to_read += 1;
5046 if next_offset >= end_offset {
5047 return Ok(());
5048 }
5049
5050 while _next_ordinal_to_read < 5 {
5052 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5053 _next_ordinal_to_read += 1;
5054 next_offset += envelope_size;
5055 }
5056
5057 let next_out_of_line = decoder.next_out_of_line();
5058 let handles_before = decoder.remaining_handles();
5059 if let Some((inlined, num_bytes, num_handles)) =
5060 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5061 {
5062 let member_inline_size =
5063 <DevfsAddArgs as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5064 if inlined != (member_inline_size <= 4) {
5065 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5066 }
5067 let inner_offset;
5068 let mut inner_depth = depth.clone();
5069 if inlined {
5070 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5071 inner_offset = next_offset;
5072 } else {
5073 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5074 inner_depth.increment()?;
5075 }
5076 let val_ref = self.devfs_args.get_or_insert_with(|| {
5077 fidl::new_empty!(DevfsAddArgs, fidl::encoding::DefaultFuchsiaResourceDialect)
5078 });
5079 fidl::decode!(
5080 DevfsAddArgs,
5081 fidl::encoding::DefaultFuchsiaResourceDialect,
5082 val_ref,
5083 decoder,
5084 inner_offset,
5085 inner_depth
5086 )?;
5087 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5088 {
5089 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5090 }
5091 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5092 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5093 }
5094 }
5095
5096 next_offset += envelope_size;
5097 _next_ordinal_to_read += 1;
5098 if next_offset >= end_offset {
5099 return Ok(());
5100 }
5101
5102 while _next_ordinal_to_read < 6 {
5104 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5105 _next_ordinal_to_read += 1;
5106 next_offset += envelope_size;
5107 }
5108
5109 let next_out_of_line = decoder.next_out_of_line();
5110 let handles_before = decoder.remaining_handles();
5111 if let Some((inlined, num_bytes, num_handles)) =
5112 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5113 {
5114 let member_inline_size =
5115 <fidl::encoding::Vector<Offer, 128> as fidl::encoding::TypeMarker>::inline_size(
5116 decoder.context,
5117 );
5118 if inlined != (member_inline_size <= 4) {
5119 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5120 }
5121 let inner_offset;
5122 let mut inner_depth = depth.clone();
5123 if inlined {
5124 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5125 inner_offset = next_offset;
5126 } else {
5127 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5128 inner_depth.increment()?;
5129 }
5130 let val_ref =
5131 self.offers2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect));
5132 fidl::decode!(fidl::encoding::Vector<Offer, 128>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5133 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5134 {
5135 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5136 }
5137 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5138 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5139 }
5140 }
5141
5142 next_offset += envelope_size;
5143 _next_ordinal_to_read += 1;
5144 if next_offset >= end_offset {
5145 return Ok(());
5146 }
5147
5148 while _next_ordinal_to_read < 7 {
5150 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5151 _next_ordinal_to_read += 1;
5152 next_offset += envelope_size;
5153 }
5154
5155 let next_out_of_line = decoder.next_out_of_line();
5156 let handles_before = decoder.remaining_handles();
5157 if let Some((inlined, num_bytes, num_handles)) =
5158 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5159 {
5160 let member_inline_size =
5161 <BusInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5162 if inlined != (member_inline_size <= 4) {
5163 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5164 }
5165 let inner_offset;
5166 let mut inner_depth = depth.clone();
5167 if inlined {
5168 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5169 inner_offset = next_offset;
5170 } else {
5171 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5172 inner_depth.increment()?;
5173 }
5174 let val_ref = self.bus_info.get_or_insert_with(|| {
5175 fidl::new_empty!(BusInfo, fidl::encoding::DefaultFuchsiaResourceDialect)
5176 });
5177 fidl::decode!(
5178 BusInfo,
5179 fidl::encoding::DefaultFuchsiaResourceDialect,
5180 val_ref,
5181 decoder,
5182 inner_offset,
5183 inner_depth
5184 )?;
5185 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5186 {
5187 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5188 }
5189 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5190 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5191 }
5192 }
5193
5194 next_offset += envelope_size;
5195 _next_ordinal_to_read += 1;
5196 if next_offset >= end_offset {
5197 return Ok(());
5198 }
5199
5200 while _next_ordinal_to_read < 8 {
5202 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5203 _next_ordinal_to_read += 1;
5204 next_offset += envelope_size;
5205 }
5206
5207 let next_out_of_line = decoder.next_out_of_line();
5208 let handles_before = decoder.remaining_handles();
5209 if let Some((inlined, num_bytes, num_handles)) =
5210 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5211 {
5212 let member_inline_size = <fidl::encoding::Vector<NodeProperty2, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5213 if inlined != (member_inline_size <= 4) {
5214 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5215 }
5216 let inner_offset;
5217 let mut inner_depth = depth.clone();
5218 if inlined {
5219 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5220 inner_offset = next_offset;
5221 } else {
5222 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5223 inner_depth.increment()?;
5224 }
5225 let val_ref =
5226 self.properties2.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect));
5227 fidl::decode!(fidl::encoding::Vector<NodeProperty2, 64>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5228 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5229 {
5230 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5231 }
5232 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5233 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5234 }
5235 }
5236
5237 next_offset += envelope_size;
5238 _next_ordinal_to_read += 1;
5239 if next_offset >= end_offset {
5240 return Ok(());
5241 }
5242
5243 while _next_ordinal_to_read < 9 {
5245 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5246 _next_ordinal_to_read += 1;
5247 next_offset += envelope_size;
5248 }
5249
5250 let next_out_of_line = decoder.next_out_of_line();
5251 let handles_before = decoder.remaining_handles();
5252 if let Some((inlined, num_bytes, num_handles)) =
5253 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5254 {
5255 let member_inline_size = <fidl_fuchsia_component_sandbox::DictionaryRef as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5256 if inlined != (member_inline_size <= 4) {
5257 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5258 }
5259 let inner_offset;
5260 let mut inner_depth = depth.clone();
5261 if inlined {
5262 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5263 inner_offset = next_offset;
5264 } else {
5265 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5266 inner_depth.increment()?;
5267 }
5268 let val_ref = self.offers_dictionary.get_or_insert_with(|| {
5269 fidl::new_empty!(
5270 fidl_fuchsia_component_sandbox::DictionaryRef,
5271 fidl::encoding::DefaultFuchsiaResourceDialect
5272 )
5273 });
5274 fidl::decode!(
5275 fidl_fuchsia_component_sandbox::DictionaryRef,
5276 fidl::encoding::DefaultFuchsiaResourceDialect,
5277 val_ref,
5278 decoder,
5279 inner_offset,
5280 inner_depth
5281 )?;
5282 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5283 {
5284 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5285 }
5286 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5287 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5288 }
5289 }
5290
5291 next_offset += envelope_size;
5292 _next_ordinal_to_read += 1;
5293 if next_offset >= end_offset {
5294 return Ok(());
5295 }
5296
5297 while _next_ordinal_to_read < 10 {
5299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5300 _next_ordinal_to_read += 1;
5301 next_offset += envelope_size;
5302 }
5303
5304 let next_out_of_line = decoder.next_out_of_line();
5305 let handles_before = decoder.remaining_handles();
5306 if let Some((inlined, num_bytes, num_handles)) =
5307 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5308 {
5309 let member_inline_size =
5310 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5311 decoder.context,
5312 );
5313 if inlined != (member_inline_size <= 4) {
5314 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5315 }
5316 let inner_offset;
5317 let mut inner_depth = depth.clone();
5318 if inlined {
5319 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5320 inner_offset = next_offset;
5321 } else {
5322 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5323 inner_depth.increment()?;
5324 }
5325 let val_ref = self.driver_host.get_or_insert_with(|| {
5326 fidl::new_empty!(
5327 fidl::encoding::BoundedString<128>,
5328 fidl::encoding::DefaultFuchsiaResourceDialect
5329 )
5330 });
5331 fidl::decode!(
5332 fidl::encoding::BoundedString<128>,
5333 fidl::encoding::DefaultFuchsiaResourceDialect,
5334 val_ref,
5335 decoder,
5336 inner_offset,
5337 inner_depth
5338 )?;
5339 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5340 {
5341 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5342 }
5343 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5344 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5345 }
5346 }
5347
5348 next_offset += envelope_size;
5349
5350 while next_offset < end_offset {
5352 _next_ordinal_to_read += 1;
5353 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5354 next_offset += envelope_size;
5355 }
5356
5357 Ok(())
5358 }
5359 }
5360
5361 impl NodeControllerOnBindRequest {
5362 #[inline(always)]
5363 fn max_ordinal_present(&self) -> u64 {
5364 if let Some(_) = self.node_token {
5365 return 1;
5366 }
5367 0
5368 }
5369 }
5370
5371 impl fidl::encoding::ResourceTypeMarker for NodeControllerOnBindRequest {
5372 type Borrowed<'a> = &'a mut Self;
5373 fn take_or_borrow<'a>(
5374 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5375 ) -> Self::Borrowed<'a> {
5376 value
5377 }
5378 }
5379
5380 unsafe impl fidl::encoding::TypeMarker for NodeControllerOnBindRequest {
5381 type Owned = Self;
5382
5383 #[inline(always)]
5384 fn inline_align(_context: fidl::encoding::Context) -> usize {
5385 8
5386 }
5387
5388 #[inline(always)]
5389 fn inline_size(_context: fidl::encoding::Context) -> usize {
5390 16
5391 }
5392 }
5393
5394 unsafe impl
5395 fidl::encoding::Encode<
5396 NodeControllerOnBindRequest,
5397 fidl::encoding::DefaultFuchsiaResourceDialect,
5398 > for &mut NodeControllerOnBindRequest
5399 {
5400 unsafe fn encode(
5401 self,
5402 encoder: &mut fidl::encoding::Encoder<
5403 '_,
5404 fidl::encoding::DefaultFuchsiaResourceDialect,
5405 >,
5406 offset: usize,
5407 mut depth: fidl::encoding::Depth,
5408 ) -> fidl::Result<()> {
5409 encoder.debug_check_bounds::<NodeControllerOnBindRequest>(offset);
5410 let max_ordinal: u64 = self.max_ordinal_present();
5412 encoder.write_num(max_ordinal, offset);
5413 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5414 if max_ordinal == 0 {
5416 return Ok(());
5417 }
5418 depth.increment()?;
5419 let envelope_size = 8;
5420 let bytes_len = max_ordinal as usize * envelope_size;
5421 #[allow(unused_variables)]
5422 let offset = encoder.out_of_line_offset(bytes_len);
5423 let mut _prev_end_offset: usize = 0;
5424 if 1 > max_ordinal {
5425 return Ok(());
5426 }
5427
5428 let cur_offset: usize = (1 - 1) * envelope_size;
5431
5432 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5434
5435 fidl::encoding::encode_in_envelope_optional::<
5440 fidl::encoding::HandleType<
5441 fidl::Event,
5442 { fidl::ObjectType::EVENT.into_raw() },
5443 2147483648,
5444 >,
5445 fidl::encoding::DefaultFuchsiaResourceDialect,
5446 >(
5447 self.node_token.as_mut().map(
5448 <fidl::encoding::HandleType<
5449 fidl::Event,
5450 { fidl::ObjectType::EVENT.into_raw() },
5451 2147483648,
5452 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5453 ),
5454 encoder,
5455 offset + cur_offset,
5456 depth,
5457 )?;
5458
5459 _prev_end_offset = cur_offset + envelope_size;
5460
5461 Ok(())
5462 }
5463 }
5464
5465 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5466 for NodeControllerOnBindRequest
5467 {
5468 #[inline(always)]
5469 fn new_empty() -> Self {
5470 Self::default()
5471 }
5472
5473 unsafe fn decode(
5474 &mut self,
5475 decoder: &mut fidl::encoding::Decoder<
5476 '_,
5477 fidl::encoding::DefaultFuchsiaResourceDialect,
5478 >,
5479 offset: usize,
5480 mut depth: fidl::encoding::Depth,
5481 ) -> fidl::Result<()> {
5482 decoder.debug_check_bounds::<Self>(offset);
5483 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5484 None => return Err(fidl::Error::NotNullable),
5485 Some(len) => len,
5486 };
5487 if len == 0 {
5489 return Ok(());
5490 };
5491 depth.increment()?;
5492 let envelope_size = 8;
5493 let bytes_len = len * envelope_size;
5494 let offset = decoder.out_of_line_offset(bytes_len)?;
5495 let mut _next_ordinal_to_read = 0;
5497 let mut next_offset = offset;
5498 let end_offset = offset + bytes_len;
5499 _next_ordinal_to_read += 1;
5500 if next_offset >= end_offset {
5501 return Ok(());
5502 }
5503
5504 while _next_ordinal_to_read < 1 {
5506 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5507 _next_ordinal_to_read += 1;
5508 next_offset += envelope_size;
5509 }
5510
5511 let next_out_of_line = decoder.next_out_of_line();
5512 let handles_before = decoder.remaining_handles();
5513 if let Some((inlined, num_bytes, num_handles)) =
5514 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5515 {
5516 let member_inline_size = <fidl::encoding::HandleType<
5517 fidl::Event,
5518 { fidl::ObjectType::EVENT.into_raw() },
5519 2147483648,
5520 > as fidl::encoding::TypeMarker>::inline_size(
5521 decoder.context
5522 );
5523 if inlined != (member_inline_size <= 4) {
5524 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5525 }
5526 let inner_offset;
5527 let mut inner_depth = depth.clone();
5528 if inlined {
5529 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5530 inner_offset = next_offset;
5531 } else {
5532 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5533 inner_depth.increment()?;
5534 }
5535 let val_ref =
5536 self.node_token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
5537 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
5538 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5539 {
5540 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5541 }
5542 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5543 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5544 }
5545 }
5546
5547 next_offset += envelope_size;
5548
5549 while next_offset < end_offset {
5551 _next_ordinal_to_read += 1;
5552 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5553 next_offset += envelope_size;
5554 }
5555
5556 Ok(())
5557 }
5558 }
5559
5560 impl PowerElementArgs {
5561 #[inline(always)]
5562 fn max_ordinal_present(&self) -> u64 {
5563 if let Some(_) = self.token {
5564 return 4;
5565 }
5566 if let Some(_) = self.lessor_client {
5567 return 3;
5568 }
5569 if let Some(_) = self.runner_server {
5570 return 2;
5571 }
5572 if let Some(_) = self.control_client {
5573 return 1;
5574 }
5575 0
5576 }
5577 }
5578
5579 impl fidl::encoding::ResourceTypeMarker for PowerElementArgs {
5580 type Borrowed<'a> = &'a mut Self;
5581 fn take_or_borrow<'a>(
5582 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5583 ) -> Self::Borrowed<'a> {
5584 value
5585 }
5586 }
5587
5588 unsafe impl fidl::encoding::TypeMarker for PowerElementArgs {
5589 type Owned = Self;
5590
5591 #[inline(always)]
5592 fn inline_align(_context: fidl::encoding::Context) -> usize {
5593 8
5594 }
5595
5596 #[inline(always)]
5597 fn inline_size(_context: fidl::encoding::Context) -> usize {
5598 16
5599 }
5600 }
5601
5602 unsafe impl
5603 fidl::encoding::Encode<PowerElementArgs, fidl::encoding::DefaultFuchsiaResourceDialect>
5604 for &mut PowerElementArgs
5605 {
5606 unsafe fn encode(
5607 self,
5608 encoder: &mut fidl::encoding::Encoder<
5609 '_,
5610 fidl::encoding::DefaultFuchsiaResourceDialect,
5611 >,
5612 offset: usize,
5613 mut depth: fidl::encoding::Depth,
5614 ) -> fidl::Result<()> {
5615 encoder.debug_check_bounds::<PowerElementArgs>(offset);
5616 let max_ordinal: u64 = self.max_ordinal_present();
5618 encoder.write_num(max_ordinal, offset);
5619 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5620 if max_ordinal == 0 {
5622 return Ok(());
5623 }
5624 depth.increment()?;
5625 let envelope_size = 8;
5626 let bytes_len = max_ordinal as usize * envelope_size;
5627 #[allow(unused_variables)]
5628 let offset = encoder.out_of_line_offset(bytes_len);
5629 let mut _prev_end_offset: usize = 0;
5630 if 1 > max_ordinal {
5631 return Ok(());
5632 }
5633
5634 let cur_offset: usize = (1 - 1) * envelope_size;
5637
5638 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5640
5641 fidl::encoding::encode_in_envelope_optional::<
5646 fidl::encoding::Endpoint<
5647 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5648 >,
5649 fidl::encoding::DefaultFuchsiaResourceDialect,
5650 >(
5651 self.control_client.as_mut().map(
5652 <fidl::encoding::Endpoint<
5653 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5654 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5655 ),
5656 encoder,
5657 offset + cur_offset,
5658 depth,
5659 )?;
5660
5661 _prev_end_offset = cur_offset + envelope_size;
5662 if 2 > max_ordinal {
5663 return Ok(());
5664 }
5665
5666 let cur_offset: usize = (2 - 1) * envelope_size;
5669
5670 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5672
5673 fidl::encoding::encode_in_envelope_optional::<
5678 fidl::encoding::Endpoint<
5679 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5680 >,
5681 fidl::encoding::DefaultFuchsiaResourceDialect,
5682 >(
5683 self.runner_server.as_mut().map(
5684 <fidl::encoding::Endpoint<
5685 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5686 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5687 ),
5688 encoder,
5689 offset + cur_offset,
5690 depth,
5691 )?;
5692
5693 _prev_end_offset = cur_offset + envelope_size;
5694 if 3 > max_ordinal {
5695 return Ok(());
5696 }
5697
5698 let cur_offset: usize = (3 - 1) * envelope_size;
5701
5702 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5704
5705 fidl::encoding::encode_in_envelope_optional::<
5710 fidl::encoding::Endpoint<
5711 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5712 >,
5713 fidl::encoding::DefaultFuchsiaResourceDialect,
5714 >(
5715 self.lessor_client.as_mut().map(
5716 <fidl::encoding::Endpoint<
5717 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5718 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5719 ),
5720 encoder,
5721 offset + cur_offset,
5722 depth,
5723 )?;
5724
5725 _prev_end_offset = cur_offset + envelope_size;
5726 if 4 > max_ordinal {
5727 return Ok(());
5728 }
5729
5730 let cur_offset: usize = (4 - 1) * envelope_size;
5733
5734 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5736
5737 fidl::encoding::encode_in_envelope_optional::<
5742 fidl::encoding::HandleType<
5743 fidl::Event,
5744 { fidl::ObjectType::EVENT.into_raw() },
5745 2147483648,
5746 >,
5747 fidl::encoding::DefaultFuchsiaResourceDialect,
5748 >(
5749 self.token.as_mut().map(
5750 <fidl::encoding::HandleType<
5751 fidl::Event,
5752 { fidl::ObjectType::EVENT.into_raw() },
5753 2147483648,
5754 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
5755 ),
5756 encoder,
5757 offset + cur_offset,
5758 depth,
5759 )?;
5760
5761 _prev_end_offset = cur_offset + envelope_size;
5762
5763 Ok(())
5764 }
5765 }
5766
5767 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5768 for PowerElementArgs
5769 {
5770 #[inline(always)]
5771 fn new_empty() -> Self {
5772 Self::default()
5773 }
5774
5775 unsafe fn decode(
5776 &mut self,
5777 decoder: &mut fidl::encoding::Decoder<
5778 '_,
5779 fidl::encoding::DefaultFuchsiaResourceDialect,
5780 >,
5781 offset: usize,
5782 mut depth: fidl::encoding::Depth,
5783 ) -> fidl::Result<()> {
5784 decoder.debug_check_bounds::<Self>(offset);
5785 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5786 None => return Err(fidl::Error::NotNullable),
5787 Some(len) => len,
5788 };
5789 if len == 0 {
5791 return Ok(());
5792 };
5793 depth.increment()?;
5794 let envelope_size = 8;
5795 let bytes_len = len * envelope_size;
5796 let offset = decoder.out_of_line_offset(bytes_len)?;
5797 let mut _next_ordinal_to_read = 0;
5799 let mut next_offset = offset;
5800 let end_offset = offset + bytes_len;
5801 _next_ordinal_to_read += 1;
5802 if next_offset >= end_offset {
5803 return Ok(());
5804 }
5805
5806 while _next_ordinal_to_read < 1 {
5808 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5809 _next_ordinal_to_read += 1;
5810 next_offset += envelope_size;
5811 }
5812
5813 let next_out_of_line = decoder.next_out_of_line();
5814 let handles_before = decoder.remaining_handles();
5815 if let Some((inlined, num_bytes, num_handles)) =
5816 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5817 {
5818 let member_inline_size = <fidl::encoding::Endpoint<
5819 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5820 > as fidl::encoding::TypeMarker>::inline_size(
5821 decoder.context
5822 );
5823 if inlined != (member_inline_size <= 4) {
5824 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5825 }
5826 let inner_offset;
5827 let mut inner_depth = depth.clone();
5828 if inlined {
5829 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5830 inner_offset = next_offset;
5831 } else {
5832 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5833 inner_depth.increment()?;
5834 }
5835 let val_ref = self.control_client.get_or_insert_with(|| {
5836 fidl::new_empty!(
5837 fidl::encoding::Endpoint<
5838 fidl::endpoints::ClientEnd<
5839 fidl_fuchsia_power_broker::ElementControlMarker,
5840 >,
5841 >,
5842 fidl::encoding::DefaultFuchsiaResourceDialect
5843 )
5844 });
5845 fidl::decode!(
5846 fidl::encoding::Endpoint<
5847 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::ElementControlMarker>,
5848 >,
5849 fidl::encoding::DefaultFuchsiaResourceDialect,
5850 val_ref,
5851 decoder,
5852 inner_offset,
5853 inner_depth
5854 )?;
5855 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5856 {
5857 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5858 }
5859 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5860 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5861 }
5862 }
5863
5864 next_offset += envelope_size;
5865 _next_ordinal_to_read += 1;
5866 if next_offset >= end_offset {
5867 return Ok(());
5868 }
5869
5870 while _next_ordinal_to_read < 2 {
5872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5873 _next_ordinal_to_read += 1;
5874 next_offset += envelope_size;
5875 }
5876
5877 let next_out_of_line = decoder.next_out_of_line();
5878 let handles_before = decoder.remaining_handles();
5879 if let Some((inlined, num_bytes, num_handles)) =
5880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5881 {
5882 let member_inline_size = <fidl::encoding::Endpoint<
5883 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5884 > as fidl::encoding::TypeMarker>::inline_size(
5885 decoder.context
5886 );
5887 if inlined != (member_inline_size <= 4) {
5888 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5889 }
5890 let inner_offset;
5891 let mut inner_depth = depth.clone();
5892 if inlined {
5893 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5894 inner_offset = next_offset;
5895 } else {
5896 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5897 inner_depth.increment()?;
5898 }
5899 let val_ref = self.runner_server.get_or_insert_with(|| {
5900 fidl::new_empty!(
5901 fidl::encoding::Endpoint<
5902 fidl::endpoints::ServerEnd<
5903 fidl_fuchsia_power_broker::ElementRunnerMarker,
5904 >,
5905 >,
5906 fidl::encoding::DefaultFuchsiaResourceDialect
5907 )
5908 });
5909 fidl::decode!(
5910 fidl::encoding::Endpoint<
5911 fidl::endpoints::ServerEnd<fidl_fuchsia_power_broker::ElementRunnerMarker>,
5912 >,
5913 fidl::encoding::DefaultFuchsiaResourceDialect,
5914 val_ref,
5915 decoder,
5916 inner_offset,
5917 inner_depth
5918 )?;
5919 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5920 {
5921 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5922 }
5923 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5924 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5925 }
5926 }
5927
5928 next_offset += envelope_size;
5929 _next_ordinal_to_read += 1;
5930 if next_offset >= end_offset {
5931 return Ok(());
5932 }
5933
5934 while _next_ordinal_to_read < 3 {
5936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5937 _next_ordinal_to_read += 1;
5938 next_offset += envelope_size;
5939 }
5940
5941 let next_out_of_line = decoder.next_out_of_line();
5942 let handles_before = decoder.remaining_handles();
5943 if let Some((inlined, num_bytes, num_handles)) =
5944 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5945 {
5946 let member_inline_size = <fidl::encoding::Endpoint<
5947 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5948 > as fidl::encoding::TypeMarker>::inline_size(
5949 decoder.context
5950 );
5951 if inlined != (member_inline_size <= 4) {
5952 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5953 }
5954 let inner_offset;
5955 let mut inner_depth = depth.clone();
5956 if inlined {
5957 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5958 inner_offset = next_offset;
5959 } else {
5960 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5961 inner_depth.increment()?;
5962 }
5963 let val_ref = self.lessor_client.get_or_insert_with(|| {
5964 fidl::new_empty!(
5965 fidl::encoding::Endpoint<
5966 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5967 >,
5968 fidl::encoding::DefaultFuchsiaResourceDialect
5969 )
5970 });
5971 fidl::decode!(
5972 fidl::encoding::Endpoint<
5973 fidl::endpoints::ClientEnd<fidl_fuchsia_power_broker::LessorMarker>,
5974 >,
5975 fidl::encoding::DefaultFuchsiaResourceDialect,
5976 val_ref,
5977 decoder,
5978 inner_offset,
5979 inner_depth
5980 )?;
5981 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5982 {
5983 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5984 }
5985 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5986 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5987 }
5988 }
5989
5990 next_offset += envelope_size;
5991 _next_ordinal_to_read += 1;
5992 if next_offset >= end_offset {
5993 return Ok(());
5994 }
5995
5996 while _next_ordinal_to_read < 4 {
5998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5999 _next_ordinal_to_read += 1;
6000 next_offset += envelope_size;
6001 }
6002
6003 let next_out_of_line = decoder.next_out_of_line();
6004 let handles_before = decoder.remaining_handles();
6005 if let Some((inlined, num_bytes, num_handles)) =
6006 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6007 {
6008 let member_inline_size = <fidl::encoding::HandleType<
6009 fidl::Event,
6010 { fidl::ObjectType::EVENT.into_raw() },
6011 2147483648,
6012 > as fidl::encoding::TypeMarker>::inline_size(
6013 decoder.context
6014 );
6015 if inlined != (member_inline_size <= 4) {
6016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6017 }
6018 let inner_offset;
6019 let mut inner_depth = depth.clone();
6020 if inlined {
6021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6022 inner_offset = next_offset;
6023 } else {
6024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6025 inner_depth.increment()?;
6026 }
6027 let val_ref =
6028 self.token.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
6029 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
6030 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6031 {
6032 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6033 }
6034 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6035 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6036 }
6037 }
6038
6039 next_offset += envelope_size;
6040
6041 while next_offset < end_offset {
6043 _next_ordinal_to_read += 1;
6044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6045 next_offset += envelope_size;
6046 }
6047
6048 Ok(())
6049 }
6050 }
6051
6052 impl fidl::encoding::ResourceTypeMarker for DriverResult {
6053 type Borrowed<'a> = &'a mut Self;
6054 fn take_or_borrow<'a>(
6055 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
6056 ) -> Self::Borrowed<'a> {
6057 value
6058 }
6059 }
6060
6061 unsafe impl fidl::encoding::TypeMarker for DriverResult {
6062 type Owned = Self;
6063
6064 #[inline(always)]
6065 fn inline_align(_context: fidl::encoding::Context) -> usize {
6066 8
6067 }
6068
6069 #[inline(always)]
6070 fn inline_size(_context: fidl::encoding::Context) -> usize {
6071 16
6072 }
6073 }
6074
6075 unsafe impl fidl::encoding::Encode<DriverResult, fidl::encoding::DefaultFuchsiaResourceDialect>
6076 for &mut DriverResult
6077 {
6078 #[inline]
6079 unsafe fn encode(
6080 self,
6081 encoder: &mut fidl::encoding::Encoder<
6082 '_,
6083 fidl::encoding::DefaultFuchsiaResourceDialect,
6084 >,
6085 offset: usize,
6086 _depth: fidl::encoding::Depth,
6087 ) -> fidl::Result<()> {
6088 encoder.debug_check_bounds::<DriverResult>(offset);
6089 encoder.write_num::<u64>(self.ordinal(), offset);
6090 match self {
6091 DriverResult::DriverStartedNodeToken(ref mut val) => {
6092 fidl::encoding::encode_in_envelope::<
6093 fidl::encoding::HandleType<
6094 fidl::Event,
6095 { fidl::ObjectType::EVENT.into_raw() },
6096 2147483648,
6097 >,
6098 fidl::encoding::DefaultFuchsiaResourceDialect,
6099 >(
6100 <fidl::encoding::HandleType<
6101 fidl::Event,
6102 { fidl::ObjectType::EVENT.into_raw() },
6103 2147483648,
6104 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
6105 val
6106 ),
6107 encoder,
6108 offset + 8,
6109 _depth,
6110 )
6111 }
6112 DriverResult::MatchError(ref val) => fidl::encoding::encode_in_envelope::<
6113 i32,
6114 fidl::encoding::DefaultFuchsiaResourceDialect,
6115 >(
6116 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6117 encoder,
6118 offset + 8,
6119 _depth,
6120 ),
6121 DriverResult::StartError(ref val) => fidl::encoding::encode_in_envelope::<
6122 i32,
6123 fidl::encoding::DefaultFuchsiaResourceDialect,
6124 >(
6125 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
6126 encoder,
6127 offset + 8,
6128 _depth,
6129 ),
6130 DriverResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
6131 }
6132 }
6133 }
6134
6135 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for DriverResult {
6136 #[inline(always)]
6137 fn new_empty() -> Self {
6138 Self::__SourceBreaking { unknown_ordinal: 0 }
6139 }
6140
6141 #[inline]
6142 unsafe fn decode(
6143 &mut self,
6144 decoder: &mut fidl::encoding::Decoder<
6145 '_,
6146 fidl::encoding::DefaultFuchsiaResourceDialect,
6147 >,
6148 offset: usize,
6149 mut depth: fidl::encoding::Depth,
6150 ) -> fidl::Result<()> {
6151 decoder.debug_check_bounds::<Self>(offset);
6152 #[allow(unused_variables)]
6153 let next_out_of_line = decoder.next_out_of_line();
6154 let handles_before = decoder.remaining_handles();
6155 let (ordinal, inlined, num_bytes, num_handles) =
6156 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
6157
6158 let member_inline_size = match ordinal {
6159 1 => <fidl::encoding::HandleType<
6160 fidl::Event,
6161 { fidl::ObjectType::EVENT.into_raw() },
6162 2147483648,
6163 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6164 2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6165 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
6166 0 => return Err(fidl::Error::UnknownUnionTag),
6167 _ => num_bytes as usize,
6168 };
6169
6170 if inlined != (member_inline_size <= 4) {
6171 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6172 }
6173 let _inner_offset;
6174 if inlined {
6175 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
6176 _inner_offset = offset + 8;
6177 } else {
6178 depth.increment()?;
6179 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6180 }
6181 match ordinal {
6182 1 => {
6183 #[allow(irrefutable_let_patterns)]
6184 if let DriverResult::DriverStartedNodeToken(_) = self {
6185 } else {
6187 *self = DriverResult::DriverStartedNodeToken(
6189 fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
6190 );
6191 }
6192 #[allow(irrefutable_let_patterns)]
6193 if let DriverResult::DriverStartedNodeToken(ref mut val) = self {
6194 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
6195 } else {
6196 unreachable!()
6197 }
6198 }
6199 2 => {
6200 #[allow(irrefutable_let_patterns)]
6201 if let DriverResult::MatchError(_) = self {
6202 } else {
6204 *self = DriverResult::MatchError(fidl::new_empty!(
6206 i32,
6207 fidl::encoding::DefaultFuchsiaResourceDialect
6208 ));
6209 }
6210 #[allow(irrefutable_let_patterns)]
6211 if let DriverResult::MatchError(ref mut val) = self {
6212 fidl::decode!(
6213 i32,
6214 fidl::encoding::DefaultFuchsiaResourceDialect,
6215 val,
6216 decoder,
6217 _inner_offset,
6218 depth
6219 )?;
6220 } else {
6221 unreachable!()
6222 }
6223 }
6224 3 => {
6225 #[allow(irrefutable_let_patterns)]
6226 if let DriverResult::StartError(_) = self {
6227 } else {
6229 *self = DriverResult::StartError(fidl::new_empty!(
6231 i32,
6232 fidl::encoding::DefaultFuchsiaResourceDialect
6233 ));
6234 }
6235 #[allow(irrefutable_let_patterns)]
6236 if let DriverResult::StartError(ref mut val) = self {
6237 fidl::decode!(
6238 i32,
6239 fidl::encoding::DefaultFuchsiaResourceDialect,
6240 val,
6241 decoder,
6242 _inner_offset,
6243 depth
6244 )?;
6245 } else {
6246 unreachable!()
6247 }
6248 }
6249 #[allow(deprecated)]
6250 ordinal => {
6251 for _ in 0..num_handles {
6252 decoder.drop_next_handle()?;
6253 }
6254 *self = DriverResult::__SourceBreaking { unknown_ordinal: ordinal };
6255 }
6256 }
6257 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6258 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6259 }
6260 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6261 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6262 }
6263 Ok(())
6264 }
6265 }
6266}