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