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 Key = String;
12
13pub type Value = Vec<u8>;
14
15#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
17pub enum ReadError {
18 Unknown,
19 NotFound,
20 #[doc(hidden)]
21 __SourceBreaking {
22 unknown_ordinal: u32,
23 },
24}
25
26#[macro_export]
28macro_rules! ReadErrorUnknown {
29 () => {
30 _
31 };
32}
33
34impl ReadError {
35 #[inline]
36 pub fn from_primitive(prim: u32) -> Option<Self> {
37 match prim {
38 1 => Some(Self::Unknown),
39 2 => Some(Self::NotFound),
40 _ => None,
41 }
42 }
43
44 #[inline]
45 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
46 match prim {
47 1 => Self::Unknown,
48 2 => Self::NotFound,
49 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
50 }
51 }
52
53 #[inline]
54 pub fn unknown() -> Self {
55 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
56 }
57
58 #[inline]
59 pub const fn into_primitive(self) -> u32 {
60 match self {
61 Self::Unknown => 1,
62 Self::NotFound => 2,
63 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
64 }
65 }
66
67 #[inline]
68 pub fn is_unknown(&self) -> bool {
69 match self {
70 Self::__SourceBreaking { unknown_ordinal: _ } => true,
71 _ => false,
72 }
73 }
74}
75
76#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
78pub enum WriteError {
79 Unknown,
80 InvalidKey,
81 InvalidValue,
82 AlreadyExists,
83 #[doc(hidden)]
84 __SourceBreaking {
85 unknown_ordinal: u32,
86 },
87}
88
89#[macro_export]
91macro_rules! WriteErrorUnknown {
92 () => {
93 _
94 };
95}
96
97impl WriteError {
98 #[inline]
99 pub fn from_primitive(prim: u32) -> Option<Self> {
100 match prim {
101 1 => Some(Self::Unknown),
102 2 => Some(Self::InvalidKey),
103 3 => Some(Self::InvalidValue),
104 4 => Some(Self::AlreadyExists),
105 _ => None,
106 }
107 }
108
109 #[inline]
110 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
111 match prim {
112 1 => Self::Unknown,
113 2 => Self::InvalidKey,
114 3 => Self::InvalidValue,
115 4 => Self::AlreadyExists,
116 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
117 }
118 }
119
120 #[inline]
121 pub fn unknown() -> Self {
122 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
123 }
124
125 #[inline]
126 pub const fn into_primitive(self) -> u32 {
127 match self {
128 Self::Unknown => 1,
129 Self::InvalidKey => 2,
130 Self::InvalidValue => 3,
131 Self::AlreadyExists => 4,
132 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
133 }
134 }
135
136 #[inline]
137 pub fn is_unknown(&self) -> bool {
138 match self {
139 Self::__SourceBreaking { unknown_ordinal: _ } => true,
140 _ => false,
141 }
142 }
143}
144
145#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
149pub struct Item {
150 pub key: String,
151 pub value: Vec<u8>,
152}
153
154impl fidl::Persistable for Item {}
155
156#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
157pub struct StoreReadItemRequest {
158 pub key: String,
159}
160
161impl fidl::Persistable for StoreReadItemRequest {}
162
163#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
164pub struct StoreWriteItemRequest {
165 pub attempt: Item,
166}
167
168impl fidl::Persistable for StoreWriteItemRequest {}
169
170pub mod store_ordinals {
171 pub const WRITE_ITEM: u64 = 0x4dd6bb122b2022e9;
172 pub const READ_ITEM: u64 = 0x67a246d566d1139c;
173}
174
175mod internal {
176 use super::*;
177 unsafe impl fidl::encoding::TypeMarker for ReadError {
178 type Owned = Self;
179
180 #[inline(always)]
181 fn inline_align(_context: fidl::encoding::Context) -> usize {
182 std::mem::align_of::<u32>()
183 }
184
185 #[inline(always)]
186 fn inline_size(_context: fidl::encoding::Context) -> usize {
187 std::mem::size_of::<u32>()
188 }
189
190 #[inline(always)]
191 fn encode_is_copy() -> bool {
192 false
193 }
194
195 #[inline(always)]
196 fn decode_is_copy() -> bool {
197 false
198 }
199 }
200
201 impl fidl::encoding::ValueTypeMarker for ReadError {
202 type Borrowed<'a> = Self;
203 #[inline(always)]
204 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
205 *value
206 }
207 }
208
209 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReadError {
210 #[inline]
211 unsafe fn encode(
212 self,
213 encoder: &mut fidl::encoding::Encoder<'_, D>,
214 offset: usize,
215 _depth: fidl::encoding::Depth,
216 ) -> fidl::Result<()> {
217 encoder.debug_check_bounds::<Self>(offset);
218 encoder.write_num(self.into_primitive(), offset);
219 Ok(())
220 }
221 }
222
223 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReadError {
224 #[inline(always)]
225 fn new_empty() -> Self {
226 Self::unknown()
227 }
228
229 #[inline]
230 unsafe fn decode(
231 &mut self,
232 decoder: &mut fidl::encoding::Decoder<'_, D>,
233 offset: usize,
234 _depth: fidl::encoding::Depth,
235 ) -> fidl::Result<()> {
236 decoder.debug_check_bounds::<Self>(offset);
237 let prim = decoder.read_num::<u32>(offset);
238
239 *self = Self::from_primitive_allow_unknown(prim);
240 Ok(())
241 }
242 }
243 unsafe impl fidl::encoding::TypeMarker for WriteError {
244 type Owned = Self;
245
246 #[inline(always)]
247 fn inline_align(_context: fidl::encoding::Context) -> usize {
248 std::mem::align_of::<u32>()
249 }
250
251 #[inline(always)]
252 fn inline_size(_context: fidl::encoding::Context) -> usize {
253 std::mem::size_of::<u32>()
254 }
255
256 #[inline(always)]
257 fn encode_is_copy() -> bool {
258 false
259 }
260
261 #[inline(always)]
262 fn decode_is_copy() -> bool {
263 false
264 }
265 }
266
267 impl fidl::encoding::ValueTypeMarker for WriteError {
268 type Borrowed<'a> = Self;
269 #[inline(always)]
270 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
271 *value
272 }
273 }
274
275 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WriteError {
276 #[inline]
277 unsafe fn encode(
278 self,
279 encoder: &mut fidl::encoding::Encoder<'_, D>,
280 offset: usize,
281 _depth: fidl::encoding::Depth,
282 ) -> fidl::Result<()> {
283 encoder.debug_check_bounds::<Self>(offset);
284 encoder.write_num(self.into_primitive(), offset);
285 Ok(())
286 }
287 }
288
289 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WriteError {
290 #[inline(always)]
291 fn new_empty() -> Self {
292 Self::unknown()
293 }
294
295 #[inline]
296 unsafe fn decode(
297 &mut self,
298 decoder: &mut fidl::encoding::Decoder<'_, D>,
299 offset: usize,
300 _depth: fidl::encoding::Depth,
301 ) -> fidl::Result<()> {
302 decoder.debug_check_bounds::<Self>(offset);
303 let prim = decoder.read_num::<u32>(offset);
304
305 *self = Self::from_primitive_allow_unknown(prim);
306 Ok(())
307 }
308 }
309
310 impl fidl::encoding::ValueTypeMarker for Item {
311 type Borrowed<'a> = &'a Self;
312 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
313 value
314 }
315 }
316
317 unsafe impl fidl::encoding::TypeMarker for Item {
318 type Owned = Self;
319
320 #[inline(always)]
321 fn inline_align(_context: fidl::encoding::Context) -> usize {
322 8
323 }
324
325 #[inline(always)]
326 fn inline_size(_context: fidl::encoding::Context) -> usize {
327 32
328 }
329 }
330
331 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Item, D> for &Item {
332 #[inline]
333 unsafe fn encode(
334 self,
335 encoder: &mut fidl::encoding::Encoder<'_, D>,
336 offset: usize,
337 _depth: fidl::encoding::Depth,
338 ) -> fidl::Result<()> {
339 encoder.debug_check_bounds::<Item>(offset);
340 fidl::encoding::Encode::<Item, D>::encode(
342 (
343 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(
344 &self.key,
345 ),
346 <fidl::encoding::Vector<u8, 64000> as fidl::encoding::ValueTypeMarker>::borrow(
347 &self.value,
348 ),
349 ),
350 encoder,
351 offset,
352 _depth,
353 )
354 }
355 }
356 unsafe impl<
357 D: fidl::encoding::ResourceDialect,
358 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
359 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 64000>, D>,
360 > fidl::encoding::Encode<Item, D> for (T0, T1)
361 {
362 #[inline]
363 unsafe fn encode(
364 self,
365 encoder: &mut fidl::encoding::Encoder<'_, D>,
366 offset: usize,
367 depth: fidl::encoding::Depth,
368 ) -> fidl::Result<()> {
369 encoder.debug_check_bounds::<Item>(offset);
370 self.0.encode(encoder, offset + 0, depth)?;
374 self.1.encode(encoder, offset + 16, depth)?;
375 Ok(())
376 }
377 }
378
379 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Item {
380 #[inline(always)]
381 fn new_empty() -> Self {
382 Self {
383 key: fidl::new_empty!(fidl::encoding::BoundedString<128>, D),
384 value: fidl::new_empty!(fidl::encoding::Vector<u8, 64000>, D),
385 }
386 }
387
388 #[inline]
389 unsafe fn decode(
390 &mut self,
391 decoder: &mut fidl::encoding::Decoder<'_, D>,
392 offset: usize,
393 _depth: fidl::encoding::Depth,
394 ) -> fidl::Result<()> {
395 decoder.debug_check_bounds::<Self>(offset);
396 fidl::decode!(
398 fidl::encoding::BoundedString<128>,
399 D,
400 &mut self.key,
401 decoder,
402 offset + 0,
403 _depth
404 )?;
405 fidl::decode!(fidl::encoding::Vector<u8, 64000>, D, &mut self.value, decoder, offset + 16, _depth)?;
406 Ok(())
407 }
408 }
409
410 impl fidl::encoding::ValueTypeMarker for StoreReadItemRequest {
411 type Borrowed<'a> = &'a Self;
412 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
413 value
414 }
415 }
416
417 unsafe impl fidl::encoding::TypeMarker for StoreReadItemRequest {
418 type Owned = Self;
419
420 #[inline(always)]
421 fn inline_align(_context: fidl::encoding::Context) -> usize {
422 8
423 }
424
425 #[inline(always)]
426 fn inline_size(_context: fidl::encoding::Context) -> usize {
427 16
428 }
429 }
430
431 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StoreReadItemRequest, D>
432 for &StoreReadItemRequest
433 {
434 #[inline]
435 unsafe fn encode(
436 self,
437 encoder: &mut fidl::encoding::Encoder<'_, D>,
438 offset: usize,
439 _depth: fidl::encoding::Depth,
440 ) -> fidl::Result<()> {
441 encoder.debug_check_bounds::<StoreReadItemRequest>(offset);
442 fidl::encoding::Encode::<StoreReadItemRequest, D>::encode(
444 (<fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow(
445 &self.key,
446 ),),
447 encoder,
448 offset,
449 _depth,
450 )
451 }
452 }
453 unsafe impl<
454 D: fidl::encoding::ResourceDialect,
455 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<128>, D>,
456 > fidl::encoding::Encode<StoreReadItemRequest, D> for (T0,)
457 {
458 #[inline]
459 unsafe fn encode(
460 self,
461 encoder: &mut fidl::encoding::Encoder<'_, D>,
462 offset: usize,
463 depth: fidl::encoding::Depth,
464 ) -> fidl::Result<()> {
465 encoder.debug_check_bounds::<StoreReadItemRequest>(offset);
466 self.0.encode(encoder, offset + 0, depth)?;
470 Ok(())
471 }
472 }
473
474 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StoreReadItemRequest {
475 #[inline(always)]
476 fn new_empty() -> Self {
477 Self { key: fidl::new_empty!(fidl::encoding::BoundedString<128>, D) }
478 }
479
480 #[inline]
481 unsafe fn decode(
482 &mut self,
483 decoder: &mut fidl::encoding::Decoder<'_, D>,
484 offset: usize,
485 _depth: fidl::encoding::Depth,
486 ) -> fidl::Result<()> {
487 decoder.debug_check_bounds::<Self>(offset);
488 fidl::decode!(
490 fidl::encoding::BoundedString<128>,
491 D,
492 &mut self.key,
493 decoder,
494 offset + 0,
495 _depth
496 )?;
497 Ok(())
498 }
499 }
500
501 impl fidl::encoding::ValueTypeMarker for StoreWriteItemRequest {
502 type Borrowed<'a> = &'a Self;
503 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
504 value
505 }
506 }
507
508 unsafe impl fidl::encoding::TypeMarker for StoreWriteItemRequest {
509 type Owned = Self;
510
511 #[inline(always)]
512 fn inline_align(_context: fidl::encoding::Context) -> usize {
513 8
514 }
515
516 #[inline(always)]
517 fn inline_size(_context: fidl::encoding::Context) -> usize {
518 32
519 }
520 }
521
522 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StoreWriteItemRequest, D>
523 for &StoreWriteItemRequest
524 {
525 #[inline]
526 unsafe fn encode(
527 self,
528 encoder: &mut fidl::encoding::Encoder<'_, D>,
529 offset: usize,
530 _depth: fidl::encoding::Depth,
531 ) -> fidl::Result<()> {
532 encoder.debug_check_bounds::<StoreWriteItemRequest>(offset);
533 fidl::encoding::Encode::<StoreWriteItemRequest, D>::encode(
535 (<Item as fidl::encoding::ValueTypeMarker>::borrow(&self.attempt),),
536 encoder,
537 offset,
538 _depth,
539 )
540 }
541 }
542 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Item, D>>
543 fidl::encoding::Encode<StoreWriteItemRequest, D> for (T0,)
544 {
545 #[inline]
546 unsafe fn encode(
547 self,
548 encoder: &mut fidl::encoding::Encoder<'_, D>,
549 offset: usize,
550 depth: fidl::encoding::Depth,
551 ) -> fidl::Result<()> {
552 encoder.debug_check_bounds::<StoreWriteItemRequest>(offset);
553 self.0.encode(encoder, offset + 0, depth)?;
557 Ok(())
558 }
559 }
560
561 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StoreWriteItemRequest {
562 #[inline(always)]
563 fn new_empty() -> Self {
564 Self { attempt: fidl::new_empty!(Item, D) }
565 }
566
567 #[inline]
568 unsafe fn decode(
569 &mut self,
570 decoder: &mut fidl::encoding::Decoder<'_, D>,
571 offset: usize,
572 _depth: fidl::encoding::Depth,
573 ) -> fidl::Result<()> {
574 decoder.debug_check_bounds::<Self>(offset);
575 fidl::decode!(Item, D, &mut self.attempt, decoder, offset + 0, _depth)?;
577 Ok(())
578 }
579 }
580}