fidl_fuchsia_metrics_test__common/
fidl_fuchsia_metrics_test__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/// Maximum number of events returned by a query.
12pub const MAX_QUERY_LENGTH: u16 = 64;
13
14/// This is currently not exhaustive.
15#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
16#[repr(u32)]
17pub enum LogMethod {
18    LogOccurrence = 1,
19    LogInteger = 2,
20    LogIntegerHistogram = 3,
21    LogString = 4,
22    LogMetricEvents = 5,
23}
24
25impl LogMethod {
26    #[inline]
27    pub fn from_primitive(prim: u32) -> Option<Self> {
28        match prim {
29            1 => Some(Self::LogOccurrence),
30            2 => Some(Self::LogInteger),
31            3 => Some(Self::LogIntegerHistogram),
32            4 => Some(Self::LogString),
33            5 => Some(Self::LogMetricEvents),
34            _ => None,
35        }
36    }
37
38    #[inline]
39    pub const fn into_primitive(self) -> u32 {
40        self as u32
41    }
42}
43
44#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
45pub struct MetricEventLoggerQuerierResetLoggerRequest {
46    pub project_id: u32,
47    pub method: LogMethod,
48}
49
50impl fidl::Persistable for MetricEventLoggerQuerierResetLoggerRequest {}
51
52#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
53pub struct MetricEventLoggerQuerierWatchLogsRequest {
54    pub project_id: u32,
55    pub method: LogMethod,
56}
57
58impl fidl::Persistable for MetricEventLoggerQuerierWatchLogsRequest {}
59
60#[derive(Clone, Debug, PartialEq)]
61pub struct MetricEventLoggerQuerierWatchLogsResponse {
62    pub events: Vec<fidl_fuchsia_metrics__common::MetricEvent>,
63    pub more: bool,
64}
65
66impl fidl::Persistable for MetricEventLoggerQuerierWatchLogsResponse {}
67
68mod internal {
69    use super::*;
70    unsafe impl fidl::encoding::TypeMarker for LogMethod {
71        type Owned = Self;
72
73        #[inline(always)]
74        fn inline_align(_context: fidl::encoding::Context) -> usize {
75            std::mem::align_of::<u32>()
76        }
77
78        #[inline(always)]
79        fn inline_size(_context: fidl::encoding::Context) -> usize {
80            std::mem::size_of::<u32>()
81        }
82
83        #[inline(always)]
84        fn encode_is_copy() -> bool {
85            true
86        }
87
88        #[inline(always)]
89        fn decode_is_copy() -> bool {
90            false
91        }
92    }
93
94    impl fidl::encoding::ValueTypeMarker for LogMethod {
95        type Borrowed<'a> = Self;
96        #[inline(always)]
97        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
98            *value
99        }
100    }
101
102    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for LogMethod {
103        #[inline]
104        unsafe fn encode(
105            self,
106            encoder: &mut fidl::encoding::Encoder<'_, D>,
107            offset: usize,
108            _depth: fidl::encoding::Depth,
109        ) -> fidl::Result<()> {
110            encoder.debug_check_bounds::<Self>(offset);
111            encoder.write_num(self.into_primitive(), offset);
112            Ok(())
113        }
114    }
115
116    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LogMethod {
117        #[inline(always)]
118        fn new_empty() -> Self {
119            Self::LogOccurrence
120        }
121
122        #[inline]
123        unsafe fn decode(
124            &mut self,
125            decoder: &mut fidl::encoding::Decoder<'_, D>,
126            offset: usize,
127            _depth: fidl::encoding::Depth,
128        ) -> fidl::Result<()> {
129            decoder.debug_check_bounds::<Self>(offset);
130            let prim = decoder.read_num::<u32>(offset);
131
132            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
133            Ok(())
134        }
135    }
136
137    impl fidl::encoding::ValueTypeMarker for MetricEventLoggerQuerierResetLoggerRequest {
138        type Borrowed<'a> = &'a Self;
139        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
140            value
141        }
142    }
143
144    unsafe impl fidl::encoding::TypeMarker for MetricEventLoggerQuerierResetLoggerRequest {
145        type Owned = Self;
146
147        #[inline(always)]
148        fn inline_align(_context: fidl::encoding::Context) -> usize {
149            4
150        }
151
152        #[inline(always)]
153        fn inline_size(_context: fidl::encoding::Context) -> usize {
154            8
155        }
156    }
157
158    unsafe impl<D: fidl::encoding::ResourceDialect>
159        fidl::encoding::Encode<MetricEventLoggerQuerierResetLoggerRequest, D>
160        for &MetricEventLoggerQuerierResetLoggerRequest
161    {
162        #[inline]
163        unsafe fn encode(
164            self,
165            encoder: &mut fidl::encoding::Encoder<'_, D>,
166            offset: usize,
167            _depth: fidl::encoding::Depth,
168        ) -> fidl::Result<()> {
169            encoder.debug_check_bounds::<MetricEventLoggerQuerierResetLoggerRequest>(offset);
170            // Delegate to tuple encoding.
171            fidl::encoding::Encode::<MetricEventLoggerQuerierResetLoggerRequest, D>::encode(
172                (
173                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.project_id),
174                    <LogMethod as fidl::encoding::ValueTypeMarker>::borrow(&self.method),
175                ),
176                encoder,
177                offset,
178                _depth,
179            )
180        }
181    }
182    unsafe impl<
183            D: fidl::encoding::ResourceDialect,
184            T0: fidl::encoding::Encode<u32, D>,
185            T1: fidl::encoding::Encode<LogMethod, D>,
186        > fidl::encoding::Encode<MetricEventLoggerQuerierResetLoggerRequest, D> for (T0, T1)
187    {
188        #[inline]
189        unsafe fn encode(
190            self,
191            encoder: &mut fidl::encoding::Encoder<'_, D>,
192            offset: usize,
193            depth: fidl::encoding::Depth,
194        ) -> fidl::Result<()> {
195            encoder.debug_check_bounds::<MetricEventLoggerQuerierResetLoggerRequest>(offset);
196            // Zero out padding regions. There's no need to apply masks
197            // because the unmasked parts will be overwritten by fields.
198            // Write the fields.
199            self.0.encode(encoder, offset + 0, depth)?;
200            self.1.encode(encoder, offset + 4, depth)?;
201            Ok(())
202        }
203    }
204
205    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
206        for MetricEventLoggerQuerierResetLoggerRequest
207    {
208        #[inline(always)]
209        fn new_empty() -> Self {
210            Self { project_id: fidl::new_empty!(u32, D), method: fidl::new_empty!(LogMethod, D) }
211        }
212
213        #[inline]
214        unsafe fn decode(
215            &mut self,
216            decoder: &mut fidl::encoding::Decoder<'_, D>,
217            offset: usize,
218            _depth: fidl::encoding::Depth,
219        ) -> fidl::Result<()> {
220            decoder.debug_check_bounds::<Self>(offset);
221            // Verify that padding bytes are zero.
222            fidl::decode!(u32, D, &mut self.project_id, decoder, offset + 0, _depth)?;
223            fidl::decode!(LogMethod, D, &mut self.method, decoder, offset + 4, _depth)?;
224            Ok(())
225        }
226    }
227
228    impl fidl::encoding::ValueTypeMarker for MetricEventLoggerQuerierWatchLogsRequest {
229        type Borrowed<'a> = &'a Self;
230        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
231            value
232        }
233    }
234
235    unsafe impl fidl::encoding::TypeMarker for MetricEventLoggerQuerierWatchLogsRequest {
236        type Owned = Self;
237
238        #[inline(always)]
239        fn inline_align(_context: fidl::encoding::Context) -> usize {
240            4
241        }
242
243        #[inline(always)]
244        fn inline_size(_context: fidl::encoding::Context) -> usize {
245            8
246        }
247    }
248
249    unsafe impl<D: fidl::encoding::ResourceDialect>
250        fidl::encoding::Encode<MetricEventLoggerQuerierWatchLogsRequest, D>
251        for &MetricEventLoggerQuerierWatchLogsRequest
252    {
253        #[inline]
254        unsafe fn encode(
255            self,
256            encoder: &mut fidl::encoding::Encoder<'_, D>,
257            offset: usize,
258            _depth: fidl::encoding::Depth,
259        ) -> fidl::Result<()> {
260            encoder.debug_check_bounds::<MetricEventLoggerQuerierWatchLogsRequest>(offset);
261            // Delegate to tuple encoding.
262            fidl::encoding::Encode::<MetricEventLoggerQuerierWatchLogsRequest, D>::encode(
263                (
264                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.project_id),
265                    <LogMethod as fidl::encoding::ValueTypeMarker>::borrow(&self.method),
266                ),
267                encoder,
268                offset,
269                _depth,
270            )
271        }
272    }
273    unsafe impl<
274            D: fidl::encoding::ResourceDialect,
275            T0: fidl::encoding::Encode<u32, D>,
276            T1: fidl::encoding::Encode<LogMethod, D>,
277        > fidl::encoding::Encode<MetricEventLoggerQuerierWatchLogsRequest, D> for (T0, T1)
278    {
279        #[inline]
280        unsafe fn encode(
281            self,
282            encoder: &mut fidl::encoding::Encoder<'_, D>,
283            offset: usize,
284            depth: fidl::encoding::Depth,
285        ) -> fidl::Result<()> {
286            encoder.debug_check_bounds::<MetricEventLoggerQuerierWatchLogsRequest>(offset);
287            // Zero out padding regions. There's no need to apply masks
288            // because the unmasked parts will be overwritten by fields.
289            // Write the fields.
290            self.0.encode(encoder, offset + 0, depth)?;
291            self.1.encode(encoder, offset + 4, depth)?;
292            Ok(())
293        }
294    }
295
296    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
297        for MetricEventLoggerQuerierWatchLogsRequest
298    {
299        #[inline(always)]
300        fn new_empty() -> Self {
301            Self { project_id: fidl::new_empty!(u32, D), method: fidl::new_empty!(LogMethod, D) }
302        }
303
304        #[inline]
305        unsafe fn decode(
306            &mut self,
307            decoder: &mut fidl::encoding::Decoder<'_, D>,
308            offset: usize,
309            _depth: fidl::encoding::Depth,
310        ) -> fidl::Result<()> {
311            decoder.debug_check_bounds::<Self>(offset);
312            // Verify that padding bytes are zero.
313            fidl::decode!(u32, D, &mut self.project_id, decoder, offset + 0, _depth)?;
314            fidl::decode!(LogMethod, D, &mut self.method, decoder, offset + 4, _depth)?;
315            Ok(())
316        }
317    }
318
319    impl fidl::encoding::ValueTypeMarker for MetricEventLoggerQuerierWatchLogsResponse {
320        type Borrowed<'a> = &'a Self;
321        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
322            value
323        }
324    }
325
326    unsafe impl fidl::encoding::TypeMarker for MetricEventLoggerQuerierWatchLogsResponse {
327        type Owned = Self;
328
329        #[inline(always)]
330        fn inline_align(_context: fidl::encoding::Context) -> usize {
331            8
332        }
333
334        #[inline(always)]
335        fn inline_size(_context: fidl::encoding::Context) -> usize {
336            24
337        }
338    }
339
340    unsafe impl<D: fidl::encoding::ResourceDialect>
341        fidl::encoding::Encode<MetricEventLoggerQuerierWatchLogsResponse, D>
342        for &MetricEventLoggerQuerierWatchLogsResponse
343    {
344        #[inline]
345        unsafe fn encode(
346            self,
347            encoder: &mut fidl::encoding::Encoder<'_, D>,
348            offset: usize,
349            _depth: fidl::encoding::Depth,
350        ) -> fidl::Result<()> {
351            encoder.debug_check_bounds::<MetricEventLoggerQuerierWatchLogsResponse>(offset);
352            // Delegate to tuple encoding.
353            fidl::encoding::Encode::<MetricEventLoggerQuerierWatchLogsResponse, D>::encode(
354                (
355                    <fidl::encoding::Vector<fidl_fuchsia_metrics__common::MetricEvent, 64> as fidl::encoding::ValueTypeMarker>::borrow(&self.events),
356                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.more),
357                ),
358                encoder, offset, _depth
359            )
360        }
361    }
362    unsafe impl<
363            D: fidl::encoding::ResourceDialect,
364            T0: fidl::encoding::Encode<
365                fidl::encoding::Vector<fidl_fuchsia_metrics__common::MetricEvent, 64>,
366                D,
367            >,
368            T1: fidl::encoding::Encode<bool, D>,
369        > fidl::encoding::Encode<MetricEventLoggerQuerierWatchLogsResponse, D> for (T0, T1)
370    {
371        #[inline]
372        unsafe fn encode(
373            self,
374            encoder: &mut fidl::encoding::Encoder<'_, D>,
375            offset: usize,
376            depth: fidl::encoding::Depth,
377        ) -> fidl::Result<()> {
378            encoder.debug_check_bounds::<MetricEventLoggerQuerierWatchLogsResponse>(offset);
379            // Zero out padding regions. There's no need to apply masks
380            // because the unmasked parts will be overwritten by fields.
381            unsafe {
382                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
383                (ptr as *mut u64).write_unaligned(0);
384            }
385            // Write the fields.
386            self.0.encode(encoder, offset + 0, depth)?;
387            self.1.encode(encoder, offset + 16, depth)?;
388            Ok(())
389        }
390    }
391
392    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
393        for MetricEventLoggerQuerierWatchLogsResponse
394    {
395        #[inline(always)]
396        fn new_empty() -> Self {
397            Self {
398                events: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_metrics__common::MetricEvent, 64>, D),
399                more: fidl::new_empty!(bool, D),
400            }
401        }
402
403        #[inline]
404        unsafe fn decode(
405            &mut self,
406            decoder: &mut fidl::encoding::Decoder<'_, D>,
407            offset: usize,
408            _depth: fidl::encoding::Depth,
409        ) -> fidl::Result<()> {
410            decoder.debug_check_bounds::<Self>(offset);
411            // Verify that padding bytes are zero.
412            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
413            let padval = unsafe { (ptr as *const u64).read_unaligned() };
414            let mask = 0xffffffffffffff00u64;
415            let maskedval = padval & mask;
416            if maskedval != 0 {
417                return Err(fidl::Error::NonZeroPadding {
418                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
419                });
420            }
421            fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_metrics__common::MetricEvent, 64>, D, &mut self.events, decoder, offset + 0, _depth)?;
422            fidl::decode!(bool, D, &mut self.more, decoder, offset + 16, _depth)?;
423            Ok(())
424        }
425    }
426}