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 let protocol_name = <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
113 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
114 }
115
116 pub fn into_channel(self) -> fidl::Channel {
117 self.client.into_channel()
118 }
119
120 pub fn wait_for_event(
123 &self,
124 deadline: zx::MonotonicInstant,
125 ) -> Result<DriverEvent, fidl::Error> {
126 DriverEvent::decode(self.client.wait_for_event(deadline)?)
127 }
128
129 pub fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
132 self.client.send::<DriverGetProtocolsRequest>(
133 (&mut protocols,),
134 0x165f5b09fcc7bc85,
135 fidl::encoding::DynamicFlags::empty(),
136 )
137 }
138}
139
140#[cfg(target_os = "fuchsia")]
141impl From<DriverSynchronousProxy> for zx::Handle {
142 fn from(value: DriverSynchronousProxy) -> Self {
143 value.into_channel().into()
144 }
145}
146
147#[cfg(target_os = "fuchsia")]
148impl From<fidl::Channel> for DriverSynchronousProxy {
149 fn from(value: fidl::Channel) -> Self {
150 Self::new(value)
151 }
152}
153
154#[cfg(target_os = "fuchsia")]
155impl fidl::endpoints::FromClient for DriverSynchronousProxy {
156 type Protocol = DriverMarker;
157
158 fn from_client(value: fidl::endpoints::ClientEnd<DriverMarker>) -> Self {
159 Self::new(value.into_channel())
160 }
161}
162
163#[derive(Debug, Clone)]
164pub struct DriverProxy {
165 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
166}
167
168impl fidl::endpoints::Proxy for DriverProxy {
169 type Protocol = DriverMarker;
170
171 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
172 Self::new(inner)
173 }
174
175 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
176 self.client.into_channel().map_err(|client| Self { client })
177 }
178
179 fn as_channel(&self) -> &::fidl::AsyncChannel {
180 self.client.as_channel()
181 }
182}
183
184impl DriverProxy {
185 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
187 let protocol_name = <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
188 Self { client: fidl::client::Client::new(channel, protocol_name) }
189 }
190
191 pub fn take_event_stream(&self) -> DriverEventStream {
197 DriverEventStream { event_receiver: self.client.take_event_receiver() }
198 }
199
200 pub fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
203 DriverProxyInterface::r#get_protocols(self, protocols)
204 }
205}
206
207impl DriverProxyInterface for DriverProxy {
208 fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
209 self.client.send::<DriverGetProtocolsRequest>(
210 (&mut protocols,),
211 0x165f5b09fcc7bc85,
212 fidl::encoding::DynamicFlags::empty(),
213 )
214 }
215}
216
217pub struct DriverEventStream {
218 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
219}
220
221impl std::marker::Unpin for DriverEventStream {}
222
223impl futures::stream::FusedStream for DriverEventStream {
224 fn is_terminated(&self) -> bool {
225 self.event_receiver.is_terminated()
226 }
227}
228
229impl futures::Stream for DriverEventStream {
230 type Item = Result<DriverEvent, fidl::Error>;
231
232 fn poll_next(
233 mut self: std::pin::Pin<&mut Self>,
234 cx: &mut std::task::Context<'_>,
235 ) -> std::task::Poll<Option<Self::Item>> {
236 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
237 &mut self.event_receiver,
238 cx
239 )?) {
240 Some(buf) => std::task::Poll::Ready(Some(DriverEvent::decode(buf))),
241 None => std::task::Poll::Ready(None),
242 }
243 }
244}
245
246#[derive(Debug)]
247pub enum DriverEvent {}
248
249impl DriverEvent {
250 fn decode(
252 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
253 ) -> Result<DriverEvent, fidl::Error> {
254 let (bytes, _handles) = buf.split_mut();
255 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
256 debug_assert_eq!(tx_header.tx_id, 0);
257 match tx_header.ordinal {
258 _ => Err(fidl::Error::UnknownOrdinal {
259 ordinal: tx_header.ordinal,
260 protocol_name: <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
261 }),
262 }
263 }
264}
265
266pub struct DriverRequestStream {
268 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
269 is_terminated: bool,
270}
271
272impl std::marker::Unpin for DriverRequestStream {}
273
274impl futures::stream::FusedStream for DriverRequestStream {
275 fn is_terminated(&self) -> bool {
276 self.is_terminated
277 }
278}
279
280impl fidl::endpoints::RequestStream for DriverRequestStream {
281 type Protocol = DriverMarker;
282 type ControlHandle = DriverControlHandle;
283
284 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
285 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
286 }
287
288 fn control_handle(&self) -> Self::ControlHandle {
289 DriverControlHandle { inner: self.inner.clone() }
290 }
291
292 fn into_inner(
293 self,
294 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
295 {
296 (self.inner, self.is_terminated)
297 }
298
299 fn from_inner(
300 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
301 is_terminated: bool,
302 ) -> Self {
303 Self { inner, is_terminated }
304 }
305}
306
307impl futures::Stream for DriverRequestStream {
308 type Item = Result<DriverRequest, fidl::Error>;
309
310 fn poll_next(
311 mut self: std::pin::Pin<&mut Self>,
312 cx: &mut std::task::Context<'_>,
313 ) -> std::task::Poll<Option<Self::Item>> {
314 let this = &mut *self;
315 if this.inner.check_shutdown(cx) {
316 this.is_terminated = true;
317 return std::task::Poll::Ready(None);
318 }
319 if this.is_terminated {
320 panic!("polled DriverRequestStream after completion");
321 }
322 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
323 |bytes, handles| {
324 match this.inner.channel().read_etc(cx, bytes, handles) {
325 std::task::Poll::Ready(Ok(())) => {}
326 std::task::Poll::Pending => return std::task::Poll::Pending,
327 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
328 this.is_terminated = true;
329 return std::task::Poll::Ready(None);
330 }
331 std::task::Poll::Ready(Err(e)) => {
332 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
333 e.into(),
334 ))));
335 }
336 }
337
338 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
340
341 std::task::Poll::Ready(Some(match header.ordinal {
342 0x165f5b09fcc7bc85 => {
343 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
344 let mut req = fidl::new_empty!(
345 DriverGetProtocolsRequest,
346 fidl::encoding::DefaultFuchsiaResourceDialect
347 );
348 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverGetProtocolsRequest>(&header, _body_bytes, handles, &mut req)?;
349 let control_handle = DriverControlHandle { inner: this.inner.clone() };
350 Ok(DriverRequest::GetProtocols { protocols: req.protocols, control_handle })
351 }
352 _ => Err(fidl::Error::UnknownOrdinal {
353 ordinal: header.ordinal,
354 protocol_name:
355 <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
356 }),
357 }))
358 },
359 )
360 }
361}
362
363#[derive(Debug)]
365pub enum DriverRequest {
366 GetProtocols { protocols: Protocols, control_handle: DriverControlHandle },
369}
370
371impl DriverRequest {
372 #[allow(irrefutable_let_patterns)]
373 pub fn into_get_protocols(self) -> Option<(Protocols, DriverControlHandle)> {
374 if let DriverRequest::GetProtocols { protocols, control_handle } = self {
375 Some((protocols, control_handle))
376 } else {
377 None
378 }
379 }
380
381 pub fn method_name(&self) -> &'static str {
383 match *self {
384 DriverRequest::GetProtocols { .. } => "get_protocols",
385 }
386 }
387}
388
389#[derive(Debug, Clone)]
390pub struct DriverControlHandle {
391 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
392}
393
394impl fidl::endpoints::ControlHandle for DriverControlHandle {
395 fn shutdown(&self) {
396 self.inner.shutdown()
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 let protocol_name = <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
470 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
471 }
472
473 pub fn into_channel(self) -> fidl::Channel {
474 self.client.into_channel()
475 }
476
477 pub fn wait_for_event(
480 &self,
481 deadline: zx::MonotonicInstant,
482 ) -> Result<RegisterEvent, fidl::Error> {
483 RegisterEvent::decode(self.client.wait_for_event(deadline)?)
484 }
485
486 pub fn r#register_device(
489 &self,
490 mut name: &str,
491 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
492 ) -> Result<(), fidl::Error> {
493 self.client.send::<RegisterRegisterDeviceRequest>(
494 (name, driver),
495 0x19280d20cfdd62e6,
496 fidl::encoding::DynamicFlags::empty(),
497 )
498 }
499}
500
501#[cfg(target_os = "fuchsia")]
502impl From<RegisterSynchronousProxy> for zx::Handle {
503 fn from(value: RegisterSynchronousProxy) -> Self {
504 value.into_channel().into()
505 }
506}
507
508#[cfg(target_os = "fuchsia")]
509impl From<fidl::Channel> for RegisterSynchronousProxy {
510 fn from(value: fidl::Channel) -> Self {
511 Self::new(value)
512 }
513}
514
515#[cfg(target_os = "fuchsia")]
516impl fidl::endpoints::FromClient for RegisterSynchronousProxy {
517 type Protocol = RegisterMarker;
518
519 fn from_client(value: fidl::endpoints::ClientEnd<RegisterMarker>) -> Self {
520 Self::new(value.into_channel())
521 }
522}
523
524#[derive(Debug, Clone)]
525pub struct RegisterProxy {
526 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
527}
528
529impl fidl::endpoints::Proxy for RegisterProxy {
530 type Protocol = RegisterMarker;
531
532 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
533 Self::new(inner)
534 }
535
536 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
537 self.client.into_channel().map_err(|client| Self { client })
538 }
539
540 fn as_channel(&self) -> &::fidl::AsyncChannel {
541 self.client.as_channel()
542 }
543}
544
545impl RegisterProxy {
546 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
548 let protocol_name = <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
549 Self { client: fidl::client::Client::new(channel, protocol_name) }
550 }
551
552 pub fn take_event_stream(&self) -> RegisterEventStream {
558 RegisterEventStream { event_receiver: self.client.take_event_receiver() }
559 }
560
561 pub fn r#register_device(
564 &self,
565 mut name: &str,
566 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
567 ) -> Result<(), fidl::Error> {
568 RegisterProxyInterface::r#register_device(self, name, driver)
569 }
570}
571
572impl RegisterProxyInterface for RegisterProxy {
573 fn r#register_device(
574 &self,
575 mut name: &str,
576 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
577 ) -> Result<(), fidl::Error> {
578 self.client.send::<RegisterRegisterDeviceRequest>(
579 (name, driver),
580 0x19280d20cfdd62e6,
581 fidl::encoding::DynamicFlags::empty(),
582 )
583 }
584}
585
586pub struct RegisterEventStream {
587 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
588}
589
590impl std::marker::Unpin for RegisterEventStream {}
591
592impl futures::stream::FusedStream for RegisterEventStream {
593 fn is_terminated(&self) -> bool {
594 self.event_receiver.is_terminated()
595 }
596}
597
598impl futures::Stream for RegisterEventStream {
599 type Item = Result<RegisterEvent, fidl::Error>;
600
601 fn poll_next(
602 mut self: std::pin::Pin<&mut Self>,
603 cx: &mut std::task::Context<'_>,
604 ) -> std::task::Poll<Option<Self::Item>> {
605 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
606 &mut self.event_receiver,
607 cx
608 )?) {
609 Some(buf) => std::task::Poll::Ready(Some(RegisterEvent::decode(buf))),
610 None => std::task::Poll::Ready(None),
611 }
612 }
613}
614
615#[derive(Debug)]
616pub enum RegisterEvent {}
617
618impl RegisterEvent {
619 fn decode(
621 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
622 ) -> Result<RegisterEvent, fidl::Error> {
623 let (bytes, _handles) = buf.split_mut();
624 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
625 debug_assert_eq!(tx_header.tx_id, 0);
626 match tx_header.ordinal {
627 _ => Err(fidl::Error::UnknownOrdinal {
628 ordinal: tx_header.ordinal,
629 protocol_name: <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
630 }),
631 }
632 }
633}
634
635pub struct RegisterRequestStream {
637 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
638 is_terminated: bool,
639}
640
641impl std::marker::Unpin for RegisterRequestStream {}
642
643impl futures::stream::FusedStream for RegisterRequestStream {
644 fn is_terminated(&self) -> bool {
645 self.is_terminated
646 }
647}
648
649impl fidl::endpoints::RequestStream for RegisterRequestStream {
650 type Protocol = RegisterMarker;
651 type ControlHandle = RegisterControlHandle;
652
653 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
654 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
655 }
656
657 fn control_handle(&self) -> Self::ControlHandle {
658 RegisterControlHandle { inner: self.inner.clone() }
659 }
660
661 fn into_inner(
662 self,
663 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
664 {
665 (self.inner, self.is_terminated)
666 }
667
668 fn from_inner(
669 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
670 is_terminated: bool,
671 ) -> Self {
672 Self { inner, is_terminated }
673 }
674}
675
676impl futures::Stream for RegisterRequestStream {
677 type Item = Result<RegisterRequest, fidl::Error>;
678
679 fn poll_next(
680 mut self: std::pin::Pin<&mut Self>,
681 cx: &mut std::task::Context<'_>,
682 ) -> std::task::Poll<Option<Self::Item>> {
683 let this = &mut *self;
684 if this.inner.check_shutdown(cx) {
685 this.is_terminated = true;
686 return std::task::Poll::Ready(None);
687 }
688 if this.is_terminated {
689 panic!("polled RegisterRequestStream after completion");
690 }
691 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
692 |bytes, handles| {
693 match this.inner.channel().read_etc(cx, bytes, handles) {
694 std::task::Poll::Ready(Ok(())) => {}
695 std::task::Poll::Pending => return std::task::Poll::Pending,
696 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
697 this.is_terminated = true;
698 return std::task::Poll::Ready(None);
699 }
700 std::task::Poll::Ready(Err(e)) => {
701 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
702 e.into(),
703 ))));
704 }
705 }
706
707 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
709
710 std::task::Poll::Ready(Some(match header.ordinal {
711 0x19280d20cfdd62e6 => {
712 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
713 let mut req = fidl::new_empty!(
714 RegisterRegisterDeviceRequest,
715 fidl::encoding::DefaultFuchsiaResourceDialect
716 );
717 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<RegisterRegisterDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
718 let control_handle = RegisterControlHandle { inner: this.inner.clone() };
719 Ok(RegisterRequest::RegisterDevice {
720 name: req.name,
721 driver: req.driver,
722
723 control_handle,
724 })
725 }
726 _ => Err(fidl::Error::UnknownOrdinal {
727 ordinal: header.ordinal,
728 protocol_name:
729 <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
730 }),
731 }))
732 },
733 )
734 }
735}
736
737#[derive(Debug)]
740pub enum RegisterRequest {
741 RegisterDevice {
744 name: String,
745 driver: fidl::endpoints::ClientEnd<DriverMarker>,
746 control_handle: RegisterControlHandle,
747 },
748}
749
750impl RegisterRequest {
751 #[allow(irrefutable_let_patterns)]
752 pub fn into_register_device(
753 self,
754 ) -> Option<(String, fidl::endpoints::ClientEnd<DriverMarker>, RegisterControlHandle)> {
755 if let RegisterRequest::RegisterDevice { name, driver, control_handle } = self {
756 Some((name, driver, control_handle))
757 } else {
758 None
759 }
760 }
761
762 pub fn method_name(&self) -> &'static str {
764 match *self {
765 RegisterRequest::RegisterDevice { .. } => "register_device",
766 }
767 }
768}
769
770#[derive(Debug, Clone)]
771pub struct RegisterControlHandle {
772 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
773}
774
775impl fidl::endpoints::ControlHandle for RegisterControlHandle {
776 fn shutdown(&self) {
777 self.inner.shutdown()
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}