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::never::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::never::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::never::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::never::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        mut message: ::fidl_next::Message<___T>,
881    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<___T::Error>> {
882        match *message.header().ordinal {
883            ordinal => Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal)),
884        }
885    }
886}
887
888#[diagnostic::on_unimplemented(
889    note = "If {Self} implements the non-local MetricEventLoggerFactoryServerHandler trait, use `spawn_as_local` or the `Local` adapter type"
890)]
891
892/// A server handler for the MetricEventLoggerFactory protocol.
893///
894/// See [`MetricEventLoggerFactory`] for more details.
895pub trait MetricEventLoggerFactoryLocalServerHandler<
896    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
897    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
898>
899{
900    #[doc = " Create a MetricEventLogger for the project specified by `project_spec`.\n"]
901    fn create_metric_event_logger(
902        &mut self,
903
904        request: ::fidl_next::Request<metric_event_logger_factory::CreateMetricEventLogger, ___T>,
905
906        responder: ::fidl_next::Responder<
907            metric_event_logger_factory::CreateMetricEventLogger,
908            ___T,
909        >,
910    ) -> impl ::core::future::Future<Output = ()>;
911
912    #[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"]
913    fn create_metric_event_logger_with_experiments(
914        &mut self,
915
916        request: ::fidl_next::Request<
917            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
918            ___T,
919        >,
920
921        responder: ::fidl_next::Responder<
922            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
923            ___T,
924        >,
925    ) -> impl ::core::future::Future<Output = ()>;
926}
927
928impl<___H, ___T> ::fidl_next::DispatchLocalServerMessage<___H, ___T> for MetricEventLoggerFactory
929where
930    ___H: MetricEventLoggerFactoryLocalServerHandler<___T> ,
931    ___T: ::fidl_next::Transport,
932
933
934            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>: ::fidl_next::Decode<
935                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
936                Constraint = (),
937            >,
938
939
940
941            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>: ::fidl_next::Decode<
942                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
943                Constraint = (),
944            >,
945
946
947{
948    async fn on_one_way(
949        handler: &mut ___H,
950        mut message: ::fidl_next::Message<___T>,
951    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
952        match *message.header().ordinal {
953
954
955
956
957
958
959
960            ordinal => {
961
962                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
963
964            }
965        }
966    }
967
968    async fn on_two_way(
969        handler: &mut ___H,
970        mut message: ::fidl_next::Message<___T>,
971        responder: ::fidl_next::protocol::Responder<___T>,
972    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
973        match *message.header().ordinal {
974
975
976
977                    967417524583938558 => {
978                        let responder = ::fidl_next::Responder::from_untyped(responder);
979
980                            match ::fidl_next::AsDecoderExt::into_decoded(message) {
981                                Ok(decoded) => {
982                                    handler.create_metric_event_logger(::fidl_next::Request::from_decoded(decoded), responder).await;
983                                    Ok(())
984                                }
985                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
986                                    ordinal: 967417524583938558,
987                                    error,
988                                }),
989                            }
990
991                    }
992
993
994
995
996                    9160168118327134458 => {
997                        let responder = ::fidl_next::Responder::from_untyped(responder);
998
999                            match ::fidl_next::AsDecoderExt::into_decoded(message) {
1000                                Ok(decoded) => {
1001                                    handler.create_metric_event_logger_with_experiments(::fidl_next::Request::from_decoded(decoded), responder).await;
1002                                    Ok(())
1003                                }
1004                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
1005                                    ordinal: 9160168118327134458,
1006                                    error,
1007                                }),
1008                            }
1009
1010                    }
1011
1012
1013            ordinal => {
1014
1015                        Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
1016
1017            }
1018        }
1019    }
1020}
1021
1022/// A client handler for the MetricEventLoggerFactory protocol.
1023///
1024/// See [`MetricEventLoggerFactory`] for more details.
1025pub trait MetricEventLoggerFactoryClientHandler<
1026    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
1027    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
1028>
1029{
1030}
1031
1032impl<___H, ___T> ::fidl_next::DispatchClientMessage<___H, ___T> for MetricEventLoggerFactory
1033where
1034    ___H: MetricEventLoggerFactoryClientHandler<___T> + ::core::marker::Send,
1035    ___T: ::fidl_next::Transport,
1036{
1037    async fn on_event(
1038        handler: &mut ___H,
1039        mut message: ::fidl_next::Message<___T>,
1040    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<___T::Error>> {
1041        match *message.header().ordinal {
1042            ordinal => Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal)),
1043        }
1044    }
1045}
1046
1047/// A server handler for the MetricEventLoggerFactory protocol.
1048///
1049/// See [`MetricEventLoggerFactory`] for more details.
1050pub trait MetricEventLoggerFactoryServerHandler<
1051    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
1052    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
1053>
1054{
1055    #[doc = " Create a MetricEventLogger for the project specified by `project_spec`.\n"]
1056    fn create_metric_event_logger(
1057        &mut self,
1058
1059        request: ::fidl_next::Request<metric_event_logger_factory::CreateMetricEventLogger, ___T>,
1060
1061        responder: ::fidl_next::Responder<
1062            metric_event_logger_factory::CreateMetricEventLogger,
1063            ___T,
1064        >,
1065    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send;
1066
1067    #[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"]
1068    fn create_metric_event_logger_with_experiments(
1069        &mut self,
1070
1071        request: ::fidl_next::Request<
1072            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1073            ___T,
1074        >,
1075
1076        responder: ::fidl_next::Responder<
1077            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1078            ___T,
1079        >,
1080    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send;
1081}
1082
1083impl<___H, ___T> ::fidl_next::DispatchServerMessage<___H, ___T> for MetricEventLoggerFactory
1084where
1085    ___H: MetricEventLoggerFactoryServerHandler<___T> + ::core::marker::Send,
1086    ___T: ::fidl_next::Transport,
1087
1088
1089            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerRequest<'de>: ::fidl_next::Decode<
1090                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
1091                Constraint = (),
1092            >,
1093
1094
1095
1096            for<'de> crate::wire::MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest<'de>: ::fidl_next::Decode<
1097                <<___T as ::fidl_next::Transport>::RecvBuffer as ::fidl_next::AsDecoder<'de>>::Decoder,
1098                Constraint = (),
1099            >,
1100
1101
1102{
1103    async fn on_one_way(
1104        handler: &mut ___H,
1105        mut message: ::fidl_next::Message<___T>,
1106    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
1107        match *message.header().ordinal {
1108
1109
1110
1111
1112
1113
1114
1115            ordinal => {
1116
1117                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
1118
1119            }
1120        }
1121    }
1122
1123    async fn on_two_way(
1124        handler: &mut ___H,
1125        mut message: ::fidl_next::Message<___T>,
1126        responder: ::fidl_next::protocol::Responder<___T>,
1127    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>> {
1128        match *message.header().ordinal {
1129
1130
1131
1132                    967417524583938558 => {
1133                        let responder = ::fidl_next::Responder::from_untyped(responder);
1134
1135                            match ::fidl_next::AsDecoderExt::into_decoded(message) {
1136                                Ok(decoded) => {
1137                                    handler.create_metric_event_logger(::fidl_next::Request::from_decoded(decoded), responder).await;
1138                                    Ok(())
1139                                }
1140                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
1141                                    ordinal: 967417524583938558,
1142                                    error,
1143                                }),
1144                            }
1145
1146                    }
1147
1148
1149
1150
1151                    9160168118327134458 => {
1152                        let responder = ::fidl_next::Responder::from_untyped(responder);
1153
1154                            match ::fidl_next::AsDecoderExt::into_decoded(message) {
1155                                Ok(decoded) => {
1156                                    handler.create_metric_event_logger_with_experiments(::fidl_next::Request::from_decoded(decoded), responder).await;
1157                                    Ok(())
1158                                }
1159                                Err(error) => Err(::fidl_next::ProtocolError::InvalidMessage {
1160                                    ordinal: 9160168118327134458,
1161                                    error,
1162                                }),
1163                            }
1164
1165                    }
1166
1167
1168            ordinal => {
1169
1170                        Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
1171
1172            }
1173        }
1174    }
1175}
1176
1177impl<___T> MetricEventLoggerFactoryClientHandler<___T> for ::fidl_next::IgnoreEvents where
1178    ___T: ::fidl_next::Transport
1179{
1180}
1181
1182impl<___H, ___T> MetricEventLoggerFactoryLocalClientHandler<___T> for ::fidl_next::Local<___H>
1183where
1184    ___H: MetricEventLoggerFactoryClientHandler<___T>,
1185    ___T: ::fidl_next::Transport,
1186{
1187}
1188
1189impl<___H, ___T> MetricEventLoggerFactoryLocalServerHandler<___T> for ::fidl_next::Local<___H>
1190where
1191    ___H: MetricEventLoggerFactoryServerHandler<___T>,
1192    ___T: ::fidl_next::Transport,
1193{
1194    async fn create_metric_event_logger(
1195        &mut self,
1196
1197        request: ::fidl_next::Request<metric_event_logger_factory::CreateMetricEventLogger, ___T>,
1198
1199        responder: ::fidl_next::Responder<
1200            metric_event_logger_factory::CreateMetricEventLogger,
1201            ___T,
1202        >,
1203    ) {
1204        ___H::create_metric_event_logger(&mut self.0, request, responder).await
1205    }
1206
1207    async fn create_metric_event_logger_with_experiments(
1208        &mut self,
1209
1210        request: ::fidl_next::Request<
1211            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1212            ___T,
1213        >,
1214
1215        responder: ::fidl_next::Responder<
1216            metric_event_logger_factory::CreateMetricEventLoggerWithExperiments,
1217            ___T,
1218        >,
1219    ) {
1220        ___H::create_metric_event_logger_with_experiments(&mut self.0, request, responder).await
1221    }
1222}
1223
1224pub use fidl_next_common_fuchsia_metrics::*;