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::<fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 44>, fidl::encoding::DefaultFuchsiaResourceDialect>(
152 self.vmo.as_mut().map(<fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 44> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
153 encoder, offset + cur_offset, depth
154 )?;
155
156 _prev_end_offset = cur_offset + envelope_size;
157
158 Ok(())
159 }
160 }
161
162 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Map {
163 #[inline(always)]
164 fn new_empty() -> Self {
165 Self::default()
166 }
167
168 unsafe fn decode(
169 &mut self,
170 decoder: &mut fidl::encoding::Decoder<
171 '_,
172 fidl::encoding::DefaultFuchsiaResourceDialect,
173 >,
174 offset: usize,
175 mut depth: fidl::encoding::Depth,
176 ) -> fidl::Result<()> {
177 decoder.debug_check_bounds::<Self>(offset);
178 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
179 None => return Err(fidl::Error::NotNullable),
180 Some(len) => len,
181 };
182 if len == 0 {
184 return Ok(());
185 };
186 depth.increment()?;
187 let envelope_size = 8;
188 let bytes_len = len * envelope_size;
189 let offset = decoder.out_of_line_offset(bytes_len)?;
190 let mut _next_ordinal_to_read = 0;
192 let mut next_offset = offset;
193 let end_offset = offset + bytes_len;
194 _next_ordinal_to_read += 1;
195 if next_offset >= end_offset {
196 return Ok(());
197 }
198
199 while _next_ordinal_to_read < 1 {
201 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
202 _next_ordinal_to_read += 1;
203 next_offset += envelope_size;
204 }
205
206 let next_out_of_line = decoder.next_out_of_line();
207 let handles_before = decoder.remaining_handles();
208 if let Some((inlined, num_bytes, num_handles)) =
209 fidl::encoding::decode_envelope_header(decoder, next_offset)?
210 {
211 let member_inline_size =
212 <MapSchema as fidl::encoding::TypeMarker>::inline_size(decoder.context);
213 if inlined != (member_inline_size <= 4) {
214 return Err(fidl::Error::InvalidInlineBitInEnvelope);
215 }
216 let inner_offset;
217 let mut inner_depth = depth.clone();
218 if inlined {
219 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
220 inner_offset = next_offset;
221 } else {
222 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
223 inner_depth.increment()?;
224 }
225 let val_ref = self.schema.get_or_insert_with(|| {
226 fidl::new_empty!(MapSchema, fidl::encoding::DefaultFuchsiaResourceDialect)
227 });
228 fidl::decode!(
229 MapSchema,
230 fidl::encoding::DefaultFuchsiaResourceDialect,
231 val_ref,
232 decoder,
233 inner_offset,
234 inner_depth
235 )?;
236 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
237 {
238 return Err(fidl::Error::InvalidNumBytesInEnvelope);
239 }
240 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
241 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
242 }
243 }
244
245 next_offset += envelope_size;
246 _next_ordinal_to_read += 1;
247 if next_offset >= end_offset {
248 return Ok(());
249 }
250
251 while _next_ordinal_to_read < 2 {
253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
254 _next_ordinal_to_read += 1;
255 next_offset += envelope_size;
256 }
257
258 let next_out_of_line = decoder.next_out_of_line();
259 let handles_before = decoder.remaining_handles();
260 if let Some((inlined, num_bytes, num_handles)) =
261 fidl::encoding::decode_envelope_header(decoder, next_offset)?
262 {
263 let member_inline_size = <fidl::encoding::HandleType<
264 fidl::Vmo,
265 { fidl::ObjectType::VMO.into_raw() },
266 44,
267 > as fidl::encoding::TypeMarker>::inline_size(
268 decoder.context
269 );
270 if inlined != (member_inline_size <= 4) {
271 return Err(fidl::Error::InvalidInlineBitInEnvelope);
272 }
273 let inner_offset;
274 let mut inner_depth = depth.clone();
275 if inlined {
276 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
277 inner_offset = next_offset;
278 } else {
279 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
280 inner_depth.increment()?;
281 }
282 let val_ref =
283 self.vmo.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 44>, fidl::encoding::DefaultFuchsiaResourceDialect));
284 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 44>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
285 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
286 {
287 return Err(fidl::Error::InvalidNumBytesInEnvelope);
288 }
289 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
290 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
291 }
292 }
293
294 next_offset += envelope_size;
295
296 while next_offset < end_offset {
298 _next_ordinal_to_read += 1;
299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
300 next_offset += envelope_size;
301 }
302
303 Ok(())
304 }
305 }
306
307 impl VerifiedProgram {
308 #[inline(always)]
309 fn max_ordinal_present(&self) -> u64 {
310 if let Some(_) = self.maps {
311 return 3;
312 }
313 if let Some(_) = self.struct_access_instructions {
314 return 2;
315 }
316 if let Some(_) = self.code {
317 return 1;
318 }
319 0
320 }
321 }
322
323 impl fidl::encoding::ResourceTypeMarker for VerifiedProgram {
324 type Borrowed<'a> = &'a mut Self;
325 fn take_or_borrow<'a>(
326 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
327 ) -> Self::Borrowed<'a> {
328 value
329 }
330 }
331
332 unsafe impl fidl::encoding::TypeMarker for VerifiedProgram {
333 type Owned = Self;
334
335 #[inline(always)]
336 fn inline_align(_context: fidl::encoding::Context) -> usize {
337 8
338 }
339
340 #[inline(always)]
341 fn inline_size(_context: fidl::encoding::Context) -> usize {
342 16
343 }
344 }
345
346 unsafe impl
347 fidl::encoding::Encode<VerifiedProgram, fidl::encoding::DefaultFuchsiaResourceDialect>
348 for &mut VerifiedProgram
349 {
350 unsafe fn encode(
351 self,
352 encoder: &mut fidl::encoding::Encoder<
353 '_,
354 fidl::encoding::DefaultFuchsiaResourceDialect,
355 >,
356 offset: usize,
357 mut depth: fidl::encoding::Depth,
358 ) -> fidl::Result<()> {
359 encoder.debug_check_bounds::<VerifiedProgram>(offset);
360 let max_ordinal: u64 = self.max_ordinal_present();
362 encoder.write_num(max_ordinal, offset);
363 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
364 if max_ordinal == 0 {
366 return Ok(());
367 }
368 depth.increment()?;
369 let envelope_size = 8;
370 let bytes_len = max_ordinal as usize * envelope_size;
371 #[allow(unused_variables)]
372 let offset = encoder.out_of_line_offset(bytes_len);
373 let mut _prev_end_offset: usize = 0;
374 if 1 > max_ordinal {
375 return Ok(());
376 }
377
378 let cur_offset: usize = (1 - 1) * envelope_size;
381
382 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
384
385 fidl::encoding::encode_in_envelope_optional::<
390 fidl::encoding::Vector<u64, 4096>,
391 fidl::encoding::DefaultFuchsiaResourceDialect,
392 >(
393 self.code.as_ref().map(
394 <fidl::encoding::Vector<u64, 4096> as fidl::encoding::ValueTypeMarker>::borrow,
395 ),
396 encoder,
397 offset + cur_offset,
398 depth,
399 )?;
400
401 _prev_end_offset = cur_offset + envelope_size;
402 if 2 > max_ordinal {
403 return Ok(());
404 }
405
406 let cur_offset: usize = (2 - 1) * envelope_size;
409
410 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
412
413 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<StructAccess, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
418 self.struct_access_instructions.as_ref().map(<fidl::encoding::Vector<StructAccess, 4096> as fidl::encoding::ValueTypeMarker>::borrow),
419 encoder, offset + cur_offset, depth
420 )?;
421
422 _prev_end_offset = cur_offset + envelope_size;
423 if 3 > max_ordinal {
424 return Ok(());
425 }
426
427 let cur_offset: usize = (3 - 1) * envelope_size;
430
431 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
433
434 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Map, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect>(
439 self.maps.as_mut().map(<fidl::encoding::Vector<Map, 4096> as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
440 encoder, offset + cur_offset, depth
441 )?;
442
443 _prev_end_offset = cur_offset + envelope_size;
444
445 Ok(())
446 }
447 }
448
449 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
450 for VerifiedProgram
451 {
452 #[inline(always)]
453 fn new_empty() -> Self {
454 Self::default()
455 }
456
457 unsafe fn decode(
458 &mut self,
459 decoder: &mut fidl::encoding::Decoder<
460 '_,
461 fidl::encoding::DefaultFuchsiaResourceDialect,
462 >,
463 offset: usize,
464 mut depth: fidl::encoding::Depth,
465 ) -> fidl::Result<()> {
466 decoder.debug_check_bounds::<Self>(offset);
467 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
468 None => return Err(fidl::Error::NotNullable),
469 Some(len) => len,
470 };
471 if len == 0 {
473 return Ok(());
474 };
475 depth.increment()?;
476 let envelope_size = 8;
477 let bytes_len = len * envelope_size;
478 let offset = decoder.out_of_line_offset(bytes_len)?;
479 let mut _next_ordinal_to_read = 0;
481 let mut next_offset = offset;
482 let end_offset = offset + bytes_len;
483 _next_ordinal_to_read += 1;
484 if next_offset >= end_offset {
485 return Ok(());
486 }
487
488 while _next_ordinal_to_read < 1 {
490 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
491 _next_ordinal_to_read += 1;
492 next_offset += envelope_size;
493 }
494
495 let next_out_of_line = decoder.next_out_of_line();
496 let handles_before = decoder.remaining_handles();
497 if let Some((inlined, num_bytes, num_handles)) =
498 fidl::encoding::decode_envelope_header(decoder, next_offset)?
499 {
500 let member_inline_size =
501 <fidl::encoding::Vector<u64, 4096> as fidl::encoding::TypeMarker>::inline_size(
502 decoder.context,
503 );
504 if inlined != (member_inline_size <= 4) {
505 return Err(fidl::Error::InvalidInlineBitInEnvelope);
506 }
507 let inner_offset;
508 let mut inner_depth = depth.clone();
509 if inlined {
510 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
511 inner_offset = next_offset;
512 } else {
513 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
514 inner_depth.increment()?;
515 }
516 let val_ref =
517 self.code.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u64, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect));
518 fidl::decode!(fidl::encoding::Vector<u64, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
519 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
520 {
521 return Err(fidl::Error::InvalidNumBytesInEnvelope);
522 }
523 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
524 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
525 }
526 }
527
528 next_offset += envelope_size;
529 _next_ordinal_to_read += 1;
530 if next_offset >= end_offset {
531 return Ok(());
532 }
533
534 while _next_ordinal_to_read < 2 {
536 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
537 _next_ordinal_to_read += 1;
538 next_offset += envelope_size;
539 }
540
541 let next_out_of_line = decoder.next_out_of_line();
542 let handles_before = decoder.remaining_handles();
543 if let Some((inlined, num_bytes, num_handles)) =
544 fidl::encoding::decode_envelope_header(decoder, next_offset)?
545 {
546 let member_inline_size = <fidl::encoding::Vector<StructAccess, 4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
547 if inlined != (member_inline_size <= 4) {
548 return Err(fidl::Error::InvalidInlineBitInEnvelope);
549 }
550 let inner_offset;
551 let mut inner_depth = depth.clone();
552 if inlined {
553 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
554 inner_offset = next_offset;
555 } else {
556 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
557 inner_depth.increment()?;
558 }
559 let val_ref =
560 self.struct_access_instructions.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<StructAccess, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect));
561 fidl::decode!(fidl::encoding::Vector<StructAccess, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
562 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
563 {
564 return Err(fidl::Error::InvalidNumBytesInEnvelope);
565 }
566 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
567 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
568 }
569 }
570
571 next_offset += envelope_size;
572 _next_ordinal_to_read += 1;
573 if next_offset >= end_offset {
574 return Ok(());
575 }
576
577 while _next_ordinal_to_read < 3 {
579 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
580 _next_ordinal_to_read += 1;
581 next_offset += envelope_size;
582 }
583
584 let next_out_of_line = decoder.next_out_of_line();
585 let handles_before = decoder.remaining_handles();
586 if let Some((inlined, num_bytes, num_handles)) =
587 fidl::encoding::decode_envelope_header(decoder, next_offset)?
588 {
589 let member_inline_size =
590 <fidl::encoding::Vector<Map, 4096> as fidl::encoding::TypeMarker>::inline_size(
591 decoder.context,
592 );
593 if inlined != (member_inline_size <= 4) {
594 return Err(fidl::Error::InvalidInlineBitInEnvelope);
595 }
596 let inner_offset;
597 let mut inner_depth = depth.clone();
598 if inlined {
599 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
600 inner_offset = next_offset;
601 } else {
602 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
603 inner_depth.increment()?;
604 }
605 let val_ref =
606 self.maps.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<Map, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect));
607 fidl::decode!(fidl::encoding::Vector<Map, 4096>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
608 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
609 {
610 return Err(fidl::Error::InvalidNumBytesInEnvelope);
611 }
612 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
613 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
614 }
615 }
616
617 next_offset += envelope_size;
618
619 while next_offset < end_offset {
621 _next_ordinal_to_read += 1;
622 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
623 next_offset += envelope_size;
624 }
625
626 Ok(())
627 }
628 }
629}