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_lowpan_driver_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct DriverGetProtocolsRequest {
16 pub protocols: Protocols,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverGetProtocolsRequest {}
20
21#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
22pub struct RegisterRegisterDeviceRequest {
23 pub name: String,
24 pub driver: fidl::endpoints::ClientEnd<DriverMarker>,
25}
26
27impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
28 for RegisterRegisterDeviceRequest
29{
30}
31
32#[derive(Debug, Default, PartialEq)]
34pub struct Protocols {
35 pub device: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>>,
36 pub device_extra:
37 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>>,
38 pub device_test: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>>,
39 pub device_route:
40 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>>,
41 pub device_route_extra: Option<
42 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker>,
43 >,
44 pub counters: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>>,
45 pub thread_legacy_joining:
46 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker>>,
47 pub thread_dataset:
48 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>>,
49 pub energy_scan:
50 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>>,
51 pub experimental_device:
52 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>>,
53 pub experimental_device_extra:
54 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>>,
55 pub meshcop: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>>,
56 pub telemetry_provider: Option<
57 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker>,
58 >,
59 pub thread_feature:
60 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>>,
61 pub capabilities:
62 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker>>,
63 pub epskc: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>>,
64 #[doc(hidden)]
65 pub __source_breaking: fidl::marker::SourceBreaking,
66}
67
68impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Protocols {}
69
70#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
71pub struct DriverMarker;
72
73impl fidl::endpoints::ProtocolMarker for DriverMarker {
74 type Proxy = DriverProxy;
75 type RequestStream = DriverRequestStream;
76 #[cfg(target_os = "fuchsia")]
77 type SynchronousProxy = DriverSynchronousProxy;
78
79 const DEBUG_NAME: &'static str = "(anonymous) Driver";
80}
81
82pub trait DriverProxyInterface: Send + Sync {
83 fn r#get_protocols(&self, protocols: Protocols) -> Result<(), fidl::Error>;
84}
85#[derive(Debug)]
86#[cfg(target_os = "fuchsia")]
87pub struct DriverSynchronousProxy {
88 client: fidl::client::sync::Client,
89}
90
91#[cfg(target_os = "fuchsia")]
92impl fidl::endpoints::SynchronousProxy for DriverSynchronousProxy {
93 type Proxy = DriverProxy;
94 type Protocol = DriverMarker;
95
96 fn from_channel(inner: fidl::Channel) -> Self {
97 Self::new(inner)
98 }
99
100 fn into_channel(self) -> fidl::Channel {
101 self.client.into_channel()
102 }
103
104 fn as_channel(&self) -> &fidl::Channel {
105 self.client.as_channel()
106 }
107}
108
109#[cfg(target_os = "fuchsia")]
110impl DriverSynchronousProxy {
111 pub fn new(channel: fidl::Channel) -> Self {
112 Self { client: fidl::client::sync::Client::new(channel) }
113 }
114
115 pub fn into_channel(self) -> fidl::Channel {
116 self.client.into_channel()
117 }
118
119 pub fn wait_for_event(
122 &self,
123 deadline: zx::MonotonicInstant,
124 ) -> Result<DriverEvent, fidl::Error> {
125 DriverEvent::decode(self.client.wait_for_event::<DriverMarker>(deadline)?)
126 }
127
128 pub fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
131 self.client.send::<DriverGetProtocolsRequest>(
132 (&mut protocols,),
133 0x165f5b09fcc7bc85,
134 fidl::encoding::DynamicFlags::empty(),
135 )
136 }
137}
138
139#[cfg(target_os = "fuchsia")]
140impl From<DriverSynchronousProxy> for zx::NullableHandle {
141 fn from(value: DriverSynchronousProxy) -> Self {
142 value.into_channel().into()
143 }
144}
145
146#[cfg(target_os = "fuchsia")]
147impl From<fidl::Channel> for DriverSynchronousProxy {
148 fn from(value: fidl::Channel) -> Self {
149 Self::new(value)
150 }
151}
152
153#[cfg(target_os = "fuchsia")]
154impl fidl::endpoints::FromClient for DriverSynchronousProxy {
155 type Protocol = DriverMarker;
156
157 fn from_client(value: fidl::endpoints::ClientEnd<DriverMarker>) -> Self {
158 Self::new(value.into_channel())
159 }
160}
161
162#[derive(Debug, Clone)]
163pub struct DriverProxy {
164 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
165}
166
167impl fidl::endpoints::Proxy for DriverProxy {
168 type Protocol = DriverMarker;
169
170 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
171 Self::new(inner)
172 }
173
174 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
175 self.client.into_channel().map_err(|client| Self { client })
176 }
177
178 fn as_channel(&self) -> &::fidl::AsyncChannel {
179 self.client.as_channel()
180 }
181}
182
183impl DriverProxy {
184 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
186 let protocol_name = <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
187 Self { client: fidl::client::Client::new(channel, protocol_name) }
188 }
189
190 pub fn take_event_stream(&self) -> DriverEventStream {
196 DriverEventStream { event_receiver: self.client.take_event_receiver() }
197 }
198
199 pub fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
202 DriverProxyInterface::r#get_protocols(self, protocols)
203 }
204}
205
206impl DriverProxyInterface for DriverProxy {
207 fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
208 self.client.send::<DriverGetProtocolsRequest>(
209 (&mut protocols,),
210 0x165f5b09fcc7bc85,
211 fidl::encoding::DynamicFlags::empty(),
212 )
213 }
214}
215
216pub struct DriverEventStream {
217 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
218}
219
220impl std::marker::Unpin for DriverEventStream {}
221
222impl futures::stream::FusedStream for DriverEventStream {
223 fn is_terminated(&self) -> bool {
224 self.event_receiver.is_terminated()
225 }
226}
227
228impl futures::Stream for DriverEventStream {
229 type Item = Result<DriverEvent, fidl::Error>;
230
231 fn poll_next(
232 mut self: std::pin::Pin<&mut Self>,
233 cx: &mut std::task::Context<'_>,
234 ) -> std::task::Poll<Option<Self::Item>> {
235 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
236 &mut self.event_receiver,
237 cx
238 )?) {
239 Some(buf) => std::task::Poll::Ready(Some(DriverEvent::decode(buf))),
240 None => std::task::Poll::Ready(None),
241 }
242 }
243}
244
245#[derive(Debug)]
246pub enum DriverEvent {}
247
248impl DriverEvent {
249 fn decode(
251 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
252 ) -> Result<DriverEvent, fidl::Error> {
253 let (bytes, _handles) = buf.split_mut();
254 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
255 debug_assert_eq!(tx_header.tx_id, 0);
256 match tx_header.ordinal {
257 _ => Err(fidl::Error::UnknownOrdinal {
258 ordinal: tx_header.ordinal,
259 protocol_name: <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
260 }),
261 }
262 }
263}
264
265pub struct DriverRequestStream {
267 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
268 is_terminated: bool,
269}
270
271impl std::marker::Unpin for DriverRequestStream {}
272
273impl futures::stream::FusedStream for DriverRequestStream {
274 fn is_terminated(&self) -> bool {
275 self.is_terminated
276 }
277}
278
279impl fidl::endpoints::RequestStream for DriverRequestStream {
280 type Protocol = DriverMarker;
281 type ControlHandle = DriverControlHandle;
282
283 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
284 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
285 }
286
287 fn control_handle(&self) -> Self::ControlHandle {
288 DriverControlHandle { inner: self.inner.clone() }
289 }
290
291 fn into_inner(
292 self,
293 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
294 {
295 (self.inner, self.is_terminated)
296 }
297
298 fn from_inner(
299 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
300 is_terminated: bool,
301 ) -> Self {
302 Self { inner, is_terminated }
303 }
304}
305
306impl futures::Stream for DriverRequestStream {
307 type Item = Result<DriverRequest, fidl::Error>;
308
309 fn poll_next(
310 mut self: std::pin::Pin<&mut Self>,
311 cx: &mut std::task::Context<'_>,
312 ) -> std::task::Poll<Option<Self::Item>> {
313 let this = &mut *self;
314 if this.inner.check_shutdown(cx) {
315 this.is_terminated = true;
316 return std::task::Poll::Ready(None);
317 }
318 if this.is_terminated {
319 panic!("polled DriverRequestStream after completion");
320 }
321 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
322 |bytes, handles| {
323 match this.inner.channel().read_etc(cx, bytes, handles) {
324 std::task::Poll::Ready(Ok(())) => {}
325 std::task::Poll::Pending => return std::task::Poll::Pending,
326 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
327 this.is_terminated = true;
328 return std::task::Poll::Ready(None);
329 }
330 std::task::Poll::Ready(Err(e)) => {
331 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
332 e.into(),
333 ))));
334 }
335 }
336
337 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
339
340 std::task::Poll::Ready(Some(match header.ordinal {
341 0x165f5b09fcc7bc85 => {
342 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
343 let mut req = fidl::new_empty!(
344 DriverGetProtocolsRequest,
345 fidl::encoding::DefaultFuchsiaResourceDialect
346 );
347 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverGetProtocolsRequest>(&header, _body_bytes, handles, &mut req)?;
348 let control_handle = DriverControlHandle { inner: this.inner.clone() };
349 Ok(DriverRequest::GetProtocols { protocols: req.protocols, control_handle })
350 }
351 _ => Err(fidl::Error::UnknownOrdinal {
352 ordinal: header.ordinal,
353 protocol_name:
354 <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
355 }),
356 }))
357 },
358 )
359 }
360}
361
362#[derive(Debug)]
364pub enum DriverRequest {
365 GetProtocols { protocols: Protocols, control_handle: DriverControlHandle },
368}
369
370impl DriverRequest {
371 #[allow(irrefutable_let_patterns)]
372 pub fn into_get_protocols(self) -> Option<(Protocols, DriverControlHandle)> {
373 if let DriverRequest::GetProtocols { protocols, control_handle } = self {
374 Some((protocols, control_handle))
375 } else {
376 None
377 }
378 }
379
380 pub fn method_name(&self) -> &'static str {
382 match *self {
383 DriverRequest::GetProtocols { .. } => "get_protocols",
384 }
385 }
386}
387
388#[derive(Debug, Clone)]
389pub struct DriverControlHandle {
390 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
391}
392
393impl DriverControlHandle {
394 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
395 self.inner.shutdown_with_epitaph(status.into())
396 }
397}
398
399impl fidl::endpoints::ControlHandle for DriverControlHandle {
400 fn shutdown(&self) {
401 self.inner.shutdown()
402 }
403
404 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
405 self.inner.shutdown_with_epitaph(status)
406 }
407
408 fn is_closed(&self) -> bool {
409 self.inner.channel().is_closed()
410 }
411 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
412 self.inner.channel().on_closed()
413 }
414
415 #[cfg(target_os = "fuchsia")]
416 fn signal_peer(
417 &self,
418 clear_mask: zx::Signals,
419 set_mask: zx::Signals,
420 ) -> Result<(), zx_status::Status> {
421 use fidl::Peered;
422 self.inner.channel().signal_peer(clear_mask, set_mask)
423 }
424}
425
426impl DriverControlHandle {}
427
428#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
429pub struct RegisterMarker;
430
431impl fidl::endpoints::ProtocolMarker for RegisterMarker {
432 type Proxy = RegisterProxy;
433 type RequestStream = RegisterRequestStream;
434 #[cfg(target_os = "fuchsia")]
435 type SynchronousProxy = RegisterSynchronousProxy;
436
437 const DEBUG_NAME: &'static str = "fuchsia.lowpan.driver.Register";
438}
439impl fidl::endpoints::DiscoverableProtocolMarker for RegisterMarker {}
440
441pub trait RegisterProxyInterface: Send + Sync {
442 fn r#register_device(
443 &self,
444 name: &str,
445 driver: fidl::endpoints::ClientEnd<DriverMarker>,
446 ) -> Result<(), fidl::Error>;
447}
448#[derive(Debug)]
449#[cfg(target_os = "fuchsia")]
450pub struct RegisterSynchronousProxy {
451 client: fidl::client::sync::Client,
452}
453
454#[cfg(target_os = "fuchsia")]
455impl fidl::endpoints::SynchronousProxy for RegisterSynchronousProxy {
456 type Proxy = RegisterProxy;
457 type Protocol = RegisterMarker;
458
459 fn from_channel(inner: fidl::Channel) -> Self {
460 Self::new(inner)
461 }
462
463 fn into_channel(self) -> fidl::Channel {
464 self.client.into_channel()
465 }
466
467 fn as_channel(&self) -> &fidl::Channel {
468 self.client.as_channel()
469 }
470}
471
472#[cfg(target_os = "fuchsia")]
473impl RegisterSynchronousProxy {
474 pub fn new(channel: fidl::Channel) -> Self {
475 Self { client: fidl::client::sync::Client::new(channel) }
476 }
477
478 pub fn into_channel(self) -> fidl::Channel {
479 self.client.into_channel()
480 }
481
482 pub fn wait_for_event(
485 &self,
486 deadline: zx::MonotonicInstant,
487 ) -> Result<RegisterEvent, fidl::Error> {
488 RegisterEvent::decode(self.client.wait_for_event::<RegisterMarker>(deadline)?)
489 }
490
491 pub fn r#register_device(
494 &self,
495 mut name: &str,
496 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
497 ) -> Result<(), fidl::Error> {
498 self.client.send::<RegisterRegisterDeviceRequest>(
499 (name, driver),
500 0x19280d20cfdd62e6,
501 fidl::encoding::DynamicFlags::empty(),
502 )
503 }
504}
505
506#[cfg(target_os = "fuchsia")]
507impl From<RegisterSynchronousProxy> for zx::NullableHandle {
508 fn from(value: RegisterSynchronousProxy) -> Self {
509 value.into_channel().into()
510 }
511}
512
513#[cfg(target_os = "fuchsia")]
514impl From<fidl::Channel> for RegisterSynchronousProxy {
515 fn from(value: fidl::Channel) -> Self {
516 Self::new(value)
517 }
518}
519
520#[cfg(target_os = "fuchsia")]
521impl fidl::endpoints::FromClient for RegisterSynchronousProxy {
522 type Protocol = RegisterMarker;
523
524 fn from_client(value: fidl::endpoints::ClientEnd<RegisterMarker>) -> Self {
525 Self::new(value.into_channel())
526 }
527}
528
529#[derive(Debug, Clone)]
530pub struct RegisterProxy {
531 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
532}
533
534impl fidl::endpoints::Proxy for RegisterProxy {
535 type Protocol = RegisterMarker;
536
537 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
538 Self::new(inner)
539 }
540
541 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
542 self.client.into_channel().map_err(|client| Self { client })
543 }
544
545 fn as_channel(&self) -> &::fidl::AsyncChannel {
546 self.client.as_channel()
547 }
548}
549
550impl RegisterProxy {
551 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
553 let protocol_name = <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
554 Self { client: fidl::client::Client::new(channel, protocol_name) }
555 }
556
557 pub fn take_event_stream(&self) -> RegisterEventStream {
563 RegisterEventStream { event_receiver: self.client.take_event_receiver() }
564 }
565
566 pub fn r#register_device(
569 &self,
570 mut name: &str,
571 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
572 ) -> Result<(), fidl::Error> {
573 RegisterProxyInterface::r#register_device(self, name, driver)
574 }
575}
576
577impl RegisterProxyInterface for RegisterProxy {
578 fn r#register_device(
579 &self,
580 mut name: &str,
581 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
582 ) -> Result<(), fidl::Error> {
583 self.client.send::<RegisterRegisterDeviceRequest>(
584 (name, driver),
585 0x19280d20cfdd62e6,
586 fidl::encoding::DynamicFlags::empty(),
587 )
588 }
589}
590
591pub struct RegisterEventStream {
592 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
593}
594
595impl std::marker::Unpin for RegisterEventStream {}
596
597impl futures::stream::FusedStream for RegisterEventStream {
598 fn is_terminated(&self) -> bool {
599 self.event_receiver.is_terminated()
600 }
601}
602
603impl futures::Stream for RegisterEventStream {
604 type Item = Result<RegisterEvent, fidl::Error>;
605
606 fn poll_next(
607 mut self: std::pin::Pin<&mut Self>,
608 cx: &mut std::task::Context<'_>,
609 ) -> std::task::Poll<Option<Self::Item>> {
610 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
611 &mut self.event_receiver,
612 cx
613 )?) {
614 Some(buf) => std::task::Poll::Ready(Some(RegisterEvent::decode(buf))),
615 None => std::task::Poll::Ready(None),
616 }
617 }
618}
619
620#[derive(Debug)]
621pub enum RegisterEvent {}
622
623impl RegisterEvent {
624 fn decode(
626 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
627 ) -> Result<RegisterEvent, fidl::Error> {
628 let (bytes, _handles) = buf.split_mut();
629 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
630 debug_assert_eq!(tx_header.tx_id, 0);
631 match tx_header.ordinal {
632 _ => Err(fidl::Error::UnknownOrdinal {
633 ordinal: tx_header.ordinal,
634 protocol_name: <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
635 }),
636 }
637 }
638}
639
640pub struct RegisterRequestStream {
642 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
643 is_terminated: bool,
644}
645
646impl std::marker::Unpin for RegisterRequestStream {}
647
648impl futures::stream::FusedStream for RegisterRequestStream {
649 fn is_terminated(&self) -> bool {
650 self.is_terminated
651 }
652}
653
654impl fidl::endpoints::RequestStream for RegisterRequestStream {
655 type Protocol = RegisterMarker;
656 type ControlHandle = RegisterControlHandle;
657
658 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
659 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
660 }
661
662 fn control_handle(&self) -> Self::ControlHandle {
663 RegisterControlHandle { inner: self.inner.clone() }
664 }
665
666 fn into_inner(
667 self,
668 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
669 {
670 (self.inner, self.is_terminated)
671 }
672
673 fn from_inner(
674 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
675 is_terminated: bool,
676 ) -> Self {
677 Self { inner, is_terminated }
678 }
679}
680
681impl futures::Stream for RegisterRequestStream {
682 type Item = Result<RegisterRequest, fidl::Error>;
683
684 fn poll_next(
685 mut self: std::pin::Pin<&mut Self>,
686 cx: &mut std::task::Context<'_>,
687 ) -> std::task::Poll<Option<Self::Item>> {
688 let this = &mut *self;
689 if this.inner.check_shutdown(cx) {
690 this.is_terminated = true;
691 return std::task::Poll::Ready(None);
692 }
693 if this.is_terminated {
694 panic!("polled RegisterRequestStream after completion");
695 }
696 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
697 |bytes, handles| {
698 match this.inner.channel().read_etc(cx, bytes, handles) {
699 std::task::Poll::Ready(Ok(())) => {}
700 std::task::Poll::Pending => return std::task::Poll::Pending,
701 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
702 this.is_terminated = true;
703 return std::task::Poll::Ready(None);
704 }
705 std::task::Poll::Ready(Err(e)) => {
706 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
707 e.into(),
708 ))));
709 }
710 }
711
712 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
714
715 std::task::Poll::Ready(Some(match header.ordinal {
716 0x19280d20cfdd62e6 => {
717 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
718 let mut req = fidl::new_empty!(
719 RegisterRegisterDeviceRequest,
720 fidl::encoding::DefaultFuchsiaResourceDialect
721 );
722 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<RegisterRegisterDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
723 let control_handle = RegisterControlHandle { inner: this.inner.clone() };
724 Ok(RegisterRequest::RegisterDevice {
725 name: req.name,
726 driver: req.driver,
727
728 control_handle,
729 })
730 }
731 _ => Err(fidl::Error::UnknownOrdinal {
732 ordinal: header.ordinal,
733 protocol_name:
734 <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
735 }),
736 }))
737 },
738 )
739 }
740}
741
742#[derive(Debug)]
745pub enum RegisterRequest {
746 RegisterDevice {
749 name: String,
750 driver: fidl::endpoints::ClientEnd<DriverMarker>,
751 control_handle: RegisterControlHandle,
752 },
753}
754
755impl RegisterRequest {
756 #[allow(irrefutable_let_patterns)]
757 pub fn into_register_device(
758 self,
759 ) -> Option<(String, fidl::endpoints::ClientEnd<DriverMarker>, RegisterControlHandle)> {
760 if let RegisterRequest::RegisterDevice { name, driver, control_handle } = self {
761 Some((name, driver, control_handle))
762 } else {
763 None
764 }
765 }
766
767 pub fn method_name(&self) -> &'static str {
769 match *self {
770 RegisterRequest::RegisterDevice { .. } => "register_device",
771 }
772 }
773}
774
775#[derive(Debug, Clone)]
776pub struct RegisterControlHandle {
777 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
778}
779
780impl RegisterControlHandle {
781 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
782 self.inner.shutdown_with_epitaph(status.into())
783 }
784}
785
786impl fidl::endpoints::ControlHandle for RegisterControlHandle {
787 fn shutdown(&self) {
788 self.inner.shutdown()
789 }
790
791 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
792 self.inner.shutdown_with_epitaph(status)
793 }
794
795 fn is_closed(&self) -> bool {
796 self.inner.channel().is_closed()
797 }
798 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
799 self.inner.channel().on_closed()
800 }
801
802 #[cfg(target_os = "fuchsia")]
803 fn signal_peer(
804 &self,
805 clear_mask: zx::Signals,
806 set_mask: zx::Signals,
807 ) -> Result<(), zx_status::Status> {
808 use fidl::Peered;
809 self.inner.channel().signal_peer(clear_mask, set_mask)
810 }
811}
812
813impl RegisterControlHandle {}
814
815mod internal {
816 use super::*;
817
818 impl fidl::encoding::ResourceTypeMarker for DriverGetProtocolsRequest {
819 type Borrowed<'a> = &'a mut Self;
820 fn take_or_borrow<'a>(
821 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
822 ) -> Self::Borrowed<'a> {
823 value
824 }
825 }
826
827 unsafe impl fidl::encoding::TypeMarker for DriverGetProtocolsRequest {
828 type Owned = Self;
829
830 #[inline(always)]
831 fn inline_align(_context: fidl::encoding::Context) -> usize {
832 8
833 }
834
835 #[inline(always)]
836 fn inline_size(_context: fidl::encoding::Context) -> usize {
837 16
838 }
839 }
840
841 unsafe impl
842 fidl::encoding::Encode<
843 DriverGetProtocolsRequest,
844 fidl::encoding::DefaultFuchsiaResourceDialect,
845 > for &mut DriverGetProtocolsRequest
846 {
847 #[inline]
848 unsafe fn encode(
849 self,
850 encoder: &mut fidl::encoding::Encoder<
851 '_,
852 fidl::encoding::DefaultFuchsiaResourceDialect,
853 >,
854 offset: usize,
855 _depth: fidl::encoding::Depth,
856 ) -> fidl::Result<()> {
857 encoder.debug_check_bounds::<DriverGetProtocolsRequest>(offset);
858 fidl::encoding::Encode::<
860 DriverGetProtocolsRequest,
861 fidl::encoding::DefaultFuchsiaResourceDialect,
862 >::encode(
863 (<Protocols as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
864 &mut self.protocols,
865 ),),
866 encoder,
867 offset,
868 _depth,
869 )
870 }
871 }
872 unsafe impl<
873 T0: fidl::encoding::Encode<Protocols, fidl::encoding::DefaultFuchsiaResourceDialect>,
874 >
875 fidl::encoding::Encode<
876 DriverGetProtocolsRequest,
877 fidl::encoding::DefaultFuchsiaResourceDialect,
878 > for (T0,)
879 {
880 #[inline]
881 unsafe fn encode(
882 self,
883 encoder: &mut fidl::encoding::Encoder<
884 '_,
885 fidl::encoding::DefaultFuchsiaResourceDialect,
886 >,
887 offset: usize,
888 depth: fidl::encoding::Depth,
889 ) -> fidl::Result<()> {
890 encoder.debug_check_bounds::<DriverGetProtocolsRequest>(offset);
891 self.0.encode(encoder, offset + 0, depth)?;
895 Ok(())
896 }
897 }
898
899 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
900 for DriverGetProtocolsRequest
901 {
902 #[inline(always)]
903 fn new_empty() -> Self {
904 Self {
905 protocols: fidl::new_empty!(
906 Protocols,
907 fidl::encoding::DefaultFuchsiaResourceDialect
908 ),
909 }
910 }
911
912 #[inline]
913 unsafe fn decode(
914 &mut self,
915 decoder: &mut fidl::encoding::Decoder<
916 '_,
917 fidl::encoding::DefaultFuchsiaResourceDialect,
918 >,
919 offset: usize,
920 _depth: fidl::encoding::Depth,
921 ) -> fidl::Result<()> {
922 decoder.debug_check_bounds::<Self>(offset);
923 fidl::decode!(
925 Protocols,
926 fidl::encoding::DefaultFuchsiaResourceDialect,
927 &mut self.protocols,
928 decoder,
929 offset + 0,
930 _depth
931 )?;
932 Ok(())
933 }
934 }
935
936 impl fidl::encoding::ResourceTypeMarker for RegisterRegisterDeviceRequest {
937 type Borrowed<'a> = &'a mut Self;
938 fn take_or_borrow<'a>(
939 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
940 ) -> Self::Borrowed<'a> {
941 value
942 }
943 }
944
945 unsafe impl fidl::encoding::TypeMarker for RegisterRegisterDeviceRequest {
946 type Owned = Self;
947
948 #[inline(always)]
949 fn inline_align(_context: fidl::encoding::Context) -> usize {
950 8
951 }
952
953 #[inline(always)]
954 fn inline_size(_context: fidl::encoding::Context) -> usize {
955 24
956 }
957 }
958
959 unsafe impl
960 fidl::encoding::Encode<
961 RegisterRegisterDeviceRequest,
962 fidl::encoding::DefaultFuchsiaResourceDialect,
963 > for &mut RegisterRegisterDeviceRequest
964 {
965 #[inline]
966 unsafe fn encode(
967 self,
968 encoder: &mut fidl::encoding::Encoder<
969 '_,
970 fidl::encoding::DefaultFuchsiaResourceDialect,
971 >,
972 offset: usize,
973 _depth: fidl::encoding::Depth,
974 ) -> fidl::Result<()> {
975 encoder.debug_check_bounds::<RegisterRegisterDeviceRequest>(offset);
976 fidl::encoding::Encode::<RegisterRegisterDeviceRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
978 (
979 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
980 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.driver),
981 ),
982 encoder, offset, _depth
983 )
984 }
985 }
986 unsafe impl<
987 T0: fidl::encoding::Encode<
988 fidl::encoding::BoundedString<32>,
989 fidl::encoding::DefaultFuchsiaResourceDialect,
990 >,
991 T1: fidl::encoding::Encode<
992 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
993 fidl::encoding::DefaultFuchsiaResourceDialect,
994 >,
995 >
996 fidl::encoding::Encode<
997 RegisterRegisterDeviceRequest,
998 fidl::encoding::DefaultFuchsiaResourceDialect,
999 > for (T0, T1)
1000 {
1001 #[inline]
1002 unsafe fn encode(
1003 self,
1004 encoder: &mut fidl::encoding::Encoder<
1005 '_,
1006 fidl::encoding::DefaultFuchsiaResourceDialect,
1007 >,
1008 offset: usize,
1009 depth: fidl::encoding::Depth,
1010 ) -> fidl::Result<()> {
1011 encoder.debug_check_bounds::<RegisterRegisterDeviceRequest>(offset);
1012 unsafe {
1015 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1016 (ptr as *mut u64).write_unaligned(0);
1017 }
1018 self.0.encode(encoder, offset + 0, depth)?;
1020 self.1.encode(encoder, offset + 16, depth)?;
1021 Ok(())
1022 }
1023 }
1024
1025 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1026 for RegisterRegisterDeviceRequest
1027 {
1028 #[inline(always)]
1029 fn new_empty() -> Self {
1030 Self {
1031 name: fidl::new_empty!(
1032 fidl::encoding::BoundedString<32>,
1033 fidl::encoding::DefaultFuchsiaResourceDialect
1034 ),
1035 driver: fidl::new_empty!(
1036 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
1037 fidl::encoding::DefaultFuchsiaResourceDialect
1038 ),
1039 }
1040 }
1041
1042 #[inline]
1043 unsafe fn decode(
1044 &mut self,
1045 decoder: &mut fidl::encoding::Decoder<
1046 '_,
1047 fidl::encoding::DefaultFuchsiaResourceDialect,
1048 >,
1049 offset: usize,
1050 _depth: fidl::encoding::Depth,
1051 ) -> fidl::Result<()> {
1052 decoder.debug_check_bounds::<Self>(offset);
1053 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1055 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1056 let mask = 0xffffffff00000000u64;
1057 let maskedval = padval & mask;
1058 if maskedval != 0 {
1059 return Err(fidl::Error::NonZeroPadding {
1060 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1061 });
1062 }
1063 fidl::decode!(
1064 fidl::encoding::BoundedString<32>,
1065 fidl::encoding::DefaultFuchsiaResourceDialect,
1066 &mut self.name,
1067 decoder,
1068 offset + 0,
1069 _depth
1070 )?;
1071 fidl::decode!(
1072 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
1073 fidl::encoding::DefaultFuchsiaResourceDialect,
1074 &mut self.driver,
1075 decoder,
1076 offset + 16,
1077 _depth
1078 )?;
1079 Ok(())
1080 }
1081 }
1082
1083 impl Protocols {
1084 #[inline(always)]
1085 fn max_ordinal_present(&self) -> u64 {
1086 if let Some(_) = self.epskc {
1087 return 16;
1088 }
1089 if let Some(_) = self.capabilities {
1090 return 15;
1091 }
1092 if let Some(_) = self.thread_feature {
1093 return 14;
1094 }
1095 if let Some(_) = self.telemetry_provider {
1096 return 13;
1097 }
1098 if let Some(_) = self.meshcop {
1099 return 12;
1100 }
1101 if let Some(_) = self.experimental_device_extra {
1102 return 11;
1103 }
1104 if let Some(_) = self.experimental_device {
1105 return 10;
1106 }
1107 if let Some(_) = self.energy_scan {
1108 return 9;
1109 }
1110 if let Some(_) = self.thread_dataset {
1111 return 8;
1112 }
1113 if let Some(_) = self.thread_legacy_joining {
1114 return 7;
1115 }
1116 if let Some(_) = self.counters {
1117 return 6;
1118 }
1119 if let Some(_) = self.device_route_extra {
1120 return 5;
1121 }
1122 if let Some(_) = self.device_route {
1123 return 4;
1124 }
1125 if let Some(_) = self.device_test {
1126 return 3;
1127 }
1128 if let Some(_) = self.device_extra {
1129 return 2;
1130 }
1131 if let Some(_) = self.device {
1132 return 1;
1133 }
1134 0
1135 }
1136 }
1137
1138 impl fidl::encoding::ResourceTypeMarker for Protocols {
1139 type Borrowed<'a> = &'a mut Self;
1140 fn take_or_borrow<'a>(
1141 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1142 ) -> Self::Borrowed<'a> {
1143 value
1144 }
1145 }
1146
1147 unsafe impl fidl::encoding::TypeMarker for Protocols {
1148 type Owned = Self;
1149
1150 #[inline(always)]
1151 fn inline_align(_context: fidl::encoding::Context) -> usize {
1152 8
1153 }
1154
1155 #[inline(always)]
1156 fn inline_size(_context: fidl::encoding::Context) -> usize {
1157 16
1158 }
1159 }
1160
1161 unsafe impl fidl::encoding::Encode<Protocols, fidl::encoding::DefaultFuchsiaResourceDialect>
1162 for &mut Protocols
1163 {
1164 unsafe fn encode(
1165 self,
1166 encoder: &mut fidl::encoding::Encoder<
1167 '_,
1168 fidl::encoding::DefaultFuchsiaResourceDialect,
1169 >,
1170 offset: usize,
1171 mut depth: fidl::encoding::Depth,
1172 ) -> fidl::Result<()> {
1173 encoder.debug_check_bounds::<Protocols>(offset);
1174 let max_ordinal: u64 = self.max_ordinal_present();
1176 encoder.write_num(max_ordinal, offset);
1177 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1178 if max_ordinal == 0 {
1180 return Ok(());
1181 }
1182 depth.increment()?;
1183 let envelope_size = 8;
1184 let bytes_len = max_ordinal as usize * envelope_size;
1185 #[allow(unused_variables)]
1186 let offset = encoder.out_of_line_offset(bytes_len);
1187 let mut _prev_end_offset: usize = 0;
1188 if 1 > max_ordinal {
1189 return Ok(());
1190 }
1191
1192 let cur_offset: usize = (1 - 1) * envelope_size;
1195
1196 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1198
1199 fidl::encoding::encode_in_envelope_optional::<
1204 fidl::encoding::Endpoint<
1205 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1206 >,
1207 fidl::encoding::DefaultFuchsiaResourceDialect,
1208 >(
1209 self.device.as_mut().map(
1210 <fidl::encoding::Endpoint<
1211 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1212 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1213 ),
1214 encoder,
1215 offset + cur_offset,
1216 depth,
1217 )?;
1218
1219 _prev_end_offset = cur_offset + envelope_size;
1220 if 2 > max_ordinal {
1221 return Ok(());
1222 }
1223
1224 let cur_offset: usize = (2 - 1) * envelope_size;
1227
1228 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1230
1231 fidl::encoding::encode_in_envelope_optional::<
1236 fidl::encoding::Endpoint<
1237 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1238 >,
1239 fidl::encoding::DefaultFuchsiaResourceDialect,
1240 >(
1241 self.device_extra.as_mut().map(
1242 <fidl::encoding::Endpoint<
1243 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1244 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1245 ),
1246 encoder,
1247 offset + cur_offset,
1248 depth,
1249 )?;
1250
1251 _prev_end_offset = cur_offset + envelope_size;
1252 if 3 > max_ordinal {
1253 return Ok(());
1254 }
1255
1256 let cur_offset: usize = (3 - 1) * envelope_size;
1259
1260 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1262
1263 fidl::encoding::encode_in_envelope_optional::<
1268 fidl::encoding::Endpoint<
1269 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1270 >,
1271 fidl::encoding::DefaultFuchsiaResourceDialect,
1272 >(
1273 self.device_test.as_mut().map(
1274 <fidl::encoding::Endpoint<
1275 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1276 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1277 ),
1278 encoder,
1279 offset + cur_offset,
1280 depth,
1281 )?;
1282
1283 _prev_end_offset = cur_offset + envelope_size;
1284 if 4 > max_ordinal {
1285 return Ok(());
1286 }
1287
1288 let cur_offset: usize = (4 - 1) * envelope_size;
1291
1292 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1294
1295 fidl::encoding::encode_in_envelope_optional::<
1300 fidl::encoding::Endpoint<
1301 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>,
1302 >,
1303 fidl::encoding::DefaultFuchsiaResourceDialect,
1304 >(
1305 self.device_route.as_mut().map(
1306 <fidl::encoding::Endpoint<
1307 fidl::endpoints::ServerEnd<
1308 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1309 >,
1310 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1311 ),
1312 encoder,
1313 offset + cur_offset,
1314 depth,
1315 )?;
1316
1317 _prev_end_offset = cur_offset + envelope_size;
1318 if 5 > max_ordinal {
1319 return Ok(());
1320 }
1321
1322 let cur_offset: usize = (5 - 1) * envelope_size;
1325
1326 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1328
1329 fidl::encoding::encode_in_envelope_optional::<
1334 fidl::encoding::Endpoint<
1335 fidl::endpoints::ServerEnd<
1336 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
1337 >,
1338 >,
1339 fidl::encoding::DefaultFuchsiaResourceDialect,
1340 >(
1341 self.device_route_extra.as_mut().map(
1342 <fidl::encoding::Endpoint<
1343 fidl::endpoints::ServerEnd<
1344 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
1345 >,
1346 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1347 ),
1348 encoder,
1349 offset + cur_offset,
1350 depth,
1351 )?;
1352
1353 _prev_end_offset = cur_offset + envelope_size;
1354 if 6 > max_ordinal {
1355 return Ok(());
1356 }
1357
1358 let cur_offset: usize = (6 - 1) * envelope_size;
1361
1362 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1364
1365 fidl::encoding::encode_in_envelope_optional::<
1370 fidl::encoding::Endpoint<
1371 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
1372 >,
1373 fidl::encoding::DefaultFuchsiaResourceDialect,
1374 >(
1375 self.counters.as_mut().map(
1376 <fidl::encoding::Endpoint<
1377 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
1378 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1379 ),
1380 encoder,
1381 offset + cur_offset,
1382 depth,
1383 )?;
1384
1385 _prev_end_offset = cur_offset + envelope_size;
1386 if 7 > max_ordinal {
1387 return Ok(());
1388 }
1389
1390 let cur_offset: usize = (7 - 1) * envelope_size;
1393
1394 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1396
1397 fidl::encoding::encode_in_envelope_optional::<
1402 fidl::encoding::Endpoint<
1403 fidl::endpoints::ServerEnd<
1404 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
1405 >,
1406 >,
1407 fidl::encoding::DefaultFuchsiaResourceDialect,
1408 >(
1409 self.thread_legacy_joining.as_mut().map(
1410 <fidl::encoding::Endpoint<
1411 fidl::endpoints::ServerEnd<
1412 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
1413 >,
1414 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1415 ),
1416 encoder,
1417 offset + cur_offset,
1418 depth,
1419 )?;
1420
1421 _prev_end_offset = cur_offset + envelope_size;
1422 if 8 > max_ordinal {
1423 return Ok(());
1424 }
1425
1426 let cur_offset: usize = (8 - 1) * envelope_size;
1429
1430 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1432
1433 fidl::encoding::encode_in_envelope_optional::<
1438 fidl::encoding::Endpoint<
1439 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
1440 >,
1441 fidl::encoding::DefaultFuchsiaResourceDialect,
1442 >(
1443 self.thread_dataset.as_mut().map(
1444 <fidl::encoding::Endpoint<
1445 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
1446 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1447 ),
1448 encoder,
1449 offset + cur_offset,
1450 depth,
1451 )?;
1452
1453 _prev_end_offset = cur_offset + envelope_size;
1454 if 9 > max_ordinal {
1455 return Ok(());
1456 }
1457
1458 let cur_offset: usize = (9 - 1) * envelope_size;
1461
1462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1464
1465 fidl::encoding::encode_in_envelope_optional::<
1470 fidl::encoding::Endpoint<
1471 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
1472 >,
1473 fidl::encoding::DefaultFuchsiaResourceDialect,
1474 >(
1475 self.energy_scan.as_mut().map(
1476 <fidl::encoding::Endpoint<
1477 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
1478 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1479 ),
1480 encoder,
1481 offset + cur_offset,
1482 depth,
1483 )?;
1484
1485 _prev_end_offset = cur_offset + envelope_size;
1486 if 10 > max_ordinal {
1487 return Ok(());
1488 }
1489
1490 let cur_offset: usize = (10 - 1) * envelope_size;
1493
1494 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1496
1497 fidl::encoding::encode_in_envelope_optional::<
1502 fidl::encoding::Endpoint<
1503 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
1504 >,
1505 fidl::encoding::DefaultFuchsiaResourceDialect,
1506 >(
1507 self.experimental_device.as_mut().map(
1508 <fidl::encoding::Endpoint<
1509 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
1510 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1511 ),
1512 encoder,
1513 offset + cur_offset,
1514 depth,
1515 )?;
1516
1517 _prev_end_offset = cur_offset + envelope_size;
1518 if 11 > max_ordinal {
1519 return Ok(());
1520 }
1521
1522 let cur_offset: usize = (11 - 1) * envelope_size;
1525
1526 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1528
1529 fidl::encoding::encode_in_envelope_optional::<
1534 fidl::encoding::Endpoint<
1535 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>,
1536 >,
1537 fidl::encoding::DefaultFuchsiaResourceDialect,
1538 >(
1539 self.experimental_device_extra.as_mut().map(
1540 <fidl::encoding::Endpoint<
1541 fidl::endpoints::ServerEnd<
1542 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
1543 >,
1544 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1545 ),
1546 encoder,
1547 offset + cur_offset,
1548 depth,
1549 )?;
1550
1551 _prev_end_offset = cur_offset + envelope_size;
1552 if 12 > max_ordinal {
1553 return Ok(());
1554 }
1555
1556 let cur_offset: usize = (12 - 1) * envelope_size;
1559
1560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1562
1563 fidl::encoding::encode_in_envelope_optional::<
1568 fidl::encoding::Endpoint<
1569 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
1570 >,
1571 fidl::encoding::DefaultFuchsiaResourceDialect,
1572 >(
1573 self.meshcop.as_mut().map(
1574 <fidl::encoding::Endpoint<
1575 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
1576 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1577 ),
1578 encoder,
1579 offset + cur_offset,
1580 depth,
1581 )?;
1582
1583 _prev_end_offset = cur_offset + envelope_size;
1584 if 13 > max_ordinal {
1585 return Ok(());
1586 }
1587
1588 let cur_offset: usize = (13 - 1) * envelope_size;
1591
1592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1594
1595 fidl::encoding::encode_in_envelope_optional::<
1600 fidl::encoding::Endpoint<
1601 fidl::endpoints::ServerEnd<
1602 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
1603 >,
1604 >,
1605 fidl::encoding::DefaultFuchsiaResourceDialect,
1606 >(
1607 self.telemetry_provider.as_mut().map(
1608 <fidl::encoding::Endpoint<
1609 fidl::endpoints::ServerEnd<
1610 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
1611 >,
1612 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1613 ),
1614 encoder,
1615 offset + cur_offset,
1616 depth,
1617 )?;
1618
1619 _prev_end_offset = cur_offset + envelope_size;
1620 if 14 > max_ordinal {
1621 return Ok(());
1622 }
1623
1624 let cur_offset: usize = (14 - 1) * envelope_size;
1627
1628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1630
1631 fidl::encoding::encode_in_envelope_optional::<
1636 fidl::encoding::Endpoint<
1637 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
1638 >,
1639 fidl::encoding::DefaultFuchsiaResourceDialect,
1640 >(
1641 self.thread_feature.as_mut().map(
1642 <fidl::encoding::Endpoint<
1643 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
1644 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1645 ),
1646 encoder,
1647 offset + cur_offset,
1648 depth,
1649 )?;
1650
1651 _prev_end_offset = cur_offset + envelope_size;
1652 if 15 > max_ordinal {
1653 return Ok(());
1654 }
1655
1656 let cur_offset: usize = (15 - 1) * envelope_size;
1659
1660 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1662
1663 fidl::encoding::encode_in_envelope_optional::<
1668 fidl::encoding::Endpoint<
1669 fidl::endpoints::ServerEnd<
1670 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
1671 >,
1672 >,
1673 fidl::encoding::DefaultFuchsiaResourceDialect,
1674 >(
1675 self.capabilities.as_mut().map(
1676 <fidl::encoding::Endpoint<
1677 fidl::endpoints::ServerEnd<
1678 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
1679 >,
1680 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1681 ),
1682 encoder,
1683 offset + cur_offset,
1684 depth,
1685 )?;
1686
1687 _prev_end_offset = cur_offset + envelope_size;
1688 if 16 > max_ordinal {
1689 return Ok(());
1690 }
1691
1692 let cur_offset: usize = (16 - 1) * envelope_size;
1695
1696 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1698
1699 fidl::encoding::encode_in_envelope_optional::<
1704 fidl::encoding::Endpoint<
1705 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
1706 >,
1707 fidl::encoding::DefaultFuchsiaResourceDialect,
1708 >(
1709 self.epskc.as_mut().map(
1710 <fidl::encoding::Endpoint<
1711 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
1712 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1713 ),
1714 encoder,
1715 offset + cur_offset,
1716 depth,
1717 )?;
1718
1719 _prev_end_offset = cur_offset + envelope_size;
1720
1721 Ok(())
1722 }
1723 }
1724
1725 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Protocols {
1726 #[inline(always)]
1727 fn new_empty() -> Self {
1728 Self::default()
1729 }
1730
1731 unsafe fn decode(
1732 &mut self,
1733 decoder: &mut fidl::encoding::Decoder<
1734 '_,
1735 fidl::encoding::DefaultFuchsiaResourceDialect,
1736 >,
1737 offset: usize,
1738 mut depth: fidl::encoding::Depth,
1739 ) -> fidl::Result<()> {
1740 decoder.debug_check_bounds::<Self>(offset);
1741 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1742 None => return Err(fidl::Error::NotNullable),
1743 Some(len) => len,
1744 };
1745 if len == 0 {
1747 return Ok(());
1748 };
1749 depth.increment()?;
1750 let envelope_size = 8;
1751 let bytes_len = len * envelope_size;
1752 let offset = decoder.out_of_line_offset(bytes_len)?;
1753 let mut _next_ordinal_to_read = 0;
1755 let mut next_offset = offset;
1756 let end_offset = offset + bytes_len;
1757 _next_ordinal_to_read += 1;
1758 if next_offset >= end_offset {
1759 return Ok(());
1760 }
1761
1762 while _next_ordinal_to_read < 1 {
1764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1765 _next_ordinal_to_read += 1;
1766 next_offset += envelope_size;
1767 }
1768
1769 let next_out_of_line = decoder.next_out_of_line();
1770 let handles_before = decoder.remaining_handles();
1771 if let Some((inlined, num_bytes, num_handles)) =
1772 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1773 {
1774 let member_inline_size = <fidl::encoding::Endpoint<
1775 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1776 > as fidl::encoding::TypeMarker>::inline_size(
1777 decoder.context
1778 );
1779 if inlined != (member_inline_size <= 4) {
1780 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1781 }
1782 let inner_offset;
1783 let mut inner_depth = depth.clone();
1784 if inlined {
1785 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1786 inner_offset = next_offset;
1787 } else {
1788 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1789 inner_depth.increment()?;
1790 }
1791 let val_ref = self.device.get_or_insert_with(|| {
1792 fidl::new_empty!(
1793 fidl::encoding::Endpoint<
1794 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1795 >,
1796 fidl::encoding::DefaultFuchsiaResourceDialect
1797 )
1798 });
1799 fidl::decode!(
1800 fidl::encoding::Endpoint<
1801 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1802 >,
1803 fidl::encoding::DefaultFuchsiaResourceDialect,
1804 val_ref,
1805 decoder,
1806 inner_offset,
1807 inner_depth
1808 )?;
1809 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1810 {
1811 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1812 }
1813 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1814 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1815 }
1816 }
1817
1818 next_offset += envelope_size;
1819 _next_ordinal_to_read += 1;
1820 if next_offset >= end_offset {
1821 return Ok(());
1822 }
1823
1824 while _next_ordinal_to_read < 2 {
1826 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1827 _next_ordinal_to_read += 1;
1828 next_offset += envelope_size;
1829 }
1830
1831 let next_out_of_line = decoder.next_out_of_line();
1832 let handles_before = decoder.remaining_handles();
1833 if let Some((inlined, num_bytes, num_handles)) =
1834 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1835 {
1836 let member_inline_size = <fidl::encoding::Endpoint<
1837 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1838 > as fidl::encoding::TypeMarker>::inline_size(
1839 decoder.context
1840 );
1841 if inlined != (member_inline_size <= 4) {
1842 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1843 }
1844 let inner_offset;
1845 let mut inner_depth = depth.clone();
1846 if inlined {
1847 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1848 inner_offset = next_offset;
1849 } else {
1850 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1851 inner_depth.increment()?;
1852 }
1853 let val_ref = self.device_extra.get_or_insert_with(|| {
1854 fidl::new_empty!(
1855 fidl::encoding::Endpoint<
1856 fidl::endpoints::ServerEnd<
1857 fidl_fuchsia_lowpan_device::DeviceExtraMarker,
1858 >,
1859 >,
1860 fidl::encoding::DefaultFuchsiaResourceDialect
1861 )
1862 });
1863 fidl::decode!(
1864 fidl::encoding::Endpoint<
1865 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1866 >,
1867 fidl::encoding::DefaultFuchsiaResourceDialect,
1868 val_ref,
1869 decoder,
1870 inner_offset,
1871 inner_depth
1872 )?;
1873 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1874 {
1875 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1876 }
1877 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1878 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1879 }
1880 }
1881
1882 next_offset += envelope_size;
1883 _next_ordinal_to_read += 1;
1884 if next_offset >= end_offset {
1885 return Ok(());
1886 }
1887
1888 while _next_ordinal_to_read < 3 {
1890 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1891 _next_ordinal_to_read += 1;
1892 next_offset += envelope_size;
1893 }
1894
1895 let next_out_of_line = decoder.next_out_of_line();
1896 let handles_before = decoder.remaining_handles();
1897 if let Some((inlined, num_bytes, num_handles)) =
1898 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1899 {
1900 let member_inline_size = <fidl::encoding::Endpoint<
1901 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1902 > as fidl::encoding::TypeMarker>::inline_size(
1903 decoder.context
1904 );
1905 if inlined != (member_inline_size <= 4) {
1906 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1907 }
1908 let inner_offset;
1909 let mut inner_depth = depth.clone();
1910 if inlined {
1911 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1912 inner_offset = next_offset;
1913 } else {
1914 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1915 inner_depth.increment()?;
1916 }
1917 let val_ref = self.device_test.get_or_insert_with(|| {
1918 fidl::new_empty!(
1919 fidl::encoding::Endpoint<
1920 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1921 >,
1922 fidl::encoding::DefaultFuchsiaResourceDialect
1923 )
1924 });
1925 fidl::decode!(
1926 fidl::encoding::Endpoint<
1927 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1928 >,
1929 fidl::encoding::DefaultFuchsiaResourceDialect,
1930 val_ref,
1931 decoder,
1932 inner_offset,
1933 inner_depth
1934 )?;
1935 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1936 {
1937 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1938 }
1939 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1940 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1941 }
1942 }
1943
1944 next_offset += envelope_size;
1945 _next_ordinal_to_read += 1;
1946 if next_offset >= end_offset {
1947 return Ok(());
1948 }
1949
1950 while _next_ordinal_to_read < 4 {
1952 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1953 _next_ordinal_to_read += 1;
1954 next_offset += envelope_size;
1955 }
1956
1957 let next_out_of_line = decoder.next_out_of_line();
1958 let handles_before = decoder.remaining_handles();
1959 if let Some((inlined, num_bytes, num_handles)) =
1960 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1961 {
1962 let member_inline_size = <fidl::encoding::Endpoint<
1963 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>,
1964 > as fidl::encoding::TypeMarker>::inline_size(
1965 decoder.context
1966 );
1967 if inlined != (member_inline_size <= 4) {
1968 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1969 }
1970 let inner_offset;
1971 let mut inner_depth = depth.clone();
1972 if inlined {
1973 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1974 inner_offset = next_offset;
1975 } else {
1976 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1977 inner_depth.increment()?;
1978 }
1979 let val_ref = self.device_route.get_or_insert_with(|| {
1980 fidl::new_empty!(
1981 fidl::encoding::Endpoint<
1982 fidl::endpoints::ServerEnd<
1983 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1984 >,
1985 >,
1986 fidl::encoding::DefaultFuchsiaResourceDialect
1987 )
1988 });
1989 fidl::decode!(
1990 fidl::encoding::Endpoint<
1991 fidl::endpoints::ServerEnd<
1992 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1993 >,
1994 >,
1995 fidl::encoding::DefaultFuchsiaResourceDialect,
1996 val_ref,
1997 decoder,
1998 inner_offset,
1999 inner_depth
2000 )?;
2001 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2002 {
2003 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2004 }
2005 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2006 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2007 }
2008 }
2009
2010 next_offset += envelope_size;
2011 _next_ordinal_to_read += 1;
2012 if next_offset >= end_offset {
2013 return Ok(());
2014 }
2015
2016 while _next_ordinal_to_read < 5 {
2018 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2019 _next_ordinal_to_read += 1;
2020 next_offset += envelope_size;
2021 }
2022
2023 let next_out_of_line = decoder.next_out_of_line();
2024 let handles_before = decoder.remaining_handles();
2025 if let Some((inlined, num_bytes, num_handles)) =
2026 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2027 {
2028 let member_inline_size = <fidl::encoding::Endpoint<
2029 fidl::endpoints::ServerEnd<
2030 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2031 >,
2032 > as fidl::encoding::TypeMarker>::inline_size(
2033 decoder.context
2034 );
2035 if inlined != (member_inline_size <= 4) {
2036 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2037 }
2038 let inner_offset;
2039 let mut inner_depth = depth.clone();
2040 if inlined {
2041 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2042 inner_offset = next_offset;
2043 } else {
2044 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2045 inner_depth.increment()?;
2046 }
2047 let val_ref = self.device_route_extra.get_or_insert_with(|| {
2048 fidl::new_empty!(
2049 fidl::encoding::Endpoint<
2050 fidl::endpoints::ServerEnd<
2051 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2052 >,
2053 >,
2054 fidl::encoding::DefaultFuchsiaResourceDialect
2055 )
2056 });
2057 fidl::decode!(
2058 fidl::encoding::Endpoint<
2059 fidl::endpoints::ServerEnd<
2060 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2061 >,
2062 >,
2063 fidl::encoding::DefaultFuchsiaResourceDialect,
2064 val_ref,
2065 decoder,
2066 inner_offset,
2067 inner_depth
2068 )?;
2069 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2070 {
2071 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2072 }
2073 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2074 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2075 }
2076 }
2077
2078 next_offset += envelope_size;
2079 _next_ordinal_to_read += 1;
2080 if next_offset >= end_offset {
2081 return Ok(());
2082 }
2083
2084 while _next_ordinal_to_read < 6 {
2086 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2087 _next_ordinal_to_read += 1;
2088 next_offset += envelope_size;
2089 }
2090
2091 let next_out_of_line = decoder.next_out_of_line();
2092 let handles_before = decoder.remaining_handles();
2093 if let Some((inlined, num_bytes, num_handles)) =
2094 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2095 {
2096 let member_inline_size = <fidl::encoding::Endpoint<
2097 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2098 > as fidl::encoding::TypeMarker>::inline_size(
2099 decoder.context
2100 );
2101 if inlined != (member_inline_size <= 4) {
2102 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2103 }
2104 let inner_offset;
2105 let mut inner_depth = depth.clone();
2106 if inlined {
2107 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2108 inner_offset = next_offset;
2109 } else {
2110 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2111 inner_depth.increment()?;
2112 }
2113 let val_ref = self.counters.get_or_insert_with(|| {
2114 fidl::new_empty!(
2115 fidl::encoding::Endpoint<
2116 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2117 >,
2118 fidl::encoding::DefaultFuchsiaResourceDialect
2119 )
2120 });
2121 fidl::decode!(
2122 fidl::encoding::Endpoint<
2123 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2124 >,
2125 fidl::encoding::DefaultFuchsiaResourceDialect,
2126 val_ref,
2127 decoder,
2128 inner_offset,
2129 inner_depth
2130 )?;
2131 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2132 {
2133 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2134 }
2135 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2136 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2137 }
2138 }
2139
2140 next_offset += envelope_size;
2141 _next_ordinal_to_read += 1;
2142 if next_offset >= end_offset {
2143 return Ok(());
2144 }
2145
2146 while _next_ordinal_to_read < 7 {
2148 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2149 _next_ordinal_to_read += 1;
2150 next_offset += envelope_size;
2151 }
2152
2153 let next_out_of_line = decoder.next_out_of_line();
2154 let handles_before = decoder.remaining_handles();
2155 if let Some((inlined, num_bytes, num_handles)) =
2156 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2157 {
2158 let member_inline_size = <fidl::encoding::Endpoint<
2159 fidl::endpoints::ServerEnd<
2160 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2161 >,
2162 > as fidl::encoding::TypeMarker>::inline_size(
2163 decoder.context
2164 );
2165 if inlined != (member_inline_size <= 4) {
2166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2167 }
2168 let inner_offset;
2169 let mut inner_depth = depth.clone();
2170 if inlined {
2171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2172 inner_offset = next_offset;
2173 } else {
2174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2175 inner_depth.increment()?;
2176 }
2177 let val_ref = self.thread_legacy_joining.get_or_insert_with(|| {
2178 fidl::new_empty!(
2179 fidl::encoding::Endpoint<
2180 fidl::endpoints::ServerEnd<
2181 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2182 >,
2183 >,
2184 fidl::encoding::DefaultFuchsiaResourceDialect
2185 )
2186 });
2187 fidl::decode!(
2188 fidl::encoding::Endpoint<
2189 fidl::endpoints::ServerEnd<
2190 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2191 >,
2192 >,
2193 fidl::encoding::DefaultFuchsiaResourceDialect,
2194 val_ref,
2195 decoder,
2196 inner_offset,
2197 inner_depth
2198 )?;
2199 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2200 {
2201 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2202 }
2203 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2204 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2205 }
2206 }
2207
2208 next_offset += envelope_size;
2209 _next_ordinal_to_read += 1;
2210 if next_offset >= end_offset {
2211 return Ok(());
2212 }
2213
2214 while _next_ordinal_to_read < 8 {
2216 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2217 _next_ordinal_to_read += 1;
2218 next_offset += envelope_size;
2219 }
2220
2221 let next_out_of_line = decoder.next_out_of_line();
2222 let handles_before = decoder.remaining_handles();
2223 if let Some((inlined, num_bytes, num_handles)) =
2224 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2225 {
2226 let member_inline_size = <fidl::encoding::Endpoint<
2227 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2228 > as fidl::encoding::TypeMarker>::inline_size(
2229 decoder.context
2230 );
2231 if inlined != (member_inline_size <= 4) {
2232 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2233 }
2234 let inner_offset;
2235 let mut inner_depth = depth.clone();
2236 if inlined {
2237 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2238 inner_offset = next_offset;
2239 } else {
2240 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2241 inner_depth.increment()?;
2242 }
2243 let val_ref = self.thread_dataset.get_or_insert_with(|| {
2244 fidl::new_empty!(
2245 fidl::encoding::Endpoint<
2246 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2247 >,
2248 fidl::encoding::DefaultFuchsiaResourceDialect
2249 )
2250 });
2251 fidl::decode!(
2252 fidl::encoding::Endpoint<
2253 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2254 >,
2255 fidl::encoding::DefaultFuchsiaResourceDialect,
2256 val_ref,
2257 decoder,
2258 inner_offset,
2259 inner_depth
2260 )?;
2261 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2262 {
2263 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2264 }
2265 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2266 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2267 }
2268 }
2269
2270 next_offset += envelope_size;
2271 _next_ordinal_to_read += 1;
2272 if next_offset >= end_offset {
2273 return Ok(());
2274 }
2275
2276 while _next_ordinal_to_read < 9 {
2278 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2279 _next_ordinal_to_read += 1;
2280 next_offset += envelope_size;
2281 }
2282
2283 let next_out_of_line = decoder.next_out_of_line();
2284 let handles_before = decoder.remaining_handles();
2285 if let Some((inlined, num_bytes, num_handles)) =
2286 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2287 {
2288 let member_inline_size = <fidl::encoding::Endpoint<
2289 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
2290 > as fidl::encoding::TypeMarker>::inline_size(
2291 decoder.context
2292 );
2293 if inlined != (member_inline_size <= 4) {
2294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2295 }
2296 let inner_offset;
2297 let mut inner_depth = depth.clone();
2298 if inlined {
2299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2300 inner_offset = next_offset;
2301 } else {
2302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2303 inner_depth.increment()?;
2304 }
2305 let val_ref = self.energy_scan.get_or_insert_with(|| {
2306 fidl::new_empty!(
2307 fidl::encoding::Endpoint<
2308 fidl::endpoints::ServerEnd<
2309 fidl_fuchsia_lowpan_device::EnergyScanMarker,
2310 >,
2311 >,
2312 fidl::encoding::DefaultFuchsiaResourceDialect
2313 )
2314 });
2315 fidl::decode!(
2316 fidl::encoding::Endpoint<
2317 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
2318 >,
2319 fidl::encoding::DefaultFuchsiaResourceDialect,
2320 val_ref,
2321 decoder,
2322 inner_offset,
2323 inner_depth
2324 )?;
2325 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2326 {
2327 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2328 }
2329 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2330 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2331 }
2332 }
2333
2334 next_offset += envelope_size;
2335 _next_ordinal_to_read += 1;
2336 if next_offset >= end_offset {
2337 return Ok(());
2338 }
2339
2340 while _next_ordinal_to_read < 10 {
2342 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2343 _next_ordinal_to_read += 1;
2344 next_offset += envelope_size;
2345 }
2346
2347 let next_out_of_line = decoder.next_out_of_line();
2348 let handles_before = decoder.remaining_handles();
2349 if let Some((inlined, num_bytes, num_handles)) =
2350 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2351 {
2352 let member_inline_size = <fidl::encoding::Endpoint<
2353 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
2354 > as fidl::encoding::TypeMarker>::inline_size(
2355 decoder.context
2356 );
2357 if inlined != (member_inline_size <= 4) {
2358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2359 }
2360 let inner_offset;
2361 let mut inner_depth = depth.clone();
2362 if inlined {
2363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2364 inner_offset = next_offset;
2365 } else {
2366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2367 inner_depth.increment()?;
2368 }
2369 let val_ref = self.experimental_device.get_or_insert_with(|| {
2370 fidl::new_empty!(
2371 fidl::encoding::Endpoint<
2372 fidl::endpoints::ServerEnd<
2373 fidl_fuchsia_lowpan_experimental::DeviceMarker,
2374 >,
2375 >,
2376 fidl::encoding::DefaultFuchsiaResourceDialect
2377 )
2378 });
2379 fidl::decode!(
2380 fidl::encoding::Endpoint<
2381 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
2382 >,
2383 fidl::encoding::DefaultFuchsiaResourceDialect,
2384 val_ref,
2385 decoder,
2386 inner_offset,
2387 inner_depth
2388 )?;
2389 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2390 {
2391 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2392 }
2393 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2394 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2395 }
2396 }
2397
2398 next_offset += envelope_size;
2399 _next_ordinal_to_read += 1;
2400 if next_offset >= end_offset {
2401 return Ok(());
2402 }
2403
2404 while _next_ordinal_to_read < 11 {
2406 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2407 _next_ordinal_to_read += 1;
2408 next_offset += envelope_size;
2409 }
2410
2411 let next_out_of_line = decoder.next_out_of_line();
2412 let handles_before = decoder.remaining_handles();
2413 if let Some((inlined, num_bytes, num_handles)) =
2414 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2415 {
2416 let member_inline_size = <fidl::encoding::Endpoint<
2417 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>,
2418 > as fidl::encoding::TypeMarker>::inline_size(
2419 decoder.context
2420 );
2421 if inlined != (member_inline_size <= 4) {
2422 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2423 }
2424 let inner_offset;
2425 let mut inner_depth = depth.clone();
2426 if inlined {
2427 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2428 inner_offset = next_offset;
2429 } else {
2430 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2431 inner_depth.increment()?;
2432 }
2433 let val_ref = self.experimental_device_extra.get_or_insert_with(|| {
2434 fidl::new_empty!(
2435 fidl::encoding::Endpoint<
2436 fidl::endpoints::ServerEnd<
2437 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
2438 >,
2439 >,
2440 fidl::encoding::DefaultFuchsiaResourceDialect
2441 )
2442 });
2443 fidl::decode!(
2444 fidl::encoding::Endpoint<
2445 fidl::endpoints::ServerEnd<
2446 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
2447 >,
2448 >,
2449 fidl::encoding::DefaultFuchsiaResourceDialect,
2450 val_ref,
2451 decoder,
2452 inner_offset,
2453 inner_depth
2454 )?;
2455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2456 {
2457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2458 }
2459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2461 }
2462 }
2463
2464 next_offset += envelope_size;
2465 _next_ordinal_to_read += 1;
2466 if next_offset >= end_offset {
2467 return Ok(());
2468 }
2469
2470 while _next_ordinal_to_read < 12 {
2472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2473 _next_ordinal_to_read += 1;
2474 next_offset += envelope_size;
2475 }
2476
2477 let next_out_of_line = decoder.next_out_of_line();
2478 let handles_before = decoder.remaining_handles();
2479 if let Some((inlined, num_bytes, num_handles)) =
2480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2481 {
2482 let member_inline_size = <fidl::encoding::Endpoint<
2483 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2484 > as fidl::encoding::TypeMarker>::inline_size(
2485 decoder.context
2486 );
2487 if inlined != (member_inline_size <= 4) {
2488 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2489 }
2490 let inner_offset;
2491 let mut inner_depth = depth.clone();
2492 if inlined {
2493 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2494 inner_offset = next_offset;
2495 } else {
2496 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2497 inner_depth.increment()?;
2498 }
2499 let val_ref = self.meshcop.get_or_insert_with(|| {
2500 fidl::new_empty!(
2501 fidl::encoding::Endpoint<
2502 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2503 >,
2504 fidl::encoding::DefaultFuchsiaResourceDialect
2505 )
2506 });
2507 fidl::decode!(
2508 fidl::encoding::Endpoint<
2509 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2510 >,
2511 fidl::encoding::DefaultFuchsiaResourceDialect,
2512 val_ref,
2513 decoder,
2514 inner_offset,
2515 inner_depth
2516 )?;
2517 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2518 {
2519 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2520 }
2521 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2522 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2523 }
2524 }
2525
2526 next_offset += envelope_size;
2527 _next_ordinal_to_read += 1;
2528 if next_offset >= end_offset {
2529 return Ok(());
2530 }
2531
2532 while _next_ordinal_to_read < 13 {
2534 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2535 _next_ordinal_to_read += 1;
2536 next_offset += envelope_size;
2537 }
2538
2539 let next_out_of_line = decoder.next_out_of_line();
2540 let handles_before = decoder.remaining_handles();
2541 if let Some((inlined, num_bytes, num_handles)) =
2542 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2543 {
2544 let member_inline_size = <fidl::encoding::Endpoint<
2545 fidl::endpoints::ServerEnd<
2546 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2547 >,
2548 > as fidl::encoding::TypeMarker>::inline_size(
2549 decoder.context
2550 );
2551 if inlined != (member_inline_size <= 4) {
2552 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2553 }
2554 let inner_offset;
2555 let mut inner_depth = depth.clone();
2556 if inlined {
2557 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2558 inner_offset = next_offset;
2559 } else {
2560 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2561 inner_depth.increment()?;
2562 }
2563 let val_ref = self.telemetry_provider.get_or_insert_with(|| {
2564 fidl::new_empty!(
2565 fidl::encoding::Endpoint<
2566 fidl::endpoints::ServerEnd<
2567 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2568 >,
2569 >,
2570 fidl::encoding::DefaultFuchsiaResourceDialect
2571 )
2572 });
2573 fidl::decode!(
2574 fidl::encoding::Endpoint<
2575 fidl::endpoints::ServerEnd<
2576 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2577 >,
2578 >,
2579 fidl::encoding::DefaultFuchsiaResourceDialect,
2580 val_ref,
2581 decoder,
2582 inner_offset,
2583 inner_depth
2584 )?;
2585 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2586 {
2587 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2588 }
2589 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2590 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2591 }
2592 }
2593
2594 next_offset += envelope_size;
2595 _next_ordinal_to_read += 1;
2596 if next_offset >= end_offset {
2597 return Ok(());
2598 }
2599
2600 while _next_ordinal_to_read < 14 {
2602 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2603 _next_ordinal_to_read += 1;
2604 next_offset += envelope_size;
2605 }
2606
2607 let next_out_of_line = decoder.next_out_of_line();
2608 let handles_before = decoder.remaining_handles();
2609 if let Some((inlined, num_bytes, num_handles)) =
2610 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2611 {
2612 let member_inline_size = <fidl::encoding::Endpoint<
2613 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2614 > as fidl::encoding::TypeMarker>::inline_size(
2615 decoder.context
2616 );
2617 if inlined != (member_inline_size <= 4) {
2618 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2619 }
2620 let inner_offset;
2621 let mut inner_depth = depth.clone();
2622 if inlined {
2623 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2624 inner_offset = next_offset;
2625 } else {
2626 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2627 inner_depth.increment()?;
2628 }
2629 let val_ref = self.thread_feature.get_or_insert_with(|| {
2630 fidl::new_empty!(
2631 fidl::encoding::Endpoint<
2632 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2633 >,
2634 fidl::encoding::DefaultFuchsiaResourceDialect
2635 )
2636 });
2637 fidl::decode!(
2638 fidl::encoding::Endpoint<
2639 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2640 >,
2641 fidl::encoding::DefaultFuchsiaResourceDialect,
2642 val_ref,
2643 decoder,
2644 inner_offset,
2645 inner_depth
2646 )?;
2647 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2648 {
2649 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2650 }
2651 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2652 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2653 }
2654 }
2655
2656 next_offset += envelope_size;
2657 _next_ordinal_to_read += 1;
2658 if next_offset >= end_offset {
2659 return Ok(());
2660 }
2661
2662 while _next_ordinal_to_read < 15 {
2664 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2665 _next_ordinal_to_read += 1;
2666 next_offset += envelope_size;
2667 }
2668
2669 let next_out_of_line = decoder.next_out_of_line();
2670 let handles_before = decoder.remaining_handles();
2671 if let Some((inlined, num_bytes, num_handles)) =
2672 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2673 {
2674 let member_inline_size = <fidl::encoding::Endpoint<
2675 fidl::endpoints::ServerEnd<
2676 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2677 >,
2678 > as fidl::encoding::TypeMarker>::inline_size(
2679 decoder.context
2680 );
2681 if inlined != (member_inline_size <= 4) {
2682 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2683 }
2684 let inner_offset;
2685 let mut inner_depth = depth.clone();
2686 if inlined {
2687 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2688 inner_offset = next_offset;
2689 } else {
2690 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2691 inner_depth.increment()?;
2692 }
2693 let val_ref = self.capabilities.get_or_insert_with(|| {
2694 fidl::new_empty!(
2695 fidl::encoding::Endpoint<
2696 fidl::endpoints::ServerEnd<
2697 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2698 >,
2699 >,
2700 fidl::encoding::DefaultFuchsiaResourceDialect
2701 )
2702 });
2703 fidl::decode!(
2704 fidl::encoding::Endpoint<
2705 fidl::endpoints::ServerEnd<
2706 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2707 >,
2708 >,
2709 fidl::encoding::DefaultFuchsiaResourceDialect,
2710 val_ref,
2711 decoder,
2712 inner_offset,
2713 inner_depth
2714 )?;
2715 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2716 {
2717 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2718 }
2719 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2720 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2721 }
2722 }
2723
2724 next_offset += envelope_size;
2725 _next_ordinal_to_read += 1;
2726 if next_offset >= end_offset {
2727 return Ok(());
2728 }
2729
2730 while _next_ordinal_to_read < 16 {
2732 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2733 _next_ordinal_to_read += 1;
2734 next_offset += envelope_size;
2735 }
2736
2737 let next_out_of_line = decoder.next_out_of_line();
2738 let handles_before = decoder.remaining_handles();
2739 if let Some((inlined, num_bytes, num_handles)) =
2740 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2741 {
2742 let member_inline_size = <fidl::encoding::Endpoint<
2743 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2744 > as fidl::encoding::TypeMarker>::inline_size(
2745 decoder.context
2746 );
2747 if inlined != (member_inline_size <= 4) {
2748 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2749 }
2750 let inner_offset;
2751 let mut inner_depth = depth.clone();
2752 if inlined {
2753 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2754 inner_offset = next_offset;
2755 } else {
2756 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2757 inner_depth.increment()?;
2758 }
2759 let val_ref = self.epskc.get_or_insert_with(|| {
2760 fidl::new_empty!(
2761 fidl::encoding::Endpoint<
2762 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2763 >,
2764 fidl::encoding::DefaultFuchsiaResourceDialect
2765 )
2766 });
2767 fidl::decode!(
2768 fidl::encoding::Endpoint<
2769 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2770 >,
2771 fidl::encoding::DefaultFuchsiaResourceDialect,
2772 val_ref,
2773 decoder,
2774 inner_offset,
2775 inner_depth
2776 )?;
2777 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2778 {
2779 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2780 }
2781 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2782 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2783 }
2784 }
2785
2786 next_offset += envelope_size;
2787
2788 while next_offset < end_offset {
2790 _next_ordinal_to_read += 1;
2791 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2792 next_offset += envelope_size;
2793 }
2794
2795 Ok(())
2796 }
2797 }
2798}