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 PolicyId = u32;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
15#[repr(u32)]
16pub enum Error {
17 Failed = 1,
19 UnknownPolicy = 2,
24 InvalidPolicy = 3,
29}
30
31impl Error {
32 #[inline]
33 pub fn from_primitive(prim: u32) -> Option<Self> {
34 match prim {
35 1 => Some(Self::Failed),
36 2 => Some(Self::UnknownPolicy),
37 3 => Some(Self::InvalidPolicy),
38 _ => None,
39 }
40 }
41
42 #[inline]
43 pub const fn into_primitive(self) -> u32 {
44 self as u32
45 }
46}
47
48#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
54#[repr(u8)]
55pub enum Transform {
56 Max = 1,
76 Min = 2,
88}
89
90impl Transform {
91 #[inline]
92 pub fn from_primitive(prim: u8) -> Option<Self> {
93 match prim {
94 1 => Some(Self::Max),
95 2 => Some(Self::Min),
96 _ => None,
97 }
98 }
99
100 #[inline]
101 pub const fn into_primitive(self) -> u8 {
102 self as u8
103 }
104}
105
106#[derive(Clone, Debug, Default, PartialEq)]
108pub struct Policy {
109 pub policy_id: Option<u32>,
113 pub parameters: Option<PolicyParameters>,
115 #[doc(hidden)]
116 pub __source_breaking: fidl::marker::SourceBreaking,
117}
118
119impl fidl::Persistable for Policy {}
120
121#[derive(Clone, Debug, Default, PartialEq)]
124pub struct Property {
125 pub target: Option<Target>,
129 pub available_transforms: Option<Vec<Transform>>,
131 pub active_policies: Option<Vec<Policy>>,
133 #[doc(hidden)]
134 pub __source_breaking: fidl::marker::SourceBreaking,
135}
136
137impl fidl::Persistable for Property {}
138
139#[derive(Clone, Debug, Default, PartialEq)]
140pub struct Volume {
141 pub volume: Option<f32>,
143 #[doc(hidden)]
144 pub __source_breaking: fidl::marker::SourceBreaking,
145}
146
147impl fidl::Persistable for Volume {}
148
149#[derive(Clone, Debug, PartialEq)]
154pub enum PolicyParameters {
155 Min(Volume),
158 Max(Volume),
161}
162
163impl PolicyParameters {
164 #[inline]
165 pub fn ordinal(&self) -> u64 {
166 match *self {
167 Self::Min(_) => 1,
168 Self::Max(_) => 2,
169 }
170 }
171}
172
173impl fidl::Persistable for PolicyParameters {}
174
175#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
177pub enum Target {
178 Stream(fidl_fuchsia_media::AudioRenderUsage),
180}
181
182impl Target {
183 #[inline]
184 pub fn ordinal(&self) -> u64 {
185 match *self {
186 Self::Stream(_) => 1,
187 }
188 }
189}
190
191impl fidl::Persistable for Target {}
192
193mod internal {
194 use super::*;
195 unsafe impl fidl::encoding::TypeMarker for Error {
196 type Owned = Self;
197
198 #[inline(always)]
199 fn inline_align(_context: fidl::encoding::Context) -> usize {
200 std::mem::align_of::<u32>()
201 }
202
203 #[inline(always)]
204 fn inline_size(_context: fidl::encoding::Context) -> usize {
205 std::mem::size_of::<u32>()
206 }
207
208 #[inline(always)]
209 fn encode_is_copy() -> bool {
210 true
211 }
212
213 #[inline(always)]
214 fn decode_is_copy() -> bool {
215 false
216 }
217 }
218
219 impl fidl::encoding::ValueTypeMarker for Error {
220 type Borrowed<'a> = Self;
221 #[inline(always)]
222 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
223 *value
224 }
225 }
226
227 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
228 #[inline]
229 unsafe fn encode(
230 self,
231 encoder: &mut fidl::encoding::Encoder<'_, D>,
232 offset: usize,
233 _depth: fidl::encoding::Depth,
234 ) -> fidl::Result<()> {
235 encoder.debug_check_bounds::<Self>(offset);
236 encoder.write_num(self.into_primitive(), offset);
237 Ok(())
238 }
239 }
240
241 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
242 #[inline(always)]
243 fn new_empty() -> Self {
244 Self::Failed
245 }
246
247 #[inline]
248 unsafe fn decode(
249 &mut self,
250 decoder: &mut fidl::encoding::Decoder<'_, D>,
251 offset: usize,
252 _depth: fidl::encoding::Depth,
253 ) -> fidl::Result<()> {
254 decoder.debug_check_bounds::<Self>(offset);
255 let prim = decoder.read_num::<u32>(offset);
256
257 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
258 Ok(())
259 }
260 }
261 unsafe impl fidl::encoding::TypeMarker for Transform {
262 type Owned = Self;
263
264 #[inline(always)]
265 fn inline_align(_context: fidl::encoding::Context) -> usize {
266 std::mem::align_of::<u8>()
267 }
268
269 #[inline(always)]
270 fn inline_size(_context: fidl::encoding::Context) -> usize {
271 std::mem::size_of::<u8>()
272 }
273
274 #[inline(always)]
275 fn encode_is_copy() -> bool {
276 true
277 }
278
279 #[inline(always)]
280 fn decode_is_copy() -> bool {
281 false
282 }
283 }
284
285 impl fidl::encoding::ValueTypeMarker for Transform {
286 type Borrowed<'a> = Self;
287 #[inline(always)]
288 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
289 *value
290 }
291 }
292
293 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Transform {
294 #[inline]
295 unsafe fn encode(
296 self,
297 encoder: &mut fidl::encoding::Encoder<'_, D>,
298 offset: usize,
299 _depth: fidl::encoding::Depth,
300 ) -> fidl::Result<()> {
301 encoder.debug_check_bounds::<Self>(offset);
302 encoder.write_num(self.into_primitive(), offset);
303 Ok(())
304 }
305 }
306
307 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Transform {
308 #[inline(always)]
309 fn new_empty() -> Self {
310 Self::Max
311 }
312
313 #[inline]
314 unsafe fn decode(
315 &mut self,
316 decoder: &mut fidl::encoding::Decoder<'_, D>,
317 offset: usize,
318 _depth: fidl::encoding::Depth,
319 ) -> fidl::Result<()> {
320 decoder.debug_check_bounds::<Self>(offset);
321 let prim = decoder.read_num::<u8>(offset);
322
323 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
324 Ok(())
325 }
326 }
327
328 impl Policy {
329 #[inline(always)]
330 fn max_ordinal_present(&self) -> u64 {
331 if let Some(_) = self.parameters {
332 return 2;
333 }
334 if let Some(_) = self.policy_id {
335 return 1;
336 }
337 0
338 }
339 }
340
341 impl fidl::encoding::ValueTypeMarker for Policy {
342 type Borrowed<'a> = &'a Self;
343 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
344 value
345 }
346 }
347
348 unsafe impl fidl::encoding::TypeMarker for Policy {
349 type Owned = Self;
350
351 #[inline(always)]
352 fn inline_align(_context: fidl::encoding::Context) -> usize {
353 8
354 }
355
356 #[inline(always)]
357 fn inline_size(_context: fidl::encoding::Context) -> usize {
358 16
359 }
360 }
361
362 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Policy, D> for &Policy {
363 unsafe fn encode(
364 self,
365 encoder: &mut fidl::encoding::Encoder<'_, D>,
366 offset: usize,
367 mut depth: fidl::encoding::Depth,
368 ) -> fidl::Result<()> {
369 encoder.debug_check_bounds::<Policy>(offset);
370 let max_ordinal: u64 = self.max_ordinal_present();
372 encoder.write_num(max_ordinal, offset);
373 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
374 if max_ordinal == 0 {
376 return Ok(());
377 }
378 depth.increment()?;
379 let envelope_size = 8;
380 let bytes_len = max_ordinal as usize * envelope_size;
381 #[allow(unused_variables)]
382 let offset = encoder.out_of_line_offset(bytes_len);
383 let mut _prev_end_offset: usize = 0;
384 if 1 > max_ordinal {
385 return Ok(());
386 }
387
388 let cur_offset: usize = (1 - 1) * envelope_size;
391
392 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
394
395 fidl::encoding::encode_in_envelope_optional::<u32, D>(
400 self.policy_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
401 encoder,
402 offset + cur_offset,
403 depth,
404 )?;
405
406 _prev_end_offset = cur_offset + envelope_size;
407 if 2 > max_ordinal {
408 return Ok(());
409 }
410
411 let cur_offset: usize = (2 - 1) * envelope_size;
414
415 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
417
418 fidl::encoding::encode_in_envelope_optional::<PolicyParameters, D>(
423 self.parameters
424 .as_ref()
425 .map(<PolicyParameters as fidl::encoding::ValueTypeMarker>::borrow),
426 encoder,
427 offset + cur_offset,
428 depth,
429 )?;
430
431 _prev_end_offset = cur_offset + envelope_size;
432
433 Ok(())
434 }
435 }
436
437 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Policy {
438 #[inline(always)]
439 fn new_empty() -> Self {
440 Self::default()
441 }
442
443 unsafe fn decode(
444 &mut self,
445 decoder: &mut fidl::encoding::Decoder<'_, D>,
446 offset: usize,
447 mut depth: fidl::encoding::Depth,
448 ) -> fidl::Result<()> {
449 decoder.debug_check_bounds::<Self>(offset);
450 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
451 None => return Err(fidl::Error::NotNullable),
452 Some(len) => len,
453 };
454 if len == 0 {
456 return Ok(());
457 };
458 depth.increment()?;
459 let envelope_size = 8;
460 let bytes_len = len * envelope_size;
461 let offset = decoder.out_of_line_offset(bytes_len)?;
462 let mut _next_ordinal_to_read = 0;
464 let mut next_offset = offset;
465 let end_offset = offset + bytes_len;
466 _next_ordinal_to_read += 1;
467 if next_offset >= end_offset {
468 return Ok(());
469 }
470
471 while _next_ordinal_to_read < 1 {
473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
474 _next_ordinal_to_read += 1;
475 next_offset += envelope_size;
476 }
477
478 let next_out_of_line = decoder.next_out_of_line();
479 let handles_before = decoder.remaining_handles();
480 if let Some((inlined, num_bytes, num_handles)) =
481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
482 {
483 let member_inline_size =
484 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
485 if inlined != (member_inline_size <= 4) {
486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
487 }
488 let inner_offset;
489 let mut inner_depth = depth.clone();
490 if inlined {
491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
492 inner_offset = next_offset;
493 } else {
494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
495 inner_depth.increment()?;
496 }
497 let val_ref = self.policy_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
498 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
500 {
501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
502 }
503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
505 }
506 }
507
508 next_offset += envelope_size;
509 _next_ordinal_to_read += 1;
510 if next_offset >= end_offset {
511 return Ok(());
512 }
513
514 while _next_ordinal_to_read < 2 {
516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
517 _next_ordinal_to_read += 1;
518 next_offset += envelope_size;
519 }
520
521 let next_out_of_line = decoder.next_out_of_line();
522 let handles_before = decoder.remaining_handles();
523 if let Some((inlined, num_bytes, num_handles)) =
524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
525 {
526 let member_inline_size =
527 <PolicyParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
528 if inlined != (member_inline_size <= 4) {
529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
530 }
531 let inner_offset;
532 let mut inner_depth = depth.clone();
533 if inlined {
534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
535 inner_offset = next_offset;
536 } else {
537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
538 inner_depth.increment()?;
539 }
540 let val_ref =
541 self.parameters.get_or_insert_with(|| fidl::new_empty!(PolicyParameters, D));
542 fidl::decode!(PolicyParameters, D, val_ref, decoder, inner_offset, inner_depth)?;
543 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
544 {
545 return Err(fidl::Error::InvalidNumBytesInEnvelope);
546 }
547 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
548 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
549 }
550 }
551
552 next_offset += envelope_size;
553
554 while next_offset < end_offset {
556 _next_ordinal_to_read += 1;
557 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
558 next_offset += envelope_size;
559 }
560
561 Ok(())
562 }
563 }
564
565 impl Property {
566 #[inline(always)]
567 fn max_ordinal_present(&self) -> u64 {
568 if let Some(_) = self.active_policies {
569 return 3;
570 }
571 if let Some(_) = self.available_transforms {
572 return 2;
573 }
574 if let Some(_) = self.target {
575 return 1;
576 }
577 0
578 }
579 }
580
581 impl fidl::encoding::ValueTypeMarker for Property {
582 type Borrowed<'a> = &'a Self;
583 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
584 value
585 }
586 }
587
588 unsafe impl fidl::encoding::TypeMarker for Property {
589 type Owned = Self;
590
591 #[inline(always)]
592 fn inline_align(_context: fidl::encoding::Context) -> usize {
593 8
594 }
595
596 #[inline(always)]
597 fn inline_size(_context: fidl::encoding::Context) -> usize {
598 16
599 }
600 }
601
602 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Property, D> for &Property {
603 unsafe fn encode(
604 self,
605 encoder: &mut fidl::encoding::Encoder<'_, D>,
606 offset: usize,
607 mut depth: fidl::encoding::Depth,
608 ) -> fidl::Result<()> {
609 encoder.debug_check_bounds::<Property>(offset);
610 let max_ordinal: u64 = self.max_ordinal_present();
612 encoder.write_num(max_ordinal, offset);
613 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
614 if max_ordinal == 0 {
616 return Ok(());
617 }
618 depth.increment()?;
619 let envelope_size = 8;
620 let bytes_len = max_ordinal as usize * envelope_size;
621 #[allow(unused_variables)]
622 let offset = encoder.out_of_line_offset(bytes_len);
623 let mut _prev_end_offset: usize = 0;
624 if 1 > max_ordinal {
625 return Ok(());
626 }
627
628 let cur_offset: usize = (1 - 1) * envelope_size;
631
632 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
634
635 fidl::encoding::encode_in_envelope_optional::<Target, D>(
640 self.target.as_ref().map(<Target as fidl::encoding::ValueTypeMarker>::borrow),
641 encoder,
642 offset + cur_offset,
643 depth,
644 )?;
645
646 _prev_end_offset = cur_offset + envelope_size;
647 if 2 > max_ordinal {
648 return Ok(());
649 }
650
651 let cur_offset: usize = (2 - 1) * envelope_size;
654
655 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
657
658 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Transform>, D>(
663 self.available_transforms.as_ref().map(<fidl::encoding::UnboundedVector<Transform> as fidl::encoding::ValueTypeMarker>::borrow),
664 encoder, offset + cur_offset, depth
665 )?;
666
667 _prev_end_offset = cur_offset + envelope_size;
668 if 3 > max_ordinal {
669 return Ok(());
670 }
671
672 let cur_offset: usize = (3 - 1) * envelope_size;
675
676 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
678
679 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Policy>, D>(
684 self.active_policies.as_ref().map(<fidl::encoding::UnboundedVector<Policy> as fidl::encoding::ValueTypeMarker>::borrow),
685 encoder, offset + cur_offset, depth
686 )?;
687
688 _prev_end_offset = cur_offset + envelope_size;
689
690 Ok(())
691 }
692 }
693
694 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Property {
695 #[inline(always)]
696 fn new_empty() -> Self {
697 Self::default()
698 }
699
700 unsafe fn decode(
701 &mut self,
702 decoder: &mut fidl::encoding::Decoder<'_, D>,
703 offset: usize,
704 mut depth: fidl::encoding::Depth,
705 ) -> fidl::Result<()> {
706 decoder.debug_check_bounds::<Self>(offset);
707 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
708 None => return Err(fidl::Error::NotNullable),
709 Some(len) => len,
710 };
711 if len == 0 {
713 return Ok(());
714 };
715 depth.increment()?;
716 let envelope_size = 8;
717 let bytes_len = len * envelope_size;
718 let offset = decoder.out_of_line_offset(bytes_len)?;
719 let mut _next_ordinal_to_read = 0;
721 let mut next_offset = offset;
722 let end_offset = offset + bytes_len;
723 _next_ordinal_to_read += 1;
724 if next_offset >= end_offset {
725 return Ok(());
726 }
727
728 while _next_ordinal_to_read < 1 {
730 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
731 _next_ordinal_to_read += 1;
732 next_offset += envelope_size;
733 }
734
735 let next_out_of_line = decoder.next_out_of_line();
736 let handles_before = decoder.remaining_handles();
737 if let Some((inlined, num_bytes, num_handles)) =
738 fidl::encoding::decode_envelope_header(decoder, next_offset)?
739 {
740 let member_inline_size =
741 <Target as fidl::encoding::TypeMarker>::inline_size(decoder.context);
742 if inlined != (member_inline_size <= 4) {
743 return Err(fidl::Error::InvalidInlineBitInEnvelope);
744 }
745 let inner_offset;
746 let mut inner_depth = depth.clone();
747 if inlined {
748 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
749 inner_offset = next_offset;
750 } else {
751 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
752 inner_depth.increment()?;
753 }
754 let val_ref = self.target.get_or_insert_with(|| fidl::new_empty!(Target, D));
755 fidl::decode!(Target, D, val_ref, decoder, inner_offset, inner_depth)?;
756 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
757 {
758 return Err(fidl::Error::InvalidNumBytesInEnvelope);
759 }
760 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
761 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
762 }
763 }
764
765 next_offset += envelope_size;
766 _next_ordinal_to_read += 1;
767 if next_offset >= end_offset {
768 return Ok(());
769 }
770
771 while _next_ordinal_to_read < 2 {
773 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
774 _next_ordinal_to_read += 1;
775 next_offset += envelope_size;
776 }
777
778 let next_out_of_line = decoder.next_out_of_line();
779 let handles_before = decoder.remaining_handles();
780 if let Some((inlined, num_bytes, num_handles)) =
781 fidl::encoding::decode_envelope_header(decoder, next_offset)?
782 {
783 let member_inline_size = <fidl::encoding::UnboundedVector<Transform> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
784 if inlined != (member_inline_size <= 4) {
785 return Err(fidl::Error::InvalidInlineBitInEnvelope);
786 }
787 let inner_offset;
788 let mut inner_depth = depth.clone();
789 if inlined {
790 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
791 inner_offset = next_offset;
792 } else {
793 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
794 inner_depth.increment()?;
795 }
796 let val_ref = self.available_transforms.get_or_insert_with(|| {
797 fidl::new_empty!(fidl::encoding::UnboundedVector<Transform>, D)
798 });
799 fidl::decode!(
800 fidl::encoding::UnboundedVector<Transform>,
801 D,
802 val_ref,
803 decoder,
804 inner_offset,
805 inner_depth
806 )?;
807 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
808 {
809 return Err(fidl::Error::InvalidNumBytesInEnvelope);
810 }
811 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
812 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
813 }
814 }
815
816 next_offset += envelope_size;
817 _next_ordinal_to_read += 1;
818 if next_offset >= end_offset {
819 return Ok(());
820 }
821
822 while _next_ordinal_to_read < 3 {
824 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
825 _next_ordinal_to_read += 1;
826 next_offset += envelope_size;
827 }
828
829 let next_out_of_line = decoder.next_out_of_line();
830 let handles_before = decoder.remaining_handles();
831 if let Some((inlined, num_bytes, num_handles)) =
832 fidl::encoding::decode_envelope_header(decoder, next_offset)?
833 {
834 let member_inline_size = <fidl::encoding::UnboundedVector<Policy> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
835 if inlined != (member_inline_size <= 4) {
836 return Err(fidl::Error::InvalidInlineBitInEnvelope);
837 }
838 let inner_offset;
839 let mut inner_depth = depth.clone();
840 if inlined {
841 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
842 inner_offset = next_offset;
843 } else {
844 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
845 inner_depth.increment()?;
846 }
847 let val_ref = self.active_policies.get_or_insert_with(|| {
848 fidl::new_empty!(fidl::encoding::UnboundedVector<Policy>, D)
849 });
850 fidl::decode!(
851 fidl::encoding::UnboundedVector<Policy>,
852 D,
853 val_ref,
854 decoder,
855 inner_offset,
856 inner_depth
857 )?;
858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
859 {
860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
861 }
862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
864 }
865 }
866
867 next_offset += envelope_size;
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 Volume {
881 #[inline(always)]
882 fn max_ordinal_present(&self) -> u64 {
883 if let Some(_) = self.volume {
884 return 1;
885 }
886 0
887 }
888 }
889
890 impl fidl::encoding::ValueTypeMarker for Volume {
891 type Borrowed<'a> = &'a Self;
892 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
893 value
894 }
895 }
896
897 unsafe impl fidl::encoding::TypeMarker for Volume {
898 type Owned = Self;
899
900 #[inline(always)]
901 fn inline_align(_context: fidl::encoding::Context) -> usize {
902 8
903 }
904
905 #[inline(always)]
906 fn inline_size(_context: fidl::encoding::Context) -> usize {
907 16
908 }
909 }
910
911 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Volume, D> for &Volume {
912 unsafe fn encode(
913 self,
914 encoder: &mut fidl::encoding::Encoder<'_, D>,
915 offset: usize,
916 mut depth: fidl::encoding::Depth,
917 ) -> fidl::Result<()> {
918 encoder.debug_check_bounds::<Volume>(offset);
919 let max_ordinal: u64 = self.max_ordinal_present();
921 encoder.write_num(max_ordinal, offset);
922 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
923 if max_ordinal == 0 {
925 return Ok(());
926 }
927 depth.increment()?;
928 let envelope_size = 8;
929 let bytes_len = max_ordinal as usize * envelope_size;
930 #[allow(unused_variables)]
931 let offset = encoder.out_of_line_offset(bytes_len);
932 let mut _prev_end_offset: usize = 0;
933 if 1 > max_ordinal {
934 return Ok(());
935 }
936
937 let cur_offset: usize = (1 - 1) * envelope_size;
940
941 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
943
944 fidl::encoding::encode_in_envelope_optional::<f32, D>(
949 self.volume.as_ref().map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
950 encoder,
951 offset + cur_offset,
952 depth,
953 )?;
954
955 _prev_end_offset = cur_offset + envelope_size;
956
957 Ok(())
958 }
959 }
960
961 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Volume {
962 #[inline(always)]
963 fn new_empty() -> Self {
964 Self::default()
965 }
966
967 unsafe fn decode(
968 &mut self,
969 decoder: &mut fidl::encoding::Decoder<'_, D>,
970 offset: usize,
971 mut depth: fidl::encoding::Depth,
972 ) -> fidl::Result<()> {
973 decoder.debug_check_bounds::<Self>(offset);
974 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
975 None => return Err(fidl::Error::NotNullable),
976 Some(len) => len,
977 };
978 if len == 0 {
980 return Ok(());
981 };
982 depth.increment()?;
983 let envelope_size = 8;
984 let bytes_len = len * envelope_size;
985 let offset = decoder.out_of_line_offset(bytes_len)?;
986 let mut _next_ordinal_to_read = 0;
988 let mut next_offset = offset;
989 let end_offset = offset + bytes_len;
990 _next_ordinal_to_read += 1;
991 if next_offset >= end_offset {
992 return Ok(());
993 }
994
995 while _next_ordinal_to_read < 1 {
997 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
998 _next_ordinal_to_read += 1;
999 next_offset += envelope_size;
1000 }
1001
1002 let next_out_of_line = decoder.next_out_of_line();
1003 let handles_before = decoder.remaining_handles();
1004 if let Some((inlined, num_bytes, num_handles)) =
1005 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1006 {
1007 let member_inline_size =
1008 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1009 if inlined != (member_inline_size <= 4) {
1010 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1011 }
1012 let inner_offset;
1013 let mut inner_depth = depth.clone();
1014 if inlined {
1015 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1016 inner_offset = next_offset;
1017 } else {
1018 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1019 inner_depth.increment()?;
1020 }
1021 let val_ref = self.volume.get_or_insert_with(|| fidl::new_empty!(f32, D));
1022 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
1023 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1024 {
1025 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1026 }
1027 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1028 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1029 }
1030 }
1031
1032 next_offset += envelope_size;
1033
1034 while next_offset < end_offset {
1036 _next_ordinal_to_read += 1;
1037 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1038 next_offset += envelope_size;
1039 }
1040
1041 Ok(())
1042 }
1043 }
1044
1045 impl fidl::encoding::ValueTypeMarker for PolicyParameters {
1046 type Borrowed<'a> = &'a Self;
1047 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1048 value
1049 }
1050 }
1051
1052 unsafe impl fidl::encoding::TypeMarker for PolicyParameters {
1053 type Owned = Self;
1054
1055 #[inline(always)]
1056 fn inline_align(_context: fidl::encoding::Context) -> usize {
1057 8
1058 }
1059
1060 #[inline(always)]
1061 fn inline_size(_context: fidl::encoding::Context) -> usize {
1062 16
1063 }
1064 }
1065
1066 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PolicyParameters, D>
1067 for &PolicyParameters
1068 {
1069 #[inline]
1070 unsafe fn encode(
1071 self,
1072 encoder: &mut fidl::encoding::Encoder<'_, D>,
1073 offset: usize,
1074 _depth: fidl::encoding::Depth,
1075 ) -> fidl::Result<()> {
1076 encoder.debug_check_bounds::<PolicyParameters>(offset);
1077 encoder.write_num::<u64>(self.ordinal(), offset);
1078 match self {
1079 PolicyParameters::Min(ref val) => fidl::encoding::encode_in_envelope::<Volume, D>(
1080 <Volume as fidl::encoding::ValueTypeMarker>::borrow(val),
1081 encoder,
1082 offset + 8,
1083 _depth,
1084 ),
1085 PolicyParameters::Max(ref val) => fidl::encoding::encode_in_envelope::<Volume, D>(
1086 <Volume as fidl::encoding::ValueTypeMarker>::borrow(val),
1087 encoder,
1088 offset + 8,
1089 _depth,
1090 ),
1091 }
1092 }
1093 }
1094
1095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PolicyParameters {
1096 #[inline(always)]
1097 fn new_empty() -> Self {
1098 Self::Min(fidl::new_empty!(Volume, D))
1099 }
1100
1101 #[inline]
1102 unsafe fn decode(
1103 &mut self,
1104 decoder: &mut fidl::encoding::Decoder<'_, D>,
1105 offset: usize,
1106 mut depth: fidl::encoding::Depth,
1107 ) -> fidl::Result<()> {
1108 decoder.debug_check_bounds::<Self>(offset);
1109 #[allow(unused_variables)]
1110 let next_out_of_line = decoder.next_out_of_line();
1111 let handles_before = decoder.remaining_handles();
1112 let (ordinal, inlined, num_bytes, num_handles) =
1113 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1114
1115 let member_inline_size = match ordinal {
1116 1 => <Volume as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1117 2 => <Volume as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1118 _ => return Err(fidl::Error::UnknownUnionTag),
1119 };
1120
1121 if inlined != (member_inline_size <= 4) {
1122 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1123 }
1124 let _inner_offset;
1125 if inlined {
1126 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1127 _inner_offset = offset + 8;
1128 } else {
1129 depth.increment()?;
1130 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1131 }
1132 match ordinal {
1133 1 => {
1134 #[allow(irrefutable_let_patterns)]
1135 if let PolicyParameters::Min(_) = self {
1136 } else {
1138 *self = PolicyParameters::Min(fidl::new_empty!(Volume, D));
1140 }
1141 #[allow(irrefutable_let_patterns)]
1142 if let PolicyParameters::Min(ref mut val) = self {
1143 fidl::decode!(Volume, D, val, decoder, _inner_offset, depth)?;
1144 } else {
1145 unreachable!()
1146 }
1147 }
1148 2 => {
1149 #[allow(irrefutable_let_patterns)]
1150 if let PolicyParameters::Max(_) = self {
1151 } else {
1153 *self = PolicyParameters::Max(fidl::new_empty!(Volume, D));
1155 }
1156 #[allow(irrefutable_let_patterns)]
1157 if let PolicyParameters::Max(ref mut val) = self {
1158 fidl::decode!(Volume, D, val, decoder, _inner_offset, depth)?;
1159 } else {
1160 unreachable!()
1161 }
1162 }
1163 ordinal => panic!("unexpected ordinal {:?}", ordinal),
1164 }
1165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1167 }
1168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1170 }
1171 Ok(())
1172 }
1173 }
1174
1175 impl fidl::encoding::ValueTypeMarker for Target {
1176 type Borrowed<'a> = &'a Self;
1177 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1178 value
1179 }
1180 }
1181
1182 unsafe impl fidl::encoding::TypeMarker for Target {
1183 type Owned = Self;
1184
1185 #[inline(always)]
1186 fn inline_align(_context: fidl::encoding::Context) -> usize {
1187 8
1188 }
1189
1190 #[inline(always)]
1191 fn inline_size(_context: fidl::encoding::Context) -> usize {
1192 16
1193 }
1194 }
1195
1196 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Target, D> for &Target {
1197 #[inline]
1198 unsafe fn encode(
1199 self,
1200 encoder: &mut fidl::encoding::Encoder<'_, D>,
1201 offset: usize,
1202 _depth: fidl::encoding::Depth,
1203 ) -> fidl::Result<()> {
1204 encoder.debug_check_bounds::<Target>(offset);
1205 encoder.write_num::<u64>(self.ordinal(), offset);
1206 match self {
1207 Target::Stream(ref val) => {
1208 fidl::encoding::encode_in_envelope::<fidl_fuchsia_media::AudioRenderUsage, D>(
1209 <fidl_fuchsia_media::AudioRenderUsage as fidl::encoding::ValueTypeMarker>::borrow(val),
1210 encoder, offset + 8, _depth
1211 )
1212 }
1213 }
1214 }
1215 }
1216
1217 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Target {
1218 #[inline(always)]
1219 fn new_empty() -> Self {
1220 Self::Stream(fidl::new_empty!(fidl_fuchsia_media::AudioRenderUsage, D))
1221 }
1222
1223 #[inline]
1224 unsafe fn decode(
1225 &mut self,
1226 decoder: &mut fidl::encoding::Decoder<'_, D>,
1227 offset: usize,
1228 mut depth: fidl::encoding::Depth,
1229 ) -> fidl::Result<()> {
1230 decoder.debug_check_bounds::<Self>(offset);
1231 #[allow(unused_variables)]
1232 let next_out_of_line = decoder.next_out_of_line();
1233 let handles_before = decoder.remaining_handles();
1234 let (ordinal, inlined, num_bytes, num_handles) =
1235 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1236
1237 let member_inline_size = match ordinal {
1238 1 => <fidl_fuchsia_media::AudioRenderUsage as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1239 _ => return Err(fidl::Error::UnknownUnionTag),
1240 };
1241
1242 if inlined != (member_inline_size <= 4) {
1243 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1244 }
1245 let _inner_offset;
1246 if inlined {
1247 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1248 _inner_offset = offset + 8;
1249 } else {
1250 depth.increment()?;
1251 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1252 }
1253 match ordinal {
1254 1 => {
1255 #[allow(irrefutable_let_patterns)]
1256 if let Target::Stream(_) = self {
1257 } else {
1259 *self = Target::Stream(fidl::new_empty!(
1261 fidl_fuchsia_media::AudioRenderUsage,
1262 D
1263 ));
1264 }
1265 #[allow(irrefutable_let_patterns)]
1266 if let Target::Stream(ref mut val) = self {
1267 fidl::decode!(
1268 fidl_fuchsia_media::AudioRenderUsage,
1269 D,
1270 val,
1271 decoder,
1272 _inner_offset,
1273 depth
1274 )?;
1275 } else {
1276 unreachable!()
1277 }
1278 }
1279 ordinal => panic!("unexpected ordinal {:?}", ordinal),
1280 }
1281 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1282 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1283 }
1284 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1285 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1286 }
1287 Ok(())
1288 }
1289 }
1290}