1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub type Interface = fidl_fuchsia_net_interfaces_admin__common::Configuration;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
15pub enum UpdateError {
16 IllegalZeroValue,
19 IllegalNegativeValue,
22 OutOfRange,
24 #[doc(hidden)]
25 __SourceBreaking { unknown_ordinal: u32 },
26}
27
28#[macro_export]
30macro_rules! UpdateErrorUnknown {
31 () => {
32 _
33 };
34}
35
36impl UpdateError {
37 #[inline]
38 pub fn from_primitive(prim: u32) -> Option<Self> {
39 match prim {
40 1 => Some(Self::IllegalZeroValue),
41 2 => Some(Self::IllegalNegativeValue),
42 3 => Some(Self::OutOfRange),
43 _ => None,
44 }
45 }
46
47 #[inline]
48 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
49 match prim {
50 1 => Self::IllegalZeroValue,
51 2 => Self::IllegalNegativeValue,
52 3 => Self::OutOfRange,
53 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
54 }
55 }
56
57 #[inline]
58 pub fn unknown() -> Self {
59 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
60 }
61
62 #[inline]
63 pub const fn into_primitive(self) -> u32 {
64 match self {
65 Self::IllegalZeroValue => 1,
66 Self::IllegalNegativeValue => 2,
67 Self::OutOfRange => 3,
68 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
69 }
70 }
71
72 #[inline]
73 pub fn is_unknown(&self) -> bool {
74 match self {
75 Self::__SourceBreaking { unknown_ordinal: _ } => true,
76 _ => false,
77 }
78 }
79}
80
81#[derive(Clone, Debug, Default, PartialEq)]
83pub struct Device {
84 pub packet_buffer_sizes: Option<SocketBufferSizes>,
86 #[doc(hidden)]
87 pub __source_breaking: fidl::marker::SourceBreaking,
88}
89
90impl fidl::Persistable for Device {}
91
92#[derive(Clone, Debug, Default, PartialEq)]
94pub struct Icmp {
95 pub echo_buffer_sizes: Option<SocketBufferSizes>,
97 pub icmpv4: Option<Icmpv4>,
99 pub icmpv6: Option<Icmpv6>,
101 #[doc(hidden)]
102 pub __source_breaking: fidl::marker::SourceBreaking,
103}
104
105impl fidl::Persistable for Icmp {}
106
107#[derive(Clone, Debug, Default, PartialEq)]
109pub struct Icmpv4 {
110 #[doc(hidden)]
111 pub __source_breaking: fidl::marker::SourceBreaking,
112}
113
114impl fidl::Persistable for Icmpv4 {}
115
116#[derive(Clone, Debug, Default, PartialEq)]
118pub struct Icmpv6 {
119 #[doc(hidden)]
120 pub __source_breaking: fidl::marker::SourceBreaking,
121}
122
123impl fidl::Persistable for Icmpv6 {}
124
125#[derive(Clone, Debug, Default, PartialEq)]
127pub struct Ip {
128 pub raw_buffer_sizes: Option<SocketBufferSizes>,
130 pub ipv4: Option<Ipv4>,
132 pub ipv6: Option<Ipv6>,
134 #[doc(hidden)]
135 pub __source_breaking: fidl::marker::SourceBreaking,
136}
137
138impl fidl::Persistable for Ip {}
139
140#[derive(Clone, Debug, Default, PartialEq)]
142pub struct Ipv4 {
143 #[doc(hidden)]
144 pub __source_breaking: fidl::marker::SourceBreaking,
145}
146
147impl fidl::Persistable for Ipv4 {}
148
149#[derive(Clone, Debug, Default, PartialEq)]
151pub struct Ipv6 {
152 #[doc(hidden)]
153 pub __source_breaking: fidl::marker::SourceBreaking,
154}
155
156impl fidl::Persistable for Ipv6 {}
157
158#[derive(Clone, Debug, Default, PartialEq)]
160pub struct SocketBufferSizeRange {
161 pub max: Option<u32>,
165 pub default: Option<u32>,
171 pub min: Option<u32>,
175 #[doc(hidden)]
176 pub __source_breaking: fidl::marker::SourceBreaking,
177}
178
179impl fidl::Persistable for SocketBufferSizeRange {}
180
181#[derive(Clone, Debug, Default, PartialEq)]
183pub struct SocketBufferSizes {
184 pub send: Option<SocketBufferSizeRange>,
186 pub receive: Option<SocketBufferSizeRange>,
188 #[doc(hidden)]
189 pub __source_breaking: fidl::marker::SourceBreaking,
190}
191
192impl fidl::Persistable for SocketBufferSizes {}
193
194#[derive(Clone, Debug, Default, PartialEq)]
196pub struct Tcp {
197 pub buffer_sizes: Option<SocketBufferSizes>,
199 #[doc(hidden)]
200 pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for Tcp {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
207pub struct Udp {
208 pub buffer_sizes: Option<SocketBufferSizes>,
210 #[doc(hidden)]
211 pub __source_breaking: fidl::marker::SourceBreaking,
212}
213
214impl fidl::Persistable for Udp {}
215
216pub mod control_ordinals {
217 pub const UPDATE_INTERFACE_DEFAULTS: u64 = 0x46ea2036390abecc;
218 pub const UPDATE_TCP: u64 = 0x4e768d74ec55450f;
219 pub const UPDATE_UDP: u64 = 0x6fb82be32e7338b4;
220 pub const UPDATE_ICMP: u64 = 0x42f130ff9cc3a8d5;
221 pub const UPDATE_IP: u64 = 0x75d1074407e4d1c4;
222 pub const UPDATE_DEVICE: u64 = 0x6080a91e617e9430;
223}
224
225pub mod state_ordinals {
226 pub const GET_INTERFACE_DEFAULTS: u64 = 0x4c4824a322a705e3;
227 pub const GET_TCP: u64 = 0x4e818d8a89985b70;
228 pub const GET_UDP: u64 = 0x1af3bc1507b7a196;
229 pub const GET_ICMP: u64 = 0x4079fd71ca65e33f;
230 pub const GET_IP: u64 = 0x2c1cc13f4874956;
231 pub const GET_DEVICE: u64 = 0x5713a85352e43887;
232}
233
234mod internal {
235 use super::*;
236 unsafe impl fidl::encoding::TypeMarker for UpdateError {
237 type Owned = Self;
238
239 #[inline(always)]
240 fn inline_align(_context: fidl::encoding::Context) -> usize {
241 std::mem::align_of::<u32>()
242 }
243
244 #[inline(always)]
245 fn inline_size(_context: fidl::encoding::Context) -> usize {
246 std::mem::size_of::<u32>()
247 }
248
249 #[inline(always)]
250 fn encode_is_copy() -> bool {
251 false
252 }
253
254 #[inline(always)]
255 fn decode_is_copy() -> bool {
256 false
257 }
258 }
259
260 impl fidl::encoding::ValueTypeMarker for UpdateError {
261 type Borrowed<'a> = Self;
262 #[inline(always)]
263 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
264 *value
265 }
266 }
267
268 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for UpdateError {
269 #[inline]
270 unsafe fn encode(
271 self,
272 encoder: &mut fidl::encoding::Encoder<'_, D>,
273 offset: usize,
274 _depth: fidl::encoding::Depth,
275 ) -> fidl::Result<()> {
276 encoder.debug_check_bounds::<Self>(offset);
277 encoder.write_num(self.into_primitive(), offset);
278 Ok(())
279 }
280 }
281
282 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpdateError {
283 #[inline(always)]
284 fn new_empty() -> Self {
285 Self::unknown()
286 }
287
288 #[inline]
289 unsafe fn decode(
290 &mut self,
291 decoder: &mut fidl::encoding::Decoder<'_, D>,
292 offset: usize,
293 _depth: fidl::encoding::Depth,
294 ) -> fidl::Result<()> {
295 decoder.debug_check_bounds::<Self>(offset);
296 let prim = decoder.read_num::<u32>(offset);
297
298 *self = Self::from_primitive_allow_unknown(prim);
299 Ok(())
300 }
301 }
302
303 impl Device {
304 #[inline(always)]
305 fn max_ordinal_present(&self) -> u64 {
306 if let Some(_) = self.packet_buffer_sizes {
307 return 1;
308 }
309 0
310 }
311 }
312
313 impl fidl::encoding::ValueTypeMarker for Device {
314 type Borrowed<'a> = &'a Self;
315 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
316 value
317 }
318 }
319
320 unsafe impl fidl::encoding::TypeMarker for Device {
321 type Owned = Self;
322
323 #[inline(always)]
324 fn inline_align(_context: fidl::encoding::Context) -> usize {
325 8
326 }
327
328 #[inline(always)]
329 fn inline_size(_context: fidl::encoding::Context) -> usize {
330 16
331 }
332 }
333
334 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Device, D> for &Device {
335 unsafe fn encode(
336 self,
337 encoder: &mut fidl::encoding::Encoder<'_, D>,
338 offset: usize,
339 mut depth: fidl::encoding::Depth,
340 ) -> fidl::Result<()> {
341 encoder.debug_check_bounds::<Device>(offset);
342 let max_ordinal: u64 = self.max_ordinal_present();
344 encoder.write_num(max_ordinal, offset);
345 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
346 if max_ordinal == 0 {
348 return Ok(());
349 }
350 depth.increment()?;
351 let envelope_size = 8;
352 let bytes_len = max_ordinal as usize * envelope_size;
353 #[allow(unused_variables)]
354 let offset = encoder.out_of_line_offset(bytes_len);
355 let mut _prev_end_offset: usize = 0;
356 if 1 > max_ordinal {
357 return Ok(());
358 }
359
360 let cur_offset: usize = (1 - 1) * envelope_size;
363
364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
366
367 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizes, D>(
372 self.packet_buffer_sizes
373 .as_ref()
374 .map(<SocketBufferSizes as fidl::encoding::ValueTypeMarker>::borrow),
375 encoder,
376 offset + cur_offset,
377 depth,
378 )?;
379
380 _prev_end_offset = cur_offset + envelope_size;
381
382 Ok(())
383 }
384 }
385
386 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Device {
387 #[inline(always)]
388 fn new_empty() -> Self {
389 Self::default()
390 }
391
392 unsafe fn decode(
393 &mut self,
394 decoder: &mut fidl::encoding::Decoder<'_, D>,
395 offset: usize,
396 mut depth: fidl::encoding::Depth,
397 ) -> fidl::Result<()> {
398 decoder.debug_check_bounds::<Self>(offset);
399 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
400 None => return Err(fidl::Error::NotNullable),
401 Some(len) => len,
402 };
403 if len == 0 {
405 return Ok(());
406 };
407 depth.increment()?;
408 let envelope_size = 8;
409 let bytes_len = len * envelope_size;
410 let offset = decoder.out_of_line_offset(bytes_len)?;
411 let mut _next_ordinal_to_read = 0;
413 let mut next_offset = offset;
414 let end_offset = offset + bytes_len;
415 _next_ordinal_to_read += 1;
416 if next_offset >= end_offset {
417 return Ok(());
418 }
419
420 while _next_ordinal_to_read < 1 {
422 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
423 _next_ordinal_to_read += 1;
424 next_offset += envelope_size;
425 }
426
427 let next_out_of_line = decoder.next_out_of_line();
428 let handles_before = decoder.remaining_handles();
429 if let Some((inlined, num_bytes, num_handles)) =
430 fidl::encoding::decode_envelope_header(decoder, next_offset)?
431 {
432 let member_inline_size =
433 <SocketBufferSizes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
434 if inlined != (member_inline_size <= 4) {
435 return Err(fidl::Error::InvalidInlineBitInEnvelope);
436 }
437 let inner_offset;
438 let mut inner_depth = depth.clone();
439 if inlined {
440 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
441 inner_offset = next_offset;
442 } else {
443 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
444 inner_depth.increment()?;
445 }
446 let val_ref = self
447 .packet_buffer_sizes
448 .get_or_insert_with(|| fidl::new_empty!(SocketBufferSizes, D));
449 fidl::decode!(SocketBufferSizes, D, val_ref, decoder, inner_offset, inner_depth)?;
450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
451 {
452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
453 }
454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
456 }
457 }
458
459 next_offset += envelope_size;
460
461 while next_offset < end_offset {
463 _next_ordinal_to_read += 1;
464 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
465 next_offset += envelope_size;
466 }
467
468 Ok(())
469 }
470 }
471
472 impl Icmp {
473 #[inline(always)]
474 fn max_ordinal_present(&self) -> u64 {
475 if let Some(_) = self.icmpv6 {
476 return 3;
477 }
478 if let Some(_) = self.icmpv4 {
479 return 2;
480 }
481 if let Some(_) = self.echo_buffer_sizes {
482 return 1;
483 }
484 0
485 }
486 }
487
488 impl fidl::encoding::ValueTypeMarker for Icmp {
489 type Borrowed<'a> = &'a Self;
490 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
491 value
492 }
493 }
494
495 unsafe impl fidl::encoding::TypeMarker for Icmp {
496 type Owned = Self;
497
498 #[inline(always)]
499 fn inline_align(_context: fidl::encoding::Context) -> usize {
500 8
501 }
502
503 #[inline(always)]
504 fn inline_size(_context: fidl::encoding::Context) -> usize {
505 16
506 }
507 }
508
509 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Icmp, D> for &Icmp {
510 unsafe fn encode(
511 self,
512 encoder: &mut fidl::encoding::Encoder<'_, D>,
513 offset: usize,
514 mut depth: fidl::encoding::Depth,
515 ) -> fidl::Result<()> {
516 encoder.debug_check_bounds::<Icmp>(offset);
517 let max_ordinal: u64 = self.max_ordinal_present();
519 encoder.write_num(max_ordinal, offset);
520 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
521 if max_ordinal == 0 {
523 return Ok(());
524 }
525 depth.increment()?;
526 let envelope_size = 8;
527 let bytes_len = max_ordinal as usize * envelope_size;
528 #[allow(unused_variables)]
529 let offset = encoder.out_of_line_offset(bytes_len);
530 let mut _prev_end_offset: usize = 0;
531 if 1 > max_ordinal {
532 return Ok(());
533 }
534
535 let cur_offset: usize = (1 - 1) * envelope_size;
538
539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
541
542 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizes, D>(
547 self.echo_buffer_sizes
548 .as_ref()
549 .map(<SocketBufferSizes as fidl::encoding::ValueTypeMarker>::borrow),
550 encoder,
551 offset + cur_offset,
552 depth,
553 )?;
554
555 _prev_end_offset = cur_offset + envelope_size;
556 if 2 > max_ordinal {
557 return Ok(());
558 }
559
560 let cur_offset: usize = (2 - 1) * envelope_size;
563
564 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
566
567 fidl::encoding::encode_in_envelope_optional::<Icmpv4, D>(
572 self.icmpv4.as_ref().map(<Icmpv4 as fidl::encoding::ValueTypeMarker>::borrow),
573 encoder,
574 offset + cur_offset,
575 depth,
576 )?;
577
578 _prev_end_offset = cur_offset + envelope_size;
579 if 3 > max_ordinal {
580 return Ok(());
581 }
582
583 let cur_offset: usize = (3 - 1) * envelope_size;
586
587 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
589
590 fidl::encoding::encode_in_envelope_optional::<Icmpv6, D>(
595 self.icmpv6.as_ref().map(<Icmpv6 as fidl::encoding::ValueTypeMarker>::borrow),
596 encoder,
597 offset + cur_offset,
598 depth,
599 )?;
600
601 _prev_end_offset = cur_offset + envelope_size;
602
603 Ok(())
604 }
605 }
606
607 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Icmp {
608 #[inline(always)]
609 fn new_empty() -> Self {
610 Self::default()
611 }
612
613 unsafe fn decode(
614 &mut self,
615 decoder: &mut fidl::encoding::Decoder<'_, D>,
616 offset: usize,
617 mut depth: fidl::encoding::Depth,
618 ) -> fidl::Result<()> {
619 decoder.debug_check_bounds::<Self>(offset);
620 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
621 None => return Err(fidl::Error::NotNullable),
622 Some(len) => len,
623 };
624 if len == 0 {
626 return Ok(());
627 };
628 depth.increment()?;
629 let envelope_size = 8;
630 let bytes_len = len * envelope_size;
631 let offset = decoder.out_of_line_offset(bytes_len)?;
632 let mut _next_ordinal_to_read = 0;
634 let mut next_offset = offset;
635 let end_offset = offset + bytes_len;
636 _next_ordinal_to_read += 1;
637 if next_offset >= end_offset {
638 return Ok(());
639 }
640
641 while _next_ordinal_to_read < 1 {
643 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
644 _next_ordinal_to_read += 1;
645 next_offset += envelope_size;
646 }
647
648 let next_out_of_line = decoder.next_out_of_line();
649 let handles_before = decoder.remaining_handles();
650 if let Some((inlined, num_bytes, num_handles)) =
651 fidl::encoding::decode_envelope_header(decoder, next_offset)?
652 {
653 let member_inline_size =
654 <SocketBufferSizes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
655 if inlined != (member_inline_size <= 4) {
656 return Err(fidl::Error::InvalidInlineBitInEnvelope);
657 }
658 let inner_offset;
659 let mut inner_depth = depth.clone();
660 if inlined {
661 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
662 inner_offset = next_offset;
663 } else {
664 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
665 inner_depth.increment()?;
666 }
667 let val_ref = self
668 .echo_buffer_sizes
669 .get_or_insert_with(|| fidl::new_empty!(SocketBufferSizes, D));
670 fidl::decode!(SocketBufferSizes, D, val_ref, decoder, inner_offset, inner_depth)?;
671 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
672 {
673 return Err(fidl::Error::InvalidNumBytesInEnvelope);
674 }
675 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
676 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
677 }
678 }
679
680 next_offset += envelope_size;
681 _next_ordinal_to_read += 1;
682 if next_offset >= end_offset {
683 return Ok(());
684 }
685
686 while _next_ordinal_to_read < 2 {
688 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
689 _next_ordinal_to_read += 1;
690 next_offset += envelope_size;
691 }
692
693 let next_out_of_line = decoder.next_out_of_line();
694 let handles_before = decoder.remaining_handles();
695 if let Some((inlined, num_bytes, num_handles)) =
696 fidl::encoding::decode_envelope_header(decoder, next_offset)?
697 {
698 let member_inline_size =
699 <Icmpv4 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
700 if inlined != (member_inline_size <= 4) {
701 return Err(fidl::Error::InvalidInlineBitInEnvelope);
702 }
703 let inner_offset;
704 let mut inner_depth = depth.clone();
705 if inlined {
706 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
707 inner_offset = next_offset;
708 } else {
709 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
710 inner_depth.increment()?;
711 }
712 let val_ref = self.icmpv4.get_or_insert_with(|| fidl::new_empty!(Icmpv4, D));
713 fidl::decode!(Icmpv4, D, val_ref, decoder, inner_offset, inner_depth)?;
714 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
715 {
716 return Err(fidl::Error::InvalidNumBytesInEnvelope);
717 }
718 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
719 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
720 }
721 }
722
723 next_offset += envelope_size;
724 _next_ordinal_to_read += 1;
725 if next_offset >= end_offset {
726 return Ok(());
727 }
728
729 while _next_ordinal_to_read < 3 {
731 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
732 _next_ordinal_to_read += 1;
733 next_offset += envelope_size;
734 }
735
736 let next_out_of_line = decoder.next_out_of_line();
737 let handles_before = decoder.remaining_handles();
738 if let Some((inlined, num_bytes, num_handles)) =
739 fidl::encoding::decode_envelope_header(decoder, next_offset)?
740 {
741 let member_inline_size =
742 <Icmpv6 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
743 if inlined != (member_inline_size <= 4) {
744 return Err(fidl::Error::InvalidInlineBitInEnvelope);
745 }
746 let inner_offset;
747 let mut inner_depth = depth.clone();
748 if inlined {
749 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
750 inner_offset = next_offset;
751 } else {
752 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
753 inner_depth.increment()?;
754 }
755 let val_ref = self.icmpv6.get_or_insert_with(|| fidl::new_empty!(Icmpv6, D));
756 fidl::decode!(Icmpv6, D, val_ref, decoder, inner_offset, inner_depth)?;
757 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
758 {
759 return Err(fidl::Error::InvalidNumBytesInEnvelope);
760 }
761 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
762 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
763 }
764 }
765
766 next_offset += envelope_size;
767
768 while next_offset < end_offset {
770 _next_ordinal_to_read += 1;
771 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
772 next_offset += envelope_size;
773 }
774
775 Ok(())
776 }
777 }
778
779 impl Icmpv4 {
780 #[inline(always)]
781 fn max_ordinal_present(&self) -> u64 {
782 0
783 }
784 }
785
786 impl fidl::encoding::ValueTypeMarker for Icmpv4 {
787 type Borrowed<'a> = &'a Self;
788 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
789 value
790 }
791 }
792
793 unsafe impl fidl::encoding::TypeMarker for Icmpv4 {
794 type Owned = Self;
795
796 #[inline(always)]
797 fn inline_align(_context: fidl::encoding::Context) -> usize {
798 8
799 }
800
801 #[inline(always)]
802 fn inline_size(_context: fidl::encoding::Context) -> usize {
803 16
804 }
805 }
806
807 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Icmpv4, D> for &Icmpv4 {
808 unsafe fn encode(
809 self,
810 encoder: &mut fidl::encoding::Encoder<'_, D>,
811 offset: usize,
812 mut depth: fidl::encoding::Depth,
813 ) -> fidl::Result<()> {
814 encoder.debug_check_bounds::<Icmpv4>(offset);
815 let max_ordinal: u64 = self.max_ordinal_present();
817 encoder.write_num(max_ordinal, offset);
818 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
819 if max_ordinal == 0 {
821 return Ok(());
822 }
823 depth.increment()?;
824 let envelope_size = 8;
825 let bytes_len = max_ordinal as usize * envelope_size;
826 #[allow(unused_variables)]
827 let offset = encoder.out_of_line_offset(bytes_len);
828 let mut _prev_end_offset: usize = 0;
829
830 Ok(())
831 }
832 }
833
834 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Icmpv4 {
835 #[inline(always)]
836 fn new_empty() -> Self {
837 Self::default()
838 }
839
840 unsafe fn decode(
841 &mut self,
842 decoder: &mut fidl::encoding::Decoder<'_, D>,
843 offset: usize,
844 mut depth: fidl::encoding::Depth,
845 ) -> fidl::Result<()> {
846 decoder.debug_check_bounds::<Self>(offset);
847 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
848 None => return Err(fidl::Error::NotNullable),
849 Some(len) => len,
850 };
851 if len == 0 {
853 return Ok(());
854 };
855 depth.increment()?;
856 let envelope_size = 8;
857 let bytes_len = len * envelope_size;
858 let offset = decoder.out_of_line_offset(bytes_len)?;
859 let mut _next_ordinal_to_read = 0;
861 let mut next_offset = offset;
862 let end_offset = offset + bytes_len;
863
864 while next_offset < end_offset {
866 _next_ordinal_to_read += 1;
867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
868 next_offset += envelope_size;
869 }
870
871 Ok(())
872 }
873 }
874
875 impl Icmpv6 {
876 #[inline(always)]
877 fn max_ordinal_present(&self) -> u64 {
878 0
879 }
880 }
881
882 impl fidl::encoding::ValueTypeMarker for Icmpv6 {
883 type Borrowed<'a> = &'a Self;
884 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
885 value
886 }
887 }
888
889 unsafe impl fidl::encoding::TypeMarker for Icmpv6 {
890 type Owned = Self;
891
892 #[inline(always)]
893 fn inline_align(_context: fidl::encoding::Context) -> usize {
894 8
895 }
896
897 #[inline(always)]
898 fn inline_size(_context: fidl::encoding::Context) -> usize {
899 16
900 }
901 }
902
903 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Icmpv6, D> for &Icmpv6 {
904 unsafe fn encode(
905 self,
906 encoder: &mut fidl::encoding::Encoder<'_, D>,
907 offset: usize,
908 mut depth: fidl::encoding::Depth,
909 ) -> fidl::Result<()> {
910 encoder.debug_check_bounds::<Icmpv6>(offset);
911 let max_ordinal: u64 = self.max_ordinal_present();
913 encoder.write_num(max_ordinal, offset);
914 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
915 if max_ordinal == 0 {
917 return Ok(());
918 }
919 depth.increment()?;
920 let envelope_size = 8;
921 let bytes_len = max_ordinal as usize * envelope_size;
922 #[allow(unused_variables)]
923 let offset = encoder.out_of_line_offset(bytes_len);
924 let mut _prev_end_offset: usize = 0;
925
926 Ok(())
927 }
928 }
929
930 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Icmpv6 {
931 #[inline(always)]
932 fn new_empty() -> Self {
933 Self::default()
934 }
935
936 unsafe fn decode(
937 &mut self,
938 decoder: &mut fidl::encoding::Decoder<'_, D>,
939 offset: usize,
940 mut depth: fidl::encoding::Depth,
941 ) -> fidl::Result<()> {
942 decoder.debug_check_bounds::<Self>(offset);
943 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
944 None => return Err(fidl::Error::NotNullable),
945 Some(len) => len,
946 };
947 if len == 0 {
949 return Ok(());
950 };
951 depth.increment()?;
952 let envelope_size = 8;
953 let bytes_len = len * envelope_size;
954 let offset = decoder.out_of_line_offset(bytes_len)?;
955 let mut _next_ordinal_to_read = 0;
957 let mut next_offset = offset;
958 let end_offset = offset + bytes_len;
959
960 while next_offset < end_offset {
962 _next_ordinal_to_read += 1;
963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
964 next_offset += envelope_size;
965 }
966
967 Ok(())
968 }
969 }
970
971 impl Ip {
972 #[inline(always)]
973 fn max_ordinal_present(&self) -> u64 {
974 if let Some(_) = self.ipv6 {
975 return 3;
976 }
977 if let Some(_) = self.ipv4 {
978 return 2;
979 }
980 if let Some(_) = self.raw_buffer_sizes {
981 return 1;
982 }
983 0
984 }
985 }
986
987 impl fidl::encoding::ValueTypeMarker for Ip {
988 type Borrowed<'a> = &'a Self;
989 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
990 value
991 }
992 }
993
994 unsafe impl fidl::encoding::TypeMarker for Ip {
995 type Owned = Self;
996
997 #[inline(always)]
998 fn inline_align(_context: fidl::encoding::Context) -> usize {
999 8
1000 }
1001
1002 #[inline(always)]
1003 fn inline_size(_context: fidl::encoding::Context) -> usize {
1004 16
1005 }
1006 }
1007
1008 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ip, D> for &Ip {
1009 unsafe fn encode(
1010 self,
1011 encoder: &mut fidl::encoding::Encoder<'_, D>,
1012 offset: usize,
1013 mut depth: fidl::encoding::Depth,
1014 ) -> fidl::Result<()> {
1015 encoder.debug_check_bounds::<Ip>(offset);
1016 let max_ordinal: u64 = self.max_ordinal_present();
1018 encoder.write_num(max_ordinal, offset);
1019 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1020 if max_ordinal == 0 {
1022 return Ok(());
1023 }
1024 depth.increment()?;
1025 let envelope_size = 8;
1026 let bytes_len = max_ordinal as usize * envelope_size;
1027 #[allow(unused_variables)]
1028 let offset = encoder.out_of_line_offset(bytes_len);
1029 let mut _prev_end_offset: usize = 0;
1030 if 1 > max_ordinal {
1031 return Ok(());
1032 }
1033
1034 let cur_offset: usize = (1 - 1) * envelope_size;
1037
1038 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1040
1041 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizes, D>(
1046 self.raw_buffer_sizes
1047 .as_ref()
1048 .map(<SocketBufferSizes as fidl::encoding::ValueTypeMarker>::borrow),
1049 encoder,
1050 offset + cur_offset,
1051 depth,
1052 )?;
1053
1054 _prev_end_offset = cur_offset + envelope_size;
1055 if 2 > max_ordinal {
1056 return Ok(());
1057 }
1058
1059 let cur_offset: usize = (2 - 1) * envelope_size;
1062
1063 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1065
1066 fidl::encoding::encode_in_envelope_optional::<Ipv4, D>(
1071 self.ipv4.as_ref().map(<Ipv4 as fidl::encoding::ValueTypeMarker>::borrow),
1072 encoder,
1073 offset + cur_offset,
1074 depth,
1075 )?;
1076
1077 _prev_end_offset = cur_offset + envelope_size;
1078 if 3 > max_ordinal {
1079 return Ok(());
1080 }
1081
1082 let cur_offset: usize = (3 - 1) * envelope_size;
1085
1086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1088
1089 fidl::encoding::encode_in_envelope_optional::<Ipv6, D>(
1094 self.ipv6.as_ref().map(<Ipv6 as fidl::encoding::ValueTypeMarker>::borrow),
1095 encoder,
1096 offset + cur_offset,
1097 depth,
1098 )?;
1099
1100 _prev_end_offset = cur_offset + envelope_size;
1101
1102 Ok(())
1103 }
1104 }
1105
1106 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ip {
1107 #[inline(always)]
1108 fn new_empty() -> Self {
1109 Self::default()
1110 }
1111
1112 unsafe fn decode(
1113 &mut self,
1114 decoder: &mut fidl::encoding::Decoder<'_, D>,
1115 offset: usize,
1116 mut depth: fidl::encoding::Depth,
1117 ) -> fidl::Result<()> {
1118 decoder.debug_check_bounds::<Self>(offset);
1119 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1120 None => return Err(fidl::Error::NotNullable),
1121 Some(len) => len,
1122 };
1123 if len == 0 {
1125 return Ok(());
1126 };
1127 depth.increment()?;
1128 let envelope_size = 8;
1129 let bytes_len = len * envelope_size;
1130 let offset = decoder.out_of_line_offset(bytes_len)?;
1131 let mut _next_ordinal_to_read = 0;
1133 let mut next_offset = offset;
1134 let end_offset = offset + bytes_len;
1135 _next_ordinal_to_read += 1;
1136 if next_offset >= end_offset {
1137 return Ok(());
1138 }
1139
1140 while _next_ordinal_to_read < 1 {
1142 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1143 _next_ordinal_to_read += 1;
1144 next_offset += envelope_size;
1145 }
1146
1147 let next_out_of_line = decoder.next_out_of_line();
1148 let handles_before = decoder.remaining_handles();
1149 if let Some((inlined, num_bytes, num_handles)) =
1150 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1151 {
1152 let member_inline_size =
1153 <SocketBufferSizes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1154 if inlined != (member_inline_size <= 4) {
1155 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1156 }
1157 let inner_offset;
1158 let mut inner_depth = depth.clone();
1159 if inlined {
1160 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1161 inner_offset = next_offset;
1162 } else {
1163 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1164 inner_depth.increment()?;
1165 }
1166 let val_ref = self
1167 .raw_buffer_sizes
1168 .get_or_insert_with(|| fidl::new_empty!(SocketBufferSizes, D));
1169 fidl::decode!(SocketBufferSizes, D, val_ref, decoder, inner_offset, inner_depth)?;
1170 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1171 {
1172 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1173 }
1174 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1175 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1176 }
1177 }
1178
1179 next_offset += envelope_size;
1180 _next_ordinal_to_read += 1;
1181 if next_offset >= end_offset {
1182 return Ok(());
1183 }
1184
1185 while _next_ordinal_to_read < 2 {
1187 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1188 _next_ordinal_to_read += 1;
1189 next_offset += envelope_size;
1190 }
1191
1192 let next_out_of_line = decoder.next_out_of_line();
1193 let handles_before = decoder.remaining_handles();
1194 if let Some((inlined, num_bytes, num_handles)) =
1195 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1196 {
1197 let member_inline_size =
1198 <Ipv4 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1199 if inlined != (member_inline_size <= 4) {
1200 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1201 }
1202 let inner_offset;
1203 let mut inner_depth = depth.clone();
1204 if inlined {
1205 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1206 inner_offset = next_offset;
1207 } else {
1208 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1209 inner_depth.increment()?;
1210 }
1211 let val_ref = self.ipv4.get_or_insert_with(|| fidl::new_empty!(Ipv4, D));
1212 fidl::decode!(Ipv4, D, val_ref, decoder, inner_offset, inner_depth)?;
1213 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1214 {
1215 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1216 }
1217 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1218 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1219 }
1220 }
1221
1222 next_offset += envelope_size;
1223 _next_ordinal_to_read += 1;
1224 if next_offset >= end_offset {
1225 return Ok(());
1226 }
1227
1228 while _next_ordinal_to_read < 3 {
1230 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1231 _next_ordinal_to_read += 1;
1232 next_offset += envelope_size;
1233 }
1234
1235 let next_out_of_line = decoder.next_out_of_line();
1236 let handles_before = decoder.remaining_handles();
1237 if let Some((inlined, num_bytes, num_handles)) =
1238 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1239 {
1240 let member_inline_size =
1241 <Ipv6 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1242 if inlined != (member_inline_size <= 4) {
1243 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1244 }
1245 let inner_offset;
1246 let mut inner_depth = depth.clone();
1247 if inlined {
1248 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1249 inner_offset = next_offset;
1250 } else {
1251 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1252 inner_depth.increment()?;
1253 }
1254 let val_ref = self.ipv6.get_or_insert_with(|| fidl::new_empty!(Ipv6, D));
1255 fidl::decode!(Ipv6, D, val_ref, decoder, inner_offset, inner_depth)?;
1256 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1257 {
1258 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1259 }
1260 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1261 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1262 }
1263 }
1264
1265 next_offset += envelope_size;
1266
1267 while next_offset < end_offset {
1269 _next_ordinal_to_read += 1;
1270 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1271 next_offset += envelope_size;
1272 }
1273
1274 Ok(())
1275 }
1276 }
1277
1278 impl Ipv4 {
1279 #[inline(always)]
1280 fn max_ordinal_present(&self) -> u64 {
1281 0
1282 }
1283 }
1284
1285 impl fidl::encoding::ValueTypeMarker for Ipv4 {
1286 type Borrowed<'a> = &'a Self;
1287 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1288 value
1289 }
1290 }
1291
1292 unsafe impl fidl::encoding::TypeMarker for Ipv4 {
1293 type Owned = Self;
1294
1295 #[inline(always)]
1296 fn inline_align(_context: fidl::encoding::Context) -> usize {
1297 8
1298 }
1299
1300 #[inline(always)]
1301 fn inline_size(_context: fidl::encoding::Context) -> usize {
1302 16
1303 }
1304 }
1305
1306 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ipv4, D> for &Ipv4 {
1307 unsafe fn encode(
1308 self,
1309 encoder: &mut fidl::encoding::Encoder<'_, D>,
1310 offset: usize,
1311 mut depth: fidl::encoding::Depth,
1312 ) -> fidl::Result<()> {
1313 encoder.debug_check_bounds::<Ipv4>(offset);
1314 let max_ordinal: u64 = self.max_ordinal_present();
1316 encoder.write_num(max_ordinal, offset);
1317 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1318 if max_ordinal == 0 {
1320 return Ok(());
1321 }
1322 depth.increment()?;
1323 let envelope_size = 8;
1324 let bytes_len = max_ordinal as usize * envelope_size;
1325 #[allow(unused_variables)]
1326 let offset = encoder.out_of_line_offset(bytes_len);
1327 let mut _prev_end_offset: usize = 0;
1328
1329 Ok(())
1330 }
1331 }
1332
1333 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ipv4 {
1334 #[inline(always)]
1335 fn new_empty() -> Self {
1336 Self::default()
1337 }
1338
1339 unsafe fn decode(
1340 &mut self,
1341 decoder: &mut fidl::encoding::Decoder<'_, D>,
1342 offset: usize,
1343 mut depth: fidl::encoding::Depth,
1344 ) -> fidl::Result<()> {
1345 decoder.debug_check_bounds::<Self>(offset);
1346 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1347 None => return Err(fidl::Error::NotNullable),
1348 Some(len) => len,
1349 };
1350 if len == 0 {
1352 return Ok(());
1353 };
1354 depth.increment()?;
1355 let envelope_size = 8;
1356 let bytes_len = len * envelope_size;
1357 let offset = decoder.out_of_line_offset(bytes_len)?;
1358 let mut _next_ordinal_to_read = 0;
1360 let mut next_offset = offset;
1361 let end_offset = offset + bytes_len;
1362
1363 while next_offset < end_offset {
1365 _next_ordinal_to_read += 1;
1366 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1367 next_offset += envelope_size;
1368 }
1369
1370 Ok(())
1371 }
1372 }
1373
1374 impl Ipv6 {
1375 #[inline(always)]
1376 fn max_ordinal_present(&self) -> u64 {
1377 0
1378 }
1379 }
1380
1381 impl fidl::encoding::ValueTypeMarker for Ipv6 {
1382 type Borrowed<'a> = &'a Self;
1383 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1384 value
1385 }
1386 }
1387
1388 unsafe impl fidl::encoding::TypeMarker for Ipv6 {
1389 type Owned = Self;
1390
1391 #[inline(always)]
1392 fn inline_align(_context: fidl::encoding::Context) -> usize {
1393 8
1394 }
1395
1396 #[inline(always)]
1397 fn inline_size(_context: fidl::encoding::Context) -> usize {
1398 16
1399 }
1400 }
1401
1402 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Ipv6, D> for &Ipv6 {
1403 unsafe fn encode(
1404 self,
1405 encoder: &mut fidl::encoding::Encoder<'_, D>,
1406 offset: usize,
1407 mut depth: fidl::encoding::Depth,
1408 ) -> fidl::Result<()> {
1409 encoder.debug_check_bounds::<Ipv6>(offset);
1410 let max_ordinal: u64 = self.max_ordinal_present();
1412 encoder.write_num(max_ordinal, offset);
1413 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1414 if max_ordinal == 0 {
1416 return Ok(());
1417 }
1418 depth.increment()?;
1419 let envelope_size = 8;
1420 let bytes_len = max_ordinal as usize * envelope_size;
1421 #[allow(unused_variables)]
1422 let offset = encoder.out_of_line_offset(bytes_len);
1423 let mut _prev_end_offset: usize = 0;
1424
1425 Ok(())
1426 }
1427 }
1428
1429 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Ipv6 {
1430 #[inline(always)]
1431 fn new_empty() -> Self {
1432 Self::default()
1433 }
1434
1435 unsafe fn decode(
1436 &mut self,
1437 decoder: &mut fidl::encoding::Decoder<'_, D>,
1438 offset: usize,
1439 mut depth: fidl::encoding::Depth,
1440 ) -> fidl::Result<()> {
1441 decoder.debug_check_bounds::<Self>(offset);
1442 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1443 None => return Err(fidl::Error::NotNullable),
1444 Some(len) => len,
1445 };
1446 if len == 0 {
1448 return Ok(());
1449 };
1450 depth.increment()?;
1451 let envelope_size = 8;
1452 let bytes_len = len * envelope_size;
1453 let offset = decoder.out_of_line_offset(bytes_len)?;
1454 let mut _next_ordinal_to_read = 0;
1456 let mut next_offset = offset;
1457 let end_offset = offset + bytes_len;
1458
1459 while next_offset < end_offset {
1461 _next_ordinal_to_read += 1;
1462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1463 next_offset += envelope_size;
1464 }
1465
1466 Ok(())
1467 }
1468 }
1469
1470 impl SocketBufferSizeRange {
1471 #[inline(always)]
1472 fn max_ordinal_present(&self) -> u64 {
1473 if let Some(_) = self.min {
1474 return 3;
1475 }
1476 if let Some(_) = self.default {
1477 return 2;
1478 }
1479 if let Some(_) = self.max {
1480 return 1;
1481 }
1482 0
1483 }
1484 }
1485
1486 impl fidl::encoding::ValueTypeMarker for SocketBufferSizeRange {
1487 type Borrowed<'a> = &'a Self;
1488 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1489 value
1490 }
1491 }
1492
1493 unsafe impl fidl::encoding::TypeMarker for SocketBufferSizeRange {
1494 type Owned = Self;
1495
1496 #[inline(always)]
1497 fn inline_align(_context: fidl::encoding::Context) -> usize {
1498 8
1499 }
1500
1501 #[inline(always)]
1502 fn inline_size(_context: fidl::encoding::Context) -> usize {
1503 16
1504 }
1505 }
1506
1507 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SocketBufferSizeRange, D>
1508 for &SocketBufferSizeRange
1509 {
1510 unsafe fn encode(
1511 self,
1512 encoder: &mut fidl::encoding::Encoder<'_, D>,
1513 offset: usize,
1514 mut depth: fidl::encoding::Depth,
1515 ) -> fidl::Result<()> {
1516 encoder.debug_check_bounds::<SocketBufferSizeRange>(offset);
1517 let max_ordinal: u64 = self.max_ordinal_present();
1519 encoder.write_num(max_ordinal, offset);
1520 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1521 if max_ordinal == 0 {
1523 return Ok(());
1524 }
1525 depth.increment()?;
1526 let envelope_size = 8;
1527 let bytes_len = max_ordinal as usize * envelope_size;
1528 #[allow(unused_variables)]
1529 let offset = encoder.out_of_line_offset(bytes_len);
1530 let mut _prev_end_offset: usize = 0;
1531 if 1 > max_ordinal {
1532 return Ok(());
1533 }
1534
1535 let cur_offset: usize = (1 - 1) * envelope_size;
1538
1539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1541
1542 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1547 self.max.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1548 encoder,
1549 offset + cur_offset,
1550 depth,
1551 )?;
1552
1553 _prev_end_offset = cur_offset + envelope_size;
1554 if 2 > max_ordinal {
1555 return Ok(());
1556 }
1557
1558 let cur_offset: usize = (2 - 1) * envelope_size;
1561
1562 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1564
1565 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1570 self.default.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1571 encoder,
1572 offset + cur_offset,
1573 depth,
1574 )?;
1575
1576 _prev_end_offset = cur_offset + envelope_size;
1577 if 3 > max_ordinal {
1578 return Ok(());
1579 }
1580
1581 let cur_offset: usize = (3 - 1) * envelope_size;
1584
1585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1587
1588 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1593 self.min.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1594 encoder,
1595 offset + cur_offset,
1596 depth,
1597 )?;
1598
1599 _prev_end_offset = cur_offset + envelope_size;
1600
1601 Ok(())
1602 }
1603 }
1604
1605 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SocketBufferSizeRange {
1606 #[inline(always)]
1607 fn new_empty() -> Self {
1608 Self::default()
1609 }
1610
1611 unsafe fn decode(
1612 &mut self,
1613 decoder: &mut fidl::encoding::Decoder<'_, D>,
1614 offset: usize,
1615 mut depth: fidl::encoding::Depth,
1616 ) -> fidl::Result<()> {
1617 decoder.debug_check_bounds::<Self>(offset);
1618 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1619 None => return Err(fidl::Error::NotNullable),
1620 Some(len) => len,
1621 };
1622 if len == 0 {
1624 return Ok(());
1625 };
1626 depth.increment()?;
1627 let envelope_size = 8;
1628 let bytes_len = len * envelope_size;
1629 let offset = decoder.out_of_line_offset(bytes_len)?;
1630 let mut _next_ordinal_to_read = 0;
1632 let mut next_offset = offset;
1633 let end_offset = offset + bytes_len;
1634 _next_ordinal_to_read += 1;
1635 if next_offset >= end_offset {
1636 return Ok(());
1637 }
1638
1639 while _next_ordinal_to_read < 1 {
1641 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1642 _next_ordinal_to_read += 1;
1643 next_offset += envelope_size;
1644 }
1645
1646 let next_out_of_line = decoder.next_out_of_line();
1647 let handles_before = decoder.remaining_handles();
1648 if let Some((inlined, num_bytes, num_handles)) =
1649 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1650 {
1651 let member_inline_size =
1652 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1653 if inlined != (member_inline_size <= 4) {
1654 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1655 }
1656 let inner_offset;
1657 let mut inner_depth = depth.clone();
1658 if inlined {
1659 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1660 inner_offset = next_offset;
1661 } else {
1662 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1663 inner_depth.increment()?;
1664 }
1665 let val_ref = self.max.get_or_insert_with(|| fidl::new_empty!(u32, D));
1666 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1667 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1668 {
1669 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1670 }
1671 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1672 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1673 }
1674 }
1675
1676 next_offset += envelope_size;
1677 _next_ordinal_to_read += 1;
1678 if next_offset >= end_offset {
1679 return Ok(());
1680 }
1681
1682 while _next_ordinal_to_read < 2 {
1684 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1685 _next_ordinal_to_read += 1;
1686 next_offset += envelope_size;
1687 }
1688
1689 let next_out_of_line = decoder.next_out_of_line();
1690 let handles_before = decoder.remaining_handles();
1691 if let Some((inlined, num_bytes, num_handles)) =
1692 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1693 {
1694 let member_inline_size =
1695 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1696 if inlined != (member_inline_size <= 4) {
1697 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1698 }
1699 let inner_offset;
1700 let mut inner_depth = depth.clone();
1701 if inlined {
1702 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1703 inner_offset = next_offset;
1704 } else {
1705 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1706 inner_depth.increment()?;
1707 }
1708 let val_ref = self.default.get_or_insert_with(|| fidl::new_empty!(u32, D));
1709 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1710 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1711 {
1712 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1713 }
1714 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1715 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1716 }
1717 }
1718
1719 next_offset += envelope_size;
1720 _next_ordinal_to_read += 1;
1721 if next_offset >= end_offset {
1722 return Ok(());
1723 }
1724
1725 while _next_ordinal_to_read < 3 {
1727 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1728 _next_ordinal_to_read += 1;
1729 next_offset += envelope_size;
1730 }
1731
1732 let next_out_of_line = decoder.next_out_of_line();
1733 let handles_before = decoder.remaining_handles();
1734 if let Some((inlined, num_bytes, num_handles)) =
1735 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1736 {
1737 let member_inline_size =
1738 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1739 if inlined != (member_inline_size <= 4) {
1740 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1741 }
1742 let inner_offset;
1743 let mut inner_depth = depth.clone();
1744 if inlined {
1745 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1746 inner_offset = next_offset;
1747 } else {
1748 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1749 inner_depth.increment()?;
1750 }
1751 let val_ref = self.min.get_or_insert_with(|| fidl::new_empty!(u32, D));
1752 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1753 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1754 {
1755 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1756 }
1757 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1758 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1759 }
1760 }
1761
1762 next_offset += envelope_size;
1763
1764 while next_offset < end_offset {
1766 _next_ordinal_to_read += 1;
1767 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1768 next_offset += envelope_size;
1769 }
1770
1771 Ok(())
1772 }
1773 }
1774
1775 impl SocketBufferSizes {
1776 #[inline(always)]
1777 fn max_ordinal_present(&self) -> u64 {
1778 if let Some(_) = self.receive {
1779 return 2;
1780 }
1781 if let Some(_) = self.send {
1782 return 1;
1783 }
1784 0
1785 }
1786 }
1787
1788 impl fidl::encoding::ValueTypeMarker for SocketBufferSizes {
1789 type Borrowed<'a> = &'a Self;
1790 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1791 value
1792 }
1793 }
1794
1795 unsafe impl fidl::encoding::TypeMarker for SocketBufferSizes {
1796 type Owned = Self;
1797
1798 #[inline(always)]
1799 fn inline_align(_context: fidl::encoding::Context) -> usize {
1800 8
1801 }
1802
1803 #[inline(always)]
1804 fn inline_size(_context: fidl::encoding::Context) -> usize {
1805 16
1806 }
1807 }
1808
1809 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SocketBufferSizes, D>
1810 for &SocketBufferSizes
1811 {
1812 unsafe fn encode(
1813 self,
1814 encoder: &mut fidl::encoding::Encoder<'_, D>,
1815 offset: usize,
1816 mut depth: fidl::encoding::Depth,
1817 ) -> fidl::Result<()> {
1818 encoder.debug_check_bounds::<SocketBufferSizes>(offset);
1819 let max_ordinal: u64 = self.max_ordinal_present();
1821 encoder.write_num(max_ordinal, offset);
1822 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1823 if max_ordinal == 0 {
1825 return Ok(());
1826 }
1827 depth.increment()?;
1828 let envelope_size = 8;
1829 let bytes_len = max_ordinal as usize * envelope_size;
1830 #[allow(unused_variables)]
1831 let offset = encoder.out_of_line_offset(bytes_len);
1832 let mut _prev_end_offset: usize = 0;
1833 if 1 > max_ordinal {
1834 return Ok(());
1835 }
1836
1837 let cur_offset: usize = (1 - 1) * envelope_size;
1840
1841 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1843
1844 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizeRange, D>(
1849 self.send
1850 .as_ref()
1851 .map(<SocketBufferSizeRange as fidl::encoding::ValueTypeMarker>::borrow),
1852 encoder,
1853 offset + cur_offset,
1854 depth,
1855 )?;
1856
1857 _prev_end_offset = cur_offset + envelope_size;
1858 if 2 > max_ordinal {
1859 return Ok(());
1860 }
1861
1862 let cur_offset: usize = (2 - 1) * envelope_size;
1865
1866 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1868
1869 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizeRange, D>(
1874 self.receive
1875 .as_ref()
1876 .map(<SocketBufferSizeRange as fidl::encoding::ValueTypeMarker>::borrow),
1877 encoder,
1878 offset + cur_offset,
1879 depth,
1880 )?;
1881
1882 _prev_end_offset = cur_offset + envelope_size;
1883
1884 Ok(())
1885 }
1886 }
1887
1888 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SocketBufferSizes {
1889 #[inline(always)]
1890 fn new_empty() -> Self {
1891 Self::default()
1892 }
1893
1894 unsafe fn decode(
1895 &mut self,
1896 decoder: &mut fidl::encoding::Decoder<'_, D>,
1897 offset: usize,
1898 mut depth: fidl::encoding::Depth,
1899 ) -> fidl::Result<()> {
1900 decoder.debug_check_bounds::<Self>(offset);
1901 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1902 None => return Err(fidl::Error::NotNullable),
1903 Some(len) => len,
1904 };
1905 if len == 0 {
1907 return Ok(());
1908 };
1909 depth.increment()?;
1910 let envelope_size = 8;
1911 let bytes_len = len * envelope_size;
1912 let offset = decoder.out_of_line_offset(bytes_len)?;
1913 let mut _next_ordinal_to_read = 0;
1915 let mut next_offset = offset;
1916 let end_offset = offset + bytes_len;
1917 _next_ordinal_to_read += 1;
1918 if next_offset >= end_offset {
1919 return Ok(());
1920 }
1921
1922 while _next_ordinal_to_read < 1 {
1924 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1925 _next_ordinal_to_read += 1;
1926 next_offset += envelope_size;
1927 }
1928
1929 let next_out_of_line = decoder.next_out_of_line();
1930 let handles_before = decoder.remaining_handles();
1931 if let Some((inlined, num_bytes, num_handles)) =
1932 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1933 {
1934 let member_inline_size =
1935 <SocketBufferSizeRange as fidl::encoding::TypeMarker>::inline_size(
1936 decoder.context,
1937 );
1938 if inlined != (member_inline_size <= 4) {
1939 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1940 }
1941 let inner_offset;
1942 let mut inner_depth = depth.clone();
1943 if inlined {
1944 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1945 inner_offset = next_offset;
1946 } else {
1947 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1948 inner_depth.increment()?;
1949 }
1950 let val_ref =
1951 self.send.get_or_insert_with(|| fidl::new_empty!(SocketBufferSizeRange, D));
1952 fidl::decode!(
1953 SocketBufferSizeRange,
1954 D,
1955 val_ref,
1956 decoder,
1957 inner_offset,
1958 inner_depth
1959 )?;
1960 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1961 {
1962 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1963 }
1964 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1965 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1966 }
1967 }
1968
1969 next_offset += envelope_size;
1970 _next_ordinal_to_read += 1;
1971 if next_offset >= end_offset {
1972 return Ok(());
1973 }
1974
1975 while _next_ordinal_to_read < 2 {
1977 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1978 _next_ordinal_to_read += 1;
1979 next_offset += envelope_size;
1980 }
1981
1982 let next_out_of_line = decoder.next_out_of_line();
1983 let handles_before = decoder.remaining_handles();
1984 if let Some((inlined, num_bytes, num_handles)) =
1985 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1986 {
1987 let member_inline_size =
1988 <SocketBufferSizeRange as fidl::encoding::TypeMarker>::inline_size(
1989 decoder.context,
1990 );
1991 if inlined != (member_inline_size <= 4) {
1992 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1993 }
1994 let inner_offset;
1995 let mut inner_depth = depth.clone();
1996 if inlined {
1997 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1998 inner_offset = next_offset;
1999 } else {
2000 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2001 inner_depth.increment()?;
2002 }
2003 let val_ref =
2004 self.receive.get_or_insert_with(|| fidl::new_empty!(SocketBufferSizeRange, D));
2005 fidl::decode!(
2006 SocketBufferSizeRange,
2007 D,
2008 val_ref,
2009 decoder,
2010 inner_offset,
2011 inner_depth
2012 )?;
2013 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2014 {
2015 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2016 }
2017 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2018 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2019 }
2020 }
2021
2022 next_offset += envelope_size;
2023
2024 while next_offset < end_offset {
2026 _next_ordinal_to_read += 1;
2027 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2028 next_offset += envelope_size;
2029 }
2030
2031 Ok(())
2032 }
2033 }
2034
2035 impl Tcp {
2036 #[inline(always)]
2037 fn max_ordinal_present(&self) -> u64 {
2038 if let Some(_) = self.buffer_sizes {
2039 return 1;
2040 }
2041 0
2042 }
2043 }
2044
2045 impl fidl::encoding::ValueTypeMarker for Tcp {
2046 type Borrowed<'a> = &'a Self;
2047 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2048 value
2049 }
2050 }
2051
2052 unsafe impl fidl::encoding::TypeMarker for Tcp {
2053 type Owned = Self;
2054
2055 #[inline(always)]
2056 fn inline_align(_context: fidl::encoding::Context) -> usize {
2057 8
2058 }
2059
2060 #[inline(always)]
2061 fn inline_size(_context: fidl::encoding::Context) -> usize {
2062 16
2063 }
2064 }
2065
2066 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Tcp, D> for &Tcp {
2067 unsafe fn encode(
2068 self,
2069 encoder: &mut fidl::encoding::Encoder<'_, D>,
2070 offset: usize,
2071 mut depth: fidl::encoding::Depth,
2072 ) -> fidl::Result<()> {
2073 encoder.debug_check_bounds::<Tcp>(offset);
2074 let max_ordinal: u64 = self.max_ordinal_present();
2076 encoder.write_num(max_ordinal, offset);
2077 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2078 if max_ordinal == 0 {
2080 return Ok(());
2081 }
2082 depth.increment()?;
2083 let envelope_size = 8;
2084 let bytes_len = max_ordinal as usize * envelope_size;
2085 #[allow(unused_variables)]
2086 let offset = encoder.out_of_line_offset(bytes_len);
2087 let mut _prev_end_offset: usize = 0;
2088 if 1 > max_ordinal {
2089 return Ok(());
2090 }
2091
2092 let cur_offset: usize = (1 - 1) * envelope_size;
2095
2096 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2098
2099 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizes, D>(
2104 self.buffer_sizes
2105 .as_ref()
2106 .map(<SocketBufferSizes as fidl::encoding::ValueTypeMarker>::borrow),
2107 encoder,
2108 offset + cur_offset,
2109 depth,
2110 )?;
2111
2112 _prev_end_offset = cur_offset + envelope_size;
2113
2114 Ok(())
2115 }
2116 }
2117
2118 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Tcp {
2119 #[inline(always)]
2120 fn new_empty() -> Self {
2121 Self::default()
2122 }
2123
2124 unsafe fn decode(
2125 &mut self,
2126 decoder: &mut fidl::encoding::Decoder<'_, D>,
2127 offset: usize,
2128 mut depth: fidl::encoding::Depth,
2129 ) -> fidl::Result<()> {
2130 decoder.debug_check_bounds::<Self>(offset);
2131 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2132 None => return Err(fidl::Error::NotNullable),
2133 Some(len) => len,
2134 };
2135 if len == 0 {
2137 return Ok(());
2138 };
2139 depth.increment()?;
2140 let envelope_size = 8;
2141 let bytes_len = len * envelope_size;
2142 let offset = decoder.out_of_line_offset(bytes_len)?;
2143 let mut _next_ordinal_to_read = 0;
2145 let mut next_offset = offset;
2146 let end_offset = offset + bytes_len;
2147 _next_ordinal_to_read += 1;
2148 if next_offset >= end_offset {
2149 return Ok(());
2150 }
2151
2152 while _next_ordinal_to_read < 1 {
2154 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2155 _next_ordinal_to_read += 1;
2156 next_offset += envelope_size;
2157 }
2158
2159 let next_out_of_line = decoder.next_out_of_line();
2160 let handles_before = decoder.remaining_handles();
2161 if let Some((inlined, num_bytes, num_handles)) =
2162 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2163 {
2164 let member_inline_size =
2165 <SocketBufferSizes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2166 if inlined != (member_inline_size <= 4) {
2167 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2168 }
2169 let inner_offset;
2170 let mut inner_depth = depth.clone();
2171 if inlined {
2172 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2173 inner_offset = next_offset;
2174 } else {
2175 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2176 inner_depth.increment()?;
2177 }
2178 let val_ref =
2179 self.buffer_sizes.get_or_insert_with(|| fidl::new_empty!(SocketBufferSizes, D));
2180 fidl::decode!(SocketBufferSizes, D, val_ref, decoder, inner_offset, inner_depth)?;
2181 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2182 {
2183 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2184 }
2185 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2186 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2187 }
2188 }
2189
2190 next_offset += envelope_size;
2191
2192 while next_offset < end_offset {
2194 _next_ordinal_to_read += 1;
2195 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2196 next_offset += envelope_size;
2197 }
2198
2199 Ok(())
2200 }
2201 }
2202
2203 impl Udp {
2204 #[inline(always)]
2205 fn max_ordinal_present(&self) -> u64 {
2206 if let Some(_) = self.buffer_sizes {
2207 return 1;
2208 }
2209 0
2210 }
2211 }
2212
2213 impl fidl::encoding::ValueTypeMarker for Udp {
2214 type Borrowed<'a> = &'a Self;
2215 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2216 value
2217 }
2218 }
2219
2220 unsafe impl fidl::encoding::TypeMarker for Udp {
2221 type Owned = Self;
2222
2223 #[inline(always)]
2224 fn inline_align(_context: fidl::encoding::Context) -> usize {
2225 8
2226 }
2227
2228 #[inline(always)]
2229 fn inline_size(_context: fidl::encoding::Context) -> usize {
2230 16
2231 }
2232 }
2233
2234 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Udp, D> for &Udp {
2235 unsafe fn encode(
2236 self,
2237 encoder: &mut fidl::encoding::Encoder<'_, D>,
2238 offset: usize,
2239 mut depth: fidl::encoding::Depth,
2240 ) -> fidl::Result<()> {
2241 encoder.debug_check_bounds::<Udp>(offset);
2242 let max_ordinal: u64 = self.max_ordinal_present();
2244 encoder.write_num(max_ordinal, offset);
2245 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2246 if max_ordinal == 0 {
2248 return Ok(());
2249 }
2250 depth.increment()?;
2251 let envelope_size = 8;
2252 let bytes_len = max_ordinal as usize * envelope_size;
2253 #[allow(unused_variables)]
2254 let offset = encoder.out_of_line_offset(bytes_len);
2255 let mut _prev_end_offset: usize = 0;
2256 if 1 > max_ordinal {
2257 return Ok(());
2258 }
2259
2260 let cur_offset: usize = (1 - 1) * envelope_size;
2263
2264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2266
2267 fidl::encoding::encode_in_envelope_optional::<SocketBufferSizes, D>(
2272 self.buffer_sizes
2273 .as_ref()
2274 .map(<SocketBufferSizes as fidl::encoding::ValueTypeMarker>::borrow),
2275 encoder,
2276 offset + cur_offset,
2277 depth,
2278 )?;
2279
2280 _prev_end_offset = cur_offset + envelope_size;
2281
2282 Ok(())
2283 }
2284 }
2285
2286 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Udp {
2287 #[inline(always)]
2288 fn new_empty() -> Self {
2289 Self::default()
2290 }
2291
2292 unsafe fn decode(
2293 &mut self,
2294 decoder: &mut fidl::encoding::Decoder<'_, D>,
2295 offset: usize,
2296 mut depth: fidl::encoding::Depth,
2297 ) -> fidl::Result<()> {
2298 decoder.debug_check_bounds::<Self>(offset);
2299 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2300 None => return Err(fidl::Error::NotNullable),
2301 Some(len) => len,
2302 };
2303 if len == 0 {
2305 return Ok(());
2306 };
2307 depth.increment()?;
2308 let envelope_size = 8;
2309 let bytes_len = len * envelope_size;
2310 let offset = decoder.out_of_line_offset(bytes_len)?;
2311 let mut _next_ordinal_to_read = 0;
2313 let mut next_offset = offset;
2314 let end_offset = offset + bytes_len;
2315 _next_ordinal_to_read += 1;
2316 if next_offset >= end_offset {
2317 return Ok(());
2318 }
2319
2320 while _next_ordinal_to_read < 1 {
2322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2323 _next_ordinal_to_read += 1;
2324 next_offset += envelope_size;
2325 }
2326
2327 let next_out_of_line = decoder.next_out_of_line();
2328 let handles_before = decoder.remaining_handles();
2329 if let Some((inlined, num_bytes, num_handles)) =
2330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2331 {
2332 let member_inline_size =
2333 <SocketBufferSizes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2334 if inlined != (member_inline_size <= 4) {
2335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2336 }
2337 let inner_offset;
2338 let mut inner_depth = depth.clone();
2339 if inlined {
2340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2341 inner_offset = next_offset;
2342 } else {
2343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2344 inner_depth.increment()?;
2345 }
2346 let val_ref =
2347 self.buffer_sizes.get_or_insert_with(|| fidl::new_empty!(SocketBufferSizes, D));
2348 fidl::decode!(SocketBufferSizes, D, val_ref, decoder, inner_offset, inner_depth)?;
2349 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2350 {
2351 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2352 }
2353 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2354 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2355 }
2356 }
2357
2358 next_offset += envelope_size;
2359
2360 while next_offset < end_offset {
2362 _next_ordinal_to_read += 1;
2363 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2364 next_offset += envelope_size;
2365 }
2366
2367 Ok(())
2368 }
2369 }
2370}