Skip to main content

fidl_next_fuchsia_metrics/
fidl_next_fuchsia_metrics.rs

1// DO NOT EDIT: This file is machine-generated by fidlgen
2#![warn(clippy::all)]
3#![allow(unused_parens, unused_variables, unused_mut, unused_imports, unreachable_code)]
4
5pub mod natural {
6
7    pub use fidl_next_common_fuchsia_metrics::natural::*;
8
9    #[derive(Debug, PartialEq)]
10    pub struct MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
11        pub project_spec: crate::natural::ProjectSpec,
12
13        pub logger:
14            ::fidl_next::ServerEnd<crate::MetricEventLogger, ::fidl_next::fuchsia::zx::Channel>,
15    }
16
17    unsafe impl<___E>
18        ::fidl_next::Encode<
19            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
20            ___E,
21        > for MetricEventLoggerFactoryCreateMetricEventLoggerRequest
22    where
23        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
24        ___E: ::fidl_next::Encoder,
25        ___E: ::fidl_next::fuchsia::HandleEncoder,
26    {
27        #[inline]
28        fn encode(
29            self,
30            encoder_: &mut ___E,
31            out_: &mut ::core::mem::MaybeUninit<
32                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
33            >,
34            _: (),
35        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
36            ::fidl_next::munge! {
37                let crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
38                    project_spec,
39                    logger,
40
41                } = out_;
42            }
43
44            ::fidl_next::Encode::encode(self.project_spec, encoder_, project_spec, ())?;
45
46            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(project_spec.as_mut_ptr()) };
47
48            ::fidl_next::Encode::encode(self.logger, encoder_, logger, ())?;
49
50            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(logger.as_mut_ptr()) };
51
52            Ok(())
53        }
54    }
55
56    unsafe impl<___E>
57        ::fidl_next::EncodeOption<
58            ::fidl_next::wire::Box<
59                'static,
60                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
61            >,
62            ___E,
63        > for MetricEventLoggerFactoryCreateMetricEventLoggerRequest
64    where
65        ___E: ::fidl_next::Encoder + ?Sized,
66        MetricEventLoggerFactoryCreateMetricEventLoggerRequest: ::fidl_next::Encode<
67                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
68                ___E,
69            >,
70    {
71        #[inline]
72        fn encode_option(
73            this: ::core::option::Option<Self>,
74            encoder: &mut ___E,
75            out: &mut ::core::mem::MaybeUninit<
76                ::fidl_next::wire::Box<
77                    'static,
78                    crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
79                >,
80            >,
81            _: (),
82        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
83            if let Some(inner) = this {
84                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
85                ::fidl_next::wire::Box::encode_present(out);
86            } else {
87                ::fidl_next::wire::Box::encode_absent(out);
88            }
89
90            Ok(())
91        }
92    }
93
94    impl<'de>
95        ::fidl_next::FromWire<
96            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>,
97        > for MetricEventLoggerFactoryCreateMetricEventLoggerRequest
98    {
99        #[inline]
100        fn from_wire(
101            wire: crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>,
102        ) -> Self {
103            Self {
104                project_spec: ::fidl_next::FromWire::from_wire(wire.project_spec),
105
106                logger: ::fidl_next::FromWire::from_wire(wire.logger),
107            }
108        }
109    }
110
111    #[derive(Debug, PartialEq)]
112    pub struct MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest {
113        pub project_spec: crate::natural::ProjectSpec,
114
115        pub experiment_ids: ::std::vec::Vec<u32>,
116
117        pub logger:
118            ::fidl_next::ServerEnd<crate::MetricEventLogger, ::fidl_next::fuchsia::zx::Channel>,
119    }
120
121    unsafe impl<___E>
122        ::fidl_next::Encode<
123            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
124                'static,
125            >,
126            ___E,
127        > for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
128    where
129        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
130        ___E: ::fidl_next::Encoder,
131        ___E: ::fidl_next::fuchsia::HandleEncoder,
132    {
133        #[inline]
134        fn encode(
135            self,
136            encoder_: &mut ___E,
137            out_: &mut ::core::mem::MaybeUninit<
138                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
139                    'static,
140                >,
141            >,
142            _: (),
143        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
144            ::fidl_next::munge! {
145                let crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest {
146                    project_spec,
147                    experiment_ids,
148                    logger,
149
150                } = out_;
151            }
152
153            ::fidl_next::Encode::encode(self.project_spec, encoder_, project_spec, ())?;
154
155            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(project_spec.as_mut_ptr()) };
156
157            ::fidl_next::Encode::encode(self.experiment_ids, encoder_, experiment_ids, (100, ()))?;
158
159            let mut _field =
160                unsafe { ::fidl_next::Slot::new_unchecked(experiment_ids.as_mut_ptr()) };
161            ::fidl_next::Constrained::validate(_field, (100, ()))?;
162
163            ::fidl_next::Encode::encode(self.logger, encoder_, logger, ())?;
164
165            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(logger.as_mut_ptr()) };
166
167            Ok(())
168        }
169    }
170
171    unsafe impl<___E>
172        ::fidl_next::EncodeOption<
173            ::fidl_next::wire::Box<
174                'static,
175                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
176                    'static,
177                >,
178            >,
179            ___E,
180        > for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
181    where
182        ___E: ::fidl_next::Encoder + ?Sized,
183        MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest: ::fidl_next::Encode<
184                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
185                    'static,
186                >,
187                ___E,
188            >,
189    {
190        #[inline]
191        fn encode_option(
192            this: ::core::option::Option<Self>,
193            encoder: &mut ___E,
194            out: &mut ::core::mem::MaybeUninit<::fidl_next::wire::Box<'static, crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'static>>>,
195            _: (),
196        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
197            if let Some(inner) = this {
198                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
199                ::fidl_next::wire::Box::encode_present(out);
200            } else {
201                ::fidl_next::wire::Box::encode_absent(out);
202            }
203
204            Ok(())
205        }
206    }
207
208    impl<'de>
209        ::fidl_next::FromWire<
210            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>,
211        > for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
212    {
213        #[inline]
214        fn from_wire(
215            wire: crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>,
216        ) -> Self {
217            Self {
218                project_spec: ::fidl_next::FromWire::from_wire(wire.project_spec),
219
220                experiment_ids: ::fidl_next::FromWire::from_wire(wire.experiment_ids),
221
222                logger: ::fidl_next::FromWire::from_wire(wire.logger),
223            }
224        }
225    }
226}
227
228pub mod wire {
229
230    pub use fidl_next_common_fuchsia_metrics::wire::*;
231
232    /// The wire type corresponding to [`MetricEventLoggerFactoryCreateMetricEventLoggerRequest`].
233    #[derive(Debug)]
234    #[repr(C)]
235    pub struct MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de> {
236        pub project_spec: crate::wire::ProjectSpec<'de>,
237
238        pub logger:
239            ::fidl_next::ServerEnd<crate::MetricEventLogger, ::fidl_next::wire::fuchsia::Channel>,
240    }
241
242    static_assertions::const_assert_eq!(
243        std::mem::size_of::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'_>>(),
244        24
245    );
246    static_assertions::const_assert_eq!(
247        std::mem::align_of::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'_>>(),
248        8
249    );
250
251    static_assertions::const_assert_eq!(
252        std::mem::offset_of!(
253            MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'_>,
254            project_spec
255        ),
256        0
257    );
258
259    static_assertions::const_assert_eq!(
260        std::mem::offset_of!(MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'_>, logger),
261        16
262    );
263
264    impl ::fidl_next::Constrained for MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'_> {
265        type Constraint = ();
266
267        fn validate(
268            _: ::fidl_next::Slot<'_, Self>,
269            _: Self::Constraint,
270        ) -> Result<(), ::fidl_next::ValidationError> {
271            Ok(())
272        }
273    }
274
275    unsafe impl ::fidl_next::Wire for MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static> {
276        type Narrowed<'de> = MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>;
277
278        #[inline]
279        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
280            ::fidl_next::munge! {
281                let Self {
282                    project_spec,
283                    logger,
284
285                } = &mut *out_;
286            }
287
288            ::fidl_next::Wire::zero_padding(project_spec);
289
290            ::fidl_next::Wire::zero_padding(logger);
291
292            unsafe {
293                out_.as_mut_ptr().cast::<u8>().add(20).write_bytes(0, 4);
294            }
295        }
296    }
297
298    unsafe impl<'de, ___D> ::fidl_next::Decode<___D>
299        for MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>
300    where
301        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
302        ___D: ::fidl_next::Decoder<'de>,
303        ___D: ::fidl_next::fuchsia::HandleDecoder,
304    {
305        fn decode(
306            slot_: ::fidl_next::Slot<'_, Self>,
307            decoder_: &mut ___D,
308            _: (),
309        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
310            if slot_.as_bytes()[20..24] != [0u8; 4] {
311                return Err(::fidl_next::DecodeError::InvalidPadding);
312            }
313
314            ::fidl_next::munge! {
315                let Self {
316                    mut project_spec,
317                    mut logger,
318
319                } = slot_;
320            }
321
322            let _field = project_spec.as_mut();
323
324            ::fidl_next::Decode::decode(project_spec.as_mut(), decoder_, ())?;
325
326            let _field = logger.as_mut();
327
328            ::fidl_next::Decode::decode(logger.as_mut(), decoder_, ())?;
329
330            Ok(())
331        }
332    }
333
334    impl<'de> ::fidl_next::IntoNatural for MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de> {
335        type Natural = crate::natural::MetricEventLoggerFactoryCreateMetricEventLoggerRequest;
336    }
337
338    /// The wire type corresponding to [`MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest`].
339    #[derive(Debug)]
340    #[repr(C)]
341    pub struct MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de> {
342        pub project_spec: crate::wire::ProjectSpec<'de>,
343
344        pub experiment_ids: ::fidl_next::wire::Vector<'de, ::fidl_next::wire::Uint32>,
345
346        pub logger:
347            ::fidl_next::ServerEnd<crate::MetricEventLogger, ::fidl_next::wire::fuchsia::Channel>,
348    }
349
350    static_assertions::const_assert_eq!(
351        std::mem::size_of::<
352            MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'_>,
353        >(),
354        40
355    );
356    static_assertions::const_assert_eq!(
357        std::mem::align_of::<
358            MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'_>,
359        >(),
360        8
361    );
362
363    static_assertions::const_assert_eq!(
364        std::mem::offset_of!(
365            MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'_>,
366            project_spec
367        ),
368        0
369    );
370
371    static_assertions::const_assert_eq!(
372        std::mem::offset_of!(
373            MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'_>,
374            experiment_ids
375        ),
376        16
377    );
378
379    static_assertions::const_assert_eq!(
380        std::mem::offset_of!(
381            MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'_>,
382            logger
383        ),
384        32
385    );
386
387    impl ::fidl_next::Constrained
388        for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'_>
389    {
390        type Constraint = ();
391
392        fn validate(
393            _: ::fidl_next::Slot<'_, Self>,
394            _: Self::Constraint,
395        ) -> Result<(), ::fidl_next::ValidationError> {
396            Ok(())
397        }
398    }
399
400    unsafe impl ::fidl_next::Wire
401        for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'static>
402    {
403        type Narrowed<'de> =
404            MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>;
405
406        #[inline]
407        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
408            ::fidl_next::munge! {
409                let Self {
410                    project_spec,
411                    experiment_ids,
412                    logger,
413
414                } = &mut *out_;
415            }
416
417            ::fidl_next::Wire::zero_padding(project_spec);
418
419            ::fidl_next::Wire::zero_padding(experiment_ids);
420
421            ::fidl_next::Wire::zero_padding(logger);
422
423            unsafe {
424                out_.as_mut_ptr().cast::<u8>().add(36).write_bytes(0, 4);
425            }
426        }
427    }
428
429    unsafe impl<'de, ___D> ::fidl_next::Decode<___D>
430        for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>
431    where
432        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
433        ___D: ::fidl_next::Decoder<'de>,
434        ___D: ::fidl_next::fuchsia::HandleDecoder,
435    {
436        fn decode(
437            slot_: ::fidl_next::Slot<'_, Self>,
438            decoder_: &mut ___D,
439            _: (),
440        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
441            if slot_.as_bytes()[36..40] != [0u8; 4] {
442                return Err(::fidl_next::DecodeError::InvalidPadding);
443            }
444
445            ::fidl_next::munge! {
446                let Self {
447                    mut project_spec,
448                    mut experiment_ids,
449                    mut logger,
450
451                } = slot_;
452            }
453
454            let _field = project_spec.as_mut();
455
456            ::fidl_next::Decode::decode(project_spec.as_mut(), decoder_, ())?;
457
458            let _field = experiment_ids.as_mut();
459            ::fidl_next::Constrained::validate(_field, (100, ()))?;
460            ::fidl_next::Decode::decode(experiment_ids.as_mut(), decoder_, (100, ()))?;
461
462            let experiment_ids = unsafe { experiment_ids.deref_unchecked() };
463
464            if experiment_ids.len() > 100 {
465                return Err(::fidl_next::DecodeError::VectorTooLong {
466                    size: experiment_ids.len() as u64,
467                    limit: 100,
468                });
469            }
470
471            let _field = logger.as_mut();
472
473            ::fidl_next::Decode::decode(logger.as_mut(), decoder_, ())?;
474
475            Ok(())
476        }
477    }
478
479    impl<'de> ::fidl_next::IntoNatural
480        for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>
481    {
482        type Natural =
483            crate::natural::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest;
484    }
485}
486
487pub mod wire_optional {
488
489    pub use fidl_next_common_fuchsia_metrics::wire_optional::*;
490}
491
492pub mod generic {
493
494    pub use fidl_next_common_fuchsia_metrics::generic::*;
495
496    /// The generic type corresponding to [`MetricEventLoggerFactoryCreateMetricEventLoggerRequest`].
497    pub struct MetricEventLoggerFactoryCreateMetricEventLoggerRequest<T0, T1> {
498        pub project_spec: T0,
499
500        pub logger: T1,
501    }
502
503    unsafe impl<___E, T0, T1>
504        ::fidl_next::Encode<
505            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
506            ___E,
507        > for MetricEventLoggerFactoryCreateMetricEventLoggerRequest<T0, T1>
508    where
509        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
510        ___E: ::fidl_next::Encoder,
511        ___E: ::fidl_next::fuchsia::HandleEncoder,
512        T0: ::fidl_next::Encode<crate::wire::ProjectSpec<'static>, ___E>,
513        T1: ::fidl_next::Encode<
514                ::fidl_next::ServerEnd<
515                    crate::MetricEventLogger,
516                    ::fidl_next::wire::fuchsia::Channel,
517                >,
518                ___E,
519            >,
520    {
521        #[inline]
522        fn encode(
523            self,
524            encoder_: &mut ___E,
525            out_: &mut ::core::mem::MaybeUninit<
526                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>,
527            >,
528            _: (),
529        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
530            ::fidl_next::munge! {
531                let crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
532                    project_spec,
533                    logger,
534
535                } = out_;
536            }
537
538            ::fidl_next::Encode::encode(self.project_spec, encoder_, project_spec, ())?;
539
540            ::fidl_next::Encode::encode(self.logger, encoder_, logger, ())?;
541
542            Ok(())
543        }
544    }
545
546    /// The generic type corresponding to [`MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest`].
547    pub struct MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<T0, T1, T2> {
548        pub project_spec: T0,
549
550        pub experiment_ids: T1,
551
552        pub logger: T2,
553    }
554
555    unsafe impl<___E, T0, T1, T2>
556        ::fidl_next::Encode<
557            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
558                'static,
559            >,
560            ___E,
561        > for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<T0, T1, T2>
562    where
563        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
564        ___E: ::fidl_next::Encoder,
565        ___E: ::fidl_next::fuchsia::HandleEncoder,
566        T0: ::fidl_next::Encode<crate::wire::ProjectSpec<'static>, ___E>,
567        T1: ::fidl_next::Encode<::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint32>, ___E>,
568        T2: ::fidl_next::Encode<
569                ::fidl_next::ServerEnd<
570                    crate::MetricEventLogger,
571                    ::fidl_next::wire::fuchsia::Channel,
572                >,
573                ___E,
574            >,
575    {
576        #[inline]
577        fn encode(
578            self,
579            encoder_: &mut ___E,
580            out_: &mut ::core::mem::MaybeUninit<
581                crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
582                    'static,
583                >,
584            >,
585            _: (),
586        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
587            ::fidl_next::munge! {
588                let crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest {
589                    project_spec,
590                    experiment_ids,
591                    logger,
592
593                } = out_;
594            }
595
596            ::fidl_next::Encode::encode(self.project_spec, encoder_, project_spec, ())?;
597
598            ::fidl_next::Encode::encode(self.experiment_ids, encoder_, experiment_ids, (100, ()))?;
599
600            ::fidl_next::Encode::encode(self.logger, encoder_, logger, ())?;
601
602            Ok(())
603        }
604    }
605}
606
607pub use self::natural::*;
608
609/// The type corresponding to the MetricEventLoggerFactory protocol.
610#[doc = " A factory that is used to create a MetricEventLogger for a specific project.\n"]
611#[derive(PartialEq, Debug)]
612pub struct MetricEventLoggerFactory;
613
614impl ::fidl_next::Discoverable for MetricEventLoggerFactory {
615    const PROTOCOL_NAME: &'static str = "fuchsia.metrics.MetricEventLoggerFactory";
616}
617
618#[cfg(target_os = "fuchsia")]
619impl ::fidl_next::HasTransport for MetricEventLoggerFactory {
620    type Transport = ::fidl_next::fuchsia::zx::Channel;
621}
622
623pub mod metric_event_logger_factory {
624    pub mod prelude {
625        pub use crate::{
626            MetricEventLoggerFactory, MetricEventLoggerFactoryClientHandler,
627            MetricEventLoggerFactoryLocalClientHandler, MetricEventLoggerFactoryLocalServerHandler,
628            MetricEventLoggerFactoryServerHandler, metric_event_logger_factory,
629        };
630
631        pub use crate::natural::Error;
632
633        pub use crate::natural::MetricEventLoggerFactoryCreateMetricEventLoggerRequest;
634
635        pub use crate::natural::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest;
636
637        pub use crate::natural::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponse;
638
639        pub use crate::natural::MetricEventLoggerFactoryCreateMetricEventLoggerResponse;
640    }
641
642    pub struct CreateMetricEventLogger;
643
644    impl ::fidl_next::Method for CreateMetricEventLogger {
645        const ORDINAL: u64 = 967417524583938558;
646        const FLEXIBILITY: ::fidl_next::protocol::Flexibility =
647            ::fidl_next::protocol::Flexibility::Strict;
648
649        type Protocol = crate::MetricEventLoggerFactory;
650
651        type Request = crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'static>;
652    }
653
654    impl ::fidl_next::TwoWayMethod for CreateMetricEventLogger {
655        type Response = ::fidl_next::wire::Result<
656            'static,
657            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerResponse,
658            crate::wire::Error,
659        >;
660    }
661
662    impl<___R> ::fidl_next::Respond<___R> for CreateMetricEventLogger {
663        type Output = ::core::result::Result<___R, ::fidl_next::util::Never>;
664
665        fn respond(response: ___R) -> Self::Output {
666            ::core::result::Result::Ok(response)
667        }
668    }
669
670    impl<___R> ::fidl_next::RespondErr<___R> for CreateMetricEventLogger {
671        type Output = ::core::result::Result<::fidl_next::util::Never, ___R>;
672
673        fn respond_err(response: ___R) -> Self::Output {
674            ::core::result::Result::Err(response)
675        }
676    }
677
678    pub struct CreateMetricEventLoggerWithExperiments;
679
680    impl ::fidl_next::Method for CreateMetricEventLoggerWithExperiments {
681        const ORDINAL: u64 = 9160168118327134458;
682        const FLEXIBILITY: ::fidl_next::protocol::Flexibility =
683            ::fidl_next::protocol::Flexibility::Strict;
684
685        type Protocol = crate::MetricEventLoggerFactory;
686
687        type Request =
688            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<
689                'static,
690            >;
691    }
692
693    impl ::fidl_next::TwoWayMethod for CreateMetricEventLoggerWithExperiments {
694        type Response = ::fidl_next::wire::Result<
695            'static,
696            crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponse,
697            crate::wire::Error,
698        >;
699    }
700
701    impl<___R> ::fidl_next::Respond<___R> for CreateMetricEventLoggerWithExperiments {
702        type Output = ::core::result::Result<___R, ::fidl_next::util::Never>;
703
704        fn respond(response: ___R) -> Self::Output {
705            ::core::result::Result::Ok(response)
706        }
707    }
708
709    impl<___R> ::fidl_next::RespondErr<___R> for CreateMetricEventLoggerWithExperiments {
710        type Output = ::core::result::Result<::fidl_next::util::Never, ___R>;
711
712        fn respond_err(response: ___R) -> Self::Output {
713            ::core::result::Result::Err(response)
714        }
715    }
716
717    mod ___detail {
718        unsafe impl<___T> ::fidl_next::HasConnectionHandles<___T> for crate::MetricEventLoggerFactory
719        where
720            ___T: ::fidl_next::Transport,
721        {
722            type Client = MetricEventLoggerFactoryClient<___T>;
723            type Server = MetricEventLoggerFactoryServer<___T>;
724        }
725
726        /// The client for the `MetricEventLoggerFactory` protocol.
727        #[repr(transparent)]
728        pub struct MetricEventLoggerFactoryClient<___T: ::fidl_next::Transport> {
729            #[allow(dead_code)]
730            client: ::fidl_next::protocol::Client<___T>,
731        }
732
733        impl<___T> MetricEventLoggerFactoryClient<___T>
734        where
735            ___T: ::fidl_next::Transport,
736        {
737            #[doc = " Create a MetricEventLogger for the project specified by `project_spec`.\n"]
738            pub fn create_metric_event_logger(
739                &self,
740
741                project_spec: impl ::fidl_next::Encode<
742                    crate::wire::ProjectSpec<'static>,
743                    <___T as ::fidl_next::Transport>::SendBuffer,
744                >,
745
746                logger: impl ::fidl_next::Encode<
747                    ::fidl_next::ServerEnd<
748                        crate::MetricEventLogger,
749                        ::fidl_next::wire::fuchsia::Channel,
750                    >,
751                    <___T as ::fidl_next::Transport>::SendBuffer,
752                >,
753            ) -> ::fidl_next::TwoWayFuture<'_, super::CreateMetricEventLogger, ___T>
754            where
755                <___T as ::fidl_next::Transport>::SendBuffer:
756                    ::fidl_next::encoder::InternalHandleEncoder,
757                <___T as ::fidl_next::Transport>::SendBuffer: ::fidl_next::Encoder,
758                <___T as ::fidl_next::Transport>::SendBuffer: ::fidl_next::fuchsia::HandleEncoder,
759            {
760                self.create_metric_event_logger_with(
761                    crate::generic::MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
762                        project_spec,
763
764                        logger,
765                    },
766                )
767            }
768
769            #[doc = " Create a MetricEventLogger for the project specified by `project_spec`.\n"]
770            pub fn create_metric_event_logger_with<___R>(
771                &self,
772                request: ___R,
773            ) -> ::fidl_next::TwoWayFuture<'_, super::CreateMetricEventLogger, ___T>
774            where
775                ___R: ::fidl_next::Encode<
776                        crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<
777                            'static,
778                        >,
779                        <___T as ::fidl_next::Transport>::SendBuffer,
780                    >,
781            {
782                ::fidl_next::TwoWayFuture::from_untyped(self.client.send_two_way(
783                    967417524583938558,
784                    <super::CreateMetricEventLogger as ::fidl_next::Method>::FLEXIBILITY,
785                    request,
786                ))
787            }
788
789            #[doc = " Create a MetricEventLogger with experiment metadata.\n\n This temporary method exposes experiment data to Cobalt directly from\n components. In the future, experiment state will be managed by the\n system and passed directly to Cobalt. Contact the Cobalt team before\n using this interface.\n\n To update experiment state create a new logger.\n"]
790            pub fn create_metric_event_logger_with_experiments(
791                &self,
792
793                project_spec: impl ::fidl_next::Encode<
794                    crate::wire::ProjectSpec<'static>,
795                    <___T as ::fidl_next::Transport>::SendBuffer,
796                >,
797
798                experiment_ids: impl ::fidl_next::Encode<
799                    ::fidl_next::wire::Vector<'static, ::fidl_next::wire::Uint32>,
800                    <___T as ::fidl_next::Transport>::SendBuffer,
801                >,
802
803                logger: impl ::fidl_next::Encode<
804                    ::fidl_next::ServerEnd<
805                        crate::MetricEventLogger,
806                        ::fidl_next::wire::fuchsia::Channel,
807                    >,
808                    <___T as ::fidl_next::Transport>::SendBuffer,
809                >,
810            ) -> ::fidl_next::TwoWayFuture<'_, super::CreateMetricEventLoggerWithExperiments, ___T>
811            where
812                <___T as ::fidl_next::Transport>::SendBuffer:
813                    ::fidl_next::encoder::InternalHandleEncoder,
814                <___T as ::fidl_next::Transport>::SendBuffer: ::fidl_next::Encoder,
815                <___T as ::fidl_next::Transport>::SendBuffer: ::fidl_next::fuchsia::HandleEncoder,
816            {
817                self.create_metric_event_logger_with_experiments_with(crate::generic::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest {
818
819                                        project_spec,
820
821                                        experiment_ids,
822
823                                        logger,
824
825                                })
826            }
827
828            #[doc = " Create a MetricEventLogger with experiment metadata.\n\n This temporary method exposes experiment data to Cobalt directly from\n components. In the future, experiment state will be managed by the\n system and passed directly to Cobalt. Contact the Cobalt team before\n using this interface.\n\n To update experiment state create a new logger.\n"]
829                            pub fn create_metric_event_logger_with_experiments_with<___R>(
830                                &self,
831                                request: ___R,
832                            ) -> ::fidl_next::TwoWayFuture<'_, super::CreateMetricEventLoggerWithExperiments, ___T>
833                            where
834                                ___R: ::fidl_next::Encode<
835                                    crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'static>,
836                                    <___T as ::fidl_next::Transport>::SendBuffer,
837                                >,
838                            {
839                ::fidl_next::TwoWayFuture::from_untyped(
840                                    self.client.send_two_way(
841                                        9160168118327134458,
842                                        <super::CreateMetricEventLoggerWithExperiments as ::fidl_next::Method>::FLEXIBILITY,
843                                        request,
844                                    )
845                                )
846            }
847        }
848
849        /// The server for the `MetricEventLoggerFactory` protocol.
850        #[repr(transparent)]
851        pub struct MetricEventLoggerFactoryServer<___T: ::fidl_next::Transport> {
852            server: ::fidl_next::protocol::Server<___T>,
853        }
854
855        impl<___T> MetricEventLoggerFactoryServer<___T> where ___T: ::fidl_next::Transport {}
856    }
857}
858
859#[diagnostic::on_unimplemented(
860    note = "If {Self} implements the non-local MetricEventLoggerFactoryClientHandler trait, use `spawn_as_local` or the `Local` adapter type"
861)]
862
863/// A client handler for the MetricEventLoggerFactory protocol.
864///
865/// See [`MetricEventLoggerFactory`] for more details.
866pub trait MetricEventLoggerFactoryLocalClientHandler<
867    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
868    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
869>
870{
871}
872
873impl<___H, ___T> ::fidl_next::DispatchLocalClientMessage<___H, ___T> for MetricEventLoggerFactory
874where
875    ___H: MetricEventLoggerFactoryLocalClientHandler<___T>,
876    ___T: ::fidl_next::Transport,
877{
878    async fn on_event(
879        handler: &mut ___H,
880        ordinal: u64,
881        flexibility: ::fidl_next::protocol::Flexibility,
882        body: ::fidl_next::Body<___T>,
883    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<___T::Error>> {
884        match ordinal {
885            ordinal => Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal)),
886        }
887    }
888}
889
890#[diagnostic::on_unimplemented(
891    note = "If {Self} implements the non-local MetricEventLoggerFactoryServerHandler trait, use `spawn_as_local` or the `Local` adapter type"
892)]
893
894/// A server handler for the MetricEventLoggerFactory protocol.
895///
896/// See [`MetricEventLoggerFactory`] for more details.
897pub trait MetricEventLoggerFactoryLocalServerHandler<
898    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
899    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
900>
901{
902    #[doc = " Create a MetricEventLogger for the project specified by `project_spec`.\n"]
903    fn create_metric_event_logger(
904        &mut self,
905
906        request: ::fidl_next::Request<metric_event_logger_factory::CreateMetricEventLogger, ___T>,
907
908        responder: ::fidl_next::Responder<
909            metric_event_logger_factory::CreateMetricEventLogger,
910            ___T,
911        >,
912    ) -> impl ::core::future::Future<Output = ()>;
913
914    #[doc = " Create a MetricEventLogger with experiment metadata.\n\n This temporary method exposes experiment data to Cobalt directly from\n components. In the future, experiment state will be managed by the\n system and passed directly to Cobalt. Contact the Cobalt team before\n using this interface.\n\n To update experiment state create a new logger.\n"]
915    fn create_metric_event_logger_with_experiments(
916        &mut self,
917
918        request: ::fidl_next::Request<
919            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
920            ___T,
921        >,
922
923        responder: ::fidl_next::Responder<
924            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
925            ___T,
926        >,
927    ) -> impl ::core::future::Future<Output = ()>;
928}
929
930impl<___H, ___T> ::fidl_next::DispatchLocalServerMessage<___H, ___T> for MetricEventLoggerFactory
931where
932    ___H: MetricEventLoggerFactoryLocalServerHandler<___T> ,
933    ___T: ::fidl_next::Transport,
934
935
936            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>: ::fidl_next::Decode<
937                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
938                Constraint = (),
939            >,
940
941
942
943            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>: ::fidl_next::Decode<
944                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
945                Constraint = (),
946            >,
947
948
949{
950    async fn on_one_way(
951        handler: &mut ___H,
952        ordinal: u64,
953        flexibility: ::fidl_next::protocol::Flexibility,
954        body: ::fidl_next::Body<___T>,
955    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
956        match ordinal {
957
958
959
960
961
962
963
964            ordinal => {
965
966                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
967
968            }
969        }
970    }
971
972    async fn on_two_way(
973        handler: &mut ___H,
974        ordinal: u64,
975        flexibility: ::fidl_next::protocol::Flexibility,
976        body: ::fidl_next::Body<___T>,
977        responder: ::fidl_next::protocol::Responder<___T>,
978    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
979        match ordinal {
980
981
982
983                    967417524583938558 => {
984                        let responder = ::fidl_next::Responder::from_untyped(responder);
985
986                            match ::fidl_next::AsDecoderExt::into_decoded(body) {
987                                Ok(decoded) => {
988                                    handler.create_metric_event_logger(::fidl_next::Request::from_decoded(decoded), responder).await;
989                                    Ok(())
990                                }
991                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
992                                    ordinal: 967417524583938558,
993                                    error,
994                                }),
995                            }
996
997                    }
998
999
1000
1001
1002                    9160168118327134458 => {
1003                        let responder = ::fidl_next::Responder::from_untyped(responder);
1004
1005                            match ::fidl_next::AsDecoderExt::into_decoded(body) {
1006                                Ok(decoded) => {
1007                                    handler.create_metric_event_logger_with_experiments(::fidl_next::Request::from_decoded(decoded), responder).await;
1008                                    Ok(())
1009                                }
1010                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
1011                                    ordinal: 9160168118327134458,
1012                                    error,
1013                                }),
1014                            }
1015
1016                    }
1017
1018
1019            ordinal => {
1020
1021                        Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
1022
1023            }
1024        }
1025    }
1026}
1027
1028/// A client handler for the MetricEventLoggerFactory protocol.
1029///
1030/// See [`MetricEventLoggerFactory`] for more details.
1031pub trait MetricEventLoggerFactoryClientHandler<
1032    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
1033    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
1034>
1035{
1036}
1037
1038impl<___H, ___T> ::fidl_next::DispatchClientMessage<___H, ___T> for MetricEventLoggerFactory
1039where
1040    ___H: MetricEventLoggerFactoryClientHandler<___T> + ::core::marker::Send,
1041    ___T: ::fidl_next::Transport,
1042{
1043    async fn on_event(
1044        handler: &mut ___H,
1045        ordinal: u64,
1046        flexibility: ::fidl_next::protocol::Flexibility,
1047        body: ::fidl_next::Body<___T>,
1048    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<___T::Error>> {
1049        match ordinal {
1050            ordinal => Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal)),
1051        }
1052    }
1053}
1054
1055/// A server handler for the MetricEventLoggerFactory protocol.
1056///
1057/// See [`MetricEventLoggerFactory`] for more details.
1058pub trait MetricEventLoggerFactoryServerHandler<
1059    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
1060    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
1061>
1062{
1063    #[doc = " Create a MetricEventLogger for the project specified by `project_spec`.\n"]
1064    fn create_metric_event_logger(
1065        &mut self,
1066
1067        request: ::fidl_next::Request<metric_event_logger_factory::CreateMetricEventLogger, ___T>,
1068
1069        responder: ::fidl_next::Responder<
1070            metric_event_logger_factory::CreateMetricEventLogger,
1071            ___T,
1072        >,
1073    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send;
1074
1075    #[doc = " Create a MetricEventLogger with experiment metadata.\n\n This temporary method exposes experiment data to Cobalt directly from\n components. In the future, experiment state will be managed by the\n system and passed directly to Cobalt. Contact the Cobalt team before\n using this interface.\n\n To update experiment state create a new logger.\n"]
1076    fn create_metric_event_logger_with_experiments(
1077        &mut self,
1078
1079        request: ::fidl_next::Request<
1080            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1081            ___T,
1082        >,
1083
1084        responder: ::fidl_next::Responder<
1085            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1086            ___T,
1087        >,
1088    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send;
1089}
1090
1091impl<___H, ___T> ::fidl_next::DispatchServerMessage<___H, ___T> for MetricEventLoggerFactory
1092where
1093    ___H: MetricEventLoggerFactoryServerHandler<___T> + ::core::marker::Send,
1094    ___T: ::fidl_next::Transport,
1095
1096
1097            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>: ::fidl_next::Decode<
1098                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
1099                Constraint = (),
1100            >,
1101
1102
1103
1104            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>: ::fidl_next::Decode<
1105                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
1106                Constraint = (),
1107            >,
1108
1109
1110{
1111    async fn on_one_way(
1112        handler: &mut ___H,
1113        ordinal: u64,
1114        flexibility: ::fidl_next::protocol::Flexibility,
1115        body: ::fidl_next::Body<___T>,
1116    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
1117        match ordinal {
1118
1119
1120
1121
1122
1123
1124
1125            ordinal => {
1126
1127                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
1128
1129            }
1130        }
1131    }
1132
1133    async fn on_two_way(
1134        handler: &mut ___H,
1135        ordinal: u64,
1136        flexibility: ::fidl_next::protocol::Flexibility,
1137        body: ::fidl_next::Body<___T>,
1138        responder: ::fidl_next::protocol::Responder<___T>,
1139    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
1140        match ordinal {
1141
1142
1143
1144                    967417524583938558 => {
1145                        let responder = ::fidl_next::Responder::from_untyped(responder);
1146
1147                            match ::fidl_next::AsDecoderExt::into_decoded(body) {
1148                                Ok(decoded) => {
1149                                    handler.create_metric_event_logger(::fidl_next::Request::from_decoded(decoded), responder).await;
1150                                    Ok(())
1151                                }
1152                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
1153                                    ordinal: 967417524583938558,
1154                                    error,
1155                                }),
1156                            }
1157
1158                    }
1159
1160
1161
1162
1163                    9160168118327134458 => {
1164                        let responder = ::fidl_next::Responder::from_untyped(responder);
1165
1166                            match ::fidl_next::AsDecoderExt::into_decoded(body) {
1167                                Ok(decoded) => {
1168                                    handler.create_metric_event_logger_with_experiments(::fidl_next::Request::from_decoded(decoded), responder).await;
1169                                    Ok(())
1170                                }
1171                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
1172                                    ordinal: 9160168118327134458,
1173                                    error,
1174                                }),
1175                            }
1176
1177                    }
1178
1179
1180            ordinal => {
1181
1182                        Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
1183
1184            }
1185        }
1186    }
1187}
1188
1189impl<___T> MetricEventLoggerFactoryClientHandler<___T> for ::fidl_next::IgnoreEvents where
1190    ___T: ::fidl_next::Transport
1191{
1192}
1193
1194impl<___H, ___T> MetricEventLoggerFactoryLocalClientHandler<___T> for ::fidl_next::Local<___H>
1195where
1196    ___H: MetricEventLoggerFactoryClientHandler<___T>,
1197    ___T: ::fidl_next::Transport,
1198{
1199}
1200
1201impl<___H, ___T> MetricEventLoggerFactoryLocalServerHandler<___T> for ::fidl_next::Local<___H>
1202where
1203    ___H: MetricEventLoggerFactoryServerHandler<___T>,
1204    ___T: ::fidl_next::Transport,
1205{
1206    async fn create_metric_event_logger(
1207        &mut self,
1208
1209        request: ::fidl_next::Request<metric_event_logger_factory::CreateMetricEventLogger, ___T>,
1210
1211        responder: ::fidl_next::Responder<
1212            metric_event_logger_factory::CreateMetricEventLogger,
1213            ___T,
1214        >,
1215    ) {
1216        ___H::create_metric_event_logger(&mut self.0, request, responder).await
1217    }
1218
1219    async fn create_metric_event_logger_with_experiments(
1220        &mut self,
1221
1222        request: ::fidl_next::Request<
1223            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1224            ___T,
1225        >,
1226
1227        responder: ::fidl_next::Responder<
1228            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1229            ___T,
1230        >,
1231    ) {
1232        ___H::create_metric_event_logger_with_experiments(&mut self.0, request, responder).await
1233    }
1234}
1235
1236pub use fidl_next_common_fuchsia_metrics::*;