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
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 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 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 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 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 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 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 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 unsafe {
382 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
383 (ptr as *mut u64).write_unaligned(0);
384 }
385 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 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}