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 type AttemptId = String;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
15#[repr(u32)]
16pub enum CancelError {
17 NoUpdateInProgress = 1,
19 UpdateCannotBeCanceled = 2,
21 AttemptIdMismatch = 3,
23 CancelLimitExceeded = 4,
25}
26
27impl CancelError {
28 #[inline]
29 pub fn from_primitive(prim: u32) -> Option<Self> {
30 match prim {
31 1 => Some(Self::NoUpdateInProgress),
32 2 => Some(Self::UpdateCannotBeCanceled),
33 3 => Some(Self::AttemptIdMismatch),
34 4 => Some(Self::CancelLimitExceeded),
35 _ => None,
36 }
37 }
38
39 #[inline]
40 pub const fn into_primitive(self) -> u32 {
41 self as u32
42 }
43}
44
45#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
47#[repr(u32)]
48pub enum FetchFailureReason {
49 Internal = 0,
51 OutOfSpace = 1,
53}
54
55impl FetchFailureReason {
56 #[inline]
57 pub fn from_primitive(prim: u32) -> Option<Self> {
58 match prim {
59 0 => Some(Self::Internal),
60 1 => Some(Self::OutOfSpace),
61 _ => None,
62 }
63 }
64
65 #[inline]
66 pub const fn into_primitive(self) -> u32 {
67 self as u32
68 }
69}
70
71#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
73#[repr(u32)]
74pub enum Initiator {
75 User = 0,
78 Service = 1,
80}
81
82impl Initiator {
83 #[inline]
84 pub fn from_primitive(prim: u32) -> Option<Self> {
85 match prim {
86 0 => Some(Self::User),
87 1 => Some(Self::Service),
88 _ => None,
89 }
90 }
91
92 #[inline]
93 pub const fn into_primitive(self) -> u32 {
94 self as u32
95 }
96}
97
98#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
100#[repr(u32)]
101pub enum PrepareFailureReason {
102 Internal = 0,
104 OutOfSpace = 1,
107 UnsupportedDowngrade = 2,
111}
112
113impl PrepareFailureReason {
114 #[inline]
115 pub fn from_primitive(prim: u32) -> Option<Self> {
116 match prim {
117 0 => Some(Self::Internal),
118 1 => Some(Self::OutOfSpace),
119 2 => Some(Self::UnsupportedDowngrade),
120 _ => None,
121 }
122 }
123
124 #[inline]
125 pub const fn into_primitive(self) -> u32 {
126 self as u32
127 }
128}
129
130#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
132#[repr(u32)]
133pub enum ResumeError {
134 NoUpdateInProgress = 1,
136 AttemptIdMismatch = 2,
138}
139
140impl ResumeError {
141 #[inline]
142 pub fn from_primitive(prim: u32) -> Option<Self> {
143 match prim {
144 1 => Some(Self::NoUpdateInProgress),
145 2 => Some(Self::AttemptIdMismatch),
146 _ => None,
147 }
148 }
149
150 #[inline]
151 pub const fn into_primitive(self) -> u32 {
152 self as u32
153 }
154}
155
156#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
158#[repr(u32)]
159pub enum StageFailureReason {
160 Internal = 0,
162 OutOfSpace = 1,
164}
165
166impl StageFailureReason {
167 #[inline]
168 pub fn from_primitive(prim: u32) -> Option<Self> {
169 match prim {
170 0 => Some(Self::Internal),
171 1 => Some(Self::OutOfSpace),
172 _ => None,
173 }
174 }
175
176 #[inline]
177 pub const fn into_primitive(self) -> u32 {
178 self as u32
179 }
180}
181
182#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
184#[repr(u32)]
185pub enum SuspendError {
186 NoUpdateInProgress = 1,
188 SuspendLimitExceeded = 2,
190 AttemptIdMismatch = 3,
192}
193
194impl SuspendError {
195 #[inline]
196 pub fn from_primitive(prim: u32) -> Option<Self> {
197 match prim {
198 1 => Some(Self::NoUpdateInProgress),
199 2 => Some(Self::SuspendLimitExceeded),
200 3 => Some(Self::AttemptIdMismatch),
201 _ => None,
202 }
203 }
204
205 #[inline]
206 pub const fn into_primitive(self) -> u32 {
207 self as u32
208 }
209}
210
211#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
213#[repr(u32)]
214pub enum UpdateNotStartedReason {
215 AlreadyInProgress = 1,
218}
219
220impl UpdateNotStartedReason {
221 #[inline]
222 pub fn from_primitive(prim: u32) -> Option<Self> {
223 match prim {
224 1 => Some(Self::AlreadyInProgress),
225 _ => None,
226 }
227 }
228
229 #[inline]
230 pub const fn into_primitive(self) -> u32 {
231 self as u32
232 }
233}
234
235#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
236pub struct InstallerCancelUpdateRequest {
237 pub attempt_id: Option<String>,
238}
239
240impl fidl::Persistable for InstallerCancelUpdateRequest {}
241
242#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
243pub struct InstallerMonitorUpdateResponse {
244 pub attached: bool,
245}
246
247impl fidl::Persistable for InstallerMonitorUpdateResponse {}
248
249#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
250pub struct InstallerResumeUpdateRequest {
251 pub attempt_id: Option<String>,
252}
253
254impl fidl::Persistable for InstallerResumeUpdateRequest {}
255
256#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
257pub struct InstallerSuspendUpdateRequest {
258 pub attempt_id: Option<String>,
259}
260
261impl fidl::Persistable for InstallerSuspendUpdateRequest {}
262
263#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
264pub struct InstallerStartUpdateResponse {
265 pub attempt_id: String,
266}
267
268impl fidl::Persistable for InstallerStartUpdateResponse {}
269
270#[derive(Clone, Debug, PartialEq)]
271pub struct MonitorOnStateRequest {
272 pub state: State,
273}
274
275impl fidl::Persistable for MonitorOnStateRequest {}
276
277#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
279#[repr(C)]
280pub struct Range {
281 pub offset: u64,
283 pub size: u64,
285}
286
287impl fidl::Persistable for Range {}
288
289#[derive(Clone, Debug, Default, PartialEq)]
291pub struct CanceledData {
292 #[doc(hidden)]
293 pub __source_breaking: fidl::marker::SourceBreaking,
294}
295
296impl fidl::Persistable for CanceledData {}
297
298#[derive(Clone, Debug, Default, PartialEq)]
300pub struct CommitData {
301 pub info: Option<UpdateInfo>,
302 pub progress: Option<InstallationProgress>,
303 #[doc(hidden)]
304 pub __source_breaking: fidl::marker::SourceBreaking,
305}
306
307impl fidl::Persistable for CommitData {}
308
309#[derive(Clone, Debug, Default, PartialEq)]
311pub struct CompleteButNotActiveData {
312 pub info: Option<UpdateInfo>,
313 pub progress: Option<InstallationProgress>,
314 #[doc(hidden)]
315 pub __source_breaking: fidl::marker::SourceBreaking,
316}
317
318impl fidl::Persistable for CompleteButNotActiveData {}
319
320#[derive(Clone, Debug, Default, PartialEq)]
322pub struct DeferRebootData {
323 pub info: Option<UpdateInfo>,
324 pub progress: Option<InstallationProgress>,
325 #[doc(hidden)]
326 pub __source_breaking: fidl::marker::SourceBreaking,
327}
328
329impl fidl::Persistable for DeferRebootData {}
330
331#[derive(Clone, Debug, Default, PartialEq)]
333pub struct FailCommitData {
334 pub info: Option<UpdateInfo>,
335 pub progress: Option<InstallationProgress>,
336 #[doc(hidden)]
337 pub __source_breaking: fidl::marker::SourceBreaking,
338}
339
340impl fidl::Persistable for FailCommitData {}
341
342#[derive(Clone, Debug, Default, PartialEq)]
344pub struct FailFetchData {
345 pub info: Option<UpdateInfo>,
346 pub progress: Option<InstallationProgress>,
347 pub reason: Option<FetchFailureReason>,
348 #[doc(hidden)]
349 pub __source_breaking: fidl::marker::SourceBreaking,
350}
351
352impl fidl::Persistable for FailFetchData {}
353
354#[derive(Clone, Debug, Default, PartialEq)]
356pub struct FailPrepareData {
357 pub reason: Option<PrepareFailureReason>,
358 #[doc(hidden)]
359 pub __source_breaking: fidl::marker::SourceBreaking,
360}
361
362impl fidl::Persistable for FailPrepareData {}
363
364#[derive(Clone, Debug, Default, PartialEq)]
366pub struct FailStageData {
367 pub info: Option<UpdateInfo>,
368 pub progress: Option<InstallationProgress>,
369 pub reason: Option<StageFailureReason>,
370 #[doc(hidden)]
371 pub __source_breaking: fidl::marker::SourceBreaking,
372}
373
374impl fidl::Persistable for FailStageData {}
375
376#[derive(Clone, Debug, Default, PartialEq)]
378pub struct FetchData {
379 pub info: Option<UpdateInfo>,
380 pub progress: Option<InstallationProgress>,
381 #[doc(hidden)]
382 pub __source_breaking: fidl::marker::SourceBreaking,
383}
384
385impl fidl::Persistable for FetchData {}
386
387#[derive(Clone, Debug, Default, PartialEq)]
389pub struct InstallationProgress {
390 pub fraction_completed: Option<f32>,
392 pub bytes_downloaded: Option<u64>,
395 #[doc(hidden)]
396 pub __source_breaking: fidl::marker::SourceBreaking,
397}
398
399impl fidl::Persistable for InstallationProgress {}
400
401#[derive(Clone, Debug, Default, PartialEq)]
403pub struct Options {
404 pub initiator: Option<Initiator>,
406 pub allow_attach_to_existing_attempt: Option<bool>,
413 pub should_write_recovery: Option<bool>,
416 pub manifest_range: Option<Range>,
420 pub manifest_headers: Option<Vec<fidl_fuchsia_net_http_common::Header>>,
423 pub should_commit: Option<bool>,
428 #[doc(hidden)]
429 pub __source_breaking: fidl::marker::SourceBreaking,
430}
431
432impl fidl::Persistable for Options {}
433
434#[derive(Clone, Debug, Default, PartialEq)]
436pub struct PrepareData {
437 #[doc(hidden)]
438 pub __source_breaking: fidl::marker::SourceBreaking,
439}
440
441impl fidl::Persistable for PrepareData {}
442
443#[derive(Clone, Debug, Default, PartialEq)]
445pub struct RebootData {
446 pub info: Option<UpdateInfo>,
447 pub progress: Option<InstallationProgress>,
448 #[doc(hidden)]
449 pub __source_breaking: fidl::marker::SourceBreaking,
450}
451
452impl fidl::Persistable for RebootData {}
453
454#[derive(Clone, Debug, Default, PartialEq)]
456pub struct StageData {
457 pub info: Option<UpdateInfo>,
458 pub progress: Option<InstallationProgress>,
459 #[doc(hidden)]
460 pub __source_breaking: fidl::marker::SourceBreaking,
461}
462
463impl fidl::Persistable for StageData {}
464
465#[derive(Clone, Debug, Default, PartialEq)]
468pub struct UpdateInfo {
469 pub download_size: Option<u64>,
472 #[doc(hidden)]
473 pub __source_breaking: fidl::marker::SourceBreaking,
474}
475
476impl fidl::Persistable for UpdateInfo {}
477
478#[derive(Clone, Debug, Default, PartialEq)]
480pub struct WaitToRebootData {
481 pub info: Option<UpdateInfo>,
482 pub progress: Option<InstallationProgress>,
483 #[doc(hidden)]
484 pub __source_breaking: fidl::marker::SourceBreaking,
485}
486
487impl fidl::Persistable for WaitToRebootData {}
488
489#[derive(Clone, Debug, PartialEq)]
531pub enum State {
532 Prepare(PrepareData),
540 Stage(StageData),
547 Fetch(FetchData),
556 Commit(CommitData),
563 WaitToReboot(WaitToRebootData),
570 Reboot(RebootData),
574 DeferReboot(DeferRebootData),
579 CompleteButNotActive(CompleteButNotActiveData),
583 FailPrepare(FailPrepareData),
587 FailStage(FailStageData),
591 FailFetch(FailFetchData),
595 FailCommit(FailCommitData),
599 Canceled(CanceledData),
603}
604
605impl State {
606 #[inline]
607 pub fn ordinal(&self) -> u64 {
608 match *self {
609 Self::Prepare(_) => 1,
610 Self::Stage(_) => 2,
611 Self::Fetch(_) => 3,
612 Self::Commit(_) => 4,
613 Self::WaitToReboot(_) => 5,
614 Self::Reboot(_) => 6,
615 Self::DeferReboot(_) => 7,
616 Self::CompleteButNotActive(_) => 8,
617 Self::FailPrepare(_) => 9,
618 Self::FailStage(_) => 10,
619 Self::FailFetch(_) => 11,
620 Self::FailCommit(_) => 12,
621 Self::Canceled(_) => 13,
622 }
623 }
624}
625
626impl fidl::Persistable for State {}
627
628pub mod installer_ordinals {
629 pub const START_UPDATE: u64 = 0x2b1c5ba9167c320b;
630 pub const MONITOR_UPDATE: u64 = 0x21d54aa1fd825a32;
631 pub const SUSPEND_UPDATE: u64 = 0x788de328461f9950;
632 pub const RESUME_UPDATE: u64 = 0x7479e805fec33dd3;
633 pub const CANCEL_UPDATE: u64 = 0x472dec9160a1d0f;
634}
635
636pub mod monitor_ordinals {
637 pub const ON_STATE: u64 = 0x574105820d16cf26;
638}
639
640pub mod reboot_controller_ordinals {
641 pub const UNBLOCK: u64 = 0x5705625395e3d520;
642 pub const DETACH: u64 = 0x1daa560411955f16;
643}
644
645mod internal {
646 use super::*;
647 unsafe impl fidl::encoding::TypeMarker for CancelError {
648 type Owned = Self;
649
650 #[inline(always)]
651 fn inline_align(_context: fidl::encoding::Context) -> usize {
652 std::mem::align_of::<u32>()
653 }
654
655 #[inline(always)]
656 fn inline_size(_context: fidl::encoding::Context) -> usize {
657 std::mem::size_of::<u32>()
658 }
659
660 #[inline(always)]
661 fn encode_is_copy() -> bool {
662 true
663 }
664
665 #[inline(always)]
666 fn decode_is_copy() -> bool {
667 false
668 }
669 }
670
671 impl fidl::encoding::ValueTypeMarker for CancelError {
672 type Borrowed<'a> = Self;
673 #[inline(always)]
674 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
675 *value
676 }
677 }
678
679 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CancelError {
680 #[inline]
681 unsafe fn encode(
682 self,
683 encoder: &mut fidl::encoding::Encoder<'_, D>,
684 offset: usize,
685 _depth: fidl::encoding::Depth,
686 ) -> fidl::Result<()> {
687 encoder.debug_check_bounds::<Self>(offset);
688 encoder.write_num(self.into_primitive(), offset);
689 Ok(())
690 }
691 }
692
693 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CancelError {
694 #[inline(always)]
695 fn new_empty() -> Self {
696 Self::NoUpdateInProgress
697 }
698
699 #[inline]
700 unsafe fn decode(
701 &mut self,
702 decoder: &mut fidl::encoding::Decoder<'_, D>,
703 offset: usize,
704 _depth: fidl::encoding::Depth,
705 ) -> fidl::Result<()> {
706 decoder.debug_check_bounds::<Self>(offset);
707 let prim = decoder.read_num::<u32>(offset);
708
709 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
710 Ok(())
711 }
712 }
713 unsafe impl fidl::encoding::TypeMarker for FetchFailureReason {
714 type Owned = Self;
715
716 #[inline(always)]
717 fn inline_align(_context: fidl::encoding::Context) -> usize {
718 std::mem::align_of::<u32>()
719 }
720
721 #[inline(always)]
722 fn inline_size(_context: fidl::encoding::Context) -> usize {
723 std::mem::size_of::<u32>()
724 }
725
726 #[inline(always)]
727 fn encode_is_copy() -> bool {
728 true
729 }
730
731 #[inline(always)]
732 fn decode_is_copy() -> bool {
733 false
734 }
735 }
736
737 impl fidl::encoding::ValueTypeMarker for FetchFailureReason {
738 type Borrowed<'a> = Self;
739 #[inline(always)]
740 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
741 *value
742 }
743 }
744
745 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
746 for FetchFailureReason
747 {
748 #[inline]
749 unsafe fn encode(
750 self,
751 encoder: &mut fidl::encoding::Encoder<'_, D>,
752 offset: usize,
753 _depth: fidl::encoding::Depth,
754 ) -> fidl::Result<()> {
755 encoder.debug_check_bounds::<Self>(offset);
756 encoder.write_num(self.into_primitive(), offset);
757 Ok(())
758 }
759 }
760
761 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FetchFailureReason {
762 #[inline(always)]
763 fn new_empty() -> Self {
764 Self::Internal
765 }
766
767 #[inline]
768 unsafe fn decode(
769 &mut self,
770 decoder: &mut fidl::encoding::Decoder<'_, D>,
771 offset: usize,
772 _depth: fidl::encoding::Depth,
773 ) -> fidl::Result<()> {
774 decoder.debug_check_bounds::<Self>(offset);
775 let prim = decoder.read_num::<u32>(offset);
776
777 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
778 Ok(())
779 }
780 }
781 unsafe impl fidl::encoding::TypeMarker for Initiator {
782 type Owned = Self;
783
784 #[inline(always)]
785 fn inline_align(_context: fidl::encoding::Context) -> usize {
786 std::mem::align_of::<u32>()
787 }
788
789 #[inline(always)]
790 fn inline_size(_context: fidl::encoding::Context) -> usize {
791 std::mem::size_of::<u32>()
792 }
793
794 #[inline(always)]
795 fn encode_is_copy() -> bool {
796 true
797 }
798
799 #[inline(always)]
800 fn decode_is_copy() -> bool {
801 false
802 }
803 }
804
805 impl fidl::encoding::ValueTypeMarker for Initiator {
806 type Borrowed<'a> = Self;
807 #[inline(always)]
808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
809 *value
810 }
811 }
812
813 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Initiator {
814 #[inline]
815 unsafe fn encode(
816 self,
817 encoder: &mut fidl::encoding::Encoder<'_, D>,
818 offset: usize,
819 _depth: fidl::encoding::Depth,
820 ) -> fidl::Result<()> {
821 encoder.debug_check_bounds::<Self>(offset);
822 encoder.write_num(self.into_primitive(), offset);
823 Ok(())
824 }
825 }
826
827 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Initiator {
828 #[inline(always)]
829 fn new_empty() -> Self {
830 Self::User
831 }
832
833 #[inline]
834 unsafe fn decode(
835 &mut self,
836 decoder: &mut fidl::encoding::Decoder<'_, D>,
837 offset: usize,
838 _depth: fidl::encoding::Depth,
839 ) -> fidl::Result<()> {
840 decoder.debug_check_bounds::<Self>(offset);
841 let prim = decoder.read_num::<u32>(offset);
842
843 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
844 Ok(())
845 }
846 }
847 unsafe impl fidl::encoding::TypeMarker for PrepareFailureReason {
848 type Owned = Self;
849
850 #[inline(always)]
851 fn inline_align(_context: fidl::encoding::Context) -> usize {
852 std::mem::align_of::<u32>()
853 }
854
855 #[inline(always)]
856 fn inline_size(_context: fidl::encoding::Context) -> usize {
857 std::mem::size_of::<u32>()
858 }
859
860 #[inline(always)]
861 fn encode_is_copy() -> bool {
862 true
863 }
864
865 #[inline(always)]
866 fn decode_is_copy() -> bool {
867 false
868 }
869 }
870
871 impl fidl::encoding::ValueTypeMarker for PrepareFailureReason {
872 type Borrowed<'a> = Self;
873 #[inline(always)]
874 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
875 *value
876 }
877 }
878
879 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
880 for PrepareFailureReason
881 {
882 #[inline]
883 unsafe fn encode(
884 self,
885 encoder: &mut fidl::encoding::Encoder<'_, D>,
886 offset: usize,
887 _depth: fidl::encoding::Depth,
888 ) -> fidl::Result<()> {
889 encoder.debug_check_bounds::<Self>(offset);
890 encoder.write_num(self.into_primitive(), offset);
891 Ok(())
892 }
893 }
894
895 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PrepareFailureReason {
896 #[inline(always)]
897 fn new_empty() -> Self {
898 Self::Internal
899 }
900
901 #[inline]
902 unsafe fn decode(
903 &mut self,
904 decoder: &mut fidl::encoding::Decoder<'_, D>,
905 offset: usize,
906 _depth: fidl::encoding::Depth,
907 ) -> fidl::Result<()> {
908 decoder.debug_check_bounds::<Self>(offset);
909 let prim = decoder.read_num::<u32>(offset);
910
911 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
912 Ok(())
913 }
914 }
915 unsafe impl fidl::encoding::TypeMarker for ResumeError {
916 type Owned = Self;
917
918 #[inline(always)]
919 fn inline_align(_context: fidl::encoding::Context) -> usize {
920 std::mem::align_of::<u32>()
921 }
922
923 #[inline(always)]
924 fn inline_size(_context: fidl::encoding::Context) -> usize {
925 std::mem::size_of::<u32>()
926 }
927
928 #[inline(always)]
929 fn encode_is_copy() -> bool {
930 true
931 }
932
933 #[inline(always)]
934 fn decode_is_copy() -> bool {
935 false
936 }
937 }
938
939 impl fidl::encoding::ValueTypeMarker for ResumeError {
940 type Borrowed<'a> = Self;
941 #[inline(always)]
942 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
943 *value
944 }
945 }
946
947 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ResumeError {
948 #[inline]
949 unsafe fn encode(
950 self,
951 encoder: &mut fidl::encoding::Encoder<'_, D>,
952 offset: usize,
953 _depth: fidl::encoding::Depth,
954 ) -> fidl::Result<()> {
955 encoder.debug_check_bounds::<Self>(offset);
956 encoder.write_num(self.into_primitive(), offset);
957 Ok(())
958 }
959 }
960
961 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ResumeError {
962 #[inline(always)]
963 fn new_empty() -> Self {
964 Self::NoUpdateInProgress
965 }
966
967 #[inline]
968 unsafe fn decode(
969 &mut self,
970 decoder: &mut fidl::encoding::Decoder<'_, D>,
971 offset: usize,
972 _depth: fidl::encoding::Depth,
973 ) -> fidl::Result<()> {
974 decoder.debug_check_bounds::<Self>(offset);
975 let prim = decoder.read_num::<u32>(offset);
976
977 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
978 Ok(())
979 }
980 }
981 unsafe impl fidl::encoding::TypeMarker for StageFailureReason {
982 type Owned = Self;
983
984 #[inline(always)]
985 fn inline_align(_context: fidl::encoding::Context) -> usize {
986 std::mem::align_of::<u32>()
987 }
988
989 #[inline(always)]
990 fn inline_size(_context: fidl::encoding::Context) -> usize {
991 std::mem::size_of::<u32>()
992 }
993
994 #[inline(always)]
995 fn encode_is_copy() -> bool {
996 true
997 }
998
999 #[inline(always)]
1000 fn decode_is_copy() -> bool {
1001 false
1002 }
1003 }
1004
1005 impl fidl::encoding::ValueTypeMarker for StageFailureReason {
1006 type Borrowed<'a> = Self;
1007 #[inline(always)]
1008 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1009 *value
1010 }
1011 }
1012
1013 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1014 for StageFailureReason
1015 {
1016 #[inline]
1017 unsafe fn encode(
1018 self,
1019 encoder: &mut fidl::encoding::Encoder<'_, D>,
1020 offset: usize,
1021 _depth: fidl::encoding::Depth,
1022 ) -> fidl::Result<()> {
1023 encoder.debug_check_bounds::<Self>(offset);
1024 encoder.write_num(self.into_primitive(), offset);
1025 Ok(())
1026 }
1027 }
1028
1029 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StageFailureReason {
1030 #[inline(always)]
1031 fn new_empty() -> Self {
1032 Self::Internal
1033 }
1034
1035 #[inline]
1036 unsafe fn decode(
1037 &mut self,
1038 decoder: &mut fidl::encoding::Decoder<'_, D>,
1039 offset: usize,
1040 _depth: fidl::encoding::Depth,
1041 ) -> fidl::Result<()> {
1042 decoder.debug_check_bounds::<Self>(offset);
1043 let prim = decoder.read_num::<u32>(offset);
1044
1045 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1046 Ok(())
1047 }
1048 }
1049 unsafe impl fidl::encoding::TypeMarker for SuspendError {
1050 type Owned = Self;
1051
1052 #[inline(always)]
1053 fn inline_align(_context: fidl::encoding::Context) -> usize {
1054 std::mem::align_of::<u32>()
1055 }
1056
1057 #[inline(always)]
1058 fn inline_size(_context: fidl::encoding::Context) -> usize {
1059 std::mem::size_of::<u32>()
1060 }
1061
1062 #[inline(always)]
1063 fn encode_is_copy() -> bool {
1064 true
1065 }
1066
1067 #[inline(always)]
1068 fn decode_is_copy() -> bool {
1069 false
1070 }
1071 }
1072
1073 impl fidl::encoding::ValueTypeMarker for SuspendError {
1074 type Borrowed<'a> = Self;
1075 #[inline(always)]
1076 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1077 *value
1078 }
1079 }
1080
1081 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SuspendError {
1082 #[inline]
1083 unsafe fn encode(
1084 self,
1085 encoder: &mut fidl::encoding::Encoder<'_, D>,
1086 offset: usize,
1087 _depth: fidl::encoding::Depth,
1088 ) -> fidl::Result<()> {
1089 encoder.debug_check_bounds::<Self>(offset);
1090 encoder.write_num(self.into_primitive(), offset);
1091 Ok(())
1092 }
1093 }
1094
1095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SuspendError {
1096 #[inline(always)]
1097 fn new_empty() -> Self {
1098 Self::NoUpdateInProgress
1099 }
1100
1101 #[inline]
1102 unsafe fn decode(
1103 &mut self,
1104 decoder: &mut fidl::encoding::Decoder<'_, D>,
1105 offset: usize,
1106 _depth: fidl::encoding::Depth,
1107 ) -> fidl::Result<()> {
1108 decoder.debug_check_bounds::<Self>(offset);
1109 let prim = decoder.read_num::<u32>(offset);
1110
1111 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1112 Ok(())
1113 }
1114 }
1115 unsafe impl fidl::encoding::TypeMarker for UpdateNotStartedReason {
1116 type Owned = Self;
1117
1118 #[inline(always)]
1119 fn inline_align(_context: fidl::encoding::Context) -> usize {
1120 std::mem::align_of::<u32>()
1121 }
1122
1123 #[inline(always)]
1124 fn inline_size(_context: fidl::encoding::Context) -> usize {
1125 std::mem::size_of::<u32>()
1126 }
1127
1128 #[inline(always)]
1129 fn encode_is_copy() -> bool {
1130 true
1131 }
1132
1133 #[inline(always)]
1134 fn decode_is_copy() -> bool {
1135 false
1136 }
1137 }
1138
1139 impl fidl::encoding::ValueTypeMarker for UpdateNotStartedReason {
1140 type Borrowed<'a> = Self;
1141 #[inline(always)]
1142 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1143 *value
1144 }
1145 }
1146
1147 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1148 for UpdateNotStartedReason
1149 {
1150 #[inline]
1151 unsafe fn encode(
1152 self,
1153 encoder: &mut fidl::encoding::Encoder<'_, D>,
1154 offset: usize,
1155 _depth: fidl::encoding::Depth,
1156 ) -> fidl::Result<()> {
1157 encoder.debug_check_bounds::<Self>(offset);
1158 encoder.write_num(self.into_primitive(), offset);
1159 Ok(())
1160 }
1161 }
1162
1163 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1164 for UpdateNotStartedReason
1165 {
1166 #[inline(always)]
1167 fn new_empty() -> Self {
1168 Self::AlreadyInProgress
1169 }
1170
1171 #[inline]
1172 unsafe fn decode(
1173 &mut self,
1174 decoder: &mut fidl::encoding::Decoder<'_, D>,
1175 offset: usize,
1176 _depth: fidl::encoding::Depth,
1177 ) -> fidl::Result<()> {
1178 decoder.debug_check_bounds::<Self>(offset);
1179 let prim = decoder.read_num::<u32>(offset);
1180
1181 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1182 Ok(())
1183 }
1184 }
1185
1186 impl fidl::encoding::ValueTypeMarker for InstallerCancelUpdateRequest {
1187 type Borrowed<'a> = &'a Self;
1188 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1189 value
1190 }
1191 }
1192
1193 unsafe impl fidl::encoding::TypeMarker for InstallerCancelUpdateRequest {
1194 type Owned = Self;
1195
1196 #[inline(always)]
1197 fn inline_align(_context: fidl::encoding::Context) -> usize {
1198 8
1199 }
1200
1201 #[inline(always)]
1202 fn inline_size(_context: fidl::encoding::Context) -> usize {
1203 16
1204 }
1205 }
1206
1207 unsafe impl<D: fidl::encoding::ResourceDialect>
1208 fidl::encoding::Encode<InstallerCancelUpdateRequest, D> for &InstallerCancelUpdateRequest
1209 {
1210 #[inline]
1211 unsafe fn encode(
1212 self,
1213 encoder: &mut fidl::encoding::Encoder<'_, D>,
1214 offset: usize,
1215 _depth: fidl::encoding::Depth,
1216 ) -> fidl::Result<()> {
1217 encoder.debug_check_bounds::<InstallerCancelUpdateRequest>(offset);
1218 fidl::encoding::Encode::<InstallerCancelUpdateRequest, D>::encode(
1220 (
1221 <fidl::encoding::Optional<fidl::encoding::BoundedString<36>> as fidl::encoding::ValueTypeMarker>::borrow(&self.attempt_id),
1222 ),
1223 encoder, offset, _depth
1224 )
1225 }
1226 }
1227 unsafe impl<
1228 D: fidl::encoding::ResourceDialect,
1229 T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<36>>, D>,
1230 > fidl::encoding::Encode<InstallerCancelUpdateRequest, D> for (T0,)
1231 {
1232 #[inline]
1233 unsafe fn encode(
1234 self,
1235 encoder: &mut fidl::encoding::Encoder<'_, D>,
1236 offset: usize,
1237 depth: fidl::encoding::Depth,
1238 ) -> fidl::Result<()> {
1239 encoder.debug_check_bounds::<InstallerCancelUpdateRequest>(offset);
1240 self.0.encode(encoder, offset + 0, depth)?;
1244 Ok(())
1245 }
1246 }
1247
1248 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1249 for InstallerCancelUpdateRequest
1250 {
1251 #[inline(always)]
1252 fn new_empty() -> Self {
1253 Self {
1254 attempt_id: fidl::new_empty!(
1255 fidl::encoding::Optional<fidl::encoding::BoundedString<36>>,
1256 D
1257 ),
1258 }
1259 }
1260
1261 #[inline]
1262 unsafe fn decode(
1263 &mut self,
1264 decoder: &mut fidl::encoding::Decoder<'_, D>,
1265 offset: usize,
1266 _depth: fidl::encoding::Depth,
1267 ) -> fidl::Result<()> {
1268 decoder.debug_check_bounds::<Self>(offset);
1269 fidl::decode!(
1271 fidl::encoding::Optional<fidl::encoding::BoundedString<36>>,
1272 D,
1273 &mut self.attempt_id,
1274 decoder,
1275 offset + 0,
1276 _depth
1277 )?;
1278 Ok(())
1279 }
1280 }
1281
1282 impl fidl::encoding::ValueTypeMarker for InstallerMonitorUpdateResponse {
1283 type Borrowed<'a> = &'a Self;
1284 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1285 value
1286 }
1287 }
1288
1289 unsafe impl fidl::encoding::TypeMarker for InstallerMonitorUpdateResponse {
1290 type Owned = Self;
1291
1292 #[inline(always)]
1293 fn inline_align(_context: fidl::encoding::Context) -> usize {
1294 1
1295 }
1296
1297 #[inline(always)]
1298 fn inline_size(_context: fidl::encoding::Context) -> usize {
1299 1
1300 }
1301 }
1302
1303 unsafe impl<D: fidl::encoding::ResourceDialect>
1304 fidl::encoding::Encode<InstallerMonitorUpdateResponse, D>
1305 for &InstallerMonitorUpdateResponse
1306 {
1307 #[inline]
1308 unsafe fn encode(
1309 self,
1310 encoder: &mut fidl::encoding::Encoder<'_, D>,
1311 offset: usize,
1312 _depth: fidl::encoding::Depth,
1313 ) -> fidl::Result<()> {
1314 encoder.debug_check_bounds::<InstallerMonitorUpdateResponse>(offset);
1315 fidl::encoding::Encode::<InstallerMonitorUpdateResponse, D>::encode(
1317 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.attached),),
1318 encoder,
1319 offset,
1320 _depth,
1321 )
1322 }
1323 }
1324 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
1325 fidl::encoding::Encode<InstallerMonitorUpdateResponse, D> for (T0,)
1326 {
1327 #[inline]
1328 unsafe fn encode(
1329 self,
1330 encoder: &mut fidl::encoding::Encoder<'_, D>,
1331 offset: usize,
1332 depth: fidl::encoding::Depth,
1333 ) -> fidl::Result<()> {
1334 encoder.debug_check_bounds::<InstallerMonitorUpdateResponse>(offset);
1335 self.0.encode(encoder, offset + 0, depth)?;
1339 Ok(())
1340 }
1341 }
1342
1343 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1344 for InstallerMonitorUpdateResponse
1345 {
1346 #[inline(always)]
1347 fn new_empty() -> Self {
1348 Self { attached: fidl::new_empty!(bool, D) }
1349 }
1350
1351 #[inline]
1352 unsafe fn decode(
1353 &mut self,
1354 decoder: &mut fidl::encoding::Decoder<'_, D>,
1355 offset: usize,
1356 _depth: fidl::encoding::Depth,
1357 ) -> fidl::Result<()> {
1358 decoder.debug_check_bounds::<Self>(offset);
1359 fidl::decode!(bool, D, &mut self.attached, decoder, offset + 0, _depth)?;
1361 Ok(())
1362 }
1363 }
1364
1365 impl fidl::encoding::ValueTypeMarker for InstallerResumeUpdateRequest {
1366 type Borrowed<'a> = &'a Self;
1367 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1368 value
1369 }
1370 }
1371
1372 unsafe impl fidl::encoding::TypeMarker for InstallerResumeUpdateRequest {
1373 type Owned = Self;
1374
1375 #[inline(always)]
1376 fn inline_align(_context: fidl::encoding::Context) -> usize {
1377 8
1378 }
1379
1380 #[inline(always)]
1381 fn inline_size(_context: fidl::encoding::Context) -> usize {
1382 16
1383 }
1384 }
1385
1386 unsafe impl<D: fidl::encoding::ResourceDialect>
1387 fidl::encoding::Encode<InstallerResumeUpdateRequest, D> for &InstallerResumeUpdateRequest
1388 {
1389 #[inline]
1390 unsafe fn encode(
1391 self,
1392 encoder: &mut fidl::encoding::Encoder<'_, D>,
1393 offset: usize,
1394 _depth: fidl::encoding::Depth,
1395 ) -> fidl::Result<()> {
1396 encoder.debug_check_bounds::<InstallerResumeUpdateRequest>(offset);
1397 fidl::encoding::Encode::<InstallerResumeUpdateRequest, D>::encode(
1399 (
1400 <fidl::encoding::Optional<fidl::encoding::BoundedString<36>> as fidl::encoding::ValueTypeMarker>::borrow(&self.attempt_id),
1401 ),
1402 encoder, offset, _depth
1403 )
1404 }
1405 }
1406 unsafe impl<
1407 D: fidl::encoding::ResourceDialect,
1408 T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<36>>, D>,
1409 > fidl::encoding::Encode<InstallerResumeUpdateRequest, D> for (T0,)
1410 {
1411 #[inline]
1412 unsafe fn encode(
1413 self,
1414 encoder: &mut fidl::encoding::Encoder<'_, D>,
1415 offset: usize,
1416 depth: fidl::encoding::Depth,
1417 ) -> fidl::Result<()> {
1418 encoder.debug_check_bounds::<InstallerResumeUpdateRequest>(offset);
1419 self.0.encode(encoder, offset + 0, depth)?;
1423 Ok(())
1424 }
1425 }
1426
1427 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1428 for InstallerResumeUpdateRequest
1429 {
1430 #[inline(always)]
1431 fn new_empty() -> Self {
1432 Self {
1433 attempt_id: fidl::new_empty!(
1434 fidl::encoding::Optional<fidl::encoding::BoundedString<36>>,
1435 D
1436 ),
1437 }
1438 }
1439
1440 #[inline]
1441 unsafe fn decode(
1442 &mut self,
1443 decoder: &mut fidl::encoding::Decoder<'_, D>,
1444 offset: usize,
1445 _depth: fidl::encoding::Depth,
1446 ) -> fidl::Result<()> {
1447 decoder.debug_check_bounds::<Self>(offset);
1448 fidl::decode!(
1450 fidl::encoding::Optional<fidl::encoding::BoundedString<36>>,
1451 D,
1452 &mut self.attempt_id,
1453 decoder,
1454 offset + 0,
1455 _depth
1456 )?;
1457 Ok(())
1458 }
1459 }
1460
1461 impl fidl::encoding::ValueTypeMarker for InstallerSuspendUpdateRequest {
1462 type Borrowed<'a> = &'a Self;
1463 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1464 value
1465 }
1466 }
1467
1468 unsafe impl fidl::encoding::TypeMarker for InstallerSuspendUpdateRequest {
1469 type Owned = Self;
1470
1471 #[inline(always)]
1472 fn inline_align(_context: fidl::encoding::Context) -> usize {
1473 8
1474 }
1475
1476 #[inline(always)]
1477 fn inline_size(_context: fidl::encoding::Context) -> usize {
1478 16
1479 }
1480 }
1481
1482 unsafe impl<D: fidl::encoding::ResourceDialect>
1483 fidl::encoding::Encode<InstallerSuspendUpdateRequest, D>
1484 for &InstallerSuspendUpdateRequest
1485 {
1486 #[inline]
1487 unsafe fn encode(
1488 self,
1489 encoder: &mut fidl::encoding::Encoder<'_, D>,
1490 offset: usize,
1491 _depth: fidl::encoding::Depth,
1492 ) -> fidl::Result<()> {
1493 encoder.debug_check_bounds::<InstallerSuspendUpdateRequest>(offset);
1494 fidl::encoding::Encode::<InstallerSuspendUpdateRequest, D>::encode(
1496 (
1497 <fidl::encoding::Optional<fidl::encoding::BoundedString<36>> as fidl::encoding::ValueTypeMarker>::borrow(&self.attempt_id),
1498 ),
1499 encoder, offset, _depth
1500 )
1501 }
1502 }
1503 unsafe impl<
1504 D: fidl::encoding::ResourceDialect,
1505 T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<36>>, D>,
1506 > fidl::encoding::Encode<InstallerSuspendUpdateRequest, D> for (T0,)
1507 {
1508 #[inline]
1509 unsafe fn encode(
1510 self,
1511 encoder: &mut fidl::encoding::Encoder<'_, D>,
1512 offset: usize,
1513 depth: fidl::encoding::Depth,
1514 ) -> fidl::Result<()> {
1515 encoder.debug_check_bounds::<InstallerSuspendUpdateRequest>(offset);
1516 self.0.encode(encoder, offset + 0, depth)?;
1520 Ok(())
1521 }
1522 }
1523
1524 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1525 for InstallerSuspendUpdateRequest
1526 {
1527 #[inline(always)]
1528 fn new_empty() -> Self {
1529 Self {
1530 attempt_id: fidl::new_empty!(
1531 fidl::encoding::Optional<fidl::encoding::BoundedString<36>>,
1532 D
1533 ),
1534 }
1535 }
1536
1537 #[inline]
1538 unsafe fn decode(
1539 &mut self,
1540 decoder: &mut fidl::encoding::Decoder<'_, D>,
1541 offset: usize,
1542 _depth: fidl::encoding::Depth,
1543 ) -> fidl::Result<()> {
1544 decoder.debug_check_bounds::<Self>(offset);
1545 fidl::decode!(
1547 fidl::encoding::Optional<fidl::encoding::BoundedString<36>>,
1548 D,
1549 &mut self.attempt_id,
1550 decoder,
1551 offset + 0,
1552 _depth
1553 )?;
1554 Ok(())
1555 }
1556 }
1557
1558 impl fidl::encoding::ValueTypeMarker for InstallerStartUpdateResponse {
1559 type Borrowed<'a> = &'a Self;
1560 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1561 value
1562 }
1563 }
1564
1565 unsafe impl fidl::encoding::TypeMarker for InstallerStartUpdateResponse {
1566 type Owned = Self;
1567
1568 #[inline(always)]
1569 fn inline_align(_context: fidl::encoding::Context) -> usize {
1570 8
1571 }
1572
1573 #[inline(always)]
1574 fn inline_size(_context: fidl::encoding::Context) -> usize {
1575 16
1576 }
1577 }
1578
1579 unsafe impl<D: fidl::encoding::ResourceDialect>
1580 fidl::encoding::Encode<InstallerStartUpdateResponse, D> for &InstallerStartUpdateResponse
1581 {
1582 #[inline]
1583 unsafe fn encode(
1584 self,
1585 encoder: &mut fidl::encoding::Encoder<'_, D>,
1586 offset: usize,
1587 _depth: fidl::encoding::Depth,
1588 ) -> fidl::Result<()> {
1589 encoder.debug_check_bounds::<InstallerStartUpdateResponse>(offset);
1590 fidl::encoding::Encode::<InstallerStartUpdateResponse, D>::encode(
1592 (<fidl::encoding::BoundedString<36> as fidl::encoding::ValueTypeMarker>::borrow(
1593 &self.attempt_id,
1594 ),),
1595 encoder,
1596 offset,
1597 _depth,
1598 )
1599 }
1600 }
1601 unsafe impl<
1602 D: fidl::encoding::ResourceDialect,
1603 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<36>, D>,
1604 > fidl::encoding::Encode<InstallerStartUpdateResponse, D> for (T0,)
1605 {
1606 #[inline]
1607 unsafe fn encode(
1608 self,
1609 encoder: &mut fidl::encoding::Encoder<'_, D>,
1610 offset: usize,
1611 depth: fidl::encoding::Depth,
1612 ) -> fidl::Result<()> {
1613 encoder.debug_check_bounds::<InstallerStartUpdateResponse>(offset);
1614 self.0.encode(encoder, offset + 0, depth)?;
1618 Ok(())
1619 }
1620 }
1621
1622 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1623 for InstallerStartUpdateResponse
1624 {
1625 #[inline(always)]
1626 fn new_empty() -> Self {
1627 Self { attempt_id: fidl::new_empty!(fidl::encoding::BoundedString<36>, D) }
1628 }
1629
1630 #[inline]
1631 unsafe fn decode(
1632 &mut self,
1633 decoder: &mut fidl::encoding::Decoder<'_, D>,
1634 offset: usize,
1635 _depth: fidl::encoding::Depth,
1636 ) -> fidl::Result<()> {
1637 decoder.debug_check_bounds::<Self>(offset);
1638 fidl::decode!(
1640 fidl::encoding::BoundedString<36>,
1641 D,
1642 &mut self.attempt_id,
1643 decoder,
1644 offset + 0,
1645 _depth
1646 )?;
1647 Ok(())
1648 }
1649 }
1650
1651 impl fidl::encoding::ValueTypeMarker for MonitorOnStateRequest {
1652 type Borrowed<'a> = &'a Self;
1653 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1654 value
1655 }
1656 }
1657
1658 unsafe impl fidl::encoding::TypeMarker for MonitorOnStateRequest {
1659 type Owned = Self;
1660
1661 #[inline(always)]
1662 fn inline_align(_context: fidl::encoding::Context) -> usize {
1663 8
1664 }
1665
1666 #[inline(always)]
1667 fn inline_size(_context: fidl::encoding::Context) -> usize {
1668 16
1669 }
1670 }
1671
1672 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MonitorOnStateRequest, D>
1673 for &MonitorOnStateRequest
1674 {
1675 #[inline]
1676 unsafe fn encode(
1677 self,
1678 encoder: &mut fidl::encoding::Encoder<'_, D>,
1679 offset: usize,
1680 _depth: fidl::encoding::Depth,
1681 ) -> fidl::Result<()> {
1682 encoder.debug_check_bounds::<MonitorOnStateRequest>(offset);
1683 fidl::encoding::Encode::<MonitorOnStateRequest, D>::encode(
1685 (<State as fidl::encoding::ValueTypeMarker>::borrow(&self.state),),
1686 encoder,
1687 offset,
1688 _depth,
1689 )
1690 }
1691 }
1692 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<State, D>>
1693 fidl::encoding::Encode<MonitorOnStateRequest, D> for (T0,)
1694 {
1695 #[inline]
1696 unsafe fn encode(
1697 self,
1698 encoder: &mut fidl::encoding::Encoder<'_, D>,
1699 offset: usize,
1700 depth: fidl::encoding::Depth,
1701 ) -> fidl::Result<()> {
1702 encoder.debug_check_bounds::<MonitorOnStateRequest>(offset);
1703 self.0.encode(encoder, offset + 0, depth)?;
1707 Ok(())
1708 }
1709 }
1710
1711 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MonitorOnStateRequest {
1712 #[inline(always)]
1713 fn new_empty() -> Self {
1714 Self { state: fidl::new_empty!(State, D) }
1715 }
1716
1717 #[inline]
1718 unsafe fn decode(
1719 &mut self,
1720 decoder: &mut fidl::encoding::Decoder<'_, D>,
1721 offset: usize,
1722 _depth: fidl::encoding::Depth,
1723 ) -> fidl::Result<()> {
1724 decoder.debug_check_bounds::<Self>(offset);
1725 fidl::decode!(State, D, &mut self.state, decoder, offset + 0, _depth)?;
1727 Ok(())
1728 }
1729 }
1730
1731 impl fidl::encoding::ValueTypeMarker for Range {
1732 type Borrowed<'a> = &'a Self;
1733 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1734 value
1735 }
1736 }
1737
1738 unsafe impl fidl::encoding::TypeMarker for Range {
1739 type Owned = Self;
1740
1741 #[inline(always)]
1742 fn inline_align(_context: fidl::encoding::Context) -> usize {
1743 8
1744 }
1745
1746 #[inline(always)]
1747 fn inline_size(_context: fidl::encoding::Context) -> usize {
1748 16
1749 }
1750 #[inline(always)]
1751 fn encode_is_copy() -> bool {
1752 true
1753 }
1754
1755 #[inline(always)]
1756 fn decode_is_copy() -> bool {
1757 true
1758 }
1759 }
1760
1761 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Range, D> for &Range {
1762 #[inline]
1763 unsafe fn encode(
1764 self,
1765 encoder: &mut fidl::encoding::Encoder<'_, D>,
1766 offset: usize,
1767 _depth: fidl::encoding::Depth,
1768 ) -> fidl::Result<()> {
1769 encoder.debug_check_bounds::<Range>(offset);
1770 unsafe {
1771 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1773 (buf_ptr as *mut Range).write_unaligned((self as *const Range).read());
1774 }
1777 Ok(())
1778 }
1779 }
1780 unsafe impl<
1781 D: fidl::encoding::ResourceDialect,
1782 T0: fidl::encoding::Encode<u64, D>,
1783 T1: fidl::encoding::Encode<u64, D>,
1784 > fidl::encoding::Encode<Range, D> for (T0, T1)
1785 {
1786 #[inline]
1787 unsafe fn encode(
1788 self,
1789 encoder: &mut fidl::encoding::Encoder<'_, D>,
1790 offset: usize,
1791 depth: fidl::encoding::Depth,
1792 ) -> fidl::Result<()> {
1793 encoder.debug_check_bounds::<Range>(offset);
1794 self.0.encode(encoder, offset + 0, depth)?;
1798 self.1.encode(encoder, offset + 8, depth)?;
1799 Ok(())
1800 }
1801 }
1802
1803 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Range {
1804 #[inline(always)]
1805 fn new_empty() -> Self {
1806 Self { offset: fidl::new_empty!(u64, D), size: fidl::new_empty!(u64, D) }
1807 }
1808
1809 #[inline]
1810 unsafe fn decode(
1811 &mut self,
1812 decoder: &mut fidl::encoding::Decoder<'_, D>,
1813 offset: usize,
1814 _depth: fidl::encoding::Depth,
1815 ) -> fidl::Result<()> {
1816 decoder.debug_check_bounds::<Self>(offset);
1817 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1818 unsafe {
1821 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1822 }
1823 Ok(())
1824 }
1825 }
1826
1827 impl CanceledData {
1828 #[inline(always)]
1829 fn max_ordinal_present(&self) -> u64 {
1830 0
1831 }
1832 }
1833
1834 impl fidl::encoding::ValueTypeMarker for CanceledData {
1835 type Borrowed<'a> = &'a Self;
1836 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1837 value
1838 }
1839 }
1840
1841 unsafe impl fidl::encoding::TypeMarker for CanceledData {
1842 type Owned = Self;
1843
1844 #[inline(always)]
1845 fn inline_align(_context: fidl::encoding::Context) -> usize {
1846 8
1847 }
1848
1849 #[inline(always)]
1850 fn inline_size(_context: fidl::encoding::Context) -> usize {
1851 16
1852 }
1853 }
1854
1855 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CanceledData, D>
1856 for &CanceledData
1857 {
1858 unsafe fn encode(
1859 self,
1860 encoder: &mut fidl::encoding::Encoder<'_, D>,
1861 offset: usize,
1862 mut depth: fidl::encoding::Depth,
1863 ) -> fidl::Result<()> {
1864 encoder.debug_check_bounds::<CanceledData>(offset);
1865 let max_ordinal: u64 = self.max_ordinal_present();
1867 encoder.write_num(max_ordinal, offset);
1868 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1869 if max_ordinal == 0 {
1871 return Ok(());
1872 }
1873 depth.increment()?;
1874 let envelope_size = 8;
1875 let bytes_len = max_ordinal as usize * envelope_size;
1876 #[allow(unused_variables)]
1877 let offset = encoder.out_of_line_offset(bytes_len);
1878 let mut _prev_end_offset: usize = 0;
1879
1880 Ok(())
1881 }
1882 }
1883
1884 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CanceledData {
1885 #[inline(always)]
1886 fn new_empty() -> Self {
1887 Self::default()
1888 }
1889
1890 unsafe fn decode(
1891 &mut self,
1892 decoder: &mut fidl::encoding::Decoder<'_, D>,
1893 offset: usize,
1894 mut depth: fidl::encoding::Depth,
1895 ) -> fidl::Result<()> {
1896 decoder.debug_check_bounds::<Self>(offset);
1897 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1898 None => return Err(fidl::Error::NotNullable),
1899 Some(len) => len,
1900 };
1901 if len == 0 {
1903 return Ok(());
1904 };
1905 depth.increment()?;
1906 let envelope_size = 8;
1907 let bytes_len = len * envelope_size;
1908 let offset = decoder.out_of_line_offset(bytes_len)?;
1909 let mut _next_ordinal_to_read = 0;
1911 let mut next_offset = offset;
1912 let end_offset = offset + bytes_len;
1913
1914 while next_offset < end_offset {
1916 _next_ordinal_to_read += 1;
1917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1918 next_offset += envelope_size;
1919 }
1920
1921 Ok(())
1922 }
1923 }
1924
1925 impl CommitData {
1926 #[inline(always)]
1927 fn max_ordinal_present(&self) -> u64 {
1928 if let Some(_) = self.progress {
1929 return 2;
1930 }
1931 if let Some(_) = self.info {
1932 return 1;
1933 }
1934 0
1935 }
1936 }
1937
1938 impl fidl::encoding::ValueTypeMarker for CommitData {
1939 type Borrowed<'a> = &'a Self;
1940 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1941 value
1942 }
1943 }
1944
1945 unsafe impl fidl::encoding::TypeMarker for CommitData {
1946 type Owned = Self;
1947
1948 #[inline(always)]
1949 fn inline_align(_context: fidl::encoding::Context) -> usize {
1950 8
1951 }
1952
1953 #[inline(always)]
1954 fn inline_size(_context: fidl::encoding::Context) -> usize {
1955 16
1956 }
1957 }
1958
1959 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CommitData, D>
1960 for &CommitData
1961 {
1962 unsafe fn encode(
1963 self,
1964 encoder: &mut fidl::encoding::Encoder<'_, D>,
1965 offset: usize,
1966 mut depth: fidl::encoding::Depth,
1967 ) -> fidl::Result<()> {
1968 encoder.debug_check_bounds::<CommitData>(offset);
1969 let max_ordinal: u64 = self.max_ordinal_present();
1971 encoder.write_num(max_ordinal, offset);
1972 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1973 if max_ordinal == 0 {
1975 return Ok(());
1976 }
1977 depth.increment()?;
1978 let envelope_size = 8;
1979 let bytes_len = max_ordinal as usize * envelope_size;
1980 #[allow(unused_variables)]
1981 let offset = encoder.out_of_line_offset(bytes_len);
1982 let mut _prev_end_offset: usize = 0;
1983 if 1 > max_ordinal {
1984 return Ok(());
1985 }
1986
1987 let cur_offset: usize = (1 - 1) * envelope_size;
1990
1991 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1993
1994 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
1999 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
2000 encoder,
2001 offset + cur_offset,
2002 depth,
2003 )?;
2004
2005 _prev_end_offset = cur_offset + envelope_size;
2006 if 2 > max_ordinal {
2007 return Ok(());
2008 }
2009
2010 let cur_offset: usize = (2 - 1) * envelope_size;
2013
2014 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2016
2017 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
2022 self.progress
2023 .as_ref()
2024 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
2025 encoder,
2026 offset + cur_offset,
2027 depth,
2028 )?;
2029
2030 _prev_end_offset = cur_offset + envelope_size;
2031
2032 Ok(())
2033 }
2034 }
2035
2036 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CommitData {
2037 #[inline(always)]
2038 fn new_empty() -> Self {
2039 Self::default()
2040 }
2041
2042 unsafe fn decode(
2043 &mut self,
2044 decoder: &mut fidl::encoding::Decoder<'_, D>,
2045 offset: usize,
2046 mut depth: fidl::encoding::Depth,
2047 ) -> fidl::Result<()> {
2048 decoder.debug_check_bounds::<Self>(offset);
2049 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2050 None => return Err(fidl::Error::NotNullable),
2051 Some(len) => len,
2052 };
2053 if len == 0 {
2055 return Ok(());
2056 };
2057 depth.increment()?;
2058 let envelope_size = 8;
2059 let bytes_len = len * envelope_size;
2060 let offset = decoder.out_of_line_offset(bytes_len)?;
2061 let mut _next_ordinal_to_read = 0;
2063 let mut next_offset = offset;
2064 let end_offset = offset + bytes_len;
2065 _next_ordinal_to_read += 1;
2066 if next_offset >= end_offset {
2067 return Ok(());
2068 }
2069
2070 while _next_ordinal_to_read < 1 {
2072 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2073 _next_ordinal_to_read += 1;
2074 next_offset += envelope_size;
2075 }
2076
2077 let next_out_of_line = decoder.next_out_of_line();
2078 let handles_before = decoder.remaining_handles();
2079 if let Some((inlined, num_bytes, num_handles)) =
2080 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2081 {
2082 let member_inline_size =
2083 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2084 if inlined != (member_inline_size <= 4) {
2085 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2086 }
2087 let inner_offset;
2088 let mut inner_depth = depth.clone();
2089 if inlined {
2090 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2091 inner_offset = next_offset;
2092 } else {
2093 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2094 inner_depth.increment()?;
2095 }
2096 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
2097 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2098 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2099 {
2100 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2101 }
2102 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2103 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2104 }
2105 }
2106
2107 next_offset += envelope_size;
2108 _next_ordinal_to_read += 1;
2109 if next_offset >= end_offset {
2110 return Ok(());
2111 }
2112
2113 while _next_ordinal_to_read < 2 {
2115 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2116 _next_ordinal_to_read += 1;
2117 next_offset += envelope_size;
2118 }
2119
2120 let next_out_of_line = decoder.next_out_of_line();
2121 let handles_before = decoder.remaining_handles();
2122 if let Some((inlined, num_bytes, num_handles)) =
2123 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2124 {
2125 let member_inline_size =
2126 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
2127 decoder.context,
2128 );
2129 if inlined != (member_inline_size <= 4) {
2130 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2131 }
2132 let inner_offset;
2133 let mut inner_depth = depth.clone();
2134 if inlined {
2135 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2136 inner_offset = next_offset;
2137 } else {
2138 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2139 inner_depth.increment()?;
2140 }
2141 let val_ref =
2142 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
2143 fidl::decode!(
2144 InstallationProgress,
2145 D,
2146 val_ref,
2147 decoder,
2148 inner_offset,
2149 inner_depth
2150 )?;
2151 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2152 {
2153 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2154 }
2155 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2156 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2157 }
2158 }
2159
2160 next_offset += envelope_size;
2161
2162 while next_offset < end_offset {
2164 _next_ordinal_to_read += 1;
2165 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2166 next_offset += envelope_size;
2167 }
2168
2169 Ok(())
2170 }
2171 }
2172
2173 impl CompleteButNotActiveData {
2174 #[inline(always)]
2175 fn max_ordinal_present(&self) -> u64 {
2176 if let Some(_) = self.progress {
2177 return 2;
2178 }
2179 if let Some(_) = self.info {
2180 return 1;
2181 }
2182 0
2183 }
2184 }
2185
2186 impl fidl::encoding::ValueTypeMarker for CompleteButNotActiveData {
2187 type Borrowed<'a> = &'a Self;
2188 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2189 value
2190 }
2191 }
2192
2193 unsafe impl fidl::encoding::TypeMarker for CompleteButNotActiveData {
2194 type Owned = Self;
2195
2196 #[inline(always)]
2197 fn inline_align(_context: fidl::encoding::Context) -> usize {
2198 8
2199 }
2200
2201 #[inline(always)]
2202 fn inline_size(_context: fidl::encoding::Context) -> usize {
2203 16
2204 }
2205 }
2206
2207 unsafe impl<D: fidl::encoding::ResourceDialect>
2208 fidl::encoding::Encode<CompleteButNotActiveData, D> for &CompleteButNotActiveData
2209 {
2210 unsafe fn encode(
2211 self,
2212 encoder: &mut fidl::encoding::Encoder<'_, D>,
2213 offset: usize,
2214 mut depth: fidl::encoding::Depth,
2215 ) -> fidl::Result<()> {
2216 encoder.debug_check_bounds::<CompleteButNotActiveData>(offset);
2217 let max_ordinal: u64 = self.max_ordinal_present();
2219 encoder.write_num(max_ordinal, offset);
2220 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2221 if max_ordinal == 0 {
2223 return Ok(());
2224 }
2225 depth.increment()?;
2226 let envelope_size = 8;
2227 let bytes_len = max_ordinal as usize * envelope_size;
2228 #[allow(unused_variables)]
2229 let offset = encoder.out_of_line_offset(bytes_len);
2230 let mut _prev_end_offset: usize = 0;
2231 if 1 > max_ordinal {
2232 return Ok(());
2233 }
2234
2235 let cur_offset: usize = (1 - 1) * envelope_size;
2238
2239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2241
2242 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
2247 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
2248 encoder,
2249 offset + cur_offset,
2250 depth,
2251 )?;
2252
2253 _prev_end_offset = cur_offset + envelope_size;
2254 if 2 > max_ordinal {
2255 return Ok(());
2256 }
2257
2258 let cur_offset: usize = (2 - 1) * envelope_size;
2261
2262 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2264
2265 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
2270 self.progress
2271 .as_ref()
2272 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
2273 encoder,
2274 offset + cur_offset,
2275 depth,
2276 )?;
2277
2278 _prev_end_offset = cur_offset + envelope_size;
2279
2280 Ok(())
2281 }
2282 }
2283
2284 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2285 for CompleteButNotActiveData
2286 {
2287 #[inline(always)]
2288 fn new_empty() -> Self {
2289 Self::default()
2290 }
2291
2292 unsafe fn decode(
2293 &mut self,
2294 decoder: &mut fidl::encoding::Decoder<'_, D>,
2295 offset: usize,
2296 mut depth: fidl::encoding::Depth,
2297 ) -> fidl::Result<()> {
2298 decoder.debug_check_bounds::<Self>(offset);
2299 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2300 None => return Err(fidl::Error::NotNullable),
2301 Some(len) => len,
2302 };
2303 if len == 0 {
2305 return Ok(());
2306 };
2307 depth.increment()?;
2308 let envelope_size = 8;
2309 let bytes_len = len * envelope_size;
2310 let offset = decoder.out_of_line_offset(bytes_len)?;
2311 let mut _next_ordinal_to_read = 0;
2313 let mut next_offset = offset;
2314 let end_offset = offset + bytes_len;
2315 _next_ordinal_to_read += 1;
2316 if next_offset >= end_offset {
2317 return Ok(());
2318 }
2319
2320 while _next_ordinal_to_read < 1 {
2322 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2323 _next_ordinal_to_read += 1;
2324 next_offset += envelope_size;
2325 }
2326
2327 let next_out_of_line = decoder.next_out_of_line();
2328 let handles_before = decoder.remaining_handles();
2329 if let Some((inlined, num_bytes, num_handles)) =
2330 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2331 {
2332 let member_inline_size =
2333 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2334 if inlined != (member_inline_size <= 4) {
2335 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2336 }
2337 let inner_offset;
2338 let mut inner_depth = depth.clone();
2339 if inlined {
2340 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2341 inner_offset = next_offset;
2342 } else {
2343 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2344 inner_depth.increment()?;
2345 }
2346 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
2347 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2348 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2349 {
2350 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2351 }
2352 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2353 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2354 }
2355 }
2356
2357 next_offset += envelope_size;
2358 _next_ordinal_to_read += 1;
2359 if next_offset >= end_offset {
2360 return Ok(());
2361 }
2362
2363 while _next_ordinal_to_read < 2 {
2365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2366 _next_ordinal_to_read += 1;
2367 next_offset += envelope_size;
2368 }
2369
2370 let next_out_of_line = decoder.next_out_of_line();
2371 let handles_before = decoder.remaining_handles();
2372 if let Some((inlined, num_bytes, num_handles)) =
2373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2374 {
2375 let member_inline_size =
2376 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
2377 decoder.context,
2378 );
2379 if inlined != (member_inline_size <= 4) {
2380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2381 }
2382 let inner_offset;
2383 let mut inner_depth = depth.clone();
2384 if inlined {
2385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2386 inner_offset = next_offset;
2387 } else {
2388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2389 inner_depth.increment()?;
2390 }
2391 let val_ref =
2392 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
2393 fidl::decode!(
2394 InstallationProgress,
2395 D,
2396 val_ref,
2397 decoder,
2398 inner_offset,
2399 inner_depth
2400 )?;
2401 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2402 {
2403 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2404 }
2405 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2406 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2407 }
2408 }
2409
2410 next_offset += envelope_size;
2411
2412 while next_offset < end_offset {
2414 _next_ordinal_to_read += 1;
2415 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2416 next_offset += envelope_size;
2417 }
2418
2419 Ok(())
2420 }
2421 }
2422
2423 impl DeferRebootData {
2424 #[inline(always)]
2425 fn max_ordinal_present(&self) -> u64 {
2426 if let Some(_) = self.progress {
2427 return 2;
2428 }
2429 if let Some(_) = self.info {
2430 return 1;
2431 }
2432 0
2433 }
2434 }
2435
2436 impl fidl::encoding::ValueTypeMarker for DeferRebootData {
2437 type Borrowed<'a> = &'a Self;
2438 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2439 value
2440 }
2441 }
2442
2443 unsafe impl fidl::encoding::TypeMarker for DeferRebootData {
2444 type Owned = Self;
2445
2446 #[inline(always)]
2447 fn inline_align(_context: fidl::encoding::Context) -> usize {
2448 8
2449 }
2450
2451 #[inline(always)]
2452 fn inline_size(_context: fidl::encoding::Context) -> usize {
2453 16
2454 }
2455 }
2456
2457 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeferRebootData, D>
2458 for &DeferRebootData
2459 {
2460 unsafe fn encode(
2461 self,
2462 encoder: &mut fidl::encoding::Encoder<'_, D>,
2463 offset: usize,
2464 mut depth: fidl::encoding::Depth,
2465 ) -> fidl::Result<()> {
2466 encoder.debug_check_bounds::<DeferRebootData>(offset);
2467 let max_ordinal: u64 = self.max_ordinal_present();
2469 encoder.write_num(max_ordinal, offset);
2470 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2471 if max_ordinal == 0 {
2473 return Ok(());
2474 }
2475 depth.increment()?;
2476 let envelope_size = 8;
2477 let bytes_len = max_ordinal as usize * envelope_size;
2478 #[allow(unused_variables)]
2479 let offset = encoder.out_of_line_offset(bytes_len);
2480 let mut _prev_end_offset: usize = 0;
2481 if 1 > max_ordinal {
2482 return Ok(());
2483 }
2484
2485 let cur_offset: usize = (1 - 1) * envelope_size;
2488
2489 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2491
2492 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
2497 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
2498 encoder,
2499 offset + cur_offset,
2500 depth,
2501 )?;
2502
2503 _prev_end_offset = cur_offset + envelope_size;
2504 if 2 > max_ordinal {
2505 return Ok(());
2506 }
2507
2508 let cur_offset: usize = (2 - 1) * envelope_size;
2511
2512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2514
2515 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
2520 self.progress
2521 .as_ref()
2522 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
2523 encoder,
2524 offset + cur_offset,
2525 depth,
2526 )?;
2527
2528 _prev_end_offset = cur_offset + envelope_size;
2529
2530 Ok(())
2531 }
2532 }
2533
2534 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeferRebootData {
2535 #[inline(always)]
2536 fn new_empty() -> Self {
2537 Self::default()
2538 }
2539
2540 unsafe fn decode(
2541 &mut self,
2542 decoder: &mut fidl::encoding::Decoder<'_, D>,
2543 offset: usize,
2544 mut depth: fidl::encoding::Depth,
2545 ) -> fidl::Result<()> {
2546 decoder.debug_check_bounds::<Self>(offset);
2547 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2548 None => return Err(fidl::Error::NotNullable),
2549 Some(len) => len,
2550 };
2551 if len == 0 {
2553 return Ok(());
2554 };
2555 depth.increment()?;
2556 let envelope_size = 8;
2557 let bytes_len = len * envelope_size;
2558 let offset = decoder.out_of_line_offset(bytes_len)?;
2559 let mut _next_ordinal_to_read = 0;
2561 let mut next_offset = offset;
2562 let end_offset = offset + bytes_len;
2563 _next_ordinal_to_read += 1;
2564 if next_offset >= end_offset {
2565 return Ok(());
2566 }
2567
2568 while _next_ordinal_to_read < 1 {
2570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2571 _next_ordinal_to_read += 1;
2572 next_offset += envelope_size;
2573 }
2574
2575 let next_out_of_line = decoder.next_out_of_line();
2576 let handles_before = decoder.remaining_handles();
2577 if let Some((inlined, num_bytes, num_handles)) =
2578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2579 {
2580 let member_inline_size =
2581 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2582 if inlined != (member_inline_size <= 4) {
2583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2584 }
2585 let inner_offset;
2586 let mut inner_depth = depth.clone();
2587 if inlined {
2588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2589 inner_offset = next_offset;
2590 } else {
2591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2592 inner_depth.increment()?;
2593 }
2594 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
2595 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2596 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2597 {
2598 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2599 }
2600 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2601 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2602 }
2603 }
2604
2605 next_offset += envelope_size;
2606 _next_ordinal_to_read += 1;
2607 if next_offset >= end_offset {
2608 return Ok(());
2609 }
2610
2611 while _next_ordinal_to_read < 2 {
2613 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2614 _next_ordinal_to_read += 1;
2615 next_offset += envelope_size;
2616 }
2617
2618 let next_out_of_line = decoder.next_out_of_line();
2619 let handles_before = decoder.remaining_handles();
2620 if let Some((inlined, num_bytes, num_handles)) =
2621 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2622 {
2623 let member_inline_size =
2624 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
2625 decoder.context,
2626 );
2627 if inlined != (member_inline_size <= 4) {
2628 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2629 }
2630 let inner_offset;
2631 let mut inner_depth = depth.clone();
2632 if inlined {
2633 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2634 inner_offset = next_offset;
2635 } else {
2636 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2637 inner_depth.increment()?;
2638 }
2639 let val_ref =
2640 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
2641 fidl::decode!(
2642 InstallationProgress,
2643 D,
2644 val_ref,
2645 decoder,
2646 inner_offset,
2647 inner_depth
2648 )?;
2649 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2650 {
2651 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2652 }
2653 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2654 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2655 }
2656 }
2657
2658 next_offset += envelope_size;
2659
2660 while next_offset < end_offset {
2662 _next_ordinal_to_read += 1;
2663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2664 next_offset += envelope_size;
2665 }
2666
2667 Ok(())
2668 }
2669 }
2670
2671 impl FailCommitData {
2672 #[inline(always)]
2673 fn max_ordinal_present(&self) -> u64 {
2674 if let Some(_) = self.progress {
2675 return 2;
2676 }
2677 if let Some(_) = self.info {
2678 return 1;
2679 }
2680 0
2681 }
2682 }
2683
2684 impl fidl::encoding::ValueTypeMarker for FailCommitData {
2685 type Borrowed<'a> = &'a Self;
2686 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2687 value
2688 }
2689 }
2690
2691 unsafe impl fidl::encoding::TypeMarker for FailCommitData {
2692 type Owned = Self;
2693
2694 #[inline(always)]
2695 fn inline_align(_context: fidl::encoding::Context) -> usize {
2696 8
2697 }
2698
2699 #[inline(always)]
2700 fn inline_size(_context: fidl::encoding::Context) -> usize {
2701 16
2702 }
2703 }
2704
2705 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FailCommitData, D>
2706 for &FailCommitData
2707 {
2708 unsafe fn encode(
2709 self,
2710 encoder: &mut fidl::encoding::Encoder<'_, D>,
2711 offset: usize,
2712 mut depth: fidl::encoding::Depth,
2713 ) -> fidl::Result<()> {
2714 encoder.debug_check_bounds::<FailCommitData>(offset);
2715 let max_ordinal: u64 = self.max_ordinal_present();
2717 encoder.write_num(max_ordinal, offset);
2718 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2719 if max_ordinal == 0 {
2721 return Ok(());
2722 }
2723 depth.increment()?;
2724 let envelope_size = 8;
2725 let bytes_len = max_ordinal as usize * envelope_size;
2726 #[allow(unused_variables)]
2727 let offset = encoder.out_of_line_offset(bytes_len);
2728 let mut _prev_end_offset: usize = 0;
2729 if 1 > max_ordinal {
2730 return Ok(());
2731 }
2732
2733 let cur_offset: usize = (1 - 1) * envelope_size;
2736
2737 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2739
2740 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
2745 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
2746 encoder,
2747 offset + cur_offset,
2748 depth,
2749 )?;
2750
2751 _prev_end_offset = cur_offset + envelope_size;
2752 if 2 > max_ordinal {
2753 return Ok(());
2754 }
2755
2756 let cur_offset: usize = (2 - 1) * envelope_size;
2759
2760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2762
2763 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
2768 self.progress
2769 .as_ref()
2770 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
2771 encoder,
2772 offset + cur_offset,
2773 depth,
2774 )?;
2775
2776 _prev_end_offset = cur_offset + envelope_size;
2777
2778 Ok(())
2779 }
2780 }
2781
2782 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FailCommitData {
2783 #[inline(always)]
2784 fn new_empty() -> Self {
2785 Self::default()
2786 }
2787
2788 unsafe fn decode(
2789 &mut self,
2790 decoder: &mut fidl::encoding::Decoder<'_, D>,
2791 offset: usize,
2792 mut depth: fidl::encoding::Depth,
2793 ) -> fidl::Result<()> {
2794 decoder.debug_check_bounds::<Self>(offset);
2795 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2796 None => return Err(fidl::Error::NotNullable),
2797 Some(len) => len,
2798 };
2799 if len == 0 {
2801 return Ok(());
2802 };
2803 depth.increment()?;
2804 let envelope_size = 8;
2805 let bytes_len = len * envelope_size;
2806 let offset = decoder.out_of_line_offset(bytes_len)?;
2807 let mut _next_ordinal_to_read = 0;
2809 let mut next_offset = offset;
2810 let end_offset = offset + bytes_len;
2811 _next_ordinal_to_read += 1;
2812 if next_offset >= end_offset {
2813 return Ok(());
2814 }
2815
2816 while _next_ordinal_to_read < 1 {
2818 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2819 _next_ordinal_to_read += 1;
2820 next_offset += envelope_size;
2821 }
2822
2823 let next_out_of_line = decoder.next_out_of_line();
2824 let handles_before = decoder.remaining_handles();
2825 if let Some((inlined, num_bytes, num_handles)) =
2826 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2827 {
2828 let member_inline_size =
2829 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2830 if inlined != (member_inline_size <= 4) {
2831 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2832 }
2833 let inner_offset;
2834 let mut inner_depth = depth.clone();
2835 if inlined {
2836 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2837 inner_offset = next_offset;
2838 } else {
2839 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2840 inner_depth.increment()?;
2841 }
2842 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
2843 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
2844 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2845 {
2846 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2847 }
2848 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2849 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2850 }
2851 }
2852
2853 next_offset += envelope_size;
2854 _next_ordinal_to_read += 1;
2855 if next_offset >= end_offset {
2856 return Ok(());
2857 }
2858
2859 while _next_ordinal_to_read < 2 {
2861 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2862 _next_ordinal_to_read += 1;
2863 next_offset += envelope_size;
2864 }
2865
2866 let next_out_of_line = decoder.next_out_of_line();
2867 let handles_before = decoder.remaining_handles();
2868 if let Some((inlined, num_bytes, num_handles)) =
2869 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2870 {
2871 let member_inline_size =
2872 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
2873 decoder.context,
2874 );
2875 if inlined != (member_inline_size <= 4) {
2876 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2877 }
2878 let inner_offset;
2879 let mut inner_depth = depth.clone();
2880 if inlined {
2881 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2882 inner_offset = next_offset;
2883 } else {
2884 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2885 inner_depth.increment()?;
2886 }
2887 let val_ref =
2888 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
2889 fidl::decode!(
2890 InstallationProgress,
2891 D,
2892 val_ref,
2893 decoder,
2894 inner_offset,
2895 inner_depth
2896 )?;
2897 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2898 {
2899 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2900 }
2901 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2902 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2903 }
2904 }
2905
2906 next_offset += envelope_size;
2907
2908 while next_offset < end_offset {
2910 _next_ordinal_to_read += 1;
2911 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2912 next_offset += envelope_size;
2913 }
2914
2915 Ok(())
2916 }
2917 }
2918
2919 impl FailFetchData {
2920 #[inline(always)]
2921 fn max_ordinal_present(&self) -> u64 {
2922 if let Some(_) = self.reason {
2923 return 3;
2924 }
2925 if let Some(_) = self.progress {
2926 return 2;
2927 }
2928 if let Some(_) = self.info {
2929 return 1;
2930 }
2931 0
2932 }
2933 }
2934
2935 impl fidl::encoding::ValueTypeMarker for FailFetchData {
2936 type Borrowed<'a> = &'a Self;
2937 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2938 value
2939 }
2940 }
2941
2942 unsafe impl fidl::encoding::TypeMarker for FailFetchData {
2943 type Owned = Self;
2944
2945 #[inline(always)]
2946 fn inline_align(_context: fidl::encoding::Context) -> usize {
2947 8
2948 }
2949
2950 #[inline(always)]
2951 fn inline_size(_context: fidl::encoding::Context) -> usize {
2952 16
2953 }
2954 }
2955
2956 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FailFetchData, D>
2957 for &FailFetchData
2958 {
2959 unsafe fn encode(
2960 self,
2961 encoder: &mut fidl::encoding::Encoder<'_, D>,
2962 offset: usize,
2963 mut depth: fidl::encoding::Depth,
2964 ) -> fidl::Result<()> {
2965 encoder.debug_check_bounds::<FailFetchData>(offset);
2966 let max_ordinal: u64 = self.max_ordinal_present();
2968 encoder.write_num(max_ordinal, offset);
2969 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2970 if max_ordinal == 0 {
2972 return Ok(());
2973 }
2974 depth.increment()?;
2975 let envelope_size = 8;
2976 let bytes_len = max_ordinal as usize * envelope_size;
2977 #[allow(unused_variables)]
2978 let offset = encoder.out_of_line_offset(bytes_len);
2979 let mut _prev_end_offset: usize = 0;
2980 if 1 > max_ordinal {
2981 return Ok(());
2982 }
2983
2984 let cur_offset: usize = (1 - 1) * envelope_size;
2987
2988 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2990
2991 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
2996 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
2997 encoder,
2998 offset + cur_offset,
2999 depth,
3000 )?;
3001
3002 _prev_end_offset = cur_offset + envelope_size;
3003 if 2 > max_ordinal {
3004 return Ok(());
3005 }
3006
3007 let cur_offset: usize = (2 - 1) * envelope_size;
3010
3011 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3013
3014 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
3019 self.progress
3020 .as_ref()
3021 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
3022 encoder,
3023 offset + cur_offset,
3024 depth,
3025 )?;
3026
3027 _prev_end_offset = cur_offset + envelope_size;
3028 if 3 > max_ordinal {
3029 return Ok(());
3030 }
3031
3032 let cur_offset: usize = (3 - 1) * envelope_size;
3035
3036 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3038
3039 fidl::encoding::encode_in_envelope_optional::<FetchFailureReason, D>(
3044 self.reason
3045 .as_ref()
3046 .map(<FetchFailureReason as fidl::encoding::ValueTypeMarker>::borrow),
3047 encoder,
3048 offset + cur_offset,
3049 depth,
3050 )?;
3051
3052 _prev_end_offset = cur_offset + envelope_size;
3053
3054 Ok(())
3055 }
3056 }
3057
3058 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FailFetchData {
3059 #[inline(always)]
3060 fn new_empty() -> Self {
3061 Self::default()
3062 }
3063
3064 unsafe fn decode(
3065 &mut self,
3066 decoder: &mut fidl::encoding::Decoder<'_, D>,
3067 offset: usize,
3068 mut depth: fidl::encoding::Depth,
3069 ) -> fidl::Result<()> {
3070 decoder.debug_check_bounds::<Self>(offset);
3071 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3072 None => return Err(fidl::Error::NotNullable),
3073 Some(len) => len,
3074 };
3075 if len == 0 {
3077 return Ok(());
3078 };
3079 depth.increment()?;
3080 let envelope_size = 8;
3081 let bytes_len = len * envelope_size;
3082 let offset = decoder.out_of_line_offset(bytes_len)?;
3083 let mut _next_ordinal_to_read = 0;
3085 let mut next_offset = offset;
3086 let end_offset = offset + bytes_len;
3087 _next_ordinal_to_read += 1;
3088 if next_offset >= end_offset {
3089 return Ok(());
3090 }
3091
3092 while _next_ordinal_to_read < 1 {
3094 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3095 _next_ordinal_to_read += 1;
3096 next_offset += envelope_size;
3097 }
3098
3099 let next_out_of_line = decoder.next_out_of_line();
3100 let handles_before = decoder.remaining_handles();
3101 if let Some((inlined, num_bytes, num_handles)) =
3102 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3103 {
3104 let member_inline_size =
3105 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3106 if inlined != (member_inline_size <= 4) {
3107 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3108 }
3109 let inner_offset;
3110 let mut inner_depth = depth.clone();
3111 if inlined {
3112 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3113 inner_offset = next_offset;
3114 } else {
3115 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3116 inner_depth.increment()?;
3117 }
3118 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
3119 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3120 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3121 {
3122 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3123 }
3124 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3125 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3126 }
3127 }
3128
3129 next_offset += envelope_size;
3130 _next_ordinal_to_read += 1;
3131 if next_offset >= end_offset {
3132 return Ok(());
3133 }
3134
3135 while _next_ordinal_to_read < 2 {
3137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3138 _next_ordinal_to_read += 1;
3139 next_offset += envelope_size;
3140 }
3141
3142 let next_out_of_line = decoder.next_out_of_line();
3143 let handles_before = decoder.remaining_handles();
3144 if let Some((inlined, num_bytes, num_handles)) =
3145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3146 {
3147 let member_inline_size =
3148 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
3149 decoder.context,
3150 );
3151 if inlined != (member_inline_size <= 4) {
3152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3153 }
3154 let inner_offset;
3155 let mut inner_depth = depth.clone();
3156 if inlined {
3157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3158 inner_offset = next_offset;
3159 } else {
3160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3161 inner_depth.increment()?;
3162 }
3163 let val_ref =
3164 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
3165 fidl::decode!(
3166 InstallationProgress,
3167 D,
3168 val_ref,
3169 decoder,
3170 inner_offset,
3171 inner_depth
3172 )?;
3173 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3174 {
3175 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3176 }
3177 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3178 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3179 }
3180 }
3181
3182 next_offset += envelope_size;
3183 _next_ordinal_to_read += 1;
3184 if next_offset >= end_offset {
3185 return Ok(());
3186 }
3187
3188 while _next_ordinal_to_read < 3 {
3190 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3191 _next_ordinal_to_read += 1;
3192 next_offset += envelope_size;
3193 }
3194
3195 let next_out_of_line = decoder.next_out_of_line();
3196 let handles_before = decoder.remaining_handles();
3197 if let Some((inlined, num_bytes, num_handles)) =
3198 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3199 {
3200 let member_inline_size =
3201 <FetchFailureReason as fidl::encoding::TypeMarker>::inline_size(
3202 decoder.context,
3203 );
3204 if inlined != (member_inline_size <= 4) {
3205 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3206 }
3207 let inner_offset;
3208 let mut inner_depth = depth.clone();
3209 if inlined {
3210 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3211 inner_offset = next_offset;
3212 } else {
3213 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3214 inner_depth.increment()?;
3215 }
3216 let val_ref =
3217 self.reason.get_or_insert_with(|| fidl::new_empty!(FetchFailureReason, D));
3218 fidl::decode!(FetchFailureReason, D, val_ref, decoder, inner_offset, inner_depth)?;
3219 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3220 {
3221 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3222 }
3223 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3224 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3225 }
3226 }
3227
3228 next_offset += envelope_size;
3229
3230 while next_offset < end_offset {
3232 _next_ordinal_to_read += 1;
3233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3234 next_offset += envelope_size;
3235 }
3236
3237 Ok(())
3238 }
3239 }
3240
3241 impl FailPrepareData {
3242 #[inline(always)]
3243 fn max_ordinal_present(&self) -> u64 {
3244 if let Some(_) = self.reason {
3245 return 1;
3246 }
3247 0
3248 }
3249 }
3250
3251 impl fidl::encoding::ValueTypeMarker for FailPrepareData {
3252 type Borrowed<'a> = &'a Self;
3253 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3254 value
3255 }
3256 }
3257
3258 unsafe impl fidl::encoding::TypeMarker for FailPrepareData {
3259 type Owned = Self;
3260
3261 #[inline(always)]
3262 fn inline_align(_context: fidl::encoding::Context) -> usize {
3263 8
3264 }
3265
3266 #[inline(always)]
3267 fn inline_size(_context: fidl::encoding::Context) -> usize {
3268 16
3269 }
3270 }
3271
3272 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FailPrepareData, D>
3273 for &FailPrepareData
3274 {
3275 unsafe fn encode(
3276 self,
3277 encoder: &mut fidl::encoding::Encoder<'_, D>,
3278 offset: usize,
3279 mut depth: fidl::encoding::Depth,
3280 ) -> fidl::Result<()> {
3281 encoder.debug_check_bounds::<FailPrepareData>(offset);
3282 let max_ordinal: u64 = self.max_ordinal_present();
3284 encoder.write_num(max_ordinal, offset);
3285 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3286 if max_ordinal == 0 {
3288 return Ok(());
3289 }
3290 depth.increment()?;
3291 let envelope_size = 8;
3292 let bytes_len = max_ordinal as usize * envelope_size;
3293 #[allow(unused_variables)]
3294 let offset = encoder.out_of_line_offset(bytes_len);
3295 let mut _prev_end_offset: usize = 0;
3296 if 1 > max_ordinal {
3297 return Ok(());
3298 }
3299
3300 let cur_offset: usize = (1 - 1) * envelope_size;
3303
3304 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3306
3307 fidl::encoding::encode_in_envelope_optional::<PrepareFailureReason, D>(
3312 self.reason
3313 .as_ref()
3314 .map(<PrepareFailureReason as fidl::encoding::ValueTypeMarker>::borrow),
3315 encoder,
3316 offset + cur_offset,
3317 depth,
3318 )?;
3319
3320 _prev_end_offset = cur_offset + envelope_size;
3321
3322 Ok(())
3323 }
3324 }
3325
3326 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FailPrepareData {
3327 #[inline(always)]
3328 fn new_empty() -> Self {
3329 Self::default()
3330 }
3331
3332 unsafe fn decode(
3333 &mut self,
3334 decoder: &mut fidl::encoding::Decoder<'_, D>,
3335 offset: usize,
3336 mut depth: fidl::encoding::Depth,
3337 ) -> fidl::Result<()> {
3338 decoder.debug_check_bounds::<Self>(offset);
3339 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3340 None => return Err(fidl::Error::NotNullable),
3341 Some(len) => len,
3342 };
3343 if len == 0 {
3345 return Ok(());
3346 };
3347 depth.increment()?;
3348 let envelope_size = 8;
3349 let bytes_len = len * envelope_size;
3350 let offset = decoder.out_of_line_offset(bytes_len)?;
3351 let mut _next_ordinal_to_read = 0;
3353 let mut next_offset = offset;
3354 let end_offset = offset + bytes_len;
3355 _next_ordinal_to_read += 1;
3356 if next_offset >= end_offset {
3357 return Ok(());
3358 }
3359
3360 while _next_ordinal_to_read < 1 {
3362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3363 _next_ordinal_to_read += 1;
3364 next_offset += envelope_size;
3365 }
3366
3367 let next_out_of_line = decoder.next_out_of_line();
3368 let handles_before = decoder.remaining_handles();
3369 if let Some((inlined, num_bytes, num_handles)) =
3370 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3371 {
3372 let member_inline_size =
3373 <PrepareFailureReason as fidl::encoding::TypeMarker>::inline_size(
3374 decoder.context,
3375 );
3376 if inlined != (member_inline_size <= 4) {
3377 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3378 }
3379 let inner_offset;
3380 let mut inner_depth = depth.clone();
3381 if inlined {
3382 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3383 inner_offset = next_offset;
3384 } else {
3385 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3386 inner_depth.increment()?;
3387 }
3388 let val_ref =
3389 self.reason.get_or_insert_with(|| fidl::new_empty!(PrepareFailureReason, D));
3390 fidl::decode!(
3391 PrepareFailureReason,
3392 D,
3393 val_ref,
3394 decoder,
3395 inner_offset,
3396 inner_depth
3397 )?;
3398 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3399 {
3400 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3401 }
3402 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3403 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3404 }
3405 }
3406
3407 next_offset += envelope_size;
3408
3409 while next_offset < end_offset {
3411 _next_ordinal_to_read += 1;
3412 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3413 next_offset += envelope_size;
3414 }
3415
3416 Ok(())
3417 }
3418 }
3419
3420 impl FailStageData {
3421 #[inline(always)]
3422 fn max_ordinal_present(&self) -> u64 {
3423 if let Some(_) = self.reason {
3424 return 3;
3425 }
3426 if let Some(_) = self.progress {
3427 return 2;
3428 }
3429 if let Some(_) = self.info {
3430 return 1;
3431 }
3432 0
3433 }
3434 }
3435
3436 impl fidl::encoding::ValueTypeMarker for FailStageData {
3437 type Borrowed<'a> = &'a Self;
3438 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3439 value
3440 }
3441 }
3442
3443 unsafe impl fidl::encoding::TypeMarker for FailStageData {
3444 type Owned = Self;
3445
3446 #[inline(always)]
3447 fn inline_align(_context: fidl::encoding::Context) -> usize {
3448 8
3449 }
3450
3451 #[inline(always)]
3452 fn inline_size(_context: fidl::encoding::Context) -> usize {
3453 16
3454 }
3455 }
3456
3457 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FailStageData, D>
3458 for &FailStageData
3459 {
3460 unsafe fn encode(
3461 self,
3462 encoder: &mut fidl::encoding::Encoder<'_, D>,
3463 offset: usize,
3464 mut depth: fidl::encoding::Depth,
3465 ) -> fidl::Result<()> {
3466 encoder.debug_check_bounds::<FailStageData>(offset);
3467 let max_ordinal: u64 = self.max_ordinal_present();
3469 encoder.write_num(max_ordinal, offset);
3470 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3471 if max_ordinal == 0 {
3473 return Ok(());
3474 }
3475 depth.increment()?;
3476 let envelope_size = 8;
3477 let bytes_len = max_ordinal as usize * envelope_size;
3478 #[allow(unused_variables)]
3479 let offset = encoder.out_of_line_offset(bytes_len);
3480 let mut _prev_end_offset: usize = 0;
3481 if 1 > max_ordinal {
3482 return Ok(());
3483 }
3484
3485 let cur_offset: usize = (1 - 1) * envelope_size;
3488
3489 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3491
3492 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
3497 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
3498 encoder,
3499 offset + cur_offset,
3500 depth,
3501 )?;
3502
3503 _prev_end_offset = cur_offset + envelope_size;
3504 if 2 > max_ordinal {
3505 return Ok(());
3506 }
3507
3508 let cur_offset: usize = (2 - 1) * envelope_size;
3511
3512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3514
3515 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
3520 self.progress
3521 .as_ref()
3522 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
3523 encoder,
3524 offset + cur_offset,
3525 depth,
3526 )?;
3527
3528 _prev_end_offset = cur_offset + envelope_size;
3529 if 3 > max_ordinal {
3530 return Ok(());
3531 }
3532
3533 let cur_offset: usize = (3 - 1) * envelope_size;
3536
3537 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3539
3540 fidl::encoding::encode_in_envelope_optional::<StageFailureReason, D>(
3545 self.reason
3546 .as_ref()
3547 .map(<StageFailureReason as fidl::encoding::ValueTypeMarker>::borrow),
3548 encoder,
3549 offset + cur_offset,
3550 depth,
3551 )?;
3552
3553 _prev_end_offset = cur_offset + envelope_size;
3554
3555 Ok(())
3556 }
3557 }
3558
3559 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FailStageData {
3560 #[inline(always)]
3561 fn new_empty() -> Self {
3562 Self::default()
3563 }
3564
3565 unsafe fn decode(
3566 &mut self,
3567 decoder: &mut fidl::encoding::Decoder<'_, D>,
3568 offset: usize,
3569 mut depth: fidl::encoding::Depth,
3570 ) -> fidl::Result<()> {
3571 decoder.debug_check_bounds::<Self>(offset);
3572 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3573 None => return Err(fidl::Error::NotNullable),
3574 Some(len) => len,
3575 };
3576 if len == 0 {
3578 return Ok(());
3579 };
3580 depth.increment()?;
3581 let envelope_size = 8;
3582 let bytes_len = len * envelope_size;
3583 let offset = decoder.out_of_line_offset(bytes_len)?;
3584 let mut _next_ordinal_to_read = 0;
3586 let mut next_offset = offset;
3587 let end_offset = offset + bytes_len;
3588 _next_ordinal_to_read += 1;
3589 if next_offset >= end_offset {
3590 return Ok(());
3591 }
3592
3593 while _next_ordinal_to_read < 1 {
3595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3596 _next_ordinal_to_read += 1;
3597 next_offset += envelope_size;
3598 }
3599
3600 let next_out_of_line = decoder.next_out_of_line();
3601 let handles_before = decoder.remaining_handles();
3602 if let Some((inlined, num_bytes, num_handles)) =
3603 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3604 {
3605 let member_inline_size =
3606 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3607 if inlined != (member_inline_size <= 4) {
3608 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3609 }
3610 let inner_offset;
3611 let mut inner_depth = depth.clone();
3612 if inlined {
3613 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3614 inner_offset = next_offset;
3615 } else {
3616 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3617 inner_depth.increment()?;
3618 }
3619 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
3620 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3621 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3622 {
3623 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3624 }
3625 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3626 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3627 }
3628 }
3629
3630 next_offset += envelope_size;
3631 _next_ordinal_to_read += 1;
3632 if next_offset >= end_offset {
3633 return Ok(());
3634 }
3635
3636 while _next_ordinal_to_read < 2 {
3638 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3639 _next_ordinal_to_read += 1;
3640 next_offset += envelope_size;
3641 }
3642
3643 let next_out_of_line = decoder.next_out_of_line();
3644 let handles_before = decoder.remaining_handles();
3645 if let Some((inlined, num_bytes, num_handles)) =
3646 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3647 {
3648 let member_inline_size =
3649 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
3650 decoder.context,
3651 );
3652 if inlined != (member_inline_size <= 4) {
3653 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3654 }
3655 let inner_offset;
3656 let mut inner_depth = depth.clone();
3657 if inlined {
3658 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3659 inner_offset = next_offset;
3660 } else {
3661 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3662 inner_depth.increment()?;
3663 }
3664 let val_ref =
3665 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
3666 fidl::decode!(
3667 InstallationProgress,
3668 D,
3669 val_ref,
3670 decoder,
3671 inner_offset,
3672 inner_depth
3673 )?;
3674 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3675 {
3676 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3677 }
3678 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3679 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3680 }
3681 }
3682
3683 next_offset += envelope_size;
3684 _next_ordinal_to_read += 1;
3685 if next_offset >= end_offset {
3686 return Ok(());
3687 }
3688
3689 while _next_ordinal_to_read < 3 {
3691 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3692 _next_ordinal_to_read += 1;
3693 next_offset += envelope_size;
3694 }
3695
3696 let next_out_of_line = decoder.next_out_of_line();
3697 let handles_before = decoder.remaining_handles();
3698 if let Some((inlined, num_bytes, num_handles)) =
3699 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3700 {
3701 let member_inline_size =
3702 <StageFailureReason as fidl::encoding::TypeMarker>::inline_size(
3703 decoder.context,
3704 );
3705 if inlined != (member_inline_size <= 4) {
3706 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3707 }
3708 let inner_offset;
3709 let mut inner_depth = depth.clone();
3710 if inlined {
3711 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3712 inner_offset = next_offset;
3713 } else {
3714 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3715 inner_depth.increment()?;
3716 }
3717 let val_ref =
3718 self.reason.get_or_insert_with(|| fidl::new_empty!(StageFailureReason, D));
3719 fidl::decode!(StageFailureReason, D, val_ref, decoder, inner_offset, inner_depth)?;
3720 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3721 {
3722 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3723 }
3724 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3725 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3726 }
3727 }
3728
3729 next_offset += envelope_size;
3730
3731 while next_offset < end_offset {
3733 _next_ordinal_to_read += 1;
3734 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3735 next_offset += envelope_size;
3736 }
3737
3738 Ok(())
3739 }
3740 }
3741
3742 impl FetchData {
3743 #[inline(always)]
3744 fn max_ordinal_present(&self) -> u64 {
3745 if let Some(_) = self.progress {
3746 return 2;
3747 }
3748 if let Some(_) = self.info {
3749 return 1;
3750 }
3751 0
3752 }
3753 }
3754
3755 impl fidl::encoding::ValueTypeMarker for FetchData {
3756 type Borrowed<'a> = &'a Self;
3757 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3758 value
3759 }
3760 }
3761
3762 unsafe impl fidl::encoding::TypeMarker for FetchData {
3763 type Owned = Self;
3764
3765 #[inline(always)]
3766 fn inline_align(_context: fidl::encoding::Context) -> usize {
3767 8
3768 }
3769
3770 #[inline(always)]
3771 fn inline_size(_context: fidl::encoding::Context) -> usize {
3772 16
3773 }
3774 }
3775
3776 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FetchData, D>
3777 for &FetchData
3778 {
3779 unsafe fn encode(
3780 self,
3781 encoder: &mut fidl::encoding::Encoder<'_, D>,
3782 offset: usize,
3783 mut depth: fidl::encoding::Depth,
3784 ) -> fidl::Result<()> {
3785 encoder.debug_check_bounds::<FetchData>(offset);
3786 let max_ordinal: u64 = self.max_ordinal_present();
3788 encoder.write_num(max_ordinal, offset);
3789 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3790 if max_ordinal == 0 {
3792 return Ok(());
3793 }
3794 depth.increment()?;
3795 let envelope_size = 8;
3796 let bytes_len = max_ordinal as usize * envelope_size;
3797 #[allow(unused_variables)]
3798 let offset = encoder.out_of_line_offset(bytes_len);
3799 let mut _prev_end_offset: usize = 0;
3800 if 1 > max_ordinal {
3801 return Ok(());
3802 }
3803
3804 let cur_offset: usize = (1 - 1) * envelope_size;
3807
3808 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3810
3811 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
3816 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
3817 encoder,
3818 offset + cur_offset,
3819 depth,
3820 )?;
3821
3822 _prev_end_offset = cur_offset + envelope_size;
3823 if 2 > max_ordinal {
3824 return Ok(());
3825 }
3826
3827 let cur_offset: usize = (2 - 1) * envelope_size;
3830
3831 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3833
3834 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
3839 self.progress
3840 .as_ref()
3841 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
3842 encoder,
3843 offset + cur_offset,
3844 depth,
3845 )?;
3846
3847 _prev_end_offset = cur_offset + envelope_size;
3848
3849 Ok(())
3850 }
3851 }
3852
3853 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FetchData {
3854 #[inline(always)]
3855 fn new_empty() -> Self {
3856 Self::default()
3857 }
3858
3859 unsafe fn decode(
3860 &mut self,
3861 decoder: &mut fidl::encoding::Decoder<'_, D>,
3862 offset: usize,
3863 mut depth: fidl::encoding::Depth,
3864 ) -> fidl::Result<()> {
3865 decoder.debug_check_bounds::<Self>(offset);
3866 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3867 None => return Err(fidl::Error::NotNullable),
3868 Some(len) => len,
3869 };
3870 if len == 0 {
3872 return Ok(());
3873 };
3874 depth.increment()?;
3875 let envelope_size = 8;
3876 let bytes_len = len * envelope_size;
3877 let offset = decoder.out_of_line_offset(bytes_len)?;
3878 let mut _next_ordinal_to_read = 0;
3880 let mut next_offset = offset;
3881 let end_offset = offset + bytes_len;
3882 _next_ordinal_to_read += 1;
3883 if next_offset >= end_offset {
3884 return Ok(());
3885 }
3886
3887 while _next_ordinal_to_read < 1 {
3889 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3890 _next_ordinal_to_read += 1;
3891 next_offset += envelope_size;
3892 }
3893
3894 let next_out_of_line = decoder.next_out_of_line();
3895 let handles_before = decoder.remaining_handles();
3896 if let Some((inlined, num_bytes, num_handles)) =
3897 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3898 {
3899 let member_inline_size =
3900 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3901 if inlined != (member_inline_size <= 4) {
3902 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3903 }
3904 let inner_offset;
3905 let mut inner_depth = depth.clone();
3906 if inlined {
3907 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3908 inner_offset = next_offset;
3909 } else {
3910 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3911 inner_depth.increment()?;
3912 }
3913 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
3914 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
3915 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3916 {
3917 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3918 }
3919 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3920 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3921 }
3922 }
3923
3924 next_offset += envelope_size;
3925 _next_ordinal_to_read += 1;
3926 if next_offset >= end_offset {
3927 return Ok(());
3928 }
3929
3930 while _next_ordinal_to_read < 2 {
3932 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3933 _next_ordinal_to_read += 1;
3934 next_offset += envelope_size;
3935 }
3936
3937 let next_out_of_line = decoder.next_out_of_line();
3938 let handles_before = decoder.remaining_handles();
3939 if let Some((inlined, num_bytes, num_handles)) =
3940 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3941 {
3942 let member_inline_size =
3943 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
3944 decoder.context,
3945 );
3946 if inlined != (member_inline_size <= 4) {
3947 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3948 }
3949 let inner_offset;
3950 let mut inner_depth = depth.clone();
3951 if inlined {
3952 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3953 inner_offset = next_offset;
3954 } else {
3955 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3956 inner_depth.increment()?;
3957 }
3958 let val_ref =
3959 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
3960 fidl::decode!(
3961 InstallationProgress,
3962 D,
3963 val_ref,
3964 decoder,
3965 inner_offset,
3966 inner_depth
3967 )?;
3968 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3969 {
3970 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3971 }
3972 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3973 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3974 }
3975 }
3976
3977 next_offset += envelope_size;
3978
3979 while next_offset < end_offset {
3981 _next_ordinal_to_read += 1;
3982 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3983 next_offset += envelope_size;
3984 }
3985
3986 Ok(())
3987 }
3988 }
3989
3990 impl InstallationProgress {
3991 #[inline(always)]
3992 fn max_ordinal_present(&self) -> u64 {
3993 if let Some(_) = self.bytes_downloaded {
3994 return 2;
3995 }
3996 if let Some(_) = self.fraction_completed {
3997 return 1;
3998 }
3999 0
4000 }
4001 }
4002
4003 impl fidl::encoding::ValueTypeMarker for InstallationProgress {
4004 type Borrowed<'a> = &'a Self;
4005 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4006 value
4007 }
4008 }
4009
4010 unsafe impl fidl::encoding::TypeMarker for InstallationProgress {
4011 type Owned = Self;
4012
4013 #[inline(always)]
4014 fn inline_align(_context: fidl::encoding::Context) -> usize {
4015 8
4016 }
4017
4018 #[inline(always)]
4019 fn inline_size(_context: fidl::encoding::Context) -> usize {
4020 16
4021 }
4022 }
4023
4024 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<InstallationProgress, D>
4025 for &InstallationProgress
4026 {
4027 unsafe fn encode(
4028 self,
4029 encoder: &mut fidl::encoding::Encoder<'_, D>,
4030 offset: usize,
4031 mut depth: fidl::encoding::Depth,
4032 ) -> fidl::Result<()> {
4033 encoder.debug_check_bounds::<InstallationProgress>(offset);
4034 let max_ordinal: u64 = self.max_ordinal_present();
4036 encoder.write_num(max_ordinal, offset);
4037 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4038 if max_ordinal == 0 {
4040 return Ok(());
4041 }
4042 depth.increment()?;
4043 let envelope_size = 8;
4044 let bytes_len = max_ordinal as usize * envelope_size;
4045 #[allow(unused_variables)]
4046 let offset = encoder.out_of_line_offset(bytes_len);
4047 let mut _prev_end_offset: usize = 0;
4048 if 1 > max_ordinal {
4049 return Ok(());
4050 }
4051
4052 let cur_offset: usize = (1 - 1) * envelope_size;
4055
4056 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4058
4059 fidl::encoding::encode_in_envelope_optional::<f32, D>(
4064 self.fraction_completed
4065 .as_ref()
4066 .map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
4067 encoder,
4068 offset + cur_offset,
4069 depth,
4070 )?;
4071
4072 _prev_end_offset = cur_offset + envelope_size;
4073 if 2 > max_ordinal {
4074 return Ok(());
4075 }
4076
4077 let cur_offset: usize = (2 - 1) * envelope_size;
4080
4081 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4083
4084 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4089 self.bytes_downloaded
4090 .as_ref()
4091 .map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4092 encoder,
4093 offset + cur_offset,
4094 depth,
4095 )?;
4096
4097 _prev_end_offset = cur_offset + envelope_size;
4098
4099 Ok(())
4100 }
4101 }
4102
4103 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for InstallationProgress {
4104 #[inline(always)]
4105 fn new_empty() -> Self {
4106 Self::default()
4107 }
4108
4109 unsafe fn decode(
4110 &mut self,
4111 decoder: &mut fidl::encoding::Decoder<'_, D>,
4112 offset: usize,
4113 mut depth: fidl::encoding::Depth,
4114 ) -> fidl::Result<()> {
4115 decoder.debug_check_bounds::<Self>(offset);
4116 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4117 None => return Err(fidl::Error::NotNullable),
4118 Some(len) => len,
4119 };
4120 if len == 0 {
4122 return Ok(());
4123 };
4124 depth.increment()?;
4125 let envelope_size = 8;
4126 let bytes_len = len * envelope_size;
4127 let offset = decoder.out_of_line_offset(bytes_len)?;
4128 let mut _next_ordinal_to_read = 0;
4130 let mut next_offset = offset;
4131 let end_offset = offset + bytes_len;
4132 _next_ordinal_to_read += 1;
4133 if next_offset >= end_offset {
4134 return Ok(());
4135 }
4136
4137 while _next_ordinal_to_read < 1 {
4139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4140 _next_ordinal_to_read += 1;
4141 next_offset += envelope_size;
4142 }
4143
4144 let next_out_of_line = decoder.next_out_of_line();
4145 let handles_before = decoder.remaining_handles();
4146 if let Some((inlined, num_bytes, num_handles)) =
4147 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4148 {
4149 let member_inline_size =
4150 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4151 if inlined != (member_inline_size <= 4) {
4152 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4153 }
4154 let inner_offset;
4155 let mut inner_depth = depth.clone();
4156 if inlined {
4157 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4158 inner_offset = next_offset;
4159 } else {
4160 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4161 inner_depth.increment()?;
4162 }
4163 let val_ref =
4164 self.fraction_completed.get_or_insert_with(|| fidl::new_empty!(f32, D));
4165 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
4166 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4167 {
4168 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4169 }
4170 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4171 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4172 }
4173 }
4174
4175 next_offset += envelope_size;
4176 _next_ordinal_to_read += 1;
4177 if next_offset >= end_offset {
4178 return Ok(());
4179 }
4180
4181 while _next_ordinal_to_read < 2 {
4183 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4184 _next_ordinal_to_read += 1;
4185 next_offset += envelope_size;
4186 }
4187
4188 let next_out_of_line = decoder.next_out_of_line();
4189 let handles_before = decoder.remaining_handles();
4190 if let Some((inlined, num_bytes, num_handles)) =
4191 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4192 {
4193 let member_inline_size =
4194 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4195 if inlined != (member_inline_size <= 4) {
4196 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4197 }
4198 let inner_offset;
4199 let mut inner_depth = depth.clone();
4200 if inlined {
4201 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4202 inner_offset = next_offset;
4203 } else {
4204 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4205 inner_depth.increment()?;
4206 }
4207 let val_ref = self.bytes_downloaded.get_or_insert_with(|| fidl::new_empty!(u64, D));
4208 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4209 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4210 {
4211 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4212 }
4213 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4214 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4215 }
4216 }
4217
4218 next_offset += envelope_size;
4219
4220 while next_offset < end_offset {
4222 _next_ordinal_to_read += 1;
4223 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4224 next_offset += envelope_size;
4225 }
4226
4227 Ok(())
4228 }
4229 }
4230
4231 impl Options {
4232 #[inline(always)]
4233 fn max_ordinal_present(&self) -> u64 {
4234 if let Some(_) = self.should_commit {
4235 return 6;
4236 }
4237 if let Some(_) = self.manifest_headers {
4238 return 5;
4239 }
4240 if let Some(_) = self.manifest_range {
4241 return 4;
4242 }
4243 if let Some(_) = self.should_write_recovery {
4244 return 3;
4245 }
4246 if let Some(_) = self.allow_attach_to_existing_attempt {
4247 return 2;
4248 }
4249 if let Some(_) = self.initiator {
4250 return 1;
4251 }
4252 0
4253 }
4254 }
4255
4256 impl fidl::encoding::ValueTypeMarker for Options {
4257 type Borrowed<'a> = &'a Self;
4258 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4259 value
4260 }
4261 }
4262
4263 unsafe impl fidl::encoding::TypeMarker for Options {
4264 type Owned = Self;
4265
4266 #[inline(always)]
4267 fn inline_align(_context: fidl::encoding::Context) -> usize {
4268 8
4269 }
4270
4271 #[inline(always)]
4272 fn inline_size(_context: fidl::encoding::Context) -> usize {
4273 16
4274 }
4275 }
4276
4277 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Options, D> for &Options {
4278 unsafe fn encode(
4279 self,
4280 encoder: &mut fidl::encoding::Encoder<'_, D>,
4281 offset: usize,
4282 mut depth: fidl::encoding::Depth,
4283 ) -> fidl::Result<()> {
4284 encoder.debug_check_bounds::<Options>(offset);
4285 let max_ordinal: u64 = self.max_ordinal_present();
4287 encoder.write_num(max_ordinal, offset);
4288 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4289 if max_ordinal == 0 {
4291 return Ok(());
4292 }
4293 depth.increment()?;
4294 let envelope_size = 8;
4295 let bytes_len = max_ordinal as usize * envelope_size;
4296 #[allow(unused_variables)]
4297 let offset = encoder.out_of_line_offset(bytes_len);
4298 let mut _prev_end_offset: usize = 0;
4299 if 1 > max_ordinal {
4300 return Ok(());
4301 }
4302
4303 let cur_offset: usize = (1 - 1) * envelope_size;
4306
4307 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4309
4310 fidl::encoding::encode_in_envelope_optional::<Initiator, D>(
4315 self.initiator.as_ref().map(<Initiator as fidl::encoding::ValueTypeMarker>::borrow),
4316 encoder,
4317 offset + cur_offset,
4318 depth,
4319 )?;
4320
4321 _prev_end_offset = cur_offset + envelope_size;
4322 if 2 > max_ordinal {
4323 return Ok(());
4324 }
4325
4326 let cur_offset: usize = (2 - 1) * envelope_size;
4329
4330 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4332
4333 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4338 self.allow_attach_to_existing_attempt
4339 .as_ref()
4340 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4341 encoder,
4342 offset + cur_offset,
4343 depth,
4344 )?;
4345
4346 _prev_end_offset = cur_offset + envelope_size;
4347 if 3 > max_ordinal {
4348 return Ok(());
4349 }
4350
4351 let cur_offset: usize = (3 - 1) * envelope_size;
4354
4355 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4357
4358 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4363 self.should_write_recovery
4364 .as_ref()
4365 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4366 encoder,
4367 offset + cur_offset,
4368 depth,
4369 )?;
4370
4371 _prev_end_offset = cur_offset + envelope_size;
4372 if 4 > max_ordinal {
4373 return Ok(());
4374 }
4375
4376 let cur_offset: usize = (4 - 1) * envelope_size;
4379
4380 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4382
4383 fidl::encoding::encode_in_envelope_optional::<Range, D>(
4388 self.manifest_range
4389 .as_ref()
4390 .map(<Range as fidl::encoding::ValueTypeMarker>::borrow),
4391 encoder,
4392 offset + cur_offset,
4393 depth,
4394 )?;
4395
4396 _prev_end_offset = cur_offset + envelope_size;
4397 if 5 > max_ordinal {
4398 return Ok(());
4399 }
4400
4401 let cur_offset: usize = (5 - 1) * envelope_size;
4404
4405 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4407
4408 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_net_http_common::Header>, D>(
4413 self.manifest_headers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_net_http_common::Header> as fidl::encoding::ValueTypeMarker>::borrow),
4414 encoder, offset + cur_offset, depth
4415 )?;
4416
4417 _prev_end_offset = cur_offset + envelope_size;
4418 if 6 > max_ordinal {
4419 return Ok(());
4420 }
4421
4422 let cur_offset: usize = (6 - 1) * envelope_size;
4425
4426 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4428
4429 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4434 self.should_commit.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4435 encoder,
4436 offset + cur_offset,
4437 depth,
4438 )?;
4439
4440 _prev_end_offset = cur_offset + envelope_size;
4441
4442 Ok(())
4443 }
4444 }
4445
4446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Options {
4447 #[inline(always)]
4448 fn new_empty() -> Self {
4449 Self::default()
4450 }
4451
4452 unsafe fn decode(
4453 &mut self,
4454 decoder: &mut fidl::encoding::Decoder<'_, D>,
4455 offset: usize,
4456 mut depth: fidl::encoding::Depth,
4457 ) -> fidl::Result<()> {
4458 decoder.debug_check_bounds::<Self>(offset);
4459 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4460 None => return Err(fidl::Error::NotNullable),
4461 Some(len) => len,
4462 };
4463 if len == 0 {
4465 return Ok(());
4466 };
4467 depth.increment()?;
4468 let envelope_size = 8;
4469 let bytes_len = len * envelope_size;
4470 let offset = decoder.out_of_line_offset(bytes_len)?;
4471 let mut _next_ordinal_to_read = 0;
4473 let mut next_offset = offset;
4474 let end_offset = offset + bytes_len;
4475 _next_ordinal_to_read += 1;
4476 if next_offset >= end_offset {
4477 return Ok(());
4478 }
4479
4480 while _next_ordinal_to_read < 1 {
4482 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4483 _next_ordinal_to_read += 1;
4484 next_offset += envelope_size;
4485 }
4486
4487 let next_out_of_line = decoder.next_out_of_line();
4488 let handles_before = decoder.remaining_handles();
4489 if let Some((inlined, num_bytes, num_handles)) =
4490 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4491 {
4492 let member_inline_size =
4493 <Initiator as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4494 if inlined != (member_inline_size <= 4) {
4495 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4496 }
4497 let inner_offset;
4498 let mut inner_depth = depth.clone();
4499 if inlined {
4500 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4501 inner_offset = next_offset;
4502 } else {
4503 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4504 inner_depth.increment()?;
4505 }
4506 let val_ref = self.initiator.get_or_insert_with(|| fidl::new_empty!(Initiator, D));
4507 fidl::decode!(Initiator, D, val_ref, decoder, inner_offset, inner_depth)?;
4508 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4509 {
4510 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4511 }
4512 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4513 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4514 }
4515 }
4516
4517 next_offset += envelope_size;
4518 _next_ordinal_to_read += 1;
4519 if next_offset >= end_offset {
4520 return Ok(());
4521 }
4522
4523 while _next_ordinal_to_read < 2 {
4525 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4526 _next_ordinal_to_read += 1;
4527 next_offset += envelope_size;
4528 }
4529
4530 let next_out_of_line = decoder.next_out_of_line();
4531 let handles_before = decoder.remaining_handles();
4532 if let Some((inlined, num_bytes, num_handles)) =
4533 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4534 {
4535 let member_inline_size =
4536 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4537 if inlined != (member_inline_size <= 4) {
4538 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4539 }
4540 let inner_offset;
4541 let mut inner_depth = depth.clone();
4542 if inlined {
4543 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4544 inner_offset = next_offset;
4545 } else {
4546 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4547 inner_depth.increment()?;
4548 }
4549 let val_ref = self
4550 .allow_attach_to_existing_attempt
4551 .get_or_insert_with(|| fidl::new_empty!(bool, D));
4552 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4554 {
4555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4556 }
4557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4559 }
4560 }
4561
4562 next_offset += envelope_size;
4563 _next_ordinal_to_read += 1;
4564 if next_offset >= end_offset {
4565 return Ok(());
4566 }
4567
4568 while _next_ordinal_to_read < 3 {
4570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4571 _next_ordinal_to_read += 1;
4572 next_offset += envelope_size;
4573 }
4574
4575 let next_out_of_line = decoder.next_out_of_line();
4576 let handles_before = decoder.remaining_handles();
4577 if let Some((inlined, num_bytes, num_handles)) =
4578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4579 {
4580 let member_inline_size =
4581 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4582 if inlined != (member_inline_size <= 4) {
4583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4584 }
4585 let inner_offset;
4586 let mut inner_depth = depth.clone();
4587 if inlined {
4588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4589 inner_offset = next_offset;
4590 } else {
4591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4592 inner_depth.increment()?;
4593 }
4594 let val_ref =
4595 self.should_write_recovery.get_or_insert_with(|| fidl::new_empty!(bool, D));
4596 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4597 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4598 {
4599 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4600 }
4601 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4602 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4603 }
4604 }
4605
4606 next_offset += envelope_size;
4607 _next_ordinal_to_read += 1;
4608 if next_offset >= end_offset {
4609 return Ok(());
4610 }
4611
4612 while _next_ordinal_to_read < 4 {
4614 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4615 _next_ordinal_to_read += 1;
4616 next_offset += envelope_size;
4617 }
4618
4619 let next_out_of_line = decoder.next_out_of_line();
4620 let handles_before = decoder.remaining_handles();
4621 if let Some((inlined, num_bytes, num_handles)) =
4622 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4623 {
4624 let member_inline_size =
4625 <Range as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4626 if inlined != (member_inline_size <= 4) {
4627 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4628 }
4629 let inner_offset;
4630 let mut inner_depth = depth.clone();
4631 if inlined {
4632 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4633 inner_offset = next_offset;
4634 } else {
4635 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4636 inner_depth.increment()?;
4637 }
4638 let val_ref = self.manifest_range.get_or_insert_with(|| fidl::new_empty!(Range, D));
4639 fidl::decode!(Range, D, val_ref, decoder, inner_offset, inner_depth)?;
4640 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4641 {
4642 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4643 }
4644 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4645 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4646 }
4647 }
4648
4649 next_offset += envelope_size;
4650 _next_ordinal_to_read += 1;
4651 if next_offset >= end_offset {
4652 return Ok(());
4653 }
4654
4655 while _next_ordinal_to_read < 5 {
4657 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4658 _next_ordinal_to_read += 1;
4659 next_offset += envelope_size;
4660 }
4661
4662 let next_out_of_line = decoder.next_out_of_line();
4663 let handles_before = decoder.remaining_handles();
4664 if let Some((inlined, num_bytes, num_handles)) =
4665 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4666 {
4667 let member_inline_size = <fidl::encoding::UnboundedVector<
4668 fidl_fuchsia_net_http_common::Header,
4669 > as fidl::encoding::TypeMarker>::inline_size(
4670 decoder.context
4671 );
4672 if inlined != (member_inline_size <= 4) {
4673 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4674 }
4675 let inner_offset;
4676 let mut inner_depth = depth.clone();
4677 if inlined {
4678 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4679 inner_offset = next_offset;
4680 } else {
4681 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4682 inner_depth.increment()?;
4683 }
4684 let val_ref = self.manifest_headers.get_or_insert_with(|| {
4685 fidl::new_empty!(
4686 fidl::encoding::UnboundedVector<fidl_fuchsia_net_http_common::Header>,
4687 D
4688 )
4689 });
4690 fidl::decode!(
4691 fidl::encoding::UnboundedVector<fidl_fuchsia_net_http_common::Header>,
4692 D,
4693 val_ref,
4694 decoder,
4695 inner_offset,
4696 inner_depth
4697 )?;
4698 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4699 {
4700 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4701 }
4702 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4703 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4704 }
4705 }
4706
4707 next_offset += envelope_size;
4708 _next_ordinal_to_read += 1;
4709 if next_offset >= end_offset {
4710 return Ok(());
4711 }
4712
4713 while _next_ordinal_to_read < 6 {
4715 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4716 _next_ordinal_to_read += 1;
4717 next_offset += envelope_size;
4718 }
4719
4720 let next_out_of_line = decoder.next_out_of_line();
4721 let handles_before = decoder.remaining_handles();
4722 if let Some((inlined, num_bytes, num_handles)) =
4723 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4724 {
4725 let member_inline_size =
4726 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4727 if inlined != (member_inline_size <= 4) {
4728 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4729 }
4730 let inner_offset;
4731 let mut inner_depth = depth.clone();
4732 if inlined {
4733 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4734 inner_offset = next_offset;
4735 } else {
4736 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4737 inner_depth.increment()?;
4738 }
4739 let val_ref = self.should_commit.get_or_insert_with(|| fidl::new_empty!(bool, D));
4740 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4741 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4742 {
4743 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4744 }
4745 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4746 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4747 }
4748 }
4749
4750 next_offset += envelope_size;
4751
4752 while next_offset < end_offset {
4754 _next_ordinal_to_read += 1;
4755 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4756 next_offset += envelope_size;
4757 }
4758
4759 Ok(())
4760 }
4761 }
4762
4763 impl PrepareData {
4764 #[inline(always)]
4765 fn max_ordinal_present(&self) -> u64 {
4766 0
4767 }
4768 }
4769
4770 impl fidl::encoding::ValueTypeMarker for PrepareData {
4771 type Borrowed<'a> = &'a Self;
4772 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4773 value
4774 }
4775 }
4776
4777 unsafe impl fidl::encoding::TypeMarker for PrepareData {
4778 type Owned = Self;
4779
4780 #[inline(always)]
4781 fn inline_align(_context: fidl::encoding::Context) -> usize {
4782 8
4783 }
4784
4785 #[inline(always)]
4786 fn inline_size(_context: fidl::encoding::Context) -> usize {
4787 16
4788 }
4789 }
4790
4791 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PrepareData, D>
4792 for &PrepareData
4793 {
4794 unsafe fn encode(
4795 self,
4796 encoder: &mut fidl::encoding::Encoder<'_, D>,
4797 offset: usize,
4798 mut depth: fidl::encoding::Depth,
4799 ) -> fidl::Result<()> {
4800 encoder.debug_check_bounds::<PrepareData>(offset);
4801 let max_ordinal: u64 = self.max_ordinal_present();
4803 encoder.write_num(max_ordinal, offset);
4804 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4805 if max_ordinal == 0 {
4807 return Ok(());
4808 }
4809 depth.increment()?;
4810 let envelope_size = 8;
4811 let bytes_len = max_ordinal as usize * envelope_size;
4812 #[allow(unused_variables)]
4813 let offset = encoder.out_of_line_offset(bytes_len);
4814 let mut _prev_end_offset: usize = 0;
4815
4816 Ok(())
4817 }
4818 }
4819
4820 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PrepareData {
4821 #[inline(always)]
4822 fn new_empty() -> Self {
4823 Self::default()
4824 }
4825
4826 unsafe fn decode(
4827 &mut self,
4828 decoder: &mut fidl::encoding::Decoder<'_, D>,
4829 offset: usize,
4830 mut depth: fidl::encoding::Depth,
4831 ) -> fidl::Result<()> {
4832 decoder.debug_check_bounds::<Self>(offset);
4833 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4834 None => return Err(fidl::Error::NotNullable),
4835 Some(len) => len,
4836 };
4837 if len == 0 {
4839 return Ok(());
4840 };
4841 depth.increment()?;
4842 let envelope_size = 8;
4843 let bytes_len = len * envelope_size;
4844 let offset = decoder.out_of_line_offset(bytes_len)?;
4845 let mut _next_ordinal_to_read = 0;
4847 let mut next_offset = offset;
4848 let end_offset = offset + bytes_len;
4849
4850 while next_offset < end_offset {
4852 _next_ordinal_to_read += 1;
4853 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4854 next_offset += envelope_size;
4855 }
4856
4857 Ok(())
4858 }
4859 }
4860
4861 impl RebootData {
4862 #[inline(always)]
4863 fn max_ordinal_present(&self) -> u64 {
4864 if let Some(_) = self.progress {
4865 return 2;
4866 }
4867 if let Some(_) = self.info {
4868 return 1;
4869 }
4870 0
4871 }
4872 }
4873
4874 impl fidl::encoding::ValueTypeMarker for RebootData {
4875 type Borrowed<'a> = &'a Self;
4876 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4877 value
4878 }
4879 }
4880
4881 unsafe impl fidl::encoding::TypeMarker for RebootData {
4882 type Owned = Self;
4883
4884 #[inline(always)]
4885 fn inline_align(_context: fidl::encoding::Context) -> usize {
4886 8
4887 }
4888
4889 #[inline(always)]
4890 fn inline_size(_context: fidl::encoding::Context) -> usize {
4891 16
4892 }
4893 }
4894
4895 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RebootData, D>
4896 for &RebootData
4897 {
4898 unsafe fn encode(
4899 self,
4900 encoder: &mut fidl::encoding::Encoder<'_, D>,
4901 offset: usize,
4902 mut depth: fidl::encoding::Depth,
4903 ) -> fidl::Result<()> {
4904 encoder.debug_check_bounds::<RebootData>(offset);
4905 let max_ordinal: u64 = self.max_ordinal_present();
4907 encoder.write_num(max_ordinal, offset);
4908 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4909 if max_ordinal == 0 {
4911 return Ok(());
4912 }
4913 depth.increment()?;
4914 let envelope_size = 8;
4915 let bytes_len = max_ordinal as usize * envelope_size;
4916 #[allow(unused_variables)]
4917 let offset = encoder.out_of_line_offset(bytes_len);
4918 let mut _prev_end_offset: usize = 0;
4919 if 1 > max_ordinal {
4920 return Ok(());
4921 }
4922
4923 let cur_offset: usize = (1 - 1) * envelope_size;
4926
4927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4929
4930 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
4935 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
4936 encoder,
4937 offset + cur_offset,
4938 depth,
4939 )?;
4940
4941 _prev_end_offset = cur_offset + envelope_size;
4942 if 2 > max_ordinal {
4943 return Ok(());
4944 }
4945
4946 let cur_offset: usize = (2 - 1) * envelope_size;
4949
4950 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4952
4953 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
4958 self.progress
4959 .as_ref()
4960 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
4961 encoder,
4962 offset + cur_offset,
4963 depth,
4964 )?;
4965
4966 _prev_end_offset = cur_offset + envelope_size;
4967
4968 Ok(())
4969 }
4970 }
4971
4972 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RebootData {
4973 #[inline(always)]
4974 fn new_empty() -> Self {
4975 Self::default()
4976 }
4977
4978 unsafe fn decode(
4979 &mut self,
4980 decoder: &mut fidl::encoding::Decoder<'_, D>,
4981 offset: usize,
4982 mut depth: fidl::encoding::Depth,
4983 ) -> fidl::Result<()> {
4984 decoder.debug_check_bounds::<Self>(offset);
4985 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4986 None => return Err(fidl::Error::NotNullable),
4987 Some(len) => len,
4988 };
4989 if len == 0 {
4991 return Ok(());
4992 };
4993 depth.increment()?;
4994 let envelope_size = 8;
4995 let bytes_len = len * envelope_size;
4996 let offset = decoder.out_of_line_offset(bytes_len)?;
4997 let mut _next_ordinal_to_read = 0;
4999 let mut next_offset = offset;
5000 let end_offset = offset + bytes_len;
5001 _next_ordinal_to_read += 1;
5002 if next_offset >= end_offset {
5003 return Ok(());
5004 }
5005
5006 while _next_ordinal_to_read < 1 {
5008 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5009 _next_ordinal_to_read += 1;
5010 next_offset += envelope_size;
5011 }
5012
5013 let next_out_of_line = decoder.next_out_of_line();
5014 let handles_before = decoder.remaining_handles();
5015 if let Some((inlined, num_bytes, num_handles)) =
5016 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5017 {
5018 let member_inline_size =
5019 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5020 if inlined != (member_inline_size <= 4) {
5021 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5022 }
5023 let inner_offset;
5024 let mut inner_depth = depth.clone();
5025 if inlined {
5026 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5027 inner_offset = next_offset;
5028 } else {
5029 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5030 inner_depth.increment()?;
5031 }
5032 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
5033 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5034 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5035 {
5036 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5037 }
5038 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5039 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5040 }
5041 }
5042
5043 next_offset += envelope_size;
5044 _next_ordinal_to_read += 1;
5045 if next_offset >= end_offset {
5046 return Ok(());
5047 }
5048
5049 while _next_ordinal_to_read < 2 {
5051 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5052 _next_ordinal_to_read += 1;
5053 next_offset += envelope_size;
5054 }
5055
5056 let next_out_of_line = decoder.next_out_of_line();
5057 let handles_before = decoder.remaining_handles();
5058 if let Some((inlined, num_bytes, num_handles)) =
5059 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5060 {
5061 let member_inline_size =
5062 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
5063 decoder.context,
5064 );
5065 if inlined != (member_inline_size <= 4) {
5066 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5067 }
5068 let inner_offset;
5069 let mut inner_depth = depth.clone();
5070 if inlined {
5071 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5072 inner_offset = next_offset;
5073 } else {
5074 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5075 inner_depth.increment()?;
5076 }
5077 let val_ref =
5078 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
5079 fidl::decode!(
5080 InstallationProgress,
5081 D,
5082 val_ref,
5083 decoder,
5084 inner_offset,
5085 inner_depth
5086 )?;
5087 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5088 {
5089 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5090 }
5091 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5092 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5093 }
5094 }
5095
5096 next_offset += envelope_size;
5097
5098 while next_offset < end_offset {
5100 _next_ordinal_to_read += 1;
5101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5102 next_offset += envelope_size;
5103 }
5104
5105 Ok(())
5106 }
5107 }
5108
5109 impl StageData {
5110 #[inline(always)]
5111 fn max_ordinal_present(&self) -> u64 {
5112 if let Some(_) = self.progress {
5113 return 2;
5114 }
5115 if let Some(_) = self.info {
5116 return 1;
5117 }
5118 0
5119 }
5120 }
5121
5122 impl fidl::encoding::ValueTypeMarker for StageData {
5123 type Borrowed<'a> = &'a Self;
5124 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5125 value
5126 }
5127 }
5128
5129 unsafe impl fidl::encoding::TypeMarker for StageData {
5130 type Owned = Self;
5131
5132 #[inline(always)]
5133 fn inline_align(_context: fidl::encoding::Context) -> usize {
5134 8
5135 }
5136
5137 #[inline(always)]
5138 fn inline_size(_context: fidl::encoding::Context) -> usize {
5139 16
5140 }
5141 }
5142
5143 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StageData, D>
5144 for &StageData
5145 {
5146 unsafe fn encode(
5147 self,
5148 encoder: &mut fidl::encoding::Encoder<'_, D>,
5149 offset: usize,
5150 mut depth: fidl::encoding::Depth,
5151 ) -> fidl::Result<()> {
5152 encoder.debug_check_bounds::<StageData>(offset);
5153 let max_ordinal: u64 = self.max_ordinal_present();
5155 encoder.write_num(max_ordinal, offset);
5156 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5157 if max_ordinal == 0 {
5159 return Ok(());
5160 }
5161 depth.increment()?;
5162 let envelope_size = 8;
5163 let bytes_len = max_ordinal as usize * envelope_size;
5164 #[allow(unused_variables)]
5165 let offset = encoder.out_of_line_offset(bytes_len);
5166 let mut _prev_end_offset: usize = 0;
5167 if 1 > max_ordinal {
5168 return Ok(());
5169 }
5170
5171 let cur_offset: usize = (1 - 1) * envelope_size;
5174
5175 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5177
5178 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
5183 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
5184 encoder,
5185 offset + cur_offset,
5186 depth,
5187 )?;
5188
5189 _prev_end_offset = cur_offset + envelope_size;
5190 if 2 > max_ordinal {
5191 return Ok(());
5192 }
5193
5194 let cur_offset: usize = (2 - 1) * envelope_size;
5197
5198 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5200
5201 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
5206 self.progress
5207 .as_ref()
5208 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
5209 encoder,
5210 offset + cur_offset,
5211 depth,
5212 )?;
5213
5214 _prev_end_offset = cur_offset + envelope_size;
5215
5216 Ok(())
5217 }
5218 }
5219
5220 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StageData {
5221 #[inline(always)]
5222 fn new_empty() -> Self {
5223 Self::default()
5224 }
5225
5226 unsafe fn decode(
5227 &mut self,
5228 decoder: &mut fidl::encoding::Decoder<'_, D>,
5229 offset: usize,
5230 mut depth: fidl::encoding::Depth,
5231 ) -> fidl::Result<()> {
5232 decoder.debug_check_bounds::<Self>(offset);
5233 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5234 None => return Err(fidl::Error::NotNullable),
5235 Some(len) => len,
5236 };
5237 if len == 0 {
5239 return Ok(());
5240 };
5241 depth.increment()?;
5242 let envelope_size = 8;
5243 let bytes_len = len * envelope_size;
5244 let offset = decoder.out_of_line_offset(bytes_len)?;
5245 let mut _next_ordinal_to_read = 0;
5247 let mut next_offset = offset;
5248 let end_offset = offset + bytes_len;
5249 _next_ordinal_to_read += 1;
5250 if next_offset >= end_offset {
5251 return Ok(());
5252 }
5253
5254 while _next_ordinal_to_read < 1 {
5256 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5257 _next_ordinal_to_read += 1;
5258 next_offset += envelope_size;
5259 }
5260
5261 let next_out_of_line = decoder.next_out_of_line();
5262 let handles_before = decoder.remaining_handles();
5263 if let Some((inlined, num_bytes, num_handles)) =
5264 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5265 {
5266 let member_inline_size =
5267 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5268 if inlined != (member_inline_size <= 4) {
5269 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5270 }
5271 let inner_offset;
5272 let mut inner_depth = depth.clone();
5273 if inlined {
5274 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5275 inner_offset = next_offset;
5276 } else {
5277 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5278 inner_depth.increment()?;
5279 }
5280 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
5281 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5282 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5283 {
5284 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5285 }
5286 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5287 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5288 }
5289 }
5290
5291 next_offset += envelope_size;
5292 _next_ordinal_to_read += 1;
5293 if next_offset >= end_offset {
5294 return Ok(());
5295 }
5296
5297 while _next_ordinal_to_read < 2 {
5299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5300 _next_ordinal_to_read += 1;
5301 next_offset += envelope_size;
5302 }
5303
5304 let next_out_of_line = decoder.next_out_of_line();
5305 let handles_before = decoder.remaining_handles();
5306 if let Some((inlined, num_bytes, num_handles)) =
5307 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5308 {
5309 let member_inline_size =
5310 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
5311 decoder.context,
5312 );
5313 if inlined != (member_inline_size <= 4) {
5314 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5315 }
5316 let inner_offset;
5317 let mut inner_depth = depth.clone();
5318 if inlined {
5319 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5320 inner_offset = next_offset;
5321 } else {
5322 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5323 inner_depth.increment()?;
5324 }
5325 let val_ref =
5326 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
5327 fidl::decode!(
5328 InstallationProgress,
5329 D,
5330 val_ref,
5331 decoder,
5332 inner_offset,
5333 inner_depth
5334 )?;
5335 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5336 {
5337 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5338 }
5339 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5340 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5341 }
5342 }
5343
5344 next_offset += envelope_size;
5345
5346 while next_offset < end_offset {
5348 _next_ordinal_to_read += 1;
5349 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5350 next_offset += envelope_size;
5351 }
5352
5353 Ok(())
5354 }
5355 }
5356
5357 impl UpdateInfo {
5358 #[inline(always)]
5359 fn max_ordinal_present(&self) -> u64 {
5360 if let Some(_) = self.download_size {
5361 return 1;
5362 }
5363 0
5364 }
5365 }
5366
5367 impl fidl::encoding::ValueTypeMarker for UpdateInfo {
5368 type Borrowed<'a> = &'a Self;
5369 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5370 value
5371 }
5372 }
5373
5374 unsafe impl fidl::encoding::TypeMarker for UpdateInfo {
5375 type Owned = Self;
5376
5377 #[inline(always)]
5378 fn inline_align(_context: fidl::encoding::Context) -> usize {
5379 8
5380 }
5381
5382 #[inline(always)]
5383 fn inline_size(_context: fidl::encoding::Context) -> usize {
5384 16
5385 }
5386 }
5387
5388 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<UpdateInfo, D>
5389 for &UpdateInfo
5390 {
5391 unsafe fn encode(
5392 self,
5393 encoder: &mut fidl::encoding::Encoder<'_, D>,
5394 offset: usize,
5395 mut depth: fidl::encoding::Depth,
5396 ) -> fidl::Result<()> {
5397 encoder.debug_check_bounds::<UpdateInfo>(offset);
5398 let max_ordinal: u64 = self.max_ordinal_present();
5400 encoder.write_num(max_ordinal, offset);
5401 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5402 if max_ordinal == 0 {
5404 return Ok(());
5405 }
5406 depth.increment()?;
5407 let envelope_size = 8;
5408 let bytes_len = max_ordinal as usize * envelope_size;
5409 #[allow(unused_variables)]
5410 let offset = encoder.out_of_line_offset(bytes_len);
5411 let mut _prev_end_offset: usize = 0;
5412 if 1 > max_ordinal {
5413 return Ok(());
5414 }
5415
5416 let cur_offset: usize = (1 - 1) * envelope_size;
5419
5420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5422
5423 fidl::encoding::encode_in_envelope_optional::<u64, D>(
5428 self.download_size.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
5429 encoder,
5430 offset + cur_offset,
5431 depth,
5432 )?;
5433
5434 _prev_end_offset = cur_offset + envelope_size;
5435
5436 Ok(())
5437 }
5438 }
5439
5440 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for UpdateInfo {
5441 #[inline(always)]
5442 fn new_empty() -> Self {
5443 Self::default()
5444 }
5445
5446 unsafe fn decode(
5447 &mut self,
5448 decoder: &mut fidl::encoding::Decoder<'_, D>,
5449 offset: usize,
5450 mut depth: fidl::encoding::Depth,
5451 ) -> fidl::Result<()> {
5452 decoder.debug_check_bounds::<Self>(offset);
5453 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5454 None => return Err(fidl::Error::NotNullable),
5455 Some(len) => len,
5456 };
5457 if len == 0 {
5459 return Ok(());
5460 };
5461 depth.increment()?;
5462 let envelope_size = 8;
5463 let bytes_len = len * envelope_size;
5464 let offset = decoder.out_of_line_offset(bytes_len)?;
5465 let mut _next_ordinal_to_read = 0;
5467 let mut next_offset = offset;
5468 let end_offset = offset + bytes_len;
5469 _next_ordinal_to_read += 1;
5470 if next_offset >= end_offset {
5471 return Ok(());
5472 }
5473
5474 while _next_ordinal_to_read < 1 {
5476 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5477 _next_ordinal_to_read += 1;
5478 next_offset += envelope_size;
5479 }
5480
5481 let next_out_of_line = decoder.next_out_of_line();
5482 let handles_before = decoder.remaining_handles();
5483 if let Some((inlined, num_bytes, num_handles)) =
5484 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5485 {
5486 let member_inline_size =
5487 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5488 if inlined != (member_inline_size <= 4) {
5489 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5490 }
5491 let inner_offset;
5492 let mut inner_depth = depth.clone();
5493 if inlined {
5494 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5495 inner_offset = next_offset;
5496 } else {
5497 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5498 inner_depth.increment()?;
5499 }
5500 let val_ref = self.download_size.get_or_insert_with(|| fidl::new_empty!(u64, D));
5501 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
5502 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5503 {
5504 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5505 }
5506 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5507 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5508 }
5509 }
5510
5511 next_offset += envelope_size;
5512
5513 while next_offset < end_offset {
5515 _next_ordinal_to_read += 1;
5516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5517 next_offset += envelope_size;
5518 }
5519
5520 Ok(())
5521 }
5522 }
5523
5524 impl WaitToRebootData {
5525 #[inline(always)]
5526 fn max_ordinal_present(&self) -> u64 {
5527 if let Some(_) = self.progress {
5528 return 2;
5529 }
5530 if let Some(_) = self.info {
5531 return 1;
5532 }
5533 0
5534 }
5535 }
5536
5537 impl fidl::encoding::ValueTypeMarker for WaitToRebootData {
5538 type Borrowed<'a> = &'a Self;
5539 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5540 value
5541 }
5542 }
5543
5544 unsafe impl fidl::encoding::TypeMarker for WaitToRebootData {
5545 type Owned = Self;
5546
5547 #[inline(always)]
5548 fn inline_align(_context: fidl::encoding::Context) -> usize {
5549 8
5550 }
5551
5552 #[inline(always)]
5553 fn inline_size(_context: fidl::encoding::Context) -> usize {
5554 16
5555 }
5556 }
5557
5558 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WaitToRebootData, D>
5559 for &WaitToRebootData
5560 {
5561 unsafe fn encode(
5562 self,
5563 encoder: &mut fidl::encoding::Encoder<'_, D>,
5564 offset: usize,
5565 mut depth: fidl::encoding::Depth,
5566 ) -> fidl::Result<()> {
5567 encoder.debug_check_bounds::<WaitToRebootData>(offset);
5568 let max_ordinal: u64 = self.max_ordinal_present();
5570 encoder.write_num(max_ordinal, offset);
5571 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5572 if max_ordinal == 0 {
5574 return Ok(());
5575 }
5576 depth.increment()?;
5577 let envelope_size = 8;
5578 let bytes_len = max_ordinal as usize * envelope_size;
5579 #[allow(unused_variables)]
5580 let offset = encoder.out_of_line_offset(bytes_len);
5581 let mut _prev_end_offset: usize = 0;
5582 if 1 > max_ordinal {
5583 return Ok(());
5584 }
5585
5586 let cur_offset: usize = (1 - 1) * envelope_size;
5589
5590 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5592
5593 fidl::encoding::encode_in_envelope_optional::<UpdateInfo, D>(
5598 self.info.as_ref().map(<UpdateInfo as fidl::encoding::ValueTypeMarker>::borrow),
5599 encoder,
5600 offset + cur_offset,
5601 depth,
5602 )?;
5603
5604 _prev_end_offset = cur_offset + envelope_size;
5605 if 2 > max_ordinal {
5606 return Ok(());
5607 }
5608
5609 let cur_offset: usize = (2 - 1) * envelope_size;
5612
5613 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5615
5616 fidl::encoding::encode_in_envelope_optional::<InstallationProgress, D>(
5621 self.progress
5622 .as_ref()
5623 .map(<InstallationProgress as fidl::encoding::ValueTypeMarker>::borrow),
5624 encoder,
5625 offset + cur_offset,
5626 depth,
5627 )?;
5628
5629 _prev_end_offset = cur_offset + envelope_size;
5630
5631 Ok(())
5632 }
5633 }
5634
5635 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WaitToRebootData {
5636 #[inline(always)]
5637 fn new_empty() -> Self {
5638 Self::default()
5639 }
5640
5641 unsafe fn decode(
5642 &mut self,
5643 decoder: &mut fidl::encoding::Decoder<'_, D>,
5644 offset: usize,
5645 mut depth: fidl::encoding::Depth,
5646 ) -> fidl::Result<()> {
5647 decoder.debug_check_bounds::<Self>(offset);
5648 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5649 None => return Err(fidl::Error::NotNullable),
5650 Some(len) => len,
5651 };
5652 if len == 0 {
5654 return Ok(());
5655 };
5656 depth.increment()?;
5657 let envelope_size = 8;
5658 let bytes_len = len * envelope_size;
5659 let offset = decoder.out_of_line_offset(bytes_len)?;
5660 let mut _next_ordinal_to_read = 0;
5662 let mut next_offset = offset;
5663 let end_offset = offset + bytes_len;
5664 _next_ordinal_to_read += 1;
5665 if next_offset >= end_offset {
5666 return Ok(());
5667 }
5668
5669 while _next_ordinal_to_read < 1 {
5671 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5672 _next_ordinal_to_read += 1;
5673 next_offset += envelope_size;
5674 }
5675
5676 let next_out_of_line = decoder.next_out_of_line();
5677 let handles_before = decoder.remaining_handles();
5678 if let Some((inlined, num_bytes, num_handles)) =
5679 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5680 {
5681 let member_inline_size =
5682 <UpdateInfo as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5683 if inlined != (member_inline_size <= 4) {
5684 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5685 }
5686 let inner_offset;
5687 let mut inner_depth = depth.clone();
5688 if inlined {
5689 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5690 inner_offset = next_offset;
5691 } else {
5692 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5693 inner_depth.increment()?;
5694 }
5695 let val_ref = self.info.get_or_insert_with(|| fidl::new_empty!(UpdateInfo, D));
5696 fidl::decode!(UpdateInfo, D, val_ref, decoder, inner_offset, inner_depth)?;
5697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5698 {
5699 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5700 }
5701 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5702 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5703 }
5704 }
5705
5706 next_offset += envelope_size;
5707 _next_ordinal_to_read += 1;
5708 if next_offset >= end_offset {
5709 return Ok(());
5710 }
5711
5712 while _next_ordinal_to_read < 2 {
5714 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5715 _next_ordinal_to_read += 1;
5716 next_offset += envelope_size;
5717 }
5718
5719 let next_out_of_line = decoder.next_out_of_line();
5720 let handles_before = decoder.remaining_handles();
5721 if let Some((inlined, num_bytes, num_handles)) =
5722 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5723 {
5724 let member_inline_size =
5725 <InstallationProgress as fidl::encoding::TypeMarker>::inline_size(
5726 decoder.context,
5727 );
5728 if inlined != (member_inline_size <= 4) {
5729 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5730 }
5731 let inner_offset;
5732 let mut inner_depth = depth.clone();
5733 if inlined {
5734 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5735 inner_offset = next_offset;
5736 } else {
5737 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5738 inner_depth.increment()?;
5739 }
5740 let val_ref =
5741 self.progress.get_or_insert_with(|| fidl::new_empty!(InstallationProgress, D));
5742 fidl::decode!(
5743 InstallationProgress,
5744 D,
5745 val_ref,
5746 decoder,
5747 inner_offset,
5748 inner_depth
5749 )?;
5750 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5751 {
5752 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5753 }
5754 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5755 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5756 }
5757 }
5758
5759 next_offset += envelope_size;
5760
5761 while next_offset < end_offset {
5763 _next_ordinal_to_read += 1;
5764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5765 next_offset += envelope_size;
5766 }
5767
5768 Ok(())
5769 }
5770 }
5771
5772 impl fidl::encoding::ValueTypeMarker for State {
5773 type Borrowed<'a> = &'a Self;
5774 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5775 value
5776 }
5777 }
5778
5779 unsafe impl fidl::encoding::TypeMarker for State {
5780 type Owned = Self;
5781
5782 #[inline(always)]
5783 fn inline_align(_context: fidl::encoding::Context) -> usize {
5784 8
5785 }
5786
5787 #[inline(always)]
5788 fn inline_size(_context: fidl::encoding::Context) -> usize {
5789 16
5790 }
5791 }
5792
5793 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<State, D> for &State {
5794 #[inline]
5795 unsafe fn encode(
5796 self,
5797 encoder: &mut fidl::encoding::Encoder<'_, D>,
5798 offset: usize,
5799 _depth: fidl::encoding::Depth,
5800 ) -> fidl::Result<()> {
5801 encoder.debug_check_bounds::<State>(offset);
5802 encoder.write_num::<u64>(self.ordinal(), offset);
5803 match self {
5804 State::Prepare(ref val) => fidl::encoding::encode_in_envelope::<PrepareData, D>(
5805 <PrepareData as fidl::encoding::ValueTypeMarker>::borrow(val),
5806 encoder,
5807 offset + 8,
5808 _depth,
5809 ),
5810 State::Stage(ref val) => fidl::encoding::encode_in_envelope::<StageData, D>(
5811 <StageData as fidl::encoding::ValueTypeMarker>::borrow(val),
5812 encoder,
5813 offset + 8,
5814 _depth,
5815 ),
5816 State::Fetch(ref val) => fidl::encoding::encode_in_envelope::<FetchData, D>(
5817 <FetchData as fidl::encoding::ValueTypeMarker>::borrow(val),
5818 encoder,
5819 offset + 8,
5820 _depth,
5821 ),
5822 State::Commit(ref val) => fidl::encoding::encode_in_envelope::<CommitData, D>(
5823 <CommitData as fidl::encoding::ValueTypeMarker>::borrow(val),
5824 encoder,
5825 offset + 8,
5826 _depth,
5827 ),
5828 State::WaitToReboot(ref val) => {
5829 fidl::encoding::encode_in_envelope::<WaitToRebootData, D>(
5830 <WaitToRebootData as fidl::encoding::ValueTypeMarker>::borrow(val),
5831 encoder,
5832 offset + 8,
5833 _depth,
5834 )
5835 }
5836 State::Reboot(ref val) => fidl::encoding::encode_in_envelope::<RebootData, D>(
5837 <RebootData as fidl::encoding::ValueTypeMarker>::borrow(val),
5838 encoder,
5839 offset + 8,
5840 _depth,
5841 ),
5842 State::DeferReboot(ref val) => {
5843 fidl::encoding::encode_in_envelope::<DeferRebootData, D>(
5844 <DeferRebootData as fidl::encoding::ValueTypeMarker>::borrow(val),
5845 encoder,
5846 offset + 8,
5847 _depth,
5848 )
5849 }
5850 State::CompleteButNotActive(ref val) => {
5851 fidl::encoding::encode_in_envelope::<CompleteButNotActiveData, D>(
5852 <CompleteButNotActiveData as fidl::encoding::ValueTypeMarker>::borrow(val),
5853 encoder,
5854 offset + 8,
5855 _depth,
5856 )
5857 }
5858 State::FailPrepare(ref val) => {
5859 fidl::encoding::encode_in_envelope::<FailPrepareData, D>(
5860 <FailPrepareData as fidl::encoding::ValueTypeMarker>::borrow(val),
5861 encoder,
5862 offset + 8,
5863 _depth,
5864 )
5865 }
5866 State::FailStage(ref val) => {
5867 fidl::encoding::encode_in_envelope::<FailStageData, D>(
5868 <FailStageData as fidl::encoding::ValueTypeMarker>::borrow(val),
5869 encoder,
5870 offset + 8,
5871 _depth,
5872 )
5873 }
5874 State::FailFetch(ref val) => {
5875 fidl::encoding::encode_in_envelope::<FailFetchData, D>(
5876 <FailFetchData as fidl::encoding::ValueTypeMarker>::borrow(val),
5877 encoder,
5878 offset + 8,
5879 _depth,
5880 )
5881 }
5882 State::FailCommit(ref val) => {
5883 fidl::encoding::encode_in_envelope::<FailCommitData, D>(
5884 <FailCommitData as fidl::encoding::ValueTypeMarker>::borrow(val),
5885 encoder,
5886 offset + 8,
5887 _depth,
5888 )
5889 }
5890 State::Canceled(ref val) => fidl::encoding::encode_in_envelope::<CanceledData, D>(
5891 <CanceledData as fidl::encoding::ValueTypeMarker>::borrow(val),
5892 encoder,
5893 offset + 8,
5894 _depth,
5895 ),
5896 }
5897 }
5898 }
5899
5900 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for State {
5901 #[inline(always)]
5902 fn new_empty() -> Self {
5903 Self::Prepare(fidl::new_empty!(PrepareData, D))
5904 }
5905
5906 #[inline]
5907 unsafe fn decode(
5908 &mut self,
5909 decoder: &mut fidl::encoding::Decoder<'_, D>,
5910 offset: usize,
5911 mut depth: fidl::encoding::Depth,
5912 ) -> fidl::Result<()> {
5913 decoder.debug_check_bounds::<Self>(offset);
5914 #[allow(unused_variables)]
5915 let next_out_of_line = decoder.next_out_of_line();
5916 let handles_before = decoder.remaining_handles();
5917 let (ordinal, inlined, num_bytes, num_handles) =
5918 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5919
5920 let member_inline_size = match ordinal {
5921 1 => <PrepareData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5922 2 => <StageData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5923 3 => <FetchData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5924 4 => <CommitData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5925 5 => <WaitToRebootData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5926 6 => <RebootData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5927 7 => <DeferRebootData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5928 8 => <CompleteButNotActiveData as fidl::encoding::TypeMarker>::inline_size(
5929 decoder.context,
5930 ),
5931 9 => <FailPrepareData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5932 10 => <FailStageData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5933 11 => <FailFetchData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5934 12 => <FailCommitData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5935 13 => <CanceledData as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5936 _ => return Err(fidl::Error::UnknownUnionTag),
5937 };
5938
5939 if inlined != (member_inline_size <= 4) {
5940 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5941 }
5942 let _inner_offset;
5943 if inlined {
5944 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5945 _inner_offset = offset + 8;
5946 } else {
5947 depth.increment()?;
5948 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5949 }
5950 match ordinal {
5951 1 => {
5952 #[allow(irrefutable_let_patterns)]
5953 if let State::Prepare(_) = self {
5954 } else {
5956 *self = State::Prepare(fidl::new_empty!(PrepareData, D));
5958 }
5959 #[allow(irrefutable_let_patterns)]
5960 if let State::Prepare(ref mut val) = self {
5961 fidl::decode!(PrepareData, D, val, decoder, _inner_offset, depth)?;
5962 } else {
5963 unreachable!()
5964 }
5965 }
5966 2 => {
5967 #[allow(irrefutable_let_patterns)]
5968 if let State::Stage(_) = self {
5969 } else {
5971 *self = State::Stage(fidl::new_empty!(StageData, D));
5973 }
5974 #[allow(irrefutable_let_patterns)]
5975 if let State::Stage(ref mut val) = self {
5976 fidl::decode!(StageData, D, val, decoder, _inner_offset, depth)?;
5977 } else {
5978 unreachable!()
5979 }
5980 }
5981 3 => {
5982 #[allow(irrefutable_let_patterns)]
5983 if let State::Fetch(_) = self {
5984 } else {
5986 *self = State::Fetch(fidl::new_empty!(FetchData, D));
5988 }
5989 #[allow(irrefutable_let_patterns)]
5990 if let State::Fetch(ref mut val) = self {
5991 fidl::decode!(FetchData, D, val, decoder, _inner_offset, depth)?;
5992 } else {
5993 unreachable!()
5994 }
5995 }
5996 4 => {
5997 #[allow(irrefutable_let_patterns)]
5998 if let State::Commit(_) = self {
5999 } else {
6001 *self = State::Commit(fidl::new_empty!(CommitData, D));
6003 }
6004 #[allow(irrefutable_let_patterns)]
6005 if let State::Commit(ref mut val) = self {
6006 fidl::decode!(CommitData, D, val, decoder, _inner_offset, depth)?;
6007 } else {
6008 unreachable!()
6009 }
6010 }
6011 5 => {
6012 #[allow(irrefutable_let_patterns)]
6013 if let State::WaitToReboot(_) = self {
6014 } else {
6016 *self = State::WaitToReboot(fidl::new_empty!(WaitToRebootData, D));
6018 }
6019 #[allow(irrefutable_let_patterns)]
6020 if let State::WaitToReboot(ref mut val) = self {
6021 fidl::decode!(WaitToRebootData, D, val, decoder, _inner_offset, depth)?;
6022 } else {
6023 unreachable!()
6024 }
6025 }
6026 6 => {
6027 #[allow(irrefutable_let_patterns)]
6028 if let State::Reboot(_) = self {
6029 } else {
6031 *self = State::Reboot(fidl::new_empty!(RebootData, D));
6033 }
6034 #[allow(irrefutable_let_patterns)]
6035 if let State::Reboot(ref mut val) = self {
6036 fidl::decode!(RebootData, D, val, decoder, _inner_offset, depth)?;
6037 } else {
6038 unreachable!()
6039 }
6040 }
6041 7 => {
6042 #[allow(irrefutable_let_patterns)]
6043 if let State::DeferReboot(_) = self {
6044 } else {
6046 *self = State::DeferReboot(fidl::new_empty!(DeferRebootData, D));
6048 }
6049 #[allow(irrefutable_let_patterns)]
6050 if let State::DeferReboot(ref mut val) = self {
6051 fidl::decode!(DeferRebootData, D, val, decoder, _inner_offset, depth)?;
6052 } else {
6053 unreachable!()
6054 }
6055 }
6056 8 => {
6057 #[allow(irrefutable_let_patterns)]
6058 if let State::CompleteButNotActive(_) = self {
6059 } else {
6061 *self = State::CompleteButNotActive(fidl::new_empty!(
6063 CompleteButNotActiveData,
6064 D
6065 ));
6066 }
6067 #[allow(irrefutable_let_patterns)]
6068 if let State::CompleteButNotActive(ref mut val) = self {
6069 fidl::decode!(
6070 CompleteButNotActiveData,
6071 D,
6072 val,
6073 decoder,
6074 _inner_offset,
6075 depth
6076 )?;
6077 } else {
6078 unreachable!()
6079 }
6080 }
6081 9 => {
6082 #[allow(irrefutable_let_patterns)]
6083 if let State::FailPrepare(_) = self {
6084 } else {
6086 *self = State::FailPrepare(fidl::new_empty!(FailPrepareData, D));
6088 }
6089 #[allow(irrefutable_let_patterns)]
6090 if let State::FailPrepare(ref mut val) = self {
6091 fidl::decode!(FailPrepareData, D, val, decoder, _inner_offset, depth)?;
6092 } else {
6093 unreachable!()
6094 }
6095 }
6096 10 => {
6097 #[allow(irrefutable_let_patterns)]
6098 if let State::FailStage(_) = self {
6099 } else {
6101 *self = State::FailStage(fidl::new_empty!(FailStageData, D));
6103 }
6104 #[allow(irrefutable_let_patterns)]
6105 if let State::FailStage(ref mut val) = self {
6106 fidl::decode!(FailStageData, D, val, decoder, _inner_offset, depth)?;
6107 } else {
6108 unreachable!()
6109 }
6110 }
6111 11 => {
6112 #[allow(irrefutable_let_patterns)]
6113 if let State::FailFetch(_) = self {
6114 } else {
6116 *self = State::FailFetch(fidl::new_empty!(FailFetchData, D));
6118 }
6119 #[allow(irrefutable_let_patterns)]
6120 if let State::FailFetch(ref mut val) = self {
6121 fidl::decode!(FailFetchData, D, val, decoder, _inner_offset, depth)?;
6122 } else {
6123 unreachable!()
6124 }
6125 }
6126 12 => {
6127 #[allow(irrefutable_let_patterns)]
6128 if let State::FailCommit(_) = self {
6129 } else {
6131 *self = State::FailCommit(fidl::new_empty!(FailCommitData, D));
6133 }
6134 #[allow(irrefutable_let_patterns)]
6135 if let State::FailCommit(ref mut val) = self {
6136 fidl::decode!(FailCommitData, D, val, decoder, _inner_offset, depth)?;
6137 } else {
6138 unreachable!()
6139 }
6140 }
6141 13 => {
6142 #[allow(irrefutable_let_patterns)]
6143 if let State::Canceled(_) = self {
6144 } else {
6146 *self = State::Canceled(fidl::new_empty!(CanceledData, D));
6148 }
6149 #[allow(irrefutable_let_patterns)]
6150 if let State::Canceled(ref mut val) = self {
6151 fidl::decode!(CanceledData, D, val, decoder, _inner_offset, depth)?;
6152 } else {
6153 unreachable!()
6154 }
6155 }
6156 ordinal => panic!("unexpected ordinal {:?}", ordinal),
6157 }
6158 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
6159 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6160 }
6161 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6162 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6163 }
6164 Ok(())
6165 }
6166 }
6167}