fidl_fuchsia_media_sounds__common/
fidl_fuchsia_media_sounds__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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
11/// Error type for `Player.PlaySound`.
12#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
13#[repr(u32)]
14pub enum PlaySoundError {
15    /// The `id` passed to `PlaySound` is not recognized.
16    NoSuchSound = 1,
17    /// Underlying audio renderer failed.
18    RendererFailed = 2,
19    /// Playback of the sound was interrupted by a |StopPlayingSound| method call.
20    Stopped = 3,
21}
22
23impl PlaySoundError {
24    #[inline]
25    pub fn from_primitive(prim: u32) -> Option<Self> {
26        match prim {
27            1 => Some(Self::NoSuchSound),
28            2 => Some(Self::RendererFailed),
29            3 => Some(Self::Stopped),
30            _ => None,
31        }
32    }
33
34    #[inline]
35    pub const fn into_primitive(self) -> u32 {
36        self as u32
37    }
38}
39
40#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
41pub struct PlayerPlaySound2Request {
42    pub id: u32,
43    pub usage: fidl_fuchsia_media__common::AudioRenderUsage2,
44}
45
46impl fidl::Persistable for PlayerPlaySound2Request {}
47
48#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
49pub struct PlayerPlaySoundRequest {
50    pub id: u32,
51    pub usage: fidl_fuchsia_media__common::AudioRenderUsage,
52}
53
54impl fidl::Persistable for PlayerPlaySoundRequest {}
55
56#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
57#[repr(C)]
58pub struct PlayerRemoveSoundRequest {
59    pub id: u32,
60}
61
62impl fidl::Persistable for PlayerRemoveSoundRequest {}
63
64#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
65#[repr(C)]
66pub struct PlayerStopPlayingSoundRequest {
67    pub id: u32,
68}
69
70impl fidl::Persistable for PlayerStopPlayingSoundRequest {}
71
72#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
73#[repr(C)]
74pub struct PlayerAddSoundFromFileResponse {
75    pub duration: i64,
76}
77
78impl fidl::Persistable for PlayerAddSoundFromFileResponse {}
79
80mod internal {
81    use super::*;
82    unsafe impl fidl::encoding::TypeMarker for PlaySoundError {
83        type Owned = Self;
84
85        #[inline(always)]
86        fn inline_align(_context: fidl::encoding::Context) -> usize {
87            std::mem::align_of::<u32>()
88        }
89
90        #[inline(always)]
91        fn inline_size(_context: fidl::encoding::Context) -> usize {
92            std::mem::size_of::<u32>()
93        }
94
95        #[inline(always)]
96        fn encode_is_copy() -> bool {
97            true
98        }
99
100        #[inline(always)]
101        fn decode_is_copy() -> bool {
102            false
103        }
104    }
105
106    impl fidl::encoding::ValueTypeMarker for PlaySoundError {
107        type Borrowed<'a> = Self;
108        #[inline(always)]
109        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
110            *value
111        }
112    }
113
114    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PlaySoundError {
115        #[inline]
116        unsafe fn encode(
117            self,
118            encoder: &mut fidl::encoding::Encoder<'_, D>,
119            offset: usize,
120            _depth: fidl::encoding::Depth,
121        ) -> fidl::Result<()> {
122            encoder.debug_check_bounds::<Self>(offset);
123            encoder.write_num(self.into_primitive(), offset);
124            Ok(())
125        }
126    }
127
128    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PlaySoundError {
129        #[inline(always)]
130        fn new_empty() -> Self {
131            Self::NoSuchSound
132        }
133
134        #[inline]
135        unsafe fn decode(
136            &mut self,
137            decoder: &mut fidl::encoding::Decoder<'_, D>,
138            offset: usize,
139            _depth: fidl::encoding::Depth,
140        ) -> fidl::Result<()> {
141            decoder.debug_check_bounds::<Self>(offset);
142            let prim = decoder.read_num::<u32>(offset);
143
144            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
145            Ok(())
146        }
147    }
148
149    impl fidl::encoding::ValueTypeMarker for PlayerPlaySound2Request {
150        type Borrowed<'a> = &'a Self;
151        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
152            value
153        }
154    }
155
156    unsafe impl fidl::encoding::TypeMarker for PlayerPlaySound2Request {
157        type Owned = Self;
158
159        #[inline(always)]
160        fn inline_align(_context: fidl::encoding::Context) -> usize {
161            4
162        }
163
164        #[inline(always)]
165        fn inline_size(_context: fidl::encoding::Context) -> usize {
166            8
167        }
168    }
169
170    unsafe impl<D: fidl::encoding::ResourceDialect>
171        fidl::encoding::Encode<PlayerPlaySound2Request, D> for &PlayerPlaySound2Request
172    {
173        #[inline]
174        unsafe fn encode(
175            self,
176            encoder: &mut fidl::encoding::Encoder<'_, D>,
177            offset: usize,
178            _depth: fidl::encoding::Depth,
179        ) -> fidl::Result<()> {
180            encoder.debug_check_bounds::<PlayerPlaySound2Request>(offset);
181            // Delegate to tuple encoding.
182            fidl::encoding::Encode::<PlayerPlaySound2Request, D>::encode(
183                (
184                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.id),
185                    <fidl_fuchsia_media__common::AudioRenderUsage2 as fidl::encoding::ValueTypeMarker>::borrow(&self.usage),
186                ),
187                encoder, offset, _depth
188            )
189        }
190    }
191    unsafe impl<
192            D: fidl::encoding::ResourceDialect,
193            T0: fidl::encoding::Encode<u32, D>,
194            T1: fidl::encoding::Encode<fidl_fuchsia_media__common::AudioRenderUsage2, D>,
195        > fidl::encoding::Encode<PlayerPlaySound2Request, D> for (T0, T1)
196    {
197        #[inline]
198        unsafe fn encode(
199            self,
200            encoder: &mut fidl::encoding::Encoder<'_, D>,
201            offset: usize,
202            depth: fidl::encoding::Depth,
203        ) -> fidl::Result<()> {
204            encoder.debug_check_bounds::<PlayerPlaySound2Request>(offset);
205            // Zero out padding regions. There's no need to apply masks
206            // because the unmasked parts will be overwritten by fields.
207            // Write the fields.
208            self.0.encode(encoder, offset + 0, depth)?;
209            self.1.encode(encoder, offset + 4, depth)?;
210            Ok(())
211        }
212    }
213
214    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
215        for PlayerPlaySound2Request
216    {
217        #[inline(always)]
218        fn new_empty() -> Self {
219            Self {
220                id: fidl::new_empty!(u32, D),
221                usage: fidl::new_empty!(fidl_fuchsia_media__common::AudioRenderUsage2, D),
222            }
223        }
224
225        #[inline]
226        unsafe fn decode(
227            &mut self,
228            decoder: &mut fidl::encoding::Decoder<'_, D>,
229            offset: usize,
230            _depth: fidl::encoding::Depth,
231        ) -> fidl::Result<()> {
232            decoder.debug_check_bounds::<Self>(offset);
233            // Verify that padding bytes are zero.
234            fidl::decode!(u32, D, &mut self.id, decoder, offset + 0, _depth)?;
235            fidl::decode!(
236                fidl_fuchsia_media__common::AudioRenderUsage2,
237                D,
238                &mut self.usage,
239                decoder,
240                offset + 4,
241                _depth
242            )?;
243            Ok(())
244        }
245    }
246
247    impl fidl::encoding::ValueTypeMarker for PlayerPlaySoundRequest {
248        type Borrowed<'a> = &'a Self;
249        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
250            value
251        }
252    }
253
254    unsafe impl fidl::encoding::TypeMarker for PlayerPlaySoundRequest {
255        type Owned = Self;
256
257        #[inline(always)]
258        fn inline_align(_context: fidl::encoding::Context) -> usize {
259            4
260        }
261
262        #[inline(always)]
263        fn inline_size(_context: fidl::encoding::Context) -> usize {
264            8
265        }
266    }
267
268    unsafe impl<D: fidl::encoding::ResourceDialect>
269        fidl::encoding::Encode<PlayerPlaySoundRequest, D> for &PlayerPlaySoundRequest
270    {
271        #[inline]
272        unsafe fn encode(
273            self,
274            encoder: &mut fidl::encoding::Encoder<'_, D>,
275            offset: usize,
276            _depth: fidl::encoding::Depth,
277        ) -> fidl::Result<()> {
278            encoder.debug_check_bounds::<PlayerPlaySoundRequest>(offset);
279            // Delegate to tuple encoding.
280            fidl::encoding::Encode::<PlayerPlaySoundRequest, D>::encode(
281                (
282                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.id),
283                    <fidl_fuchsia_media__common::AudioRenderUsage as fidl::encoding::ValueTypeMarker>::borrow(&self.usage),
284                ),
285                encoder, offset, _depth
286            )
287        }
288    }
289    unsafe impl<
290            D: fidl::encoding::ResourceDialect,
291            T0: fidl::encoding::Encode<u32, D>,
292            T1: fidl::encoding::Encode<fidl_fuchsia_media__common::AudioRenderUsage, D>,
293        > fidl::encoding::Encode<PlayerPlaySoundRequest, D> for (T0, T1)
294    {
295        #[inline]
296        unsafe fn encode(
297            self,
298            encoder: &mut fidl::encoding::Encoder<'_, D>,
299            offset: usize,
300            depth: fidl::encoding::Depth,
301        ) -> fidl::Result<()> {
302            encoder.debug_check_bounds::<PlayerPlaySoundRequest>(offset);
303            // Zero out padding regions. There's no need to apply masks
304            // because the unmasked parts will be overwritten by fields.
305            // Write the fields.
306            self.0.encode(encoder, offset + 0, depth)?;
307            self.1.encode(encoder, offset + 4, depth)?;
308            Ok(())
309        }
310    }
311
312    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
313        for PlayerPlaySoundRequest
314    {
315        #[inline(always)]
316        fn new_empty() -> Self {
317            Self {
318                id: fidl::new_empty!(u32, D),
319                usage: fidl::new_empty!(fidl_fuchsia_media__common::AudioRenderUsage, D),
320            }
321        }
322
323        #[inline]
324        unsafe fn decode(
325            &mut self,
326            decoder: &mut fidl::encoding::Decoder<'_, D>,
327            offset: usize,
328            _depth: fidl::encoding::Depth,
329        ) -> fidl::Result<()> {
330            decoder.debug_check_bounds::<Self>(offset);
331            // Verify that padding bytes are zero.
332            fidl::decode!(u32, D, &mut self.id, decoder, offset + 0, _depth)?;
333            fidl::decode!(
334                fidl_fuchsia_media__common::AudioRenderUsage,
335                D,
336                &mut self.usage,
337                decoder,
338                offset + 4,
339                _depth
340            )?;
341            Ok(())
342        }
343    }
344
345    impl fidl::encoding::ValueTypeMarker for PlayerRemoveSoundRequest {
346        type Borrowed<'a> = &'a Self;
347        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
348            value
349        }
350    }
351
352    unsafe impl fidl::encoding::TypeMarker for PlayerRemoveSoundRequest {
353        type Owned = Self;
354
355        #[inline(always)]
356        fn inline_align(_context: fidl::encoding::Context) -> usize {
357            4
358        }
359
360        #[inline(always)]
361        fn inline_size(_context: fidl::encoding::Context) -> usize {
362            4
363        }
364        #[inline(always)]
365        fn encode_is_copy() -> bool {
366            true
367        }
368
369        #[inline(always)]
370        fn decode_is_copy() -> bool {
371            true
372        }
373    }
374
375    unsafe impl<D: fidl::encoding::ResourceDialect>
376        fidl::encoding::Encode<PlayerRemoveSoundRequest, D> for &PlayerRemoveSoundRequest
377    {
378        #[inline]
379        unsafe fn encode(
380            self,
381            encoder: &mut fidl::encoding::Encoder<'_, D>,
382            offset: usize,
383            _depth: fidl::encoding::Depth,
384        ) -> fidl::Result<()> {
385            encoder.debug_check_bounds::<PlayerRemoveSoundRequest>(offset);
386            unsafe {
387                // Copy the object into the buffer.
388                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
389                (buf_ptr as *mut PlayerRemoveSoundRequest)
390                    .write_unaligned((self as *const PlayerRemoveSoundRequest).read());
391                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
392                // done second because the memcpy will write garbage to these bytes.
393            }
394            Ok(())
395        }
396    }
397    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
398        fidl::encoding::Encode<PlayerRemoveSoundRequest, D> for (T0,)
399    {
400        #[inline]
401        unsafe fn encode(
402            self,
403            encoder: &mut fidl::encoding::Encoder<'_, D>,
404            offset: usize,
405            depth: fidl::encoding::Depth,
406        ) -> fidl::Result<()> {
407            encoder.debug_check_bounds::<PlayerRemoveSoundRequest>(offset);
408            // Zero out padding regions. There's no need to apply masks
409            // because the unmasked parts will be overwritten by fields.
410            // Write the fields.
411            self.0.encode(encoder, offset + 0, depth)?;
412            Ok(())
413        }
414    }
415
416    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
417        for PlayerRemoveSoundRequest
418    {
419        #[inline(always)]
420        fn new_empty() -> Self {
421            Self { id: fidl::new_empty!(u32, D) }
422        }
423
424        #[inline]
425        unsafe fn decode(
426            &mut self,
427            decoder: &mut fidl::encoding::Decoder<'_, D>,
428            offset: usize,
429            _depth: fidl::encoding::Depth,
430        ) -> fidl::Result<()> {
431            decoder.debug_check_bounds::<Self>(offset);
432            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
433            // Verify that padding bytes are zero.
434            // Copy from the buffer into the object.
435            unsafe {
436                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
437            }
438            Ok(())
439        }
440    }
441
442    impl fidl::encoding::ValueTypeMarker for PlayerStopPlayingSoundRequest {
443        type Borrowed<'a> = &'a Self;
444        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
445            value
446        }
447    }
448
449    unsafe impl fidl::encoding::TypeMarker for PlayerStopPlayingSoundRequest {
450        type Owned = Self;
451
452        #[inline(always)]
453        fn inline_align(_context: fidl::encoding::Context) -> usize {
454            4
455        }
456
457        #[inline(always)]
458        fn inline_size(_context: fidl::encoding::Context) -> usize {
459            4
460        }
461        #[inline(always)]
462        fn encode_is_copy() -> bool {
463            true
464        }
465
466        #[inline(always)]
467        fn decode_is_copy() -> bool {
468            true
469        }
470    }
471
472    unsafe impl<D: fidl::encoding::ResourceDialect>
473        fidl::encoding::Encode<PlayerStopPlayingSoundRequest, D>
474        for &PlayerStopPlayingSoundRequest
475    {
476        #[inline]
477        unsafe fn encode(
478            self,
479            encoder: &mut fidl::encoding::Encoder<'_, D>,
480            offset: usize,
481            _depth: fidl::encoding::Depth,
482        ) -> fidl::Result<()> {
483            encoder.debug_check_bounds::<PlayerStopPlayingSoundRequest>(offset);
484            unsafe {
485                // Copy the object into the buffer.
486                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
487                (buf_ptr as *mut PlayerStopPlayingSoundRequest)
488                    .write_unaligned((self as *const PlayerStopPlayingSoundRequest).read());
489                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
490                // done second because the memcpy will write garbage to these bytes.
491            }
492            Ok(())
493        }
494    }
495    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
496        fidl::encoding::Encode<PlayerStopPlayingSoundRequest, D> for (T0,)
497    {
498        #[inline]
499        unsafe fn encode(
500            self,
501            encoder: &mut fidl::encoding::Encoder<'_, D>,
502            offset: usize,
503            depth: fidl::encoding::Depth,
504        ) -> fidl::Result<()> {
505            encoder.debug_check_bounds::<PlayerStopPlayingSoundRequest>(offset);
506            // Zero out padding regions. There's no need to apply masks
507            // because the unmasked parts will be overwritten by fields.
508            // Write the fields.
509            self.0.encode(encoder, offset + 0, depth)?;
510            Ok(())
511        }
512    }
513
514    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
515        for PlayerStopPlayingSoundRequest
516    {
517        #[inline(always)]
518        fn new_empty() -> Self {
519            Self { id: fidl::new_empty!(u32, D) }
520        }
521
522        #[inline]
523        unsafe fn decode(
524            &mut self,
525            decoder: &mut fidl::encoding::Decoder<'_, D>,
526            offset: usize,
527            _depth: fidl::encoding::Depth,
528        ) -> fidl::Result<()> {
529            decoder.debug_check_bounds::<Self>(offset);
530            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
531            // Verify that padding bytes are zero.
532            // Copy from the buffer into the object.
533            unsafe {
534                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
535            }
536            Ok(())
537        }
538    }
539
540    impl fidl::encoding::ValueTypeMarker for PlayerAddSoundFromFileResponse {
541        type Borrowed<'a> = &'a Self;
542        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
543            value
544        }
545    }
546
547    unsafe impl fidl::encoding::TypeMarker for PlayerAddSoundFromFileResponse {
548        type Owned = Self;
549
550        #[inline(always)]
551        fn inline_align(_context: fidl::encoding::Context) -> usize {
552            8
553        }
554
555        #[inline(always)]
556        fn inline_size(_context: fidl::encoding::Context) -> usize {
557            8
558        }
559        #[inline(always)]
560        fn encode_is_copy() -> bool {
561            true
562        }
563
564        #[inline(always)]
565        fn decode_is_copy() -> bool {
566            true
567        }
568    }
569
570    unsafe impl<D: fidl::encoding::ResourceDialect>
571        fidl::encoding::Encode<PlayerAddSoundFromFileResponse, D>
572        for &PlayerAddSoundFromFileResponse
573    {
574        #[inline]
575        unsafe fn encode(
576            self,
577            encoder: &mut fidl::encoding::Encoder<'_, D>,
578            offset: usize,
579            _depth: fidl::encoding::Depth,
580        ) -> fidl::Result<()> {
581            encoder.debug_check_bounds::<PlayerAddSoundFromFileResponse>(offset);
582            unsafe {
583                // Copy the object into the buffer.
584                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
585                (buf_ptr as *mut PlayerAddSoundFromFileResponse)
586                    .write_unaligned((self as *const PlayerAddSoundFromFileResponse).read());
587                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
588                // done second because the memcpy will write garbage to these bytes.
589            }
590            Ok(())
591        }
592    }
593    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
594        fidl::encoding::Encode<PlayerAddSoundFromFileResponse, D> for (T0,)
595    {
596        #[inline]
597        unsafe fn encode(
598            self,
599            encoder: &mut fidl::encoding::Encoder<'_, D>,
600            offset: usize,
601            depth: fidl::encoding::Depth,
602        ) -> fidl::Result<()> {
603            encoder.debug_check_bounds::<PlayerAddSoundFromFileResponse>(offset);
604            // Zero out padding regions. There's no need to apply masks
605            // because the unmasked parts will be overwritten by fields.
606            // Write the fields.
607            self.0.encode(encoder, offset + 0, depth)?;
608            Ok(())
609        }
610    }
611
612    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
613        for PlayerAddSoundFromFileResponse
614    {
615        #[inline(always)]
616        fn new_empty() -> Self {
617            Self { duration: fidl::new_empty!(i64, D) }
618        }
619
620        #[inline]
621        unsafe fn decode(
622            &mut self,
623            decoder: &mut fidl::encoding::Decoder<'_, D>,
624            offset: usize,
625            _depth: fidl::encoding::Depth,
626        ) -> fidl::Result<()> {
627            decoder.debug_check_bounds::<Self>(offset);
628            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
629            // Verify that padding bytes are zero.
630            // Copy from the buffer into the object.
631            unsafe {
632                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
633            }
634            Ok(())
635        }
636    }
637}