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