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
11#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct InspectListChildrenResponse {
13 pub children_names: Vec<String>,
14}
15
16impl fidl::Persistable for InspectListChildrenResponse {}
17
18#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
19pub struct InspectOpenChildResponse {
20 pub success: bool,
21}
22
23impl fidl::Persistable for InspectOpenChildResponse {}
24
25#[derive(Clone, Debug, PartialEq, PartialOrd)]
26pub struct InspectReadDataResponse {
27 pub object: Object,
28}
29
30impl fidl::Persistable for InspectReadDataResponse {}
31
32#[derive(Clone, Debug, PartialEq, PartialOrd)]
33pub struct Metric {
34 pub key: String,
35 pub value: MetricValue,
36}
37
38impl fidl::Persistable for Metric {}
39
40#[derive(Clone, Debug, PartialEq, PartialOrd)]
41pub struct Object {
42 pub name: String,
43 pub properties: Vec<Property>,
44 pub metrics: Vec<Metric>,
45}
46
47impl fidl::Persistable for Object {}
48
49#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
50pub struct Property {
51 pub key: String,
52 pub value: PropertyValue,
53}
54
55impl fidl::Persistable for Property {}
56
57#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
58pub enum MetricValue {
59 IntValue(i64),
60 UintValue(u64),
61 DoubleValue(f64),
62}
63
64impl MetricValue {
65 #[inline]
66 pub fn ordinal(&self) -> u64 {
67 match *self {
68 Self::IntValue(_) => 1,
69 Self::UintValue(_) => 2,
70 Self::DoubleValue(_) => 3,
71 }
72 }
73}
74
75impl fidl::Persistable for MetricValue {}
76
77#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
78pub enum PropertyValue {
79 Str(String),
80 Bytes(Vec<u8>),
81}
82
83impl PropertyValue {
84 #[inline]
85 pub fn ordinal(&self) -> u64 {
86 match *self {
87 Self::Str(_) => 1,
88 Self::Bytes(_) => 2,
89 }
90 }
91}
92
93impl fidl::Persistable for PropertyValue {}
94
95pub mod inspect_ordinals {
96 pub const READ_DATA: u64 = 0x1c6778e57fcfa9e1;
97 pub const LIST_CHILDREN: u64 = 0x463fdc024dc40611;
98 pub const OPEN_CHILD: u64 = 0x30513125b65c866a;
99}
100
101mod internal {
102 use super::*;
103
104 impl fidl::encoding::ValueTypeMarker for InspectListChildrenResponse {
105 type Borrowed<'a> = &'a Self;
106 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
107 value
108 }
109 }
110
111 unsafe impl fidl::encoding::TypeMarker for InspectListChildrenResponse {
112 type Owned = Self;
113
114 #[inline(always)]
115 fn inline_align(_context: fidl::encoding::Context) -> usize {
116 8
117 }
118
119 #[inline(always)]
120 fn inline_size(_context: fidl::encoding::Context) -> usize {
121 16
122 }
123 }
124
125 unsafe impl<D: fidl::encoding::ResourceDialect>
126 fidl::encoding::Encode<InspectListChildrenResponse, D> for &InspectListChildrenResponse
127 {
128 #[inline]
129 unsafe fn encode(
130 self,
131 encoder: &mut fidl::encoding::Encoder<'_, D>,
132 offset: usize,
133 _depth: fidl::encoding::Depth,
134 ) -> fidl::Result<()> {
135 encoder.debug_check_bounds::<InspectListChildrenResponse>(offset);
136 fidl::encoding::Encode::<InspectListChildrenResponse, D>::encode(
138 (
139 <fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString> as fidl::encoding::ValueTypeMarker>::borrow(&self.children_names),
140 ),
141 encoder, offset, _depth
142 )
143 }
144 }
145 unsafe impl<
146 D: fidl::encoding::ResourceDialect,
147 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>, D>,
148 > fidl::encoding::Encode<InspectListChildrenResponse, D> for (T0,)
149 {
150 #[inline]
151 unsafe fn encode(
152 self,
153 encoder: &mut fidl::encoding::Encoder<'_, D>,
154 offset: usize,
155 depth: fidl::encoding::Depth,
156 ) -> fidl::Result<()> {
157 encoder.debug_check_bounds::<InspectListChildrenResponse>(offset);
158 self.0.encode(encoder, offset + 0, depth)?;
162 Ok(())
163 }
164 }
165
166 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
167 for InspectListChildrenResponse
168 {
169 #[inline(always)]
170 fn new_empty() -> Self {
171 Self {
172 children_names: fidl::new_empty!(
173 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
174 D
175 ),
176 }
177 }
178
179 #[inline]
180 unsafe fn decode(
181 &mut self,
182 decoder: &mut fidl::encoding::Decoder<'_, D>,
183 offset: usize,
184 _depth: fidl::encoding::Depth,
185 ) -> fidl::Result<()> {
186 decoder.debug_check_bounds::<Self>(offset);
187 fidl::decode!(
189 fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
190 D,
191 &mut self.children_names,
192 decoder,
193 offset + 0,
194 _depth
195 )?;
196 Ok(())
197 }
198 }
199
200 impl fidl::encoding::ValueTypeMarker for InspectOpenChildResponse {
201 type Borrowed<'a> = &'a Self;
202 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
203 value
204 }
205 }
206
207 unsafe impl fidl::encoding::TypeMarker for InspectOpenChildResponse {
208 type Owned = Self;
209
210 #[inline(always)]
211 fn inline_align(_context: fidl::encoding::Context) -> usize {
212 1
213 }
214
215 #[inline(always)]
216 fn inline_size(_context: fidl::encoding::Context) -> usize {
217 1
218 }
219 }
220
221 unsafe impl<D: fidl::encoding::ResourceDialect>
222 fidl::encoding::Encode<InspectOpenChildResponse, D> for &InspectOpenChildResponse
223 {
224 #[inline]
225 unsafe fn encode(
226 self,
227 encoder: &mut fidl::encoding::Encoder<'_, D>,
228 offset: usize,
229 _depth: fidl::encoding::Depth,
230 ) -> fidl::Result<()> {
231 encoder.debug_check_bounds::<InspectOpenChildResponse>(offset);
232 fidl::encoding::Encode::<InspectOpenChildResponse, D>::encode(
234 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.success),),
235 encoder,
236 offset,
237 _depth,
238 )
239 }
240 }
241 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
242 fidl::encoding::Encode<InspectOpenChildResponse, D> for (T0,)
243 {
244 #[inline]
245 unsafe fn encode(
246 self,
247 encoder: &mut fidl::encoding::Encoder<'_, D>,
248 offset: usize,
249 depth: fidl::encoding::Depth,
250 ) -> fidl::Result<()> {
251 encoder.debug_check_bounds::<InspectOpenChildResponse>(offset);
252 self.0.encode(encoder, offset + 0, depth)?;
256 Ok(())
257 }
258 }
259
260 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
261 for InspectOpenChildResponse
262 {
263 #[inline(always)]
264 fn new_empty() -> Self {
265 Self { success: fidl::new_empty!(bool, D) }
266 }
267
268 #[inline]
269 unsafe fn decode(
270 &mut self,
271 decoder: &mut fidl::encoding::Decoder<'_, D>,
272 offset: usize,
273 _depth: fidl::encoding::Depth,
274 ) -> fidl::Result<()> {
275 decoder.debug_check_bounds::<Self>(offset);
276 fidl::decode!(bool, D, &mut self.success, decoder, offset + 0, _depth)?;
278 Ok(())
279 }
280 }
281
282 impl fidl::encoding::ValueTypeMarker for InspectReadDataResponse {
283 type Borrowed<'a> = &'a Self;
284 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
285 value
286 }
287 }
288
289 unsafe impl fidl::encoding::TypeMarker for InspectReadDataResponse {
290 type Owned = Self;
291
292 #[inline(always)]
293 fn inline_align(_context: fidl::encoding::Context) -> usize {
294 8
295 }
296
297 #[inline(always)]
298 fn inline_size(_context: fidl::encoding::Context) -> usize {
299 48
300 }
301 }
302
303 unsafe impl<D: fidl::encoding::ResourceDialect>
304 fidl::encoding::Encode<InspectReadDataResponse, D> for &InspectReadDataResponse
305 {
306 #[inline]
307 unsafe fn encode(
308 self,
309 encoder: &mut fidl::encoding::Encoder<'_, D>,
310 offset: usize,
311 _depth: fidl::encoding::Depth,
312 ) -> fidl::Result<()> {
313 encoder.debug_check_bounds::<InspectReadDataResponse>(offset);
314 fidl::encoding::Encode::<InspectReadDataResponse, D>::encode(
316 (<Object as fidl::encoding::ValueTypeMarker>::borrow(&self.object),),
317 encoder,
318 offset,
319 _depth,
320 )
321 }
322 }
323 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Object, D>>
324 fidl::encoding::Encode<InspectReadDataResponse, D> for (T0,)
325 {
326 #[inline]
327 unsafe fn encode(
328 self,
329 encoder: &mut fidl::encoding::Encoder<'_, D>,
330 offset: usize,
331 depth: fidl::encoding::Depth,
332 ) -> fidl::Result<()> {
333 encoder.debug_check_bounds::<InspectReadDataResponse>(offset);
334 self.0.encode(encoder, offset + 0, depth)?;
338 Ok(())
339 }
340 }
341
342 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
343 for InspectReadDataResponse
344 {
345 #[inline(always)]
346 fn new_empty() -> Self {
347 Self { object: fidl::new_empty!(Object, D) }
348 }
349
350 #[inline]
351 unsafe fn decode(
352 &mut self,
353 decoder: &mut fidl::encoding::Decoder<'_, D>,
354 offset: usize,
355 _depth: fidl::encoding::Depth,
356 ) -> fidl::Result<()> {
357 decoder.debug_check_bounds::<Self>(offset);
358 fidl::decode!(Object, D, &mut self.object, decoder, offset + 0, _depth)?;
360 Ok(())
361 }
362 }
363
364 impl fidl::encoding::ValueTypeMarker for Metric {
365 type Borrowed<'a> = &'a Self;
366 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
367 value
368 }
369 }
370
371 unsafe impl fidl::encoding::TypeMarker for Metric {
372 type Owned = Self;
373
374 #[inline(always)]
375 fn inline_align(_context: fidl::encoding::Context) -> usize {
376 8
377 }
378
379 #[inline(always)]
380 fn inline_size(_context: fidl::encoding::Context) -> usize {
381 32
382 }
383 }
384
385 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Metric, D> for &Metric {
386 #[inline]
387 unsafe fn encode(
388 self,
389 encoder: &mut fidl::encoding::Encoder<'_, D>,
390 offset: usize,
391 _depth: fidl::encoding::Depth,
392 ) -> fidl::Result<()> {
393 encoder.debug_check_bounds::<Metric>(offset);
394 fidl::encoding::Encode::<Metric, D>::encode(
396 (
397 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
398 &self.key,
399 ),
400 <MetricValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
401 ),
402 encoder,
403 offset,
404 _depth,
405 )
406 }
407 }
408 unsafe impl<
409 D: fidl::encoding::ResourceDialect,
410 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
411 T1: fidl::encoding::Encode<MetricValue, D>,
412 > fidl::encoding::Encode<Metric, D> for (T0, T1)
413 {
414 #[inline]
415 unsafe fn encode(
416 self,
417 encoder: &mut fidl::encoding::Encoder<'_, D>,
418 offset: usize,
419 depth: fidl::encoding::Depth,
420 ) -> fidl::Result<()> {
421 encoder.debug_check_bounds::<Metric>(offset);
422 self.0.encode(encoder, offset + 0, depth)?;
426 self.1.encode(encoder, offset + 16, depth)?;
427 Ok(())
428 }
429 }
430
431 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Metric {
432 #[inline(always)]
433 fn new_empty() -> Self {
434 Self {
435 key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
436 value: fidl::new_empty!(MetricValue, D),
437 }
438 }
439
440 #[inline]
441 unsafe fn decode(
442 &mut self,
443 decoder: &mut fidl::encoding::Decoder<'_, D>,
444 offset: usize,
445 _depth: fidl::encoding::Depth,
446 ) -> fidl::Result<()> {
447 decoder.debug_check_bounds::<Self>(offset);
448 fidl::decode!(
450 fidl::encoding::UnboundedString,
451 D,
452 &mut self.key,
453 decoder,
454 offset + 0,
455 _depth
456 )?;
457 fidl::decode!(MetricValue, D, &mut self.value, decoder, offset + 16, _depth)?;
458 Ok(())
459 }
460 }
461
462 impl fidl::encoding::ValueTypeMarker for Object {
463 type Borrowed<'a> = &'a Self;
464 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
465 value
466 }
467 }
468
469 unsafe impl fidl::encoding::TypeMarker for Object {
470 type Owned = Self;
471
472 #[inline(always)]
473 fn inline_align(_context: fidl::encoding::Context) -> usize {
474 8
475 }
476
477 #[inline(always)]
478 fn inline_size(_context: fidl::encoding::Context) -> usize {
479 48
480 }
481 }
482
483 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Object, D> for &Object {
484 #[inline]
485 unsafe fn encode(
486 self,
487 encoder: &mut fidl::encoding::Encoder<'_, D>,
488 offset: usize,
489 _depth: fidl::encoding::Depth,
490 ) -> fidl::Result<()> {
491 encoder.debug_check_bounds::<Object>(offset);
492 fidl::encoding::Encode::<Object, D>::encode(
494 (
495 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
496 <fidl::encoding::UnboundedVector<Property> as fidl::encoding::ValueTypeMarker>::borrow(&self.properties),
497 <fidl::encoding::UnboundedVector<Metric> as fidl::encoding::ValueTypeMarker>::borrow(&self.metrics),
498 ),
499 encoder, offset, _depth
500 )
501 }
502 }
503 unsafe impl<
504 D: fidl::encoding::ResourceDialect,
505 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
506 T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Property>, D>,
507 T2: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Metric>, D>,
508 > fidl::encoding::Encode<Object, D> for (T0, T1, T2)
509 {
510 #[inline]
511 unsafe fn encode(
512 self,
513 encoder: &mut fidl::encoding::Encoder<'_, D>,
514 offset: usize,
515 depth: fidl::encoding::Depth,
516 ) -> fidl::Result<()> {
517 encoder.debug_check_bounds::<Object>(offset);
518 self.0.encode(encoder, offset + 0, depth)?;
522 self.1.encode(encoder, offset + 16, depth)?;
523 self.2.encode(encoder, offset + 32, depth)?;
524 Ok(())
525 }
526 }
527
528 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Object {
529 #[inline(always)]
530 fn new_empty() -> Self {
531 Self {
532 name: fidl::new_empty!(fidl::encoding::UnboundedString, D),
533 properties: fidl::new_empty!(fidl::encoding::UnboundedVector<Property>, D),
534 metrics: fidl::new_empty!(fidl::encoding::UnboundedVector<Metric>, D),
535 }
536 }
537
538 #[inline]
539 unsafe fn decode(
540 &mut self,
541 decoder: &mut fidl::encoding::Decoder<'_, D>,
542 offset: usize,
543 _depth: fidl::encoding::Depth,
544 ) -> fidl::Result<()> {
545 decoder.debug_check_bounds::<Self>(offset);
546 fidl::decode!(
548 fidl::encoding::UnboundedString,
549 D,
550 &mut self.name,
551 decoder,
552 offset + 0,
553 _depth
554 )?;
555 fidl::decode!(
556 fidl::encoding::UnboundedVector<Property>,
557 D,
558 &mut self.properties,
559 decoder,
560 offset + 16,
561 _depth
562 )?;
563 fidl::decode!(
564 fidl::encoding::UnboundedVector<Metric>,
565 D,
566 &mut self.metrics,
567 decoder,
568 offset + 32,
569 _depth
570 )?;
571 Ok(())
572 }
573 }
574
575 impl fidl::encoding::ValueTypeMarker for Property {
576 type Borrowed<'a> = &'a Self;
577 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
578 value
579 }
580 }
581
582 unsafe impl fidl::encoding::TypeMarker for Property {
583 type Owned = Self;
584
585 #[inline(always)]
586 fn inline_align(_context: fidl::encoding::Context) -> usize {
587 8
588 }
589
590 #[inline(always)]
591 fn inline_size(_context: fidl::encoding::Context) -> usize {
592 32
593 }
594 }
595
596 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Property, D> for &Property {
597 #[inline]
598 unsafe fn encode(
599 self,
600 encoder: &mut fidl::encoding::Encoder<'_, D>,
601 offset: usize,
602 _depth: fidl::encoding::Depth,
603 ) -> fidl::Result<()> {
604 encoder.debug_check_bounds::<Property>(offset);
605 fidl::encoding::Encode::<Property, D>::encode(
607 (
608 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
609 &self.key,
610 ),
611 <PropertyValue as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
612 ),
613 encoder,
614 offset,
615 _depth,
616 )
617 }
618 }
619 unsafe impl<
620 D: fidl::encoding::ResourceDialect,
621 T0: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
622 T1: fidl::encoding::Encode<PropertyValue, D>,
623 > fidl::encoding::Encode<Property, D> for (T0, T1)
624 {
625 #[inline]
626 unsafe fn encode(
627 self,
628 encoder: &mut fidl::encoding::Encoder<'_, D>,
629 offset: usize,
630 depth: fidl::encoding::Depth,
631 ) -> fidl::Result<()> {
632 encoder.debug_check_bounds::<Property>(offset);
633 self.0.encode(encoder, offset + 0, depth)?;
637 self.1.encode(encoder, offset + 16, depth)?;
638 Ok(())
639 }
640 }
641
642 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Property {
643 #[inline(always)]
644 fn new_empty() -> Self {
645 Self {
646 key: fidl::new_empty!(fidl::encoding::UnboundedString, D),
647 value: fidl::new_empty!(PropertyValue, D),
648 }
649 }
650
651 #[inline]
652 unsafe fn decode(
653 &mut self,
654 decoder: &mut fidl::encoding::Decoder<'_, D>,
655 offset: usize,
656 _depth: fidl::encoding::Depth,
657 ) -> fidl::Result<()> {
658 decoder.debug_check_bounds::<Self>(offset);
659 fidl::decode!(
661 fidl::encoding::UnboundedString,
662 D,
663 &mut self.key,
664 decoder,
665 offset + 0,
666 _depth
667 )?;
668 fidl::decode!(PropertyValue, D, &mut self.value, decoder, offset + 16, _depth)?;
669 Ok(())
670 }
671 }
672
673 impl fidl::encoding::ValueTypeMarker for MetricValue {
674 type Borrowed<'a> = &'a Self;
675 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
676 value
677 }
678 }
679
680 unsafe impl fidl::encoding::TypeMarker for MetricValue {
681 type Owned = Self;
682
683 #[inline(always)]
684 fn inline_align(_context: fidl::encoding::Context) -> usize {
685 8
686 }
687
688 #[inline(always)]
689 fn inline_size(_context: fidl::encoding::Context) -> usize {
690 16
691 }
692 }
693
694 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MetricValue, D>
695 for &MetricValue
696 {
697 #[inline]
698 unsafe fn encode(
699 self,
700 encoder: &mut fidl::encoding::Encoder<'_, D>,
701 offset: usize,
702 _depth: fidl::encoding::Depth,
703 ) -> fidl::Result<()> {
704 encoder.debug_check_bounds::<MetricValue>(offset);
705 encoder.write_num::<u64>(self.ordinal(), offset);
706 match self {
707 MetricValue::IntValue(ref val) => fidl::encoding::encode_in_envelope::<i64, D>(
708 <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
709 encoder,
710 offset + 8,
711 _depth,
712 ),
713 MetricValue::UintValue(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
714 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
715 encoder,
716 offset + 8,
717 _depth,
718 ),
719 MetricValue::DoubleValue(ref val) => fidl::encoding::encode_in_envelope::<f64, D>(
720 <f64 as fidl::encoding::ValueTypeMarker>::borrow(val),
721 encoder,
722 offset + 8,
723 _depth,
724 ),
725 }
726 }
727 }
728
729 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MetricValue {
730 #[inline(always)]
731 fn new_empty() -> Self {
732 Self::IntValue(fidl::new_empty!(i64, D))
733 }
734
735 #[inline]
736 unsafe fn decode(
737 &mut self,
738 decoder: &mut fidl::encoding::Decoder<'_, D>,
739 offset: usize,
740 mut depth: fidl::encoding::Depth,
741 ) -> fidl::Result<()> {
742 decoder.debug_check_bounds::<Self>(offset);
743 #[allow(unused_variables)]
744 let next_out_of_line = decoder.next_out_of_line();
745 let handles_before = decoder.remaining_handles();
746 let (ordinal, inlined, num_bytes, num_handles) =
747 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
748
749 let member_inline_size = match ordinal {
750 1 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
751 2 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
752 3 => <f64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
753 _ => return Err(fidl::Error::UnknownUnionTag),
754 };
755
756 if inlined != (member_inline_size <= 4) {
757 return Err(fidl::Error::InvalidInlineBitInEnvelope);
758 }
759 let _inner_offset;
760 if inlined {
761 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
762 _inner_offset = offset + 8;
763 } else {
764 depth.increment()?;
765 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
766 }
767 match ordinal {
768 1 => {
769 #[allow(irrefutable_let_patterns)]
770 if let MetricValue::IntValue(_) = self {
771 } else {
773 *self = MetricValue::IntValue(fidl::new_empty!(i64, D));
775 }
776 #[allow(irrefutable_let_patterns)]
777 if let MetricValue::IntValue(ref mut val) = self {
778 fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
779 } else {
780 unreachable!()
781 }
782 }
783 2 => {
784 #[allow(irrefutable_let_patterns)]
785 if let MetricValue::UintValue(_) = self {
786 } else {
788 *self = MetricValue::UintValue(fidl::new_empty!(u64, D));
790 }
791 #[allow(irrefutable_let_patterns)]
792 if let MetricValue::UintValue(ref mut val) = self {
793 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
794 } else {
795 unreachable!()
796 }
797 }
798 3 => {
799 #[allow(irrefutable_let_patterns)]
800 if let MetricValue::DoubleValue(_) = self {
801 } else {
803 *self = MetricValue::DoubleValue(fidl::new_empty!(f64, D));
805 }
806 #[allow(irrefutable_let_patterns)]
807 if let MetricValue::DoubleValue(ref mut val) = self {
808 fidl::decode!(f64, D, val, decoder, _inner_offset, depth)?;
809 } else {
810 unreachable!()
811 }
812 }
813 ordinal => panic!("unexpected ordinal {:?}", ordinal),
814 }
815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
816 return Err(fidl::Error::InvalidNumBytesInEnvelope);
817 }
818 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
819 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
820 }
821 Ok(())
822 }
823 }
824
825 impl fidl::encoding::ValueTypeMarker for PropertyValue {
826 type Borrowed<'a> = &'a Self;
827 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
828 value
829 }
830 }
831
832 unsafe impl fidl::encoding::TypeMarker for PropertyValue {
833 type Owned = Self;
834
835 #[inline(always)]
836 fn inline_align(_context: fidl::encoding::Context) -> usize {
837 8
838 }
839
840 #[inline(always)]
841 fn inline_size(_context: fidl::encoding::Context) -> usize {
842 16
843 }
844 }
845
846 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PropertyValue, D>
847 for &PropertyValue
848 {
849 #[inline]
850 unsafe fn encode(
851 self,
852 encoder: &mut fidl::encoding::Encoder<'_, D>,
853 offset: usize,
854 _depth: fidl::encoding::Depth,
855 ) -> fidl::Result<()> {
856 encoder.debug_check_bounds::<PropertyValue>(offset);
857 encoder.write_num::<u64>(self.ordinal(), offset);
858 match self {
859 PropertyValue::Str(ref val) => {
860 fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedString, D>(
861 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(val),
862 encoder, offset + 8, _depth
863 )
864 }
865 PropertyValue::Bytes(ref val) => {
866 fidl::encoding::encode_in_envelope::<fidl::encoding::UnboundedVector<u8>, D>(
867 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(val),
868 encoder, offset + 8, _depth
869 )
870 }
871 }
872 }
873 }
874
875 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PropertyValue {
876 #[inline(always)]
877 fn new_empty() -> Self {
878 Self::Str(fidl::new_empty!(fidl::encoding::UnboundedString, D))
879 }
880
881 #[inline]
882 unsafe fn decode(
883 &mut self,
884 decoder: &mut fidl::encoding::Decoder<'_, D>,
885 offset: usize,
886 mut depth: fidl::encoding::Depth,
887 ) -> fidl::Result<()> {
888 decoder.debug_check_bounds::<Self>(offset);
889 #[allow(unused_variables)]
890 let next_out_of_line = decoder.next_out_of_line();
891 let handles_before = decoder.remaining_handles();
892 let (ordinal, inlined, num_bytes, num_handles) =
893 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
894
895 let member_inline_size = match ordinal {
896 1 => <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
897 decoder.context,
898 ),
899 2 => {
900 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(
901 decoder.context,
902 )
903 }
904 _ => return Err(fidl::Error::UnknownUnionTag),
905 };
906
907 if inlined != (member_inline_size <= 4) {
908 return Err(fidl::Error::InvalidInlineBitInEnvelope);
909 }
910 let _inner_offset;
911 if inlined {
912 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
913 _inner_offset = offset + 8;
914 } else {
915 depth.increment()?;
916 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
917 }
918 match ordinal {
919 1 => {
920 #[allow(irrefutable_let_patterns)]
921 if let PropertyValue::Str(_) = self {
922 } else {
924 *self = PropertyValue::Str(fidl::new_empty!(
926 fidl::encoding::UnboundedString,
927 D
928 ));
929 }
930 #[allow(irrefutable_let_patterns)]
931 if let PropertyValue::Str(ref mut val) = self {
932 fidl::decode!(
933 fidl::encoding::UnboundedString,
934 D,
935 val,
936 decoder,
937 _inner_offset,
938 depth
939 )?;
940 } else {
941 unreachable!()
942 }
943 }
944 2 => {
945 #[allow(irrefutable_let_patterns)]
946 if let PropertyValue::Bytes(_) = self {
947 } else {
949 *self = PropertyValue::Bytes(fidl::new_empty!(
951 fidl::encoding::UnboundedVector<u8>,
952 D
953 ));
954 }
955 #[allow(irrefutable_let_patterns)]
956 if let PropertyValue::Bytes(ref mut val) = self {
957 fidl::decode!(
958 fidl::encoding::UnboundedVector<u8>,
959 D,
960 val,
961 decoder,
962 _inner_offset,
963 depth
964 )?;
965 } else {
966 unreachable!()
967 }
968 }
969 ordinal => panic!("unexpected ordinal {:?}", ordinal),
970 }
971 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
973 }
974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
976 }
977 Ok(())
978 }
979 }
980}