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(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12#[repr(u32)]
13pub enum WantResponse {
14 Success = 1,
15 Err = 2,
16}
17
18impl WantResponse {
19 #[inline]
20 pub fn from_primitive(prim: u32) -> Option<Self> {
21 match prim {
22 1 => Some(Self::Success),
23 2 => Some(Self::Err),
24 _ => None,
25 }
26 }
27
28 #[inline]
29 pub const fn into_primitive(self) -> u32 {
30 self as u32
31 }
32
33 #[deprecated = "Strict enums should not use `is_unknown`"]
34 #[inline]
35 pub fn is_unknown(&self) -> bool {
36 false
37 }
38}
39
40#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
41pub struct ComposedEchoUnionResponseWithErrorComposedRequest {
42 pub value: i64,
43 pub want_absolute_value: bool,
44 pub forward_to_server: String,
45 pub result_err: u32,
46 pub result_variant: WantResponse,
47}
48
49impl fidl::Persistable for ComposedEchoUnionResponseWithErrorComposedRequest {}
50
51#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
52pub struct ErrorableRequestStruct {
53 pub value: SimpleStruct,
54 pub result_err: u32,
55 pub forward_to_server: String,
56 pub result_variant: WantResponse,
57}
58
59impl fidl::Persistable for ErrorableRequestStruct {}
60
61#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
62pub struct EventTriggeringRequestStruct {
63 pub value: SimpleStruct,
64 pub forward_to_server: String,
65}
66
67impl fidl::Persistable for EventTriggeringRequestStruct {}
68
69#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
70pub struct RequestStruct {
71 pub value: SimpleStruct,
72 pub forward_to_server: String,
73}
74
75impl fidl::Persistable for RequestStruct {}
76
77#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
78pub struct ResponseStruct {
79 pub value: SimpleStruct,
80}
81
82impl fidl::Persistable for ResponseStruct {}
83
84#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
85pub struct SimpleStruct {
86 pub f1: bool,
87 pub f2: u64,
88}
89
90impl fidl::Persistable for SimpleStruct {}
91
92#[derive(Clone, Debug, Default, PartialEq)]
93pub struct ComposedEchoTableRequestComposedRequest {
94 pub value: Option<u64>,
95 pub forward_to_server: Option<String>,
96 #[doc(hidden)]
97 pub __source_breaking: fidl::marker::SourceBreaking,
98}
99
100impl fidl::Persistable for ComposedEchoTableRequestComposedRequest {}
101
102#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
103pub enum ComposedEchoUnionResponseWithErrorComposedResponse {
104 Unsigned(u64),
105 Signed(i64),
106}
107
108impl ComposedEchoUnionResponseWithErrorComposedResponse {
109 #[inline]
110 pub fn ordinal(&self) -> u64 {
111 match *self {
112 Self::Unsigned(_) => 1,
113 Self::Signed(_) => 2,
114 }
115 }
116
117 #[deprecated = "Strict unions should not use `is_unknown`"]
118 #[inline]
119 pub fn is_unknown(&self) -> bool {
120 false
121 }
122}
123
124impl fidl::Persistable for ComposedEchoUnionResponseWithErrorComposedResponse {}
125
126mod internal {
127 use super::*;
128 unsafe impl fidl::encoding::TypeMarker for WantResponse {
129 type Owned = Self;
130
131 #[inline(always)]
132 fn inline_align(_context: fidl::encoding::Context) -> usize {
133 std::mem::align_of::<u32>()
134 }
135
136 #[inline(always)]
137 fn inline_size(_context: fidl::encoding::Context) -> usize {
138 std::mem::size_of::<u32>()
139 }
140
141 #[inline(always)]
142 fn encode_is_copy() -> bool {
143 true
144 }
145
146 #[inline(always)]
147 fn decode_is_copy() -> bool {
148 false
149 }
150 }
151
152 impl fidl::encoding::ValueTypeMarker for WantResponse {
153 type Borrowed<'a> = Self;
154 #[inline(always)]
155 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
156 *value
157 }
158 }
159
160 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WantResponse {
161 #[inline]
162 unsafe fn encode(
163 self,
164 encoder: &mut fidl::encoding::Encoder<'_, D>,
165 offset: usize,
166 _depth: fidl::encoding::Depth,
167 ) -> fidl::Result<()> {
168 encoder.debug_check_bounds::<Self>(offset);
169 encoder.write_num(self.into_primitive(), offset);
170 Ok(())
171 }
172 }
173
174 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WantResponse {
175 #[inline(always)]
176 fn new_empty() -> Self {
177 Self::Success
178 }
179
180 #[inline]
181 unsafe fn decode(
182 &mut self,
183 decoder: &mut fidl::encoding::Decoder<'_, D>,
184 offset: usize,
185 _depth: fidl::encoding::Depth,
186 ) -> fidl::Result<()> {
187 decoder.debug_check_bounds::<Self>(offset);
188 let prim = decoder.read_num::<u32>(offset);
189
190 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
191 Ok(())
192 }
193 }
194
195 impl fidl::encoding::ValueTypeMarker for ComposedEchoUnionResponseWithErrorComposedRequest {
196 type Borrowed<'a> = &'a Self;
197 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
198 value
199 }
200 }
201
202 unsafe impl fidl::encoding::TypeMarker for ComposedEchoUnionResponseWithErrorComposedRequest {
203 type Owned = Self;
204
205 #[inline(always)]
206 fn inline_align(_context: fidl::encoding::Context) -> usize {
207 8
208 }
209
210 #[inline(always)]
211 fn inline_size(_context: fidl::encoding::Context) -> usize {
212 40
213 }
214 }
215
216 unsafe impl<D: fidl::encoding::ResourceDialect>
217 fidl::encoding::Encode<ComposedEchoUnionResponseWithErrorComposedRequest, D>
218 for &ComposedEchoUnionResponseWithErrorComposedRequest
219 {
220 #[inline]
221 unsafe fn encode(
222 self,
223 encoder: &mut fidl::encoding::Encoder<'_, D>,
224 offset: usize,
225 _depth: fidl::encoding::Depth,
226 ) -> fidl::Result<()> {
227 encoder.debug_check_bounds::<ComposedEchoUnionResponseWithErrorComposedRequest>(offset);
228 fidl::encoding::Encode::<ComposedEchoUnionResponseWithErrorComposedRequest, D>::encode(
230 (
231 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
232 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.want_absolute_value),
233 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
234 &self.forward_to_server,
235 ),
236 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.result_err),
237 <WantResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.result_variant),
238 ),
239 encoder,
240 offset,
241 _depth,
242 )
243 }
244 }
245 unsafe impl<
246 D: fidl::encoding::ResourceDialect,
247 T0: fidl::encoding::Encode<i64, D>,
248 T1: fidl::encoding::Encode<bool, D>,
249 T2: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
250 T3: fidl::encoding::Encode<u32, D>,
251 T4: fidl::encoding::Encode<WantResponse, D>,
252 > fidl::encoding::Encode<ComposedEchoUnionResponseWithErrorComposedRequest, D>
253 for (T0, T1, T2, T3, T4)
254 {
255 #[inline]
256 unsafe fn encode(
257 self,
258 encoder: &mut fidl::encoding::Encoder<'_, D>,
259 offset: usize,
260 depth: fidl::encoding::Depth,
261 ) -> fidl::Result<()> {
262 encoder.debug_check_bounds::<ComposedEchoUnionResponseWithErrorComposedRequest>(offset);
263 unsafe {
266 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
267 (ptr as *mut u64).write_unaligned(0);
268 }
269 self.0.encode(encoder, offset + 0, depth)?;
271 self.1.encode(encoder, offset + 8, depth)?;
272 self.2.encode(encoder, offset + 16, depth)?;
273 self.3.encode(encoder, offset + 32, depth)?;
274 self.4.encode(encoder, offset + 36, depth)?;
275 Ok(())
276 }
277 }
278
279 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
280 for ComposedEchoUnionResponseWithErrorComposedRequest
281 {
282 #[inline(always)]
283 fn new_empty() -> Self {
284 Self {
285 value: fidl::new_empty!(i64, D),
286 want_absolute_value: fidl::new_empty!(bool, D),
287 forward_to_server: fidl::new_empty!(fidl::encoding::UnboundedString, D),
288 result_err: fidl::new_empty!(u32, D),
289 result_variant: fidl::new_empty!(WantResponse, D),
290 }
291 }
292
293 #[inline]
294 unsafe fn decode(
295 &mut self,
296 decoder: &mut fidl::encoding::Decoder<'_, D>,
297 offset: usize,
298 _depth: fidl::encoding::Depth,
299 ) -> fidl::Result<()> {
300 decoder.debug_check_bounds::<Self>(offset);
301 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
303 let padval = unsafe { (ptr as *const u64).read_unaligned() };
304 let mask = 0xffffffffffffff00u64;
305 let maskedval = padval & mask;
306 if maskedval != 0 {
307 return Err(fidl::Error::NonZeroPadding {
308 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
309 });
310 }
311 fidl::decode!(i64, D, &mut self.value, decoder, offset + 0, _depth)?;
312 fidl::decode!(bool, D, &mut self.want_absolute_value, decoder, offset + 8, _depth)?;
313 fidl::decode!(
314 fidl::encoding::UnboundedString,
315 D,
316 &mut self.forward_to_server,
317 decoder,
318 offset + 16,
319 _depth
320 )?;
321 fidl::decode!(u32, D, &mut self.result_err, decoder, offset + 32, _depth)?;
322 fidl::decode!(WantResponse, D, &mut self.result_variant, decoder, offset + 36, _depth)?;
323 Ok(())
324 }
325 }
326
327 impl fidl::encoding::ValueTypeMarker for ErrorableRequestStruct {
328 type Borrowed<'a> = &'a Self;
329 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
330 value
331 }
332 }
333
334 unsafe impl fidl::encoding::TypeMarker for ErrorableRequestStruct {
335 type Owned = Self;
336
337 #[inline(always)]
338 fn inline_align(_context: fidl::encoding::Context) -> usize {
339 8
340 }
341
342 #[inline(always)]
343 fn inline_size(_context: fidl::encoding::Context) -> usize {
344 48
345 }
346 }
347
348 unsafe impl<D: fidl::encoding::ResourceDialect>
349 fidl::encoding::Encode<ErrorableRequestStruct, D> for &ErrorableRequestStruct
350 {
351 #[inline]
352 unsafe fn encode(
353 self,
354 encoder: &mut fidl::encoding::Encoder<'_, D>,
355 offset: usize,
356 _depth: fidl::encoding::Depth,
357 ) -> fidl::Result<()> {
358 encoder.debug_check_bounds::<ErrorableRequestStruct>(offset);
359 fidl::encoding::Encode::<ErrorableRequestStruct, D>::encode(
361 (
362 <SimpleStruct as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
363 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.result_err),
364 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
365 &self.forward_to_server,
366 ),
367 <WantResponse as fidl::encoding::ValueTypeMarker>::borrow(&self.result_variant),
368 ),
369 encoder,
370 offset,
371 _depth,
372 )
373 }
374 }
375 unsafe impl<
376 D: fidl::encoding::ResourceDialect,
377 T0: fidl::encoding::Encode<SimpleStruct, D>,
378 T1: fidl::encoding::Encode<u32, D>,
379 T2: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
380 T3: fidl::encoding::Encode<WantResponse, D>,
381 > fidl::encoding::Encode<ErrorableRequestStruct, D> for (T0, T1, T2, T3)
382 {
383 #[inline]
384 unsafe fn encode(
385 self,
386 encoder: &mut fidl::encoding::Encoder<'_, D>,
387 offset: usize,
388 depth: fidl::encoding::Depth,
389 ) -> fidl::Result<()> {
390 encoder.debug_check_bounds::<ErrorableRequestStruct>(offset);
391 unsafe {
394 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
395 (ptr as *mut u64).write_unaligned(0);
396 }
397 unsafe {
398 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
399 (ptr as *mut u64).write_unaligned(0);
400 }
401 self.0.encode(encoder, offset + 0, depth)?;
403 self.1.encode(encoder, offset + 16, depth)?;
404 self.2.encode(encoder, offset + 24, depth)?;
405 self.3.encode(encoder, offset + 40, depth)?;
406 Ok(())
407 }
408 }
409
410 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
411 for ErrorableRequestStruct
412 {
413 #[inline(always)]
414 fn new_empty() -> Self {
415 Self {
416 value: fidl::new_empty!(SimpleStruct, D),
417 result_err: fidl::new_empty!(u32, D),
418 forward_to_server: fidl::new_empty!(fidl::encoding::UnboundedString, D),
419 result_variant: fidl::new_empty!(WantResponse, D),
420 }
421 }
422
423 #[inline]
424 unsafe fn decode(
425 &mut self,
426 decoder: &mut fidl::encoding::Decoder<'_, D>,
427 offset: usize,
428 _depth: fidl::encoding::Depth,
429 ) -> fidl::Result<()> {
430 decoder.debug_check_bounds::<Self>(offset);
431 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
433 let padval = unsafe { (ptr as *const u64).read_unaligned() };
434 let mask = 0xffffffff00000000u64;
435 let maskedval = padval & mask;
436 if maskedval != 0 {
437 return Err(fidl::Error::NonZeroPadding {
438 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
439 });
440 }
441 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
442 let padval = unsafe { (ptr as *const u64).read_unaligned() };
443 let mask = 0xffffffff00000000u64;
444 let maskedval = padval & mask;
445 if maskedval != 0 {
446 return Err(fidl::Error::NonZeroPadding {
447 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
448 });
449 }
450 fidl::decode!(SimpleStruct, D, &mut self.value, decoder, offset + 0, _depth)?;
451 fidl::decode!(u32, D, &mut self.result_err, decoder, offset + 16, _depth)?;
452 fidl::decode!(
453 fidl::encoding::UnboundedString,
454 D,
455 &mut self.forward_to_server,
456 decoder,
457 offset + 24,
458 _depth
459 )?;
460 fidl::decode!(WantResponse, D, &mut self.result_variant, decoder, offset + 40, _depth)?;
461 Ok(())
462 }
463 }
464
465 impl fidl::encoding::ValueTypeMarker for EventTriggeringRequestStruct {
466 type Borrowed<'a> = &'a Self;
467 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
468 value
469 }
470 }
471
472 unsafe impl fidl::encoding::TypeMarker for EventTriggeringRequestStruct {
473 type Owned = Self;
474
475 #[inline(always)]
476 fn inline_align(_context: fidl::encoding::Context) -> usize {
477 8
478 }
479
480 #[inline(always)]
481 fn inline_size(_context: fidl::encoding::Context) -> usize {
482 32
483 }
484 }
485
486 unsafe impl<D: fidl::encoding::ResourceDialect>
487 fidl::encoding::Encode<EventTriggeringRequestStruct, D> for &EventTriggeringRequestStruct
488 {
489 #[inline]
490 unsafe fn encode(
491 self,
492 encoder: &mut fidl::encoding::Encoder<'_, D>,
493 offset: usize,
494 _depth: fidl::encoding::Depth,
495 ) -> fidl::Result<()> {
496 encoder.debug_check_bounds::<EventTriggeringRequestStruct>(offset);
497 fidl::encoding::Encode::<EventTriggeringRequestStruct, D>::encode(
499 (
500 <SimpleStruct as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
501 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
502 &self.forward_to_server,
503 ),
504 ),
505 encoder,
506 offset,
507 _depth,
508 )
509 }
510 }
511 unsafe impl<
512 D: fidl::encoding::ResourceDialect,
513 T0: fidl::encoding::Encode<SimpleStruct, D>,
514 T1: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
515 > fidl::encoding::Encode<EventTriggeringRequestStruct, D> for (T0, T1)
516 {
517 #[inline]
518 unsafe fn encode(
519 self,
520 encoder: &mut fidl::encoding::Encoder<'_, D>,
521 offset: usize,
522 depth: fidl::encoding::Depth,
523 ) -> fidl::Result<()> {
524 encoder.debug_check_bounds::<EventTriggeringRequestStruct>(offset);
525 self.0.encode(encoder, offset + 0, depth)?;
529 self.1.encode(encoder, offset + 16, depth)?;
530 Ok(())
531 }
532 }
533
534 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
535 for EventTriggeringRequestStruct
536 {
537 #[inline(always)]
538 fn new_empty() -> Self {
539 Self {
540 value: fidl::new_empty!(SimpleStruct, D),
541 forward_to_server: fidl::new_empty!(fidl::encoding::UnboundedString, D),
542 }
543 }
544
545 #[inline]
546 unsafe fn decode(
547 &mut self,
548 decoder: &mut fidl::encoding::Decoder<'_, D>,
549 offset: usize,
550 _depth: fidl::encoding::Depth,
551 ) -> fidl::Result<()> {
552 decoder.debug_check_bounds::<Self>(offset);
553 fidl::decode!(SimpleStruct, D, &mut self.value, decoder, offset + 0, _depth)?;
555 fidl::decode!(
556 fidl::encoding::UnboundedString,
557 D,
558 &mut self.forward_to_server,
559 decoder,
560 offset + 16,
561 _depth
562 )?;
563 Ok(())
564 }
565 }
566
567 impl fidl::encoding::ValueTypeMarker for RequestStruct {
568 type Borrowed<'a> = &'a Self;
569 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
570 value
571 }
572 }
573
574 unsafe impl fidl::encoding::TypeMarker for RequestStruct {
575 type Owned = Self;
576
577 #[inline(always)]
578 fn inline_align(_context: fidl::encoding::Context) -> usize {
579 8
580 }
581
582 #[inline(always)]
583 fn inline_size(_context: fidl::encoding::Context) -> usize {
584 32
585 }
586 }
587
588 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RequestStruct, D>
589 for &RequestStruct
590 {
591 #[inline]
592 unsafe fn encode(
593 self,
594 encoder: &mut fidl::encoding::Encoder<'_, D>,
595 offset: usize,
596 _depth: fidl::encoding::Depth,
597 ) -> fidl::Result<()> {
598 encoder.debug_check_bounds::<RequestStruct>(offset);
599 fidl::encoding::Encode::<RequestStruct, D>::encode(
601 (
602 <SimpleStruct as fidl::encoding::ValueTypeMarker>::borrow(&self.value),
603 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
604 &self.forward_to_server,
605 ),
606 ),
607 encoder,
608 offset,
609 _depth,
610 )
611 }
612 }
613 unsafe impl<
614 D: fidl::encoding::ResourceDialect,
615 T0: fidl::encoding::Encode<SimpleStruct, D>,
616 T1: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
617 > fidl::encoding::Encode<RequestStruct, D> for (T0, T1)
618 {
619 #[inline]
620 unsafe fn encode(
621 self,
622 encoder: &mut fidl::encoding::Encoder<'_, D>,
623 offset: usize,
624 depth: fidl::encoding::Depth,
625 ) -> fidl::Result<()> {
626 encoder.debug_check_bounds::<RequestStruct>(offset);
627 self.0.encode(encoder, offset + 0, depth)?;
631 self.1.encode(encoder, offset + 16, depth)?;
632 Ok(())
633 }
634 }
635
636 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RequestStruct {
637 #[inline(always)]
638 fn new_empty() -> Self {
639 Self {
640 value: fidl::new_empty!(SimpleStruct, D),
641 forward_to_server: fidl::new_empty!(fidl::encoding::UnboundedString, D),
642 }
643 }
644
645 #[inline]
646 unsafe fn decode(
647 &mut self,
648 decoder: &mut fidl::encoding::Decoder<'_, D>,
649 offset: usize,
650 _depth: fidl::encoding::Depth,
651 ) -> fidl::Result<()> {
652 decoder.debug_check_bounds::<Self>(offset);
653 fidl::decode!(SimpleStruct, D, &mut self.value, decoder, offset + 0, _depth)?;
655 fidl::decode!(
656 fidl::encoding::UnboundedString,
657 D,
658 &mut self.forward_to_server,
659 decoder,
660 offset + 16,
661 _depth
662 )?;
663 Ok(())
664 }
665 }
666
667 impl fidl::encoding::ValueTypeMarker for ResponseStruct {
668 type Borrowed<'a> = &'a Self;
669 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
670 value
671 }
672 }
673
674 unsafe impl fidl::encoding::TypeMarker for ResponseStruct {
675 type Owned = Self;
676
677 #[inline(always)]
678 fn inline_align(_context: fidl::encoding::Context) -> usize {
679 8
680 }
681
682 #[inline(always)]
683 fn inline_size(_context: fidl::encoding::Context) -> usize {
684 16
685 }
686 }
687
688 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ResponseStruct, D>
689 for &ResponseStruct
690 {
691 #[inline]
692 unsafe fn encode(
693 self,
694 encoder: &mut fidl::encoding::Encoder<'_, D>,
695 offset: usize,
696 _depth: fidl::encoding::Depth,
697 ) -> fidl::Result<()> {
698 encoder.debug_check_bounds::<ResponseStruct>(offset);
699 fidl::encoding::Encode::<ResponseStruct, D>::encode(
701 (<SimpleStruct as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
702 encoder,
703 offset,
704 _depth,
705 )
706 }
707 }
708 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SimpleStruct, D>>
709 fidl::encoding::Encode<ResponseStruct, D> for (T0,)
710 {
711 #[inline]
712 unsafe fn encode(
713 self,
714 encoder: &mut fidl::encoding::Encoder<'_, D>,
715 offset: usize,
716 depth: fidl::encoding::Depth,
717 ) -> fidl::Result<()> {
718 encoder.debug_check_bounds::<ResponseStruct>(offset);
719 self.0.encode(encoder, offset + 0, depth)?;
723 Ok(())
724 }
725 }
726
727 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResponseStruct {
728 #[inline(always)]
729 fn new_empty() -> Self {
730 Self { value: fidl::new_empty!(SimpleStruct, D) }
731 }
732
733 #[inline]
734 unsafe fn decode(
735 &mut self,
736 decoder: &mut fidl::encoding::Decoder<'_, D>,
737 offset: usize,
738 _depth: fidl::encoding::Depth,
739 ) -> fidl::Result<()> {
740 decoder.debug_check_bounds::<Self>(offset);
741 fidl::decode!(SimpleStruct, D, &mut self.value, decoder, offset + 0, _depth)?;
743 Ok(())
744 }
745 }
746
747 impl fidl::encoding::ValueTypeMarker for SimpleStruct {
748 type Borrowed<'a> = &'a Self;
749 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
750 value
751 }
752 }
753
754 unsafe impl fidl::encoding::TypeMarker for SimpleStruct {
755 type Owned = Self;
756
757 #[inline(always)]
758 fn inline_align(_context: fidl::encoding::Context) -> usize {
759 8
760 }
761
762 #[inline(always)]
763 fn inline_size(_context: fidl::encoding::Context) -> usize {
764 16
765 }
766 }
767
768 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SimpleStruct, D>
769 for &SimpleStruct
770 {
771 #[inline]
772 unsafe fn encode(
773 self,
774 encoder: &mut fidl::encoding::Encoder<'_, D>,
775 offset: usize,
776 _depth: fidl::encoding::Depth,
777 ) -> fidl::Result<()> {
778 encoder.debug_check_bounds::<SimpleStruct>(offset);
779 fidl::encoding::Encode::<SimpleStruct, D>::encode(
781 (
782 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.f1),
783 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.f2),
784 ),
785 encoder,
786 offset,
787 _depth,
788 )
789 }
790 }
791 unsafe impl<
792 D: fidl::encoding::ResourceDialect,
793 T0: fidl::encoding::Encode<bool, D>,
794 T1: fidl::encoding::Encode<u64, D>,
795 > fidl::encoding::Encode<SimpleStruct, D> for (T0, T1)
796 {
797 #[inline]
798 unsafe fn encode(
799 self,
800 encoder: &mut fidl::encoding::Encoder<'_, D>,
801 offset: usize,
802 depth: fidl::encoding::Depth,
803 ) -> fidl::Result<()> {
804 encoder.debug_check_bounds::<SimpleStruct>(offset);
805 unsafe {
808 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
809 (ptr as *mut u64).write_unaligned(0);
810 }
811 self.0.encode(encoder, offset + 0, depth)?;
813 self.1.encode(encoder, offset + 8, depth)?;
814 Ok(())
815 }
816 }
817
818 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SimpleStruct {
819 #[inline(always)]
820 fn new_empty() -> Self {
821 Self { f1: fidl::new_empty!(bool, D), f2: fidl::new_empty!(u64, D) }
822 }
823
824 #[inline]
825 unsafe fn decode(
826 &mut self,
827 decoder: &mut fidl::encoding::Decoder<'_, D>,
828 offset: usize,
829 _depth: fidl::encoding::Depth,
830 ) -> fidl::Result<()> {
831 decoder.debug_check_bounds::<Self>(offset);
832 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
834 let padval = unsafe { (ptr as *const u64).read_unaligned() };
835 let mask = 0xffffffffffffff00u64;
836 let maskedval = padval & mask;
837 if maskedval != 0 {
838 return Err(fidl::Error::NonZeroPadding {
839 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
840 });
841 }
842 fidl::decode!(bool, D, &mut self.f1, decoder, offset + 0, _depth)?;
843 fidl::decode!(u64, D, &mut self.f2, decoder, offset + 8, _depth)?;
844 Ok(())
845 }
846 }
847
848 impl ComposedEchoTableRequestComposedRequest {
849 #[inline(always)]
850 fn max_ordinal_present(&self) -> u64 {
851 if let Some(_) = self.forward_to_server {
852 return 2;
853 }
854 if let Some(_) = self.value {
855 return 1;
856 }
857 0
858 }
859 }
860
861 impl fidl::encoding::ValueTypeMarker for ComposedEchoTableRequestComposedRequest {
862 type Borrowed<'a> = &'a Self;
863 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
864 value
865 }
866 }
867
868 unsafe impl fidl::encoding::TypeMarker for ComposedEchoTableRequestComposedRequest {
869 type Owned = Self;
870
871 #[inline(always)]
872 fn inline_align(_context: fidl::encoding::Context) -> usize {
873 8
874 }
875
876 #[inline(always)]
877 fn inline_size(_context: fidl::encoding::Context) -> usize {
878 16
879 }
880 }
881
882 unsafe impl<D: fidl::encoding::ResourceDialect>
883 fidl::encoding::Encode<ComposedEchoTableRequestComposedRequest, D>
884 for &ComposedEchoTableRequestComposedRequest
885 {
886 unsafe fn encode(
887 self,
888 encoder: &mut fidl::encoding::Encoder<'_, D>,
889 offset: usize,
890 mut depth: fidl::encoding::Depth,
891 ) -> fidl::Result<()> {
892 encoder.debug_check_bounds::<ComposedEchoTableRequestComposedRequest>(offset);
893 let max_ordinal: u64 = self.max_ordinal_present();
895 encoder.write_num(max_ordinal, offset);
896 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
897 if max_ordinal == 0 {
899 return Ok(());
900 }
901 depth.increment()?;
902 let envelope_size = 8;
903 let bytes_len = max_ordinal as usize * envelope_size;
904 #[allow(unused_variables)]
905 let offset = encoder.out_of_line_offset(bytes_len);
906 let mut _prev_end_offset: usize = 0;
907 if 1 > max_ordinal {
908 return Ok(());
909 }
910
911 let cur_offset: usize = (1 - 1) * envelope_size;
914
915 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
917
918 fidl::encoding::encode_in_envelope_optional::<u64, D>(
923 self.value.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
924 encoder,
925 offset + cur_offset,
926 depth,
927 )?;
928
929 _prev_end_offset = cur_offset + envelope_size;
930 if 2 > max_ordinal {
931 return Ok(());
932 }
933
934 let cur_offset: usize = (2 - 1) * envelope_size;
937
938 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
940
941 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
946 self.forward_to_server.as_ref().map(
947 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
948 ),
949 encoder,
950 offset + cur_offset,
951 depth,
952 )?;
953
954 _prev_end_offset = cur_offset + envelope_size;
955
956 Ok(())
957 }
958 }
959
960 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
961 for ComposedEchoTableRequestComposedRequest
962 {
963 #[inline(always)]
964 fn new_empty() -> Self {
965 Self::default()
966 }
967
968 unsafe fn decode(
969 &mut self,
970 decoder: &mut fidl::encoding::Decoder<'_, D>,
971 offset: usize,
972 mut depth: fidl::encoding::Depth,
973 ) -> fidl::Result<()> {
974 decoder.debug_check_bounds::<Self>(offset);
975 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
976 None => return Err(fidl::Error::NotNullable),
977 Some(len) => len,
978 };
979 if len == 0 {
981 return Ok(());
982 };
983 depth.increment()?;
984 let envelope_size = 8;
985 let bytes_len = len * envelope_size;
986 let offset = decoder.out_of_line_offset(bytes_len)?;
987 let mut _next_ordinal_to_read = 0;
989 let mut next_offset = offset;
990 let end_offset = offset + bytes_len;
991 _next_ordinal_to_read += 1;
992 if next_offset >= end_offset {
993 return Ok(());
994 }
995
996 while _next_ordinal_to_read < 1 {
998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
999 _next_ordinal_to_read += 1;
1000 next_offset += envelope_size;
1001 }
1002
1003 let next_out_of_line = decoder.next_out_of_line();
1004 let handles_before = decoder.remaining_handles();
1005 if let Some((inlined, num_bytes, num_handles)) =
1006 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1007 {
1008 let member_inline_size =
1009 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1010 if inlined != (member_inline_size <= 4) {
1011 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1012 }
1013 let inner_offset;
1014 let mut inner_depth = depth.clone();
1015 if inlined {
1016 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1017 inner_offset = next_offset;
1018 } else {
1019 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1020 inner_depth.increment()?;
1021 }
1022 let val_ref = self.value.get_or_insert_with(|| fidl::new_empty!(u64, D));
1023 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1024 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1025 {
1026 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1027 }
1028 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1029 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1030 }
1031 }
1032
1033 next_offset += envelope_size;
1034 _next_ordinal_to_read += 1;
1035 if next_offset >= end_offset {
1036 return Ok(());
1037 }
1038
1039 while _next_ordinal_to_read < 2 {
1041 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1042 _next_ordinal_to_read += 1;
1043 next_offset += envelope_size;
1044 }
1045
1046 let next_out_of_line = decoder.next_out_of_line();
1047 let handles_before = decoder.remaining_handles();
1048 if let Some((inlined, num_bytes, num_handles)) =
1049 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1050 {
1051 let member_inline_size =
1052 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1053 decoder.context,
1054 );
1055 if inlined != (member_inline_size <= 4) {
1056 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1057 }
1058 let inner_offset;
1059 let mut inner_depth = depth.clone();
1060 if inlined {
1061 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1062 inner_offset = next_offset;
1063 } else {
1064 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1065 inner_depth.increment()?;
1066 }
1067 let val_ref = self
1068 .forward_to_server
1069 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1070 fidl::decode!(
1071 fidl::encoding::UnboundedString,
1072 D,
1073 val_ref,
1074 decoder,
1075 inner_offset,
1076 inner_depth
1077 )?;
1078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1079 {
1080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1081 }
1082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1084 }
1085 }
1086
1087 next_offset += envelope_size;
1088
1089 while next_offset < end_offset {
1091 _next_ordinal_to_read += 1;
1092 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1093 next_offset += envelope_size;
1094 }
1095
1096 Ok(())
1097 }
1098 }
1099
1100 impl fidl::encoding::ValueTypeMarker for ComposedEchoUnionResponseWithErrorComposedResponse {
1101 type Borrowed<'a> = &'a Self;
1102 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1103 value
1104 }
1105 }
1106
1107 unsafe impl fidl::encoding::TypeMarker for ComposedEchoUnionResponseWithErrorComposedResponse {
1108 type Owned = Self;
1109
1110 #[inline(always)]
1111 fn inline_align(_context: fidl::encoding::Context) -> usize {
1112 8
1113 }
1114
1115 #[inline(always)]
1116 fn inline_size(_context: fidl::encoding::Context) -> usize {
1117 16
1118 }
1119 }
1120
1121 unsafe impl<D: fidl::encoding::ResourceDialect>
1122 fidl::encoding::Encode<ComposedEchoUnionResponseWithErrorComposedResponse, D>
1123 for &ComposedEchoUnionResponseWithErrorComposedResponse
1124 {
1125 #[inline]
1126 unsafe fn encode(
1127 self,
1128 encoder: &mut fidl::encoding::Encoder<'_, D>,
1129 offset: usize,
1130 _depth: fidl::encoding::Depth,
1131 ) -> fidl::Result<()> {
1132 encoder
1133 .debug_check_bounds::<ComposedEchoUnionResponseWithErrorComposedResponse>(offset);
1134 encoder.write_num::<u64>(self.ordinal(), offset);
1135 match self {
1136 ComposedEchoUnionResponseWithErrorComposedResponse::Unsigned(ref val) => {
1137 fidl::encoding::encode_in_envelope::<u64, D>(
1138 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
1139 encoder,
1140 offset + 8,
1141 _depth,
1142 )
1143 }
1144 ComposedEchoUnionResponseWithErrorComposedResponse::Signed(ref val) => {
1145 fidl::encoding::encode_in_envelope::<i64, D>(
1146 <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
1147 encoder,
1148 offset + 8,
1149 _depth,
1150 )
1151 }
1152 }
1153 }
1154 }
1155
1156 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1157 for ComposedEchoUnionResponseWithErrorComposedResponse
1158 {
1159 #[inline(always)]
1160 fn new_empty() -> Self {
1161 Self::Unsigned(fidl::new_empty!(u64, D))
1162 }
1163
1164 #[inline]
1165 unsafe fn decode(
1166 &mut self,
1167 decoder: &mut fidl::encoding::Decoder<'_, D>,
1168 offset: usize,
1169 mut depth: fidl::encoding::Depth,
1170 ) -> fidl::Result<()> {
1171 decoder.debug_check_bounds::<Self>(offset);
1172 #[allow(unused_variables)]
1173 let next_out_of_line = decoder.next_out_of_line();
1174 let handles_before = decoder.remaining_handles();
1175 let (ordinal, inlined, num_bytes, num_handles) =
1176 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
1177
1178 let member_inline_size = match ordinal {
1179 1 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1180 2 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
1181 _ => return Err(fidl::Error::UnknownUnionTag),
1182 };
1183
1184 if inlined != (member_inline_size <= 4) {
1185 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1186 }
1187 let _inner_offset;
1188 if inlined {
1189 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
1190 _inner_offset = offset + 8;
1191 } else {
1192 depth.increment()?;
1193 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1194 }
1195 match ordinal {
1196 1 => {
1197 #[allow(irrefutable_let_patterns)]
1198 if let ComposedEchoUnionResponseWithErrorComposedResponse::Unsigned(_) = self {
1199 } else {
1201 *self = ComposedEchoUnionResponseWithErrorComposedResponse::Unsigned(
1203 fidl::new_empty!(u64, D),
1204 );
1205 }
1206 #[allow(irrefutable_let_patterns)]
1207 if let ComposedEchoUnionResponseWithErrorComposedResponse::Unsigned(
1208 ref mut val,
1209 ) = self
1210 {
1211 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
1212 } else {
1213 unreachable!()
1214 }
1215 }
1216 2 => {
1217 #[allow(irrefutable_let_patterns)]
1218 if let ComposedEchoUnionResponseWithErrorComposedResponse::Signed(_) = self {
1219 } else {
1221 *self = ComposedEchoUnionResponseWithErrorComposedResponse::Signed(
1223 fidl::new_empty!(i64, D),
1224 );
1225 }
1226 #[allow(irrefutable_let_patterns)]
1227 if let ComposedEchoUnionResponseWithErrorComposedResponse::Signed(ref mut val) =
1228 self
1229 {
1230 fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
1231 } else {
1232 unreachable!()
1233 }
1234 }
1235 ordinal => panic!("unexpected ordinal {:?}", ordinal),
1236 }
1237 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
1238 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1239 }
1240 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1241 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1242 }
1243 Ok(())
1244 }
1245 }
1246}