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 const MAX_QUERY_LENGTH: u16 = 64;
13
14#[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 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 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 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 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 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 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 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 unsafe {
387 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
388 (ptr as *mut u64).write_unaligned(0);
389 }
390 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 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}