1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_ebpf__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Default, PartialEq)]
16pub struct Map {
17 pub schema: Option<MapSchema>,
19 pub vmo: Option<fidl::Vmo>,
22 #[doc(hidden)]
23 pub __source_breaking: fidl::marker::SourceBreaking,
24}
25
26impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Map {}
27
28#[derive(Debug, Default, PartialEq)]
30pub struct VerifiedProgram {
31 pub code: Option<Vec<u64>>,
33 pub struct_access_instructions: Option<Vec<StructAccess>>,
35 pub maps: Option<Vec<Map>>,
38 #[doc(hidden)]
39 pub __source_breaking: fidl::marker::SourceBreaking,
40}
41
42impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for VerifiedProgram {}
43
44mod internal {
45 use super::*;
46
47 impl Map {
48 #[inline(always)]
49 fn max_ordinal_present(&self) -> u64 {
50 if let Some(_) = self.vmo {
51 return 2;
52 }
53 if let Some(_) = self.schema {
54 return 1;
55 }
56 0
57 }
58 }
59
60 impl fidl::encoding::ResourceTypeMarker for Map {
61 type Borrowed<'a> = &'a mut Self;
62 fn take_or_borrow<'a>(
63 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
64 ) -> Self::Borrowed<'a> {
65 value
66 }
67 }
68
69 unsafe impl fidl::encoding::TypeMarker for Map {
70 type Owned = Self;
71
72 #[inline(always)]
73 fn inline_align(_context: fidl::encoding::Context) -> usize {
74 8
75 }
76
77 #[inline(always)]
78 fn inline_size(_context: fidl::encoding::Context) -> usize {
79 16
80 }
81 }
82
83 unsafe impl fidl::encoding::Encode<Map, fidl::encoding::DefaultFuchsiaResourceDialect>
84 for &mut Map
85 {
86 unsafe fn encode(
87 self,
88 encoder: &mut fidl::encoding::Encoder<
89 '_,
90 fidl::encoding::DefaultFuchsiaResourceDialect,
91 >,
92 offset: usize,
93 mut depth: fidl::encoding::Depth,
94 ) -> fidl::Result<()> {
95 encoder.debug_check_bounds::<Map>(offset);
96 let max_ordinal: u64 = self.max_ordinal_present();
98 encoder.write_num(max_ordinal, offset);
99 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
100 if max_ordinal == 0 {
102 return Ok(());
103 }
104 depth.increment()?;
105 let envelope_size = 8;
106 let bytes_len = max_ordinal as usize * envelope_size;
107 #[allow(unused_variables)]
108 let offset = encoder.out_of_line_offset(bytes_len);
109 let mut _prev_end_offset: usize = 0;
110 if 1 > max_ordinal {
111 return Ok(());
112 }
113
114 let cur_offset: usize = (1 - 1) * envelope_size;
117
118 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
120
121 fidl::encoding::encode_in_envelope_optional::<
126 MapSchema,
127 fidl::encoding::DefaultFuchsiaResourceDialect,
128 >(
129 self.schema.as_ref().map(<MapSchema as fidl::encoding::ValueTypeMarker>::borrow),
130 encoder,
131 offset + cur_offset,
132 depth,
133 )?;
134
135 _prev_end_offset = cur_offset + envelope_size;
136 if 2 > max_ordinal {
137 return Ok(());
138 }
139
140 let cur_offset: usize = (2 - 1) * envelope_size;
143
144 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
146
147 fidl::encoding::encode_in_envelope_optional::<
152 fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 20524>,
153 fidl::encoding::DefaultFuchsiaResourceDialect,
154 >(
155 self.vmo.as_mut().map(
156 <fidl::encoding::HandleType<
157 fidl::Vmo,
158 { fidl::ObjectType::VMO.into_raw() },
159 20524,
160 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
161 ),
162 encoder,
163 offset + cur_offset,
164 depth,
165 )?;
166
167 _prev_end_offset = cur_offset + envelope_size;
168
169 Ok(())
170 }
171 }
172
173 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Map {
174 #[inline(always)]
175 fn new_empty() -> Self {
176 Self::default()
177 }
178
179 unsafe fn decode(
180 &mut self,
181 decoder: &mut fidl::encoding::Decoder<
182 '_,
183 fidl::encoding::DefaultFuchsiaResourceDialect,
184 >,
185 offset: usize,
186 mut depth: fidl::encoding::Depth,
187 ) -> fidl::Result<()> {
188 decoder.debug_check_bounds::<Self>(offset);
189 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
190 None => return Err(fidl::Error::NotNullable),
191 Some(len) => len,
192 };
193 if len == 0 {
195 return Ok(());
196 };
197 depth.increment()?;
198 let envelope_size = 8;
199 let bytes_len = len * envelope_size;
200 let offset = decoder.out_of_line_offset(bytes_len)?;
201 let mut _next_ordinal_to_read = 0;
203 let mut next_offset = offset;
204 let end_offset = offset + bytes_len;
205 _next_ordinal_to_read += 1;
206 if next_offset >= end_offset {
207 return Ok(());
208 }
209
210 while _next_ordinal_to_read < 1 {
212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
213 _next_ordinal_to_read += 1;
214 next_offset += envelope_size;
215 }
216
217 let next_out_of_line = decoder.next_out_of_line();
218 let handles_before = decoder.remaining_handles();
219 if let Some((inlined, num_bytes, num_handles)) =
220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
221 {
222 let member_inline_size =
223 <MapSchema as fidl::encoding::TypeMarker>::inline_size(decoder.context);
224 if inlined != (member_inline_size <= 4) {
225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
226 }
227 let inner_offset;
228 let mut inner_depth = depth.clone();
229 if inlined {
230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
231 inner_offset = next_offset;
232 } else {
233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
234 inner_depth.increment()?;
235 }
236 let val_ref = self.schema.get_or_insert_with(|| {
237 fidl::new_empty!(MapSchema, fidl::encoding::DefaultFuchsiaResourceDialect)
238 });
239 fidl::decode!(
240 MapSchema,
241 fidl::encoding::DefaultFuchsiaResourceDialect,
242 val_ref,
243 decoder,
244 inner_offset,
245 inner_depth
246 )?;
247 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
248 {
249 return Err(fidl::Error::InvalidNumBytesInEnvelope);
250 }
251 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
252 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
253 }
254 }
255
256 next_offset += envelope_size;
257 _next_ordinal_to_read += 1;
258 if next_offset >= end_offset {
259 return Ok(());
260 }
261
262 while _next_ordinal_to_read < 2 {
264 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
265 _next_ordinal_to_read += 1;
266 next_offset += envelope_size;
267 }
268
269 let next_out_of_line = decoder.next_out_of_line();
270 let handles_before = decoder.remaining_handles();
271 if let Some((inlined, num_bytes, num_handles)) =
272 fidl::encoding::decode_envelope_header(decoder, next_offset)?
273 {
274 let member_inline_size = <fidl::encoding::HandleType<
275 fidl::Vmo,
276 { fidl::ObjectType::VMO.into_raw() },
277 20524,
278 > as fidl::encoding::TypeMarker>::inline_size(
279 decoder.context
280 );
281 if inlined != (member_inline_size <= 4) {
282 return Err(fidl::Error::InvalidInlineBitInEnvelope);
283 }
284 let inner_offset;
285 let mut inner_depth = depth.clone();
286 if inlined {
287 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
288 inner_offset = next_offset;
289 } else {
290 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
291 inner_depth.increment()?;
292 }
293 let val_ref =
294 self.vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 20524>, fidl::encoding::DefaultFuchsiaResourceDialect));
295 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 20524>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
296 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
297 {
298 return Err(fidl::Error::InvalidNumBytesInEnvelope);
299 }
300 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
301 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
302 }
303 }
304
305 next_offset += envelope_size;
306
307 while next_offset < end_offset {
309 _next_ordinal_to_read += 1;
310 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
311 next_offset += envelope_size;
312 }
313
314 Ok(())
315 }
316 }
317
318 impl VerifiedProgram {
319 #[inline(always)]
320 fn max_ordinal_present(&self) -> u64 {
321 if let Some(_) = self.maps {
322 return 3;
323 }
324 if let Some(_) = self.struct_access_instructions {
325 return 2;
326 }
327 if let Some(_) = self.code {
328 return 1;
329 }
330 0
331 }
332 }
333
334 impl fidl::encoding::ResourceTypeMarker for VerifiedProgram {
335 type Borrowed<'a> = &'a mut Self;
336 fn take_or_borrow<'a>(
337 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
338 ) -> Self::Borrowed<'a> {
339 value
340 }
341 }
342
343 unsafe impl fidl::encoding::TypeMarker for VerifiedProgram {
344 type Owned = Self;
345
346 #[inline(always)]
347 fn inline_align(_context: fidl::encoding::Context) -> usize {
348 8
349 }
350
351 #[inline(always)]
352 fn inline_size(_context: fidl::encoding::Context) -> usize {
353 16
354 }
355 }
356
357 unsafe impl
358 fidl::encoding::Encode<VerifiedProgram, fidl::encoding::DefaultFuchsiaResourceDialect>
359 for &mut VerifiedProgram
360 {
361 unsafe fn encode(
362 self,
363 encoder: &mut fidl::encoding::Encoder<
364 '_,
365 fidl::encoding::DefaultFuchsiaResourceDialect,
366 >,
367 offset: usize,
368 mut depth: fidl::encoding::Depth,
369 ) -> fidl::Result<()> {
370 encoder.debug_check_bounds::<VerifiedProgram>(offset);
371 let max_ordinal: u64 = self.max_ordinal_present();
373 encoder.write_num(max_ordinal, offset);
374 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
375 if max_ordinal == 0 {
377 return Ok(());
378 }
379 depth.increment()?;
380 let envelope_size = 8;
381 let bytes_len = max_ordinal as usize * envelope_size;
382 #[allow(unused_variables)]
383 let offset = encoder.out_of_line_offset(bytes_len);
384 let mut _prev_end_offset: usize = 0;
385 if 1 > max_ordinal {
386 return Ok(());
387 }
388
389 let cur_offset: usize = (1 - 1) * envelope_size;
392
393 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
395
396 fidl::encoding::encode_in_envelope_optional::<
401 fidl::encoding::Vector<u64, 4096>,
402 fidl::encoding::DefaultFuchsiaResourceDialect,
403 >(
404 self.code.as_ref().map(
405 <fidl::encoding::Vector<u64, 4096> as fidl::encoding::ValueTypeMarker>::borrow,
406 ),
407 encoder,
408 offset + cur_offset,
409 depth,
410 )?;
411
412 _prev_end_offset = cur_offset + envelope_size;
413 if 2 > max_ordinal {
414 return Ok(());
415 }
416
417 let cur_offset: usize = (2 - 1) * envelope_size;
420
421 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
423
424 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<StructAccess, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
429 self.struct_access_instructions.as_ref().map(<fidl::encoding::Vector<StructAccess, 4096> as fidl::encoding::ValueTypeMarker>::borrow),
430 encoder, offset + cur_offset, depth
431 )?;
432
433 _prev_end_offset = cur_offset + envelope_size;
434 if 3 > max_ordinal {
435 return Ok(());
436 }
437
438 let cur_offset: usize = (3 - 1) * envelope_size;
441
442 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
444
445 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Map, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
450 self.maps.as_mut().map(<fidl::encoding::Vector<Map, 4096> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
451 encoder, offset + cur_offset, depth
452 )?;
453
454 _prev_end_offset = cur_offset + envelope_size;
455
456 Ok(())
457 }
458 }
459
460 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
461 for VerifiedProgram
462 {
463 #[inline(always)]
464 fn new_empty() -> Self {
465 Self::default()
466 }
467
468 unsafe fn decode(
469 &mut self,
470 decoder: &mut fidl::encoding::Decoder<
471 '_,
472 fidl::encoding::DefaultFuchsiaResourceDialect,
473 >,
474 offset: usize,
475 mut depth: fidl::encoding::Depth,
476 ) -> fidl::Result<()> {
477 decoder.debug_check_bounds::<Self>(offset);
478 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
479 None => return Err(fidl::Error::NotNullable),
480 Some(len) => len,
481 };
482 if len == 0 {
484 return Ok(());
485 };
486 depth.increment()?;
487 let envelope_size = 8;
488 let bytes_len = len * envelope_size;
489 let offset = decoder.out_of_line_offset(bytes_len)?;
490 let mut _next_ordinal_to_read = 0;
492 let mut next_offset = offset;
493 let end_offset = offset + bytes_len;
494 _next_ordinal_to_read += 1;
495 if next_offset >= end_offset {
496 return Ok(());
497 }
498
499 while _next_ordinal_to_read < 1 {
501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
502 _next_ordinal_to_read += 1;
503 next_offset += envelope_size;
504 }
505
506 let next_out_of_line = decoder.next_out_of_line();
507 let handles_before = decoder.remaining_handles();
508 if let Some((inlined, num_bytes, num_handles)) =
509 fidl::encoding::decode_envelope_header(decoder, next_offset)?
510 {
511 let member_inline_size =
512 <fidl::encoding::Vector<u64, 4096> as fidl::encoding::TypeMarker>::inline_size(
513 decoder.context,
514 );
515 if inlined != (member_inline_size <= 4) {
516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
517 }
518 let inner_offset;
519 let mut inner_depth = depth.clone();
520 if inlined {
521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
522 inner_offset = next_offset;
523 } else {
524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
525 inner_depth.increment()?;
526 }
527 let val_ref =
528 self.code.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u64, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect));
529 fidl::decode!(fidl::encoding::Vector<u64, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
530 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
531 {
532 return Err(fidl::Error::InvalidNumBytesInEnvelope);
533 }
534 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
535 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
536 }
537 }
538
539 next_offset += envelope_size;
540 _next_ordinal_to_read += 1;
541 if next_offset >= end_offset {
542 return Ok(());
543 }
544
545 while _next_ordinal_to_read < 2 {
547 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
548 _next_ordinal_to_read += 1;
549 next_offset += envelope_size;
550 }
551
552 let next_out_of_line = decoder.next_out_of_line();
553 let handles_before = decoder.remaining_handles();
554 if let Some((inlined, num_bytes, num_handles)) =
555 fidl::encoding::decode_envelope_header(decoder, next_offset)?
556 {
557 let member_inline_size = <fidl::encoding::Vector<StructAccess, 4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
558 if inlined != (member_inline_size <= 4) {
559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
560 }
561 let inner_offset;
562 let mut inner_depth = depth.clone();
563 if inlined {
564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
565 inner_offset = next_offset;
566 } else {
567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
568 inner_depth.increment()?;
569 }
570 let val_ref =
571 self.struct_access_instructions.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<StructAccess, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect));
572 fidl::decode!(fidl::encoding::Vector<StructAccess, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
573 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
574 {
575 return Err(fidl::Error::InvalidNumBytesInEnvelope);
576 }
577 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
578 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
579 }
580 }
581
582 next_offset += envelope_size;
583 _next_ordinal_to_read += 1;
584 if next_offset >= end_offset {
585 return Ok(());
586 }
587
588 while _next_ordinal_to_read < 3 {
590 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
591 _next_ordinal_to_read += 1;
592 next_offset += envelope_size;
593 }
594
595 let next_out_of_line = decoder.next_out_of_line();
596 let handles_before = decoder.remaining_handles();
597 if let Some((inlined, num_bytes, num_handles)) =
598 fidl::encoding::decode_envelope_header(decoder, next_offset)?
599 {
600 let member_inline_size =
601 <fidl::encoding::Vector<Map, 4096> as fidl::encoding::TypeMarker>::inline_size(
602 decoder.context,
603 );
604 if inlined != (member_inline_size <= 4) {
605 return Err(fidl::Error::InvalidInlineBitInEnvelope);
606 }
607 let inner_offset;
608 let mut inner_depth = depth.clone();
609 if inlined {
610 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
611 inner_offset = next_offset;
612 } else {
613 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
614 inner_depth.increment()?;
615 }
616 let val_ref =
617 self.maps.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Map, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect));
618 fidl::decode!(fidl::encoding::Vector<Map, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
619 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
620 {
621 return Err(fidl::Error::InvalidNumBytesInEnvelope);
622 }
623 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
624 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
625 }
626 }
627
628 next_offset += envelope_size;
629
630 while next_offset < end_offset {
632 _next_ordinal_to_read += 1;
633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
634 next_offset += envelope_size;
635 }
636
637 Ok(())
638 }
639 }
640}