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 fidl::endpoints::ControlHandle for DriverControlHandle {
394 fn shutdown(&self) {
395 self.inner.shutdown()
396 }
397
398 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
399 self.inner.shutdown_with_epitaph(status)
400 }
401
402 fn is_closed(&self) -> bool {
403 self.inner.channel().is_closed()
404 }
405 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
406 self.inner.channel().on_closed()
407 }
408
409 #[cfg(target_os = "fuchsia")]
410 fn signal_peer(
411 &self,
412 clear_mask: zx::Signals,
413 set_mask: zx::Signals,
414 ) -> Result<(), zx_status::Status> {
415 use fidl::Peered;
416 self.inner.channel().signal_peer(clear_mask, set_mask)
417 }
418}
419
420impl DriverControlHandle {}
421
422#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
423pub struct RegisterMarker;
424
425impl fidl::endpoints::ProtocolMarker for RegisterMarker {
426 type Proxy = RegisterProxy;
427 type RequestStream = RegisterRequestStream;
428 #[cfg(target_os = "fuchsia")]
429 type SynchronousProxy = RegisterSynchronousProxy;
430
431 const DEBUG_NAME: &'static str = "fuchsia.lowpan.driver.Register";
432}
433impl fidl::endpoints::DiscoverableProtocolMarker for RegisterMarker {}
434
435pub trait RegisterProxyInterface: Send + Sync {
436 fn r#register_device(
437 &self,
438 name: &str,
439 driver: fidl::endpoints::ClientEnd<DriverMarker>,
440 ) -> Result<(), fidl::Error>;
441}
442#[derive(Debug)]
443#[cfg(target_os = "fuchsia")]
444pub struct RegisterSynchronousProxy {
445 client: fidl::client::sync::Client,
446}
447
448#[cfg(target_os = "fuchsia")]
449impl fidl::endpoints::SynchronousProxy for RegisterSynchronousProxy {
450 type Proxy = RegisterProxy;
451 type Protocol = RegisterMarker;
452
453 fn from_channel(inner: fidl::Channel) -> Self {
454 Self::new(inner)
455 }
456
457 fn into_channel(self) -> fidl::Channel {
458 self.client.into_channel()
459 }
460
461 fn as_channel(&self) -> &fidl::Channel {
462 self.client.as_channel()
463 }
464}
465
466#[cfg(target_os = "fuchsia")]
467impl RegisterSynchronousProxy {
468 pub fn new(channel: fidl::Channel) -> Self {
469 Self { client: fidl::client::sync::Client::new(channel) }
470 }
471
472 pub fn into_channel(self) -> fidl::Channel {
473 self.client.into_channel()
474 }
475
476 pub fn wait_for_event(
479 &self,
480 deadline: zx::MonotonicInstant,
481 ) -> Result<RegisterEvent, fidl::Error> {
482 RegisterEvent::decode(self.client.wait_for_event::<RegisterMarker>(deadline)?)
483 }
484
485 pub fn r#register_device(
488 &self,
489 mut name: &str,
490 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
491 ) -> Result<(), fidl::Error> {
492 self.client.send::<RegisterRegisterDeviceRequest>(
493 (name, driver),
494 0x19280d20cfdd62e6,
495 fidl::encoding::DynamicFlags::empty(),
496 )
497 }
498}
499
500#[cfg(target_os = "fuchsia")]
501impl From<RegisterSynchronousProxy> for zx::NullableHandle {
502 fn from(value: RegisterSynchronousProxy) -> Self {
503 value.into_channel().into()
504 }
505}
506
507#[cfg(target_os = "fuchsia")]
508impl From<fidl::Channel> for RegisterSynchronousProxy {
509 fn from(value: fidl::Channel) -> Self {
510 Self::new(value)
511 }
512}
513
514#[cfg(target_os = "fuchsia")]
515impl fidl::endpoints::FromClient for RegisterSynchronousProxy {
516 type Protocol = RegisterMarker;
517
518 fn from_client(value: fidl::endpoints::ClientEnd<RegisterMarker>) -> Self {
519 Self::new(value.into_channel())
520 }
521}
522
523#[derive(Debug, Clone)]
524pub struct RegisterProxy {
525 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
526}
527
528impl fidl::endpoints::Proxy for RegisterProxy {
529 type Protocol = RegisterMarker;
530
531 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
532 Self::new(inner)
533 }
534
535 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
536 self.client.into_channel().map_err(|client| Self { client })
537 }
538
539 fn as_channel(&self) -> &::fidl::AsyncChannel {
540 self.client.as_channel()
541 }
542}
543
544impl RegisterProxy {
545 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
547 let protocol_name = <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
548 Self { client: fidl::client::Client::new(channel, protocol_name) }
549 }
550
551 pub fn take_event_stream(&self) -> RegisterEventStream {
557 RegisterEventStream { event_receiver: self.client.take_event_receiver() }
558 }
559
560 pub fn r#register_device(
563 &self,
564 mut name: &str,
565 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
566 ) -> Result<(), fidl::Error> {
567 RegisterProxyInterface::r#register_device(self, name, driver)
568 }
569}
570
571impl RegisterProxyInterface for RegisterProxy {
572 fn r#register_device(
573 &self,
574 mut name: &str,
575 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
576 ) -> Result<(), fidl::Error> {
577 self.client.send::<RegisterRegisterDeviceRequest>(
578 (name, driver),
579 0x19280d20cfdd62e6,
580 fidl::encoding::DynamicFlags::empty(),
581 )
582 }
583}
584
585pub struct RegisterEventStream {
586 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
587}
588
589impl std::marker::Unpin for RegisterEventStream {}
590
591impl futures::stream::FusedStream for RegisterEventStream {
592 fn is_terminated(&self) -> bool {
593 self.event_receiver.is_terminated()
594 }
595}
596
597impl futures::Stream for RegisterEventStream {
598 type Item = Result<RegisterEvent, fidl::Error>;
599
600 fn poll_next(
601 mut self: std::pin::Pin<&mut Self>,
602 cx: &mut std::task::Context<'_>,
603 ) -> std::task::Poll<Option<Self::Item>> {
604 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
605 &mut self.event_receiver,
606 cx
607 )?) {
608 Some(buf) => std::task::Poll::Ready(Some(RegisterEvent::decode(buf))),
609 None => std::task::Poll::Ready(None),
610 }
611 }
612}
613
614#[derive(Debug)]
615pub enum RegisterEvent {}
616
617impl RegisterEvent {
618 fn decode(
620 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
621 ) -> Result<RegisterEvent, fidl::Error> {
622 let (bytes, _handles) = buf.split_mut();
623 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
624 debug_assert_eq!(tx_header.tx_id, 0);
625 match tx_header.ordinal {
626 _ => Err(fidl::Error::UnknownOrdinal {
627 ordinal: tx_header.ordinal,
628 protocol_name: <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
629 }),
630 }
631 }
632}
633
634pub struct RegisterRequestStream {
636 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
637 is_terminated: bool,
638}
639
640impl std::marker::Unpin for RegisterRequestStream {}
641
642impl futures::stream::FusedStream for RegisterRequestStream {
643 fn is_terminated(&self) -> bool {
644 self.is_terminated
645 }
646}
647
648impl fidl::endpoints::RequestStream for RegisterRequestStream {
649 type Protocol = RegisterMarker;
650 type ControlHandle = RegisterControlHandle;
651
652 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
653 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
654 }
655
656 fn control_handle(&self) -> Self::ControlHandle {
657 RegisterControlHandle { inner: self.inner.clone() }
658 }
659
660 fn into_inner(
661 self,
662 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
663 {
664 (self.inner, self.is_terminated)
665 }
666
667 fn from_inner(
668 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
669 is_terminated: bool,
670 ) -> Self {
671 Self { inner, is_terminated }
672 }
673}
674
675impl futures::Stream for RegisterRequestStream {
676 type Item = Result<RegisterRequest, fidl::Error>;
677
678 fn poll_next(
679 mut self: std::pin::Pin<&mut Self>,
680 cx: &mut std::task::Context<'_>,
681 ) -> std::task::Poll<Option<Self::Item>> {
682 let this = &mut *self;
683 if this.inner.check_shutdown(cx) {
684 this.is_terminated = true;
685 return std::task::Poll::Ready(None);
686 }
687 if this.is_terminated {
688 panic!("polled RegisterRequestStream after completion");
689 }
690 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
691 |bytes, handles| {
692 match this.inner.channel().read_etc(cx, bytes, handles) {
693 std::task::Poll::Ready(Ok(())) => {}
694 std::task::Poll::Pending => return std::task::Poll::Pending,
695 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
696 this.is_terminated = true;
697 return std::task::Poll::Ready(None);
698 }
699 std::task::Poll::Ready(Err(e)) => {
700 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
701 e.into(),
702 ))));
703 }
704 }
705
706 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
708
709 std::task::Poll::Ready(Some(match header.ordinal {
710 0x19280d20cfdd62e6 => {
711 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
712 let mut req = fidl::new_empty!(
713 RegisterRegisterDeviceRequest,
714 fidl::encoding::DefaultFuchsiaResourceDialect
715 );
716 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<RegisterRegisterDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
717 let control_handle = RegisterControlHandle { inner: this.inner.clone() };
718 Ok(RegisterRequest::RegisterDevice {
719 name: req.name,
720 driver: req.driver,
721
722 control_handle,
723 })
724 }
725 _ => Err(fidl::Error::UnknownOrdinal {
726 ordinal: header.ordinal,
727 protocol_name:
728 <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
729 }),
730 }))
731 },
732 )
733 }
734}
735
736#[derive(Debug)]
739pub enum RegisterRequest {
740 RegisterDevice {
743 name: String,
744 driver: fidl::endpoints::ClientEnd<DriverMarker>,
745 control_handle: RegisterControlHandle,
746 },
747}
748
749impl RegisterRequest {
750 #[allow(irrefutable_let_patterns)]
751 pub fn into_register_device(
752 self,
753 ) -> Option<(String, fidl::endpoints::ClientEnd<DriverMarker>, RegisterControlHandle)> {
754 if let RegisterRequest::RegisterDevice { name, driver, control_handle } = self {
755 Some((name, driver, control_handle))
756 } else {
757 None
758 }
759 }
760
761 pub fn method_name(&self) -> &'static str {
763 match *self {
764 RegisterRequest::RegisterDevice { .. } => "register_device",
765 }
766 }
767}
768
769#[derive(Debug, Clone)]
770pub struct RegisterControlHandle {
771 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
772}
773
774impl fidl::endpoints::ControlHandle for RegisterControlHandle {
775 fn shutdown(&self) {
776 self.inner.shutdown()
777 }
778
779 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
780 self.inner.shutdown_with_epitaph(status)
781 }
782
783 fn is_closed(&self) -> bool {
784 self.inner.channel().is_closed()
785 }
786 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
787 self.inner.channel().on_closed()
788 }
789
790 #[cfg(target_os = "fuchsia")]
791 fn signal_peer(
792 &self,
793 clear_mask: zx::Signals,
794 set_mask: zx::Signals,
795 ) -> Result<(), zx_status::Status> {
796 use fidl::Peered;
797 self.inner.channel().signal_peer(clear_mask, set_mask)
798 }
799}
800
801impl RegisterControlHandle {}
802
803mod internal {
804 use super::*;
805
806 impl fidl::encoding::ResourceTypeMarker for DriverGetProtocolsRequest {
807 type Borrowed<'a> = &'a mut Self;
808 fn take_or_borrow<'a>(
809 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
810 ) -> Self::Borrowed<'a> {
811 value
812 }
813 }
814
815 unsafe impl fidl::encoding::TypeMarker for DriverGetProtocolsRequest {
816 type Owned = Self;
817
818 #[inline(always)]
819 fn inline_align(_context: fidl::encoding::Context) -> usize {
820 8
821 }
822
823 #[inline(always)]
824 fn inline_size(_context: fidl::encoding::Context) -> usize {
825 16
826 }
827 }
828
829 unsafe impl
830 fidl::encoding::Encode<
831 DriverGetProtocolsRequest,
832 fidl::encoding::DefaultFuchsiaResourceDialect,
833 > for &mut DriverGetProtocolsRequest
834 {
835 #[inline]
836 unsafe fn encode(
837 self,
838 encoder: &mut fidl::encoding::Encoder<
839 '_,
840 fidl::encoding::DefaultFuchsiaResourceDialect,
841 >,
842 offset: usize,
843 _depth: fidl::encoding::Depth,
844 ) -> fidl::Result<()> {
845 encoder.debug_check_bounds::<DriverGetProtocolsRequest>(offset);
846 fidl::encoding::Encode::<
848 DriverGetProtocolsRequest,
849 fidl::encoding::DefaultFuchsiaResourceDialect,
850 >::encode(
851 (<Protocols as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
852 &mut self.protocols,
853 ),),
854 encoder,
855 offset,
856 _depth,
857 )
858 }
859 }
860 unsafe impl<
861 T0: fidl::encoding::Encode<Protocols, fidl::encoding::DefaultFuchsiaResourceDialect>,
862 >
863 fidl::encoding::Encode<
864 DriverGetProtocolsRequest,
865 fidl::encoding::DefaultFuchsiaResourceDialect,
866 > for (T0,)
867 {
868 #[inline]
869 unsafe fn encode(
870 self,
871 encoder: &mut fidl::encoding::Encoder<
872 '_,
873 fidl::encoding::DefaultFuchsiaResourceDialect,
874 >,
875 offset: usize,
876 depth: fidl::encoding::Depth,
877 ) -> fidl::Result<()> {
878 encoder.debug_check_bounds::<DriverGetProtocolsRequest>(offset);
879 self.0.encode(encoder, offset + 0, depth)?;
883 Ok(())
884 }
885 }
886
887 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
888 for DriverGetProtocolsRequest
889 {
890 #[inline(always)]
891 fn new_empty() -> Self {
892 Self {
893 protocols: fidl::new_empty!(
894 Protocols,
895 fidl::encoding::DefaultFuchsiaResourceDialect
896 ),
897 }
898 }
899
900 #[inline]
901 unsafe fn decode(
902 &mut self,
903 decoder: &mut fidl::encoding::Decoder<
904 '_,
905 fidl::encoding::DefaultFuchsiaResourceDialect,
906 >,
907 offset: usize,
908 _depth: fidl::encoding::Depth,
909 ) -> fidl::Result<()> {
910 decoder.debug_check_bounds::<Self>(offset);
911 fidl::decode!(
913 Protocols,
914 fidl::encoding::DefaultFuchsiaResourceDialect,
915 &mut self.protocols,
916 decoder,
917 offset + 0,
918 _depth
919 )?;
920 Ok(())
921 }
922 }
923
924 impl fidl::encoding::ResourceTypeMarker for RegisterRegisterDeviceRequest {
925 type Borrowed<'a> = &'a mut Self;
926 fn take_or_borrow<'a>(
927 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
928 ) -> Self::Borrowed<'a> {
929 value
930 }
931 }
932
933 unsafe impl fidl::encoding::TypeMarker for RegisterRegisterDeviceRequest {
934 type Owned = Self;
935
936 #[inline(always)]
937 fn inline_align(_context: fidl::encoding::Context) -> usize {
938 8
939 }
940
941 #[inline(always)]
942 fn inline_size(_context: fidl::encoding::Context) -> usize {
943 24
944 }
945 }
946
947 unsafe impl
948 fidl::encoding::Encode<
949 RegisterRegisterDeviceRequest,
950 fidl::encoding::DefaultFuchsiaResourceDialect,
951 > for &mut RegisterRegisterDeviceRequest
952 {
953 #[inline]
954 unsafe fn encode(
955 self,
956 encoder: &mut fidl::encoding::Encoder<
957 '_,
958 fidl::encoding::DefaultFuchsiaResourceDialect,
959 >,
960 offset: usize,
961 _depth: fidl::encoding::Depth,
962 ) -> fidl::Result<()> {
963 encoder.debug_check_bounds::<RegisterRegisterDeviceRequest>(offset);
964 fidl::encoding::Encode::<RegisterRegisterDeviceRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
966 (
967 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
968 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.driver),
969 ),
970 encoder, offset, _depth
971 )
972 }
973 }
974 unsafe impl<
975 T0: fidl::encoding::Encode<
976 fidl::encoding::BoundedString<32>,
977 fidl::encoding::DefaultFuchsiaResourceDialect,
978 >,
979 T1: fidl::encoding::Encode<
980 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
981 fidl::encoding::DefaultFuchsiaResourceDialect,
982 >,
983 >
984 fidl::encoding::Encode<
985 RegisterRegisterDeviceRequest,
986 fidl::encoding::DefaultFuchsiaResourceDialect,
987 > for (T0, T1)
988 {
989 #[inline]
990 unsafe fn encode(
991 self,
992 encoder: &mut fidl::encoding::Encoder<
993 '_,
994 fidl::encoding::DefaultFuchsiaResourceDialect,
995 >,
996 offset: usize,
997 depth: fidl::encoding::Depth,
998 ) -> fidl::Result<()> {
999 encoder.debug_check_bounds::<RegisterRegisterDeviceRequest>(offset);
1000 unsafe {
1003 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1004 (ptr as *mut u64).write_unaligned(0);
1005 }
1006 self.0.encode(encoder, offset + 0, depth)?;
1008 self.1.encode(encoder, offset + 16, depth)?;
1009 Ok(())
1010 }
1011 }
1012
1013 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1014 for RegisterRegisterDeviceRequest
1015 {
1016 #[inline(always)]
1017 fn new_empty() -> Self {
1018 Self {
1019 name: fidl::new_empty!(
1020 fidl::encoding::BoundedString<32>,
1021 fidl::encoding::DefaultFuchsiaResourceDialect
1022 ),
1023 driver: fidl::new_empty!(
1024 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
1025 fidl::encoding::DefaultFuchsiaResourceDialect
1026 ),
1027 }
1028 }
1029
1030 #[inline]
1031 unsafe fn decode(
1032 &mut self,
1033 decoder: &mut fidl::encoding::Decoder<
1034 '_,
1035 fidl::encoding::DefaultFuchsiaResourceDialect,
1036 >,
1037 offset: usize,
1038 _depth: fidl::encoding::Depth,
1039 ) -> fidl::Result<()> {
1040 decoder.debug_check_bounds::<Self>(offset);
1041 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1043 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1044 let mask = 0xffffffff00000000u64;
1045 let maskedval = padval & mask;
1046 if maskedval != 0 {
1047 return Err(fidl::Error::NonZeroPadding {
1048 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1049 });
1050 }
1051 fidl::decode!(
1052 fidl::encoding::BoundedString<32>,
1053 fidl::encoding::DefaultFuchsiaResourceDialect,
1054 &mut self.name,
1055 decoder,
1056 offset + 0,
1057 _depth
1058 )?;
1059 fidl::decode!(
1060 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
1061 fidl::encoding::DefaultFuchsiaResourceDialect,
1062 &mut self.driver,
1063 decoder,
1064 offset + 16,
1065 _depth
1066 )?;
1067 Ok(())
1068 }
1069 }
1070
1071 impl Protocols {
1072 #[inline(always)]
1073 fn max_ordinal_present(&self) -> u64 {
1074 if let Some(_) = self.epskc {
1075 return 16;
1076 }
1077 if let Some(_) = self.capabilities {
1078 return 15;
1079 }
1080 if let Some(_) = self.thread_feature {
1081 return 14;
1082 }
1083 if let Some(_) = self.telemetry_provider {
1084 return 13;
1085 }
1086 if let Some(_) = self.meshcop {
1087 return 12;
1088 }
1089 if let Some(_) = self.experimental_device_extra {
1090 return 11;
1091 }
1092 if let Some(_) = self.experimental_device {
1093 return 10;
1094 }
1095 if let Some(_) = self.energy_scan {
1096 return 9;
1097 }
1098 if let Some(_) = self.thread_dataset {
1099 return 8;
1100 }
1101 if let Some(_) = self.thread_legacy_joining {
1102 return 7;
1103 }
1104 if let Some(_) = self.counters {
1105 return 6;
1106 }
1107 if let Some(_) = self.device_route_extra {
1108 return 5;
1109 }
1110 if let Some(_) = self.device_route {
1111 return 4;
1112 }
1113 if let Some(_) = self.device_test {
1114 return 3;
1115 }
1116 if let Some(_) = self.device_extra {
1117 return 2;
1118 }
1119 if let Some(_) = self.device {
1120 return 1;
1121 }
1122 0
1123 }
1124 }
1125
1126 impl fidl::encoding::ResourceTypeMarker for Protocols {
1127 type Borrowed<'a> = &'a mut Self;
1128 fn take_or_borrow<'a>(
1129 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1130 ) -> Self::Borrowed<'a> {
1131 value
1132 }
1133 }
1134
1135 unsafe impl fidl::encoding::TypeMarker for Protocols {
1136 type Owned = Self;
1137
1138 #[inline(always)]
1139 fn inline_align(_context: fidl::encoding::Context) -> usize {
1140 8
1141 }
1142
1143 #[inline(always)]
1144 fn inline_size(_context: fidl::encoding::Context) -> usize {
1145 16
1146 }
1147 }
1148
1149 unsafe impl fidl::encoding::Encode<Protocols, fidl::encoding::DefaultFuchsiaResourceDialect>
1150 for &mut Protocols
1151 {
1152 unsafe fn encode(
1153 self,
1154 encoder: &mut fidl::encoding::Encoder<
1155 '_,
1156 fidl::encoding::DefaultFuchsiaResourceDialect,
1157 >,
1158 offset: usize,
1159 mut depth: fidl::encoding::Depth,
1160 ) -> fidl::Result<()> {
1161 encoder.debug_check_bounds::<Protocols>(offset);
1162 let max_ordinal: u64 = self.max_ordinal_present();
1164 encoder.write_num(max_ordinal, offset);
1165 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1166 if max_ordinal == 0 {
1168 return Ok(());
1169 }
1170 depth.increment()?;
1171 let envelope_size = 8;
1172 let bytes_len = max_ordinal as usize * envelope_size;
1173 #[allow(unused_variables)]
1174 let offset = encoder.out_of_line_offset(bytes_len);
1175 let mut _prev_end_offset: usize = 0;
1176 if 1 > max_ordinal {
1177 return Ok(());
1178 }
1179
1180 let cur_offset: usize = (1 - 1) * envelope_size;
1183
1184 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1186
1187 fidl::encoding::encode_in_envelope_optional::<
1192 fidl::encoding::Endpoint<
1193 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1194 >,
1195 fidl::encoding::DefaultFuchsiaResourceDialect,
1196 >(
1197 self.device.as_mut().map(
1198 <fidl::encoding::Endpoint<
1199 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1200 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1201 ),
1202 encoder,
1203 offset + cur_offset,
1204 depth,
1205 )?;
1206
1207 _prev_end_offset = cur_offset + envelope_size;
1208 if 2 > max_ordinal {
1209 return Ok(());
1210 }
1211
1212 let cur_offset: usize = (2 - 1) * envelope_size;
1215
1216 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1218
1219 fidl::encoding::encode_in_envelope_optional::<
1224 fidl::encoding::Endpoint<
1225 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1226 >,
1227 fidl::encoding::DefaultFuchsiaResourceDialect,
1228 >(
1229 self.device_extra.as_mut().map(
1230 <fidl::encoding::Endpoint<
1231 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1232 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1233 ),
1234 encoder,
1235 offset + cur_offset,
1236 depth,
1237 )?;
1238
1239 _prev_end_offset = cur_offset + envelope_size;
1240 if 3 > max_ordinal {
1241 return Ok(());
1242 }
1243
1244 let cur_offset: usize = (3 - 1) * envelope_size;
1247
1248 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1250
1251 fidl::encoding::encode_in_envelope_optional::<
1256 fidl::encoding::Endpoint<
1257 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1258 >,
1259 fidl::encoding::DefaultFuchsiaResourceDialect,
1260 >(
1261 self.device_test.as_mut().map(
1262 <fidl::encoding::Endpoint<
1263 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1264 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1265 ),
1266 encoder,
1267 offset + cur_offset,
1268 depth,
1269 )?;
1270
1271 _prev_end_offset = cur_offset + envelope_size;
1272 if 4 > max_ordinal {
1273 return Ok(());
1274 }
1275
1276 let cur_offset: usize = (4 - 1) * envelope_size;
1279
1280 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1282
1283 fidl::encoding::encode_in_envelope_optional::<
1288 fidl::encoding::Endpoint<
1289 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>,
1290 >,
1291 fidl::encoding::DefaultFuchsiaResourceDialect,
1292 >(
1293 self.device_route.as_mut().map(
1294 <fidl::encoding::Endpoint<
1295 fidl::endpoints::ServerEnd<
1296 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1297 >,
1298 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1299 ),
1300 encoder,
1301 offset + cur_offset,
1302 depth,
1303 )?;
1304
1305 _prev_end_offset = cur_offset + envelope_size;
1306 if 5 > max_ordinal {
1307 return Ok(());
1308 }
1309
1310 let cur_offset: usize = (5 - 1) * envelope_size;
1313
1314 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1316
1317 fidl::encoding::encode_in_envelope_optional::<
1322 fidl::encoding::Endpoint<
1323 fidl::endpoints::ServerEnd<
1324 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
1325 >,
1326 >,
1327 fidl::encoding::DefaultFuchsiaResourceDialect,
1328 >(
1329 self.device_route_extra.as_mut().map(
1330 <fidl::encoding::Endpoint<
1331 fidl::endpoints::ServerEnd<
1332 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
1333 >,
1334 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1335 ),
1336 encoder,
1337 offset + cur_offset,
1338 depth,
1339 )?;
1340
1341 _prev_end_offset = cur_offset + envelope_size;
1342 if 6 > max_ordinal {
1343 return Ok(());
1344 }
1345
1346 let cur_offset: usize = (6 - 1) * envelope_size;
1349
1350 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1352
1353 fidl::encoding::encode_in_envelope_optional::<
1358 fidl::encoding::Endpoint<
1359 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
1360 >,
1361 fidl::encoding::DefaultFuchsiaResourceDialect,
1362 >(
1363 self.counters.as_mut().map(
1364 <fidl::encoding::Endpoint<
1365 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
1366 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1367 ),
1368 encoder,
1369 offset + cur_offset,
1370 depth,
1371 )?;
1372
1373 _prev_end_offset = cur_offset + envelope_size;
1374 if 7 > max_ordinal {
1375 return Ok(());
1376 }
1377
1378 let cur_offset: usize = (7 - 1) * envelope_size;
1381
1382 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1384
1385 fidl::encoding::encode_in_envelope_optional::<
1390 fidl::encoding::Endpoint<
1391 fidl::endpoints::ServerEnd<
1392 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
1393 >,
1394 >,
1395 fidl::encoding::DefaultFuchsiaResourceDialect,
1396 >(
1397 self.thread_legacy_joining.as_mut().map(
1398 <fidl::encoding::Endpoint<
1399 fidl::endpoints::ServerEnd<
1400 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
1401 >,
1402 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1403 ),
1404 encoder,
1405 offset + cur_offset,
1406 depth,
1407 )?;
1408
1409 _prev_end_offset = cur_offset + envelope_size;
1410 if 8 > max_ordinal {
1411 return Ok(());
1412 }
1413
1414 let cur_offset: usize = (8 - 1) * envelope_size;
1417
1418 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1420
1421 fidl::encoding::encode_in_envelope_optional::<
1426 fidl::encoding::Endpoint<
1427 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
1428 >,
1429 fidl::encoding::DefaultFuchsiaResourceDialect,
1430 >(
1431 self.thread_dataset.as_mut().map(
1432 <fidl::encoding::Endpoint<
1433 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
1434 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1435 ),
1436 encoder,
1437 offset + cur_offset,
1438 depth,
1439 )?;
1440
1441 _prev_end_offset = cur_offset + envelope_size;
1442 if 9 > max_ordinal {
1443 return Ok(());
1444 }
1445
1446 let cur_offset: usize = (9 - 1) * envelope_size;
1449
1450 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1452
1453 fidl::encoding::encode_in_envelope_optional::<
1458 fidl::encoding::Endpoint<
1459 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
1460 >,
1461 fidl::encoding::DefaultFuchsiaResourceDialect,
1462 >(
1463 self.energy_scan.as_mut().map(
1464 <fidl::encoding::Endpoint<
1465 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
1466 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1467 ),
1468 encoder,
1469 offset + cur_offset,
1470 depth,
1471 )?;
1472
1473 _prev_end_offset = cur_offset + envelope_size;
1474 if 10 > max_ordinal {
1475 return Ok(());
1476 }
1477
1478 let cur_offset: usize = (10 - 1) * envelope_size;
1481
1482 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1484
1485 fidl::encoding::encode_in_envelope_optional::<
1490 fidl::encoding::Endpoint<
1491 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
1492 >,
1493 fidl::encoding::DefaultFuchsiaResourceDialect,
1494 >(
1495 self.experimental_device.as_mut().map(
1496 <fidl::encoding::Endpoint<
1497 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
1498 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1499 ),
1500 encoder,
1501 offset + cur_offset,
1502 depth,
1503 )?;
1504
1505 _prev_end_offset = cur_offset + envelope_size;
1506 if 11 > max_ordinal {
1507 return Ok(());
1508 }
1509
1510 let cur_offset: usize = (11 - 1) * envelope_size;
1513
1514 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1516
1517 fidl::encoding::encode_in_envelope_optional::<
1522 fidl::encoding::Endpoint<
1523 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>,
1524 >,
1525 fidl::encoding::DefaultFuchsiaResourceDialect,
1526 >(
1527 self.experimental_device_extra.as_mut().map(
1528 <fidl::encoding::Endpoint<
1529 fidl::endpoints::ServerEnd<
1530 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
1531 >,
1532 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1533 ),
1534 encoder,
1535 offset + cur_offset,
1536 depth,
1537 )?;
1538
1539 _prev_end_offset = cur_offset + envelope_size;
1540 if 12 > max_ordinal {
1541 return Ok(());
1542 }
1543
1544 let cur_offset: usize = (12 - 1) * envelope_size;
1547
1548 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1550
1551 fidl::encoding::encode_in_envelope_optional::<
1556 fidl::encoding::Endpoint<
1557 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
1558 >,
1559 fidl::encoding::DefaultFuchsiaResourceDialect,
1560 >(
1561 self.meshcop.as_mut().map(
1562 <fidl::encoding::Endpoint<
1563 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
1564 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1565 ),
1566 encoder,
1567 offset + cur_offset,
1568 depth,
1569 )?;
1570
1571 _prev_end_offset = cur_offset + envelope_size;
1572 if 13 > max_ordinal {
1573 return Ok(());
1574 }
1575
1576 let cur_offset: usize = (13 - 1) * envelope_size;
1579
1580 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1582
1583 fidl::encoding::encode_in_envelope_optional::<
1588 fidl::encoding::Endpoint<
1589 fidl::endpoints::ServerEnd<
1590 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
1591 >,
1592 >,
1593 fidl::encoding::DefaultFuchsiaResourceDialect,
1594 >(
1595 self.telemetry_provider.as_mut().map(
1596 <fidl::encoding::Endpoint<
1597 fidl::endpoints::ServerEnd<
1598 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
1599 >,
1600 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1601 ),
1602 encoder,
1603 offset + cur_offset,
1604 depth,
1605 )?;
1606
1607 _prev_end_offset = cur_offset + envelope_size;
1608 if 14 > max_ordinal {
1609 return Ok(());
1610 }
1611
1612 let cur_offset: usize = (14 - 1) * envelope_size;
1615
1616 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1618
1619 fidl::encoding::encode_in_envelope_optional::<
1624 fidl::encoding::Endpoint<
1625 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
1626 >,
1627 fidl::encoding::DefaultFuchsiaResourceDialect,
1628 >(
1629 self.thread_feature.as_mut().map(
1630 <fidl::encoding::Endpoint<
1631 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
1632 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1633 ),
1634 encoder,
1635 offset + cur_offset,
1636 depth,
1637 )?;
1638
1639 _prev_end_offset = cur_offset + envelope_size;
1640 if 15 > max_ordinal {
1641 return Ok(());
1642 }
1643
1644 let cur_offset: usize = (15 - 1) * envelope_size;
1647
1648 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1650
1651 fidl::encoding::encode_in_envelope_optional::<
1656 fidl::encoding::Endpoint<
1657 fidl::endpoints::ServerEnd<
1658 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
1659 >,
1660 >,
1661 fidl::encoding::DefaultFuchsiaResourceDialect,
1662 >(
1663 self.capabilities.as_mut().map(
1664 <fidl::encoding::Endpoint<
1665 fidl::endpoints::ServerEnd<
1666 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
1667 >,
1668 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1669 ),
1670 encoder,
1671 offset + cur_offset,
1672 depth,
1673 )?;
1674
1675 _prev_end_offset = cur_offset + envelope_size;
1676 if 16 > max_ordinal {
1677 return Ok(());
1678 }
1679
1680 let cur_offset: usize = (16 - 1) * envelope_size;
1683
1684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1686
1687 fidl::encoding::encode_in_envelope_optional::<
1692 fidl::encoding::Endpoint<
1693 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
1694 >,
1695 fidl::encoding::DefaultFuchsiaResourceDialect,
1696 >(
1697 self.epskc.as_mut().map(
1698 <fidl::encoding::Endpoint<
1699 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
1700 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1701 ),
1702 encoder,
1703 offset + cur_offset,
1704 depth,
1705 )?;
1706
1707 _prev_end_offset = cur_offset + envelope_size;
1708
1709 Ok(())
1710 }
1711 }
1712
1713 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Protocols {
1714 #[inline(always)]
1715 fn new_empty() -> Self {
1716 Self::default()
1717 }
1718
1719 unsafe fn decode(
1720 &mut self,
1721 decoder: &mut fidl::encoding::Decoder<
1722 '_,
1723 fidl::encoding::DefaultFuchsiaResourceDialect,
1724 >,
1725 offset: usize,
1726 mut depth: fidl::encoding::Depth,
1727 ) -> fidl::Result<()> {
1728 decoder.debug_check_bounds::<Self>(offset);
1729 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1730 None => return Err(fidl::Error::NotNullable),
1731 Some(len) => len,
1732 };
1733 if len == 0 {
1735 return Ok(());
1736 };
1737 depth.increment()?;
1738 let envelope_size = 8;
1739 let bytes_len = len * envelope_size;
1740 let offset = decoder.out_of_line_offset(bytes_len)?;
1741 let mut _next_ordinal_to_read = 0;
1743 let mut next_offset = offset;
1744 let end_offset = offset + bytes_len;
1745 _next_ordinal_to_read += 1;
1746 if next_offset >= end_offset {
1747 return Ok(());
1748 }
1749
1750 while _next_ordinal_to_read < 1 {
1752 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1753 _next_ordinal_to_read += 1;
1754 next_offset += envelope_size;
1755 }
1756
1757 let next_out_of_line = decoder.next_out_of_line();
1758 let handles_before = decoder.remaining_handles();
1759 if let Some((inlined, num_bytes, num_handles)) =
1760 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1761 {
1762 let member_inline_size = <fidl::encoding::Endpoint<
1763 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1764 > as fidl::encoding::TypeMarker>::inline_size(
1765 decoder.context
1766 );
1767 if inlined != (member_inline_size <= 4) {
1768 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1769 }
1770 let inner_offset;
1771 let mut inner_depth = depth.clone();
1772 if inlined {
1773 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1774 inner_offset = next_offset;
1775 } else {
1776 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1777 inner_depth.increment()?;
1778 }
1779 let val_ref = self.device.get_or_insert_with(|| {
1780 fidl::new_empty!(
1781 fidl::encoding::Endpoint<
1782 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1783 >,
1784 fidl::encoding::DefaultFuchsiaResourceDialect
1785 )
1786 });
1787 fidl::decode!(
1788 fidl::encoding::Endpoint<
1789 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1790 >,
1791 fidl::encoding::DefaultFuchsiaResourceDialect,
1792 val_ref,
1793 decoder,
1794 inner_offset,
1795 inner_depth
1796 )?;
1797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1798 {
1799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1800 }
1801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1803 }
1804 }
1805
1806 next_offset += envelope_size;
1807 _next_ordinal_to_read += 1;
1808 if next_offset >= end_offset {
1809 return Ok(());
1810 }
1811
1812 while _next_ordinal_to_read < 2 {
1814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1815 _next_ordinal_to_read += 1;
1816 next_offset += envelope_size;
1817 }
1818
1819 let next_out_of_line = decoder.next_out_of_line();
1820 let handles_before = decoder.remaining_handles();
1821 if let Some((inlined, num_bytes, num_handles)) =
1822 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1823 {
1824 let member_inline_size = <fidl::encoding::Endpoint<
1825 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1826 > as fidl::encoding::TypeMarker>::inline_size(
1827 decoder.context
1828 );
1829 if inlined != (member_inline_size <= 4) {
1830 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1831 }
1832 let inner_offset;
1833 let mut inner_depth = depth.clone();
1834 if inlined {
1835 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1836 inner_offset = next_offset;
1837 } else {
1838 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1839 inner_depth.increment()?;
1840 }
1841 let val_ref = self.device_extra.get_or_insert_with(|| {
1842 fidl::new_empty!(
1843 fidl::encoding::Endpoint<
1844 fidl::endpoints::ServerEnd<
1845 fidl_fuchsia_lowpan_device::DeviceExtraMarker,
1846 >,
1847 >,
1848 fidl::encoding::DefaultFuchsiaResourceDialect
1849 )
1850 });
1851 fidl::decode!(
1852 fidl::encoding::Endpoint<
1853 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1854 >,
1855 fidl::encoding::DefaultFuchsiaResourceDialect,
1856 val_ref,
1857 decoder,
1858 inner_offset,
1859 inner_depth
1860 )?;
1861 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1862 {
1863 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1864 }
1865 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1866 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1867 }
1868 }
1869
1870 next_offset += envelope_size;
1871 _next_ordinal_to_read += 1;
1872 if next_offset >= end_offset {
1873 return Ok(());
1874 }
1875
1876 while _next_ordinal_to_read < 3 {
1878 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1879 _next_ordinal_to_read += 1;
1880 next_offset += envelope_size;
1881 }
1882
1883 let next_out_of_line = decoder.next_out_of_line();
1884 let handles_before = decoder.remaining_handles();
1885 if let Some((inlined, num_bytes, num_handles)) =
1886 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1887 {
1888 let member_inline_size = <fidl::encoding::Endpoint<
1889 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1890 > as fidl::encoding::TypeMarker>::inline_size(
1891 decoder.context
1892 );
1893 if inlined != (member_inline_size <= 4) {
1894 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1895 }
1896 let inner_offset;
1897 let mut inner_depth = depth.clone();
1898 if inlined {
1899 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1900 inner_offset = next_offset;
1901 } else {
1902 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1903 inner_depth.increment()?;
1904 }
1905 let val_ref = self.device_test.get_or_insert_with(|| {
1906 fidl::new_empty!(
1907 fidl::encoding::Endpoint<
1908 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1909 >,
1910 fidl::encoding::DefaultFuchsiaResourceDialect
1911 )
1912 });
1913 fidl::decode!(
1914 fidl::encoding::Endpoint<
1915 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1916 >,
1917 fidl::encoding::DefaultFuchsiaResourceDialect,
1918 val_ref,
1919 decoder,
1920 inner_offset,
1921 inner_depth
1922 )?;
1923 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1924 {
1925 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1926 }
1927 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1928 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1929 }
1930 }
1931
1932 next_offset += envelope_size;
1933 _next_ordinal_to_read += 1;
1934 if next_offset >= end_offset {
1935 return Ok(());
1936 }
1937
1938 while _next_ordinal_to_read < 4 {
1940 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1941 _next_ordinal_to_read += 1;
1942 next_offset += envelope_size;
1943 }
1944
1945 let next_out_of_line = decoder.next_out_of_line();
1946 let handles_before = decoder.remaining_handles();
1947 if let Some((inlined, num_bytes, num_handles)) =
1948 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1949 {
1950 let member_inline_size = <fidl::encoding::Endpoint<
1951 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>,
1952 > as fidl::encoding::TypeMarker>::inline_size(
1953 decoder.context
1954 );
1955 if inlined != (member_inline_size <= 4) {
1956 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1957 }
1958 let inner_offset;
1959 let mut inner_depth = depth.clone();
1960 if inlined {
1961 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1962 inner_offset = next_offset;
1963 } else {
1964 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1965 inner_depth.increment()?;
1966 }
1967 let val_ref = self.device_route.get_or_insert_with(|| {
1968 fidl::new_empty!(
1969 fidl::encoding::Endpoint<
1970 fidl::endpoints::ServerEnd<
1971 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1972 >,
1973 >,
1974 fidl::encoding::DefaultFuchsiaResourceDialect
1975 )
1976 });
1977 fidl::decode!(
1978 fidl::encoding::Endpoint<
1979 fidl::endpoints::ServerEnd<
1980 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1981 >,
1982 >,
1983 fidl::encoding::DefaultFuchsiaResourceDialect,
1984 val_ref,
1985 decoder,
1986 inner_offset,
1987 inner_depth
1988 )?;
1989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1990 {
1991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1992 }
1993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1995 }
1996 }
1997
1998 next_offset += envelope_size;
1999 _next_ordinal_to_read += 1;
2000 if next_offset >= end_offset {
2001 return Ok(());
2002 }
2003
2004 while _next_ordinal_to_read < 5 {
2006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2007 _next_ordinal_to_read += 1;
2008 next_offset += envelope_size;
2009 }
2010
2011 let next_out_of_line = decoder.next_out_of_line();
2012 let handles_before = decoder.remaining_handles();
2013 if let Some((inlined, num_bytes, num_handles)) =
2014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2015 {
2016 let member_inline_size = <fidl::encoding::Endpoint<
2017 fidl::endpoints::ServerEnd<
2018 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2019 >,
2020 > as fidl::encoding::TypeMarker>::inline_size(
2021 decoder.context
2022 );
2023 if inlined != (member_inline_size <= 4) {
2024 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2025 }
2026 let inner_offset;
2027 let mut inner_depth = depth.clone();
2028 if inlined {
2029 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2030 inner_offset = next_offset;
2031 } else {
2032 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2033 inner_depth.increment()?;
2034 }
2035 let val_ref = self.device_route_extra.get_or_insert_with(|| {
2036 fidl::new_empty!(
2037 fidl::encoding::Endpoint<
2038 fidl::endpoints::ServerEnd<
2039 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2040 >,
2041 >,
2042 fidl::encoding::DefaultFuchsiaResourceDialect
2043 )
2044 });
2045 fidl::decode!(
2046 fidl::encoding::Endpoint<
2047 fidl::endpoints::ServerEnd<
2048 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2049 >,
2050 >,
2051 fidl::encoding::DefaultFuchsiaResourceDialect,
2052 val_ref,
2053 decoder,
2054 inner_offset,
2055 inner_depth
2056 )?;
2057 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2058 {
2059 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2060 }
2061 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2062 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2063 }
2064 }
2065
2066 next_offset += envelope_size;
2067 _next_ordinal_to_read += 1;
2068 if next_offset >= end_offset {
2069 return Ok(());
2070 }
2071
2072 while _next_ordinal_to_read < 6 {
2074 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2075 _next_ordinal_to_read += 1;
2076 next_offset += envelope_size;
2077 }
2078
2079 let next_out_of_line = decoder.next_out_of_line();
2080 let handles_before = decoder.remaining_handles();
2081 if let Some((inlined, num_bytes, num_handles)) =
2082 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2083 {
2084 let member_inline_size = <fidl::encoding::Endpoint<
2085 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2086 > as fidl::encoding::TypeMarker>::inline_size(
2087 decoder.context
2088 );
2089 if inlined != (member_inline_size <= 4) {
2090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2091 }
2092 let inner_offset;
2093 let mut inner_depth = depth.clone();
2094 if inlined {
2095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2096 inner_offset = next_offset;
2097 } else {
2098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2099 inner_depth.increment()?;
2100 }
2101 let val_ref = self.counters.get_or_insert_with(|| {
2102 fidl::new_empty!(
2103 fidl::encoding::Endpoint<
2104 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2105 >,
2106 fidl::encoding::DefaultFuchsiaResourceDialect
2107 )
2108 });
2109 fidl::decode!(
2110 fidl::encoding::Endpoint<
2111 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2112 >,
2113 fidl::encoding::DefaultFuchsiaResourceDialect,
2114 val_ref,
2115 decoder,
2116 inner_offset,
2117 inner_depth
2118 )?;
2119 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2120 {
2121 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2122 }
2123 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2124 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2125 }
2126 }
2127
2128 next_offset += envelope_size;
2129 _next_ordinal_to_read += 1;
2130 if next_offset >= end_offset {
2131 return Ok(());
2132 }
2133
2134 while _next_ordinal_to_read < 7 {
2136 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2137 _next_ordinal_to_read += 1;
2138 next_offset += envelope_size;
2139 }
2140
2141 let next_out_of_line = decoder.next_out_of_line();
2142 let handles_before = decoder.remaining_handles();
2143 if let Some((inlined, num_bytes, num_handles)) =
2144 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2145 {
2146 let member_inline_size = <fidl::encoding::Endpoint<
2147 fidl::endpoints::ServerEnd<
2148 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2149 >,
2150 > as fidl::encoding::TypeMarker>::inline_size(
2151 decoder.context
2152 );
2153 if inlined != (member_inline_size <= 4) {
2154 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2155 }
2156 let inner_offset;
2157 let mut inner_depth = depth.clone();
2158 if inlined {
2159 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2160 inner_offset = next_offset;
2161 } else {
2162 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2163 inner_depth.increment()?;
2164 }
2165 let val_ref = self.thread_legacy_joining.get_or_insert_with(|| {
2166 fidl::new_empty!(
2167 fidl::encoding::Endpoint<
2168 fidl::endpoints::ServerEnd<
2169 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2170 >,
2171 >,
2172 fidl::encoding::DefaultFuchsiaResourceDialect
2173 )
2174 });
2175 fidl::decode!(
2176 fidl::encoding::Endpoint<
2177 fidl::endpoints::ServerEnd<
2178 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2179 >,
2180 >,
2181 fidl::encoding::DefaultFuchsiaResourceDialect,
2182 val_ref,
2183 decoder,
2184 inner_offset,
2185 inner_depth
2186 )?;
2187 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2188 {
2189 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2190 }
2191 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2192 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2193 }
2194 }
2195
2196 next_offset += envelope_size;
2197 _next_ordinal_to_read += 1;
2198 if next_offset >= end_offset {
2199 return Ok(());
2200 }
2201
2202 while _next_ordinal_to_read < 8 {
2204 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2205 _next_ordinal_to_read += 1;
2206 next_offset += envelope_size;
2207 }
2208
2209 let next_out_of_line = decoder.next_out_of_line();
2210 let handles_before = decoder.remaining_handles();
2211 if let Some((inlined, num_bytes, num_handles)) =
2212 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2213 {
2214 let member_inline_size = <fidl::encoding::Endpoint<
2215 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2216 > as fidl::encoding::TypeMarker>::inline_size(
2217 decoder.context
2218 );
2219 if inlined != (member_inline_size <= 4) {
2220 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2221 }
2222 let inner_offset;
2223 let mut inner_depth = depth.clone();
2224 if inlined {
2225 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2226 inner_offset = next_offset;
2227 } else {
2228 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2229 inner_depth.increment()?;
2230 }
2231 let val_ref = self.thread_dataset.get_or_insert_with(|| {
2232 fidl::new_empty!(
2233 fidl::encoding::Endpoint<
2234 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2235 >,
2236 fidl::encoding::DefaultFuchsiaResourceDialect
2237 )
2238 });
2239 fidl::decode!(
2240 fidl::encoding::Endpoint<
2241 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2242 >,
2243 fidl::encoding::DefaultFuchsiaResourceDialect,
2244 val_ref,
2245 decoder,
2246 inner_offset,
2247 inner_depth
2248 )?;
2249 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2250 {
2251 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2252 }
2253 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2254 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2255 }
2256 }
2257
2258 next_offset += envelope_size;
2259 _next_ordinal_to_read += 1;
2260 if next_offset >= end_offset {
2261 return Ok(());
2262 }
2263
2264 while _next_ordinal_to_read < 9 {
2266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2267 _next_ordinal_to_read += 1;
2268 next_offset += envelope_size;
2269 }
2270
2271 let next_out_of_line = decoder.next_out_of_line();
2272 let handles_before = decoder.remaining_handles();
2273 if let Some((inlined, num_bytes, num_handles)) =
2274 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2275 {
2276 let member_inline_size = <fidl::encoding::Endpoint<
2277 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
2278 > as fidl::encoding::TypeMarker>::inline_size(
2279 decoder.context
2280 );
2281 if inlined != (member_inline_size <= 4) {
2282 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2283 }
2284 let inner_offset;
2285 let mut inner_depth = depth.clone();
2286 if inlined {
2287 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2288 inner_offset = next_offset;
2289 } else {
2290 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2291 inner_depth.increment()?;
2292 }
2293 let val_ref = self.energy_scan.get_or_insert_with(|| {
2294 fidl::new_empty!(
2295 fidl::encoding::Endpoint<
2296 fidl::endpoints::ServerEnd<
2297 fidl_fuchsia_lowpan_device::EnergyScanMarker,
2298 >,
2299 >,
2300 fidl::encoding::DefaultFuchsiaResourceDialect
2301 )
2302 });
2303 fidl::decode!(
2304 fidl::encoding::Endpoint<
2305 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
2306 >,
2307 fidl::encoding::DefaultFuchsiaResourceDialect,
2308 val_ref,
2309 decoder,
2310 inner_offset,
2311 inner_depth
2312 )?;
2313 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2314 {
2315 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2316 }
2317 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2318 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2319 }
2320 }
2321
2322 next_offset += envelope_size;
2323 _next_ordinal_to_read += 1;
2324 if next_offset >= end_offset {
2325 return Ok(());
2326 }
2327
2328 while _next_ordinal_to_read < 10 {
2330 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2331 _next_ordinal_to_read += 1;
2332 next_offset += envelope_size;
2333 }
2334
2335 let next_out_of_line = decoder.next_out_of_line();
2336 let handles_before = decoder.remaining_handles();
2337 if let Some((inlined, num_bytes, num_handles)) =
2338 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2339 {
2340 let member_inline_size = <fidl::encoding::Endpoint<
2341 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
2342 > as fidl::encoding::TypeMarker>::inline_size(
2343 decoder.context
2344 );
2345 if inlined != (member_inline_size <= 4) {
2346 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2347 }
2348 let inner_offset;
2349 let mut inner_depth = depth.clone();
2350 if inlined {
2351 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2352 inner_offset = next_offset;
2353 } else {
2354 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2355 inner_depth.increment()?;
2356 }
2357 let val_ref = self.experimental_device.get_or_insert_with(|| {
2358 fidl::new_empty!(
2359 fidl::encoding::Endpoint<
2360 fidl::endpoints::ServerEnd<
2361 fidl_fuchsia_lowpan_experimental::DeviceMarker,
2362 >,
2363 >,
2364 fidl::encoding::DefaultFuchsiaResourceDialect
2365 )
2366 });
2367 fidl::decode!(
2368 fidl::encoding::Endpoint<
2369 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
2370 >,
2371 fidl::encoding::DefaultFuchsiaResourceDialect,
2372 val_ref,
2373 decoder,
2374 inner_offset,
2375 inner_depth
2376 )?;
2377 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2378 {
2379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2380 }
2381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2383 }
2384 }
2385
2386 next_offset += envelope_size;
2387 _next_ordinal_to_read += 1;
2388 if next_offset >= end_offset {
2389 return Ok(());
2390 }
2391
2392 while _next_ordinal_to_read < 11 {
2394 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2395 _next_ordinal_to_read += 1;
2396 next_offset += envelope_size;
2397 }
2398
2399 let next_out_of_line = decoder.next_out_of_line();
2400 let handles_before = decoder.remaining_handles();
2401 if let Some((inlined, num_bytes, num_handles)) =
2402 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2403 {
2404 let member_inline_size = <fidl::encoding::Endpoint<
2405 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>,
2406 > as fidl::encoding::TypeMarker>::inline_size(
2407 decoder.context
2408 );
2409 if inlined != (member_inline_size <= 4) {
2410 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2411 }
2412 let inner_offset;
2413 let mut inner_depth = depth.clone();
2414 if inlined {
2415 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2416 inner_offset = next_offset;
2417 } else {
2418 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2419 inner_depth.increment()?;
2420 }
2421 let val_ref = self.experimental_device_extra.get_or_insert_with(|| {
2422 fidl::new_empty!(
2423 fidl::encoding::Endpoint<
2424 fidl::endpoints::ServerEnd<
2425 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
2426 >,
2427 >,
2428 fidl::encoding::DefaultFuchsiaResourceDialect
2429 )
2430 });
2431 fidl::decode!(
2432 fidl::encoding::Endpoint<
2433 fidl::endpoints::ServerEnd<
2434 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
2435 >,
2436 >,
2437 fidl::encoding::DefaultFuchsiaResourceDialect,
2438 val_ref,
2439 decoder,
2440 inner_offset,
2441 inner_depth
2442 )?;
2443 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2444 {
2445 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2446 }
2447 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2448 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2449 }
2450 }
2451
2452 next_offset += envelope_size;
2453 _next_ordinal_to_read += 1;
2454 if next_offset >= end_offset {
2455 return Ok(());
2456 }
2457
2458 while _next_ordinal_to_read < 12 {
2460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2461 _next_ordinal_to_read += 1;
2462 next_offset += envelope_size;
2463 }
2464
2465 let next_out_of_line = decoder.next_out_of_line();
2466 let handles_before = decoder.remaining_handles();
2467 if let Some((inlined, num_bytes, num_handles)) =
2468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2469 {
2470 let member_inline_size = <fidl::encoding::Endpoint<
2471 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2472 > as fidl::encoding::TypeMarker>::inline_size(
2473 decoder.context
2474 );
2475 if inlined != (member_inline_size <= 4) {
2476 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2477 }
2478 let inner_offset;
2479 let mut inner_depth = depth.clone();
2480 if inlined {
2481 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2482 inner_offset = next_offset;
2483 } else {
2484 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2485 inner_depth.increment()?;
2486 }
2487 let val_ref = self.meshcop.get_or_insert_with(|| {
2488 fidl::new_empty!(
2489 fidl::encoding::Endpoint<
2490 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2491 >,
2492 fidl::encoding::DefaultFuchsiaResourceDialect
2493 )
2494 });
2495 fidl::decode!(
2496 fidl::encoding::Endpoint<
2497 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2498 >,
2499 fidl::encoding::DefaultFuchsiaResourceDialect,
2500 val_ref,
2501 decoder,
2502 inner_offset,
2503 inner_depth
2504 )?;
2505 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2506 {
2507 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2508 }
2509 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2510 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2511 }
2512 }
2513
2514 next_offset += envelope_size;
2515 _next_ordinal_to_read += 1;
2516 if next_offset >= end_offset {
2517 return Ok(());
2518 }
2519
2520 while _next_ordinal_to_read < 13 {
2522 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2523 _next_ordinal_to_read += 1;
2524 next_offset += envelope_size;
2525 }
2526
2527 let next_out_of_line = decoder.next_out_of_line();
2528 let handles_before = decoder.remaining_handles();
2529 if let Some((inlined, num_bytes, num_handles)) =
2530 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2531 {
2532 let member_inline_size = <fidl::encoding::Endpoint<
2533 fidl::endpoints::ServerEnd<
2534 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2535 >,
2536 > as fidl::encoding::TypeMarker>::inline_size(
2537 decoder.context
2538 );
2539 if inlined != (member_inline_size <= 4) {
2540 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2541 }
2542 let inner_offset;
2543 let mut inner_depth = depth.clone();
2544 if inlined {
2545 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2546 inner_offset = next_offset;
2547 } else {
2548 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2549 inner_depth.increment()?;
2550 }
2551 let val_ref = self.telemetry_provider.get_or_insert_with(|| {
2552 fidl::new_empty!(
2553 fidl::encoding::Endpoint<
2554 fidl::endpoints::ServerEnd<
2555 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2556 >,
2557 >,
2558 fidl::encoding::DefaultFuchsiaResourceDialect
2559 )
2560 });
2561 fidl::decode!(
2562 fidl::encoding::Endpoint<
2563 fidl::endpoints::ServerEnd<
2564 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2565 >,
2566 >,
2567 fidl::encoding::DefaultFuchsiaResourceDialect,
2568 val_ref,
2569 decoder,
2570 inner_offset,
2571 inner_depth
2572 )?;
2573 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2574 {
2575 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2576 }
2577 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2578 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2579 }
2580 }
2581
2582 next_offset += envelope_size;
2583 _next_ordinal_to_read += 1;
2584 if next_offset >= end_offset {
2585 return Ok(());
2586 }
2587
2588 while _next_ordinal_to_read < 14 {
2590 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2591 _next_ordinal_to_read += 1;
2592 next_offset += envelope_size;
2593 }
2594
2595 let next_out_of_line = decoder.next_out_of_line();
2596 let handles_before = decoder.remaining_handles();
2597 if let Some((inlined, num_bytes, num_handles)) =
2598 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2599 {
2600 let member_inline_size = <fidl::encoding::Endpoint<
2601 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2602 > as fidl::encoding::TypeMarker>::inline_size(
2603 decoder.context
2604 );
2605 if inlined != (member_inline_size <= 4) {
2606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2607 }
2608 let inner_offset;
2609 let mut inner_depth = depth.clone();
2610 if inlined {
2611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2612 inner_offset = next_offset;
2613 } else {
2614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2615 inner_depth.increment()?;
2616 }
2617 let val_ref = self.thread_feature.get_or_insert_with(|| {
2618 fidl::new_empty!(
2619 fidl::encoding::Endpoint<
2620 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2621 >,
2622 fidl::encoding::DefaultFuchsiaResourceDialect
2623 )
2624 });
2625 fidl::decode!(
2626 fidl::encoding::Endpoint<
2627 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2628 >,
2629 fidl::encoding::DefaultFuchsiaResourceDialect,
2630 val_ref,
2631 decoder,
2632 inner_offset,
2633 inner_depth
2634 )?;
2635 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2636 {
2637 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2638 }
2639 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2640 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2641 }
2642 }
2643
2644 next_offset += envelope_size;
2645 _next_ordinal_to_read += 1;
2646 if next_offset >= end_offset {
2647 return Ok(());
2648 }
2649
2650 while _next_ordinal_to_read < 15 {
2652 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2653 _next_ordinal_to_read += 1;
2654 next_offset += envelope_size;
2655 }
2656
2657 let next_out_of_line = decoder.next_out_of_line();
2658 let handles_before = decoder.remaining_handles();
2659 if let Some((inlined, num_bytes, num_handles)) =
2660 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2661 {
2662 let member_inline_size = <fidl::encoding::Endpoint<
2663 fidl::endpoints::ServerEnd<
2664 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2665 >,
2666 > as fidl::encoding::TypeMarker>::inline_size(
2667 decoder.context
2668 );
2669 if inlined != (member_inline_size <= 4) {
2670 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2671 }
2672 let inner_offset;
2673 let mut inner_depth = depth.clone();
2674 if inlined {
2675 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2676 inner_offset = next_offset;
2677 } else {
2678 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2679 inner_depth.increment()?;
2680 }
2681 let val_ref = self.capabilities.get_or_insert_with(|| {
2682 fidl::new_empty!(
2683 fidl::encoding::Endpoint<
2684 fidl::endpoints::ServerEnd<
2685 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2686 >,
2687 >,
2688 fidl::encoding::DefaultFuchsiaResourceDialect
2689 )
2690 });
2691 fidl::decode!(
2692 fidl::encoding::Endpoint<
2693 fidl::endpoints::ServerEnd<
2694 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2695 >,
2696 >,
2697 fidl::encoding::DefaultFuchsiaResourceDialect,
2698 val_ref,
2699 decoder,
2700 inner_offset,
2701 inner_depth
2702 )?;
2703 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2704 {
2705 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2706 }
2707 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2708 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2709 }
2710 }
2711
2712 next_offset += envelope_size;
2713 _next_ordinal_to_read += 1;
2714 if next_offset >= end_offset {
2715 return Ok(());
2716 }
2717
2718 while _next_ordinal_to_read < 16 {
2720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2721 _next_ordinal_to_read += 1;
2722 next_offset += envelope_size;
2723 }
2724
2725 let next_out_of_line = decoder.next_out_of_line();
2726 let handles_before = decoder.remaining_handles();
2727 if let Some((inlined, num_bytes, num_handles)) =
2728 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2729 {
2730 let member_inline_size = <fidl::encoding::Endpoint<
2731 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2732 > as fidl::encoding::TypeMarker>::inline_size(
2733 decoder.context
2734 );
2735 if inlined != (member_inline_size <= 4) {
2736 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2737 }
2738 let inner_offset;
2739 let mut inner_depth = depth.clone();
2740 if inlined {
2741 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2742 inner_offset = next_offset;
2743 } else {
2744 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2745 inner_depth.increment()?;
2746 }
2747 let val_ref = self.epskc.get_or_insert_with(|| {
2748 fidl::new_empty!(
2749 fidl::encoding::Endpoint<
2750 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2751 >,
2752 fidl::encoding::DefaultFuchsiaResourceDialect
2753 )
2754 });
2755 fidl::decode!(
2756 fidl::encoding::Endpoint<
2757 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2758 >,
2759 fidl::encoding::DefaultFuchsiaResourceDialect,
2760 val_ref,
2761 decoder,
2762 inner_offset,
2763 inner_depth
2764 )?;
2765 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2766 {
2767 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2768 }
2769 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2770 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2771 }
2772 }
2773
2774 next_offset += envelope_size;
2775
2776 while next_offset < end_offset {
2778 _next_ordinal_to_read += 1;
2779 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2780 next_offset += envelope_size;
2781 }
2782
2783 Ok(())
2784 }
2785 }
2786}