Skip to main content

fidl_next_fuchsia_hardware_power/
fidl_next_fuchsia_hardware_power.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_hardware_power::natural::*;
8
9    #[derive(Debug, PartialEq)]
10    #[repr(C)]
11    pub struct PowerTokenProviderGetTokenResponse {
12        pub handle: ::fidl_next::fuchsia::zx::Event,
13    }
14
15    unsafe impl<___E> ::fidl_next::Encode<crate::wire::PowerTokenProviderGetTokenResponse, ___E>
16        for PowerTokenProviderGetTokenResponse
17    where
18        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
19        ___E: ::fidl_next::fuchsia::HandleEncoder,
20    {
21        const COPY_OPTIMIZATION: ::fidl_next::CopyOptimization<
22            Self,
23            crate::wire::PowerTokenProviderGetTokenResponse,
24        > = unsafe {
25            ::fidl_next::CopyOptimization::enable_if(
26                true && <::fidl_next::fuchsia::zx::Event as ::fidl_next::Encode<
27                    ::fidl_next::wire::fuchsia::Event,
28                    ___E,
29                >>::COPY_OPTIMIZATION
30                    .is_enabled(),
31            )
32        };
33
34        #[inline]
35        fn encode(
36            self,
37            encoder_: &mut ___E,
38            out_: &mut ::core::mem::MaybeUninit<crate::wire::PowerTokenProviderGetTokenResponse>,
39            _: (),
40        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
41            ::fidl_next::munge! {
42                let crate::wire::PowerTokenProviderGetTokenResponse {
43                    handle,
44
45                } = out_;
46            }
47
48            ::fidl_next::Encode::encode(self.handle, encoder_, handle, ())?;
49
50            let mut _field = unsafe { ::fidl_next::Slot::new_unchecked(handle.as_mut_ptr()) };
51
52            Ok(())
53        }
54    }
55
56    unsafe impl<___E>
57        ::fidl_next::EncodeOption<
58            ::fidl_next::wire::Box<'static, crate::wire::PowerTokenProviderGetTokenResponse>,
59            ___E,
60        > for PowerTokenProviderGetTokenResponse
61    where
62        ___E: ::fidl_next::Encoder + ?Sized,
63        PowerTokenProviderGetTokenResponse:
64            ::fidl_next::Encode<crate::wire::PowerTokenProviderGetTokenResponse, ___E>,
65    {
66        #[inline]
67        fn encode_option(
68            this: ::core::option::Option<Self>,
69            encoder: &mut ___E,
70            out: &mut ::core::mem::MaybeUninit<
71                ::fidl_next::wire::Box<'static, crate::wire::PowerTokenProviderGetTokenResponse>,
72            >,
73            _: (),
74        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
75            if let Some(inner) = this {
76                ::fidl_next::EncoderExt::encode_next(encoder, inner)?;
77                ::fidl_next::wire::Box::encode_present(out);
78            } else {
79                ::fidl_next::wire::Box::encode_absent(out);
80            }
81
82            Ok(())
83        }
84    }
85
86    impl ::fidl_next::FromWire<crate::wire::PowerTokenProviderGetTokenResponse>
87        for PowerTokenProviderGetTokenResponse
88    {
89        const COPY_OPTIMIZATION: ::fidl_next::CopyOptimization<
90            crate::wire::PowerTokenProviderGetTokenResponse,
91            Self,
92        > = unsafe {
93            ::fidl_next::CopyOptimization::enable_if(
94                true && <::fidl_next::fuchsia::zx::Event as ::fidl_next::FromWire<
95                    ::fidl_next::wire::fuchsia::Event,
96                >>::COPY_OPTIMIZATION
97                    .is_enabled(),
98            )
99        };
100
101        #[inline]
102        fn from_wire(wire: crate::wire::PowerTokenProviderGetTokenResponse) -> Self {
103            Self { handle: ::fidl_next::FromWire::from_wire(wire.handle) }
104        }
105    }
106}
107
108pub mod wire {
109
110    pub use fidl_next_common_fuchsia_hardware_power::wire::*;
111
112    /// The wire type corresponding to [`PowerTokenProviderGetTokenResponse`].
113    #[derive(Debug)]
114    #[repr(C)]
115    pub struct PowerTokenProviderGetTokenResponse {
116        pub handle: ::fidl_next::wire::fuchsia::Event,
117    }
118
119    static_assertions::const_assert_eq!(
120        std::mem::size_of::<PowerTokenProviderGetTokenResponse>(),
121        4
122    );
123    static_assertions::const_assert_eq!(
124        std::mem::align_of::<PowerTokenProviderGetTokenResponse>(),
125        4
126    );
127
128    static_assertions::const_assert_eq!(
129        std::mem::offset_of!(PowerTokenProviderGetTokenResponse, handle),
130        0
131    );
132
133    impl ::fidl_next::Constrained for PowerTokenProviderGetTokenResponse {
134        type Constraint = ();
135
136        fn validate(
137            _: ::fidl_next::Slot<'_, Self>,
138            _: Self::Constraint,
139        ) -> Result<(), ::fidl_next::ValidationError> {
140            Ok(())
141        }
142    }
143
144    unsafe impl ::fidl_next::Wire for PowerTokenProviderGetTokenResponse {
145        type Narrowed<'de> = PowerTokenProviderGetTokenResponse;
146
147        #[inline]
148        fn zero_padding(out_: &mut ::core::mem::MaybeUninit<Self>) {
149            ::fidl_next::munge! {
150                let Self {
151                    handle,
152
153                } = &mut *out_;
154            }
155
156            ::fidl_next::Wire::zero_padding(handle);
157        }
158    }
159
160    unsafe impl<___D> ::fidl_next::Decode<___D> for PowerTokenProviderGetTokenResponse
161    where
162        ___D: ::fidl_next::decoder::InternalHandleDecoder + ?Sized,
163        ___D: ::fidl_next::fuchsia::HandleDecoder,
164    {
165        fn decode(
166            slot_: ::fidl_next::Slot<'_, Self>,
167            decoder_: &mut ___D,
168            _: (),
169        ) -> ::core::result::Result<(), ::fidl_next::DecodeError> {
170            ::fidl_next::munge! {
171                let Self {
172                    mut handle,
173
174                } = slot_;
175            }
176
177            let _field = handle.as_mut();
178
179            ::fidl_next::Decode::decode(handle.as_mut(), decoder_, ())?;
180
181            Ok(())
182        }
183    }
184
185    impl ::fidl_next::IntoNatural for PowerTokenProviderGetTokenResponse {
186        type Natural = crate::natural::PowerTokenProviderGetTokenResponse;
187    }
188}
189
190pub mod wire_optional {
191
192    pub use fidl_next_common_fuchsia_hardware_power::wire_optional::*;
193}
194
195pub mod generic {
196
197    pub use fidl_next_common_fuchsia_hardware_power::generic::*;
198
199    /// The generic type corresponding to [`PowerTokenProviderGetTokenResponse`].
200    pub struct PowerTokenProviderGetTokenResponse<T0> {
201        pub handle: T0,
202    }
203
204    unsafe impl<___E, T0> ::fidl_next::Encode<crate::wire::PowerTokenProviderGetTokenResponse, ___E>
205        for PowerTokenProviderGetTokenResponse<T0>
206    where
207        ___E: ::fidl_next::encoder::InternalHandleEncoder + ?Sized,
208        ___E: ::fidl_next::fuchsia::HandleEncoder,
209        T0: ::fidl_next::Encode<::fidl_next::wire::fuchsia::Event, ___E>,
210    {
211        #[inline]
212        fn encode(
213            self,
214            encoder_: &mut ___E,
215            out_: &mut ::core::mem::MaybeUninit<crate::wire::PowerTokenProviderGetTokenResponse>,
216            _: (),
217        ) -> ::core::result::Result<(), ::fidl_next::EncodeError> {
218            ::fidl_next::munge! {
219                let crate::wire::PowerTokenProviderGetTokenResponse {
220                    handle,
221
222                } = out_;
223            }
224
225            ::fidl_next::Encode::encode(self.handle, encoder_, handle, ())?;
226
227            Ok(())
228        }
229    }
230}
231
232pub use self::natural::*;
233
234/// The type corresponding to the PowerTokenProvider protocol.
235#[derive(PartialEq, Debug)]
236pub struct PowerTokenProvider;
237
238impl ::fidl_next::Discoverable for PowerTokenProvider {
239    const PROTOCOL_NAME: &'static str = "fuchsia.hardware.power.PowerTokenProvider";
240}
241
242#[cfg(target_os = "fuchsia")]
243impl ::fidl_next::HasTransport for PowerTokenProvider {
244    type Transport = ::fidl_next::fuchsia::zx::Channel;
245}
246
247pub mod power_token_provider {
248    pub mod prelude {
249        pub use crate::{
250            PowerTokenProvider, PowerTokenProviderClientHandler,
251            PowerTokenProviderLocalClientHandler, PowerTokenProviderLocalServerHandler,
252            PowerTokenProviderServerHandler, power_token_provider,
253        };
254
255        pub use crate::natural::PowerTokenProviderGetTokenResponse;
256    }
257
258    pub struct GetToken;
259
260    impl ::fidl_next::Method for GetToken {
261        const ORDINAL: u64 = 2926448721688236234;
262        const FLEXIBILITY: ::fidl_next::protocol::Flexibility =
263            ::fidl_next::protocol::Flexibility::Flexible;
264
265        type Protocol = crate::PowerTokenProvider;
266
267        type Request = ::fidl_next::wire::EmptyMessageBody;
268    }
269
270    impl ::fidl_next::TwoWayMethod for GetToken {
271        type Response = ::fidl_next::wire::Result<
272            'static,
273            crate::wire::PowerTokenProviderGetTokenResponse,
274            ::fidl_next::wire::fuchsia::Status,
275        >;
276    }
277
278    impl<___R> ::fidl_next::Respond<___R> for GetToken {
279        type Output = ::core::result::Result<
280            crate::generic::PowerTokenProviderGetTokenResponse<___R>,
281            ::fidl_next::never::Never,
282        >;
283
284        fn respond(response: ___R) -> Self::Output {
285            ::core::result::Result::Ok(crate::generic::PowerTokenProviderGetTokenResponse {
286                handle: response,
287            })
288        }
289    }
290
291    impl<___R> ::fidl_next::RespondErr<___R> for GetToken {
292        type Output = ::core::result::Result<::fidl_next::never::Never, ___R>;
293
294        fn respond_err(response: ___R) -> Self::Output {
295            ::core::result::Result::Err(response)
296        }
297    }
298
299    mod ___detail {
300        unsafe impl<___T> ::fidl_next::HasConnectionHandles<___T> for crate::PowerTokenProvider
301        where
302            ___T: ::fidl_next::Transport,
303        {
304            type Client = PowerTokenProviderClient<___T>;
305            type Server = PowerTokenProviderServer<___T>;
306        }
307
308        /// The client for the `PowerTokenProvider` protocol.
309        #[repr(transparent)]
310        pub struct PowerTokenProviderClient<___T: ::fidl_next::Transport> {
311            #[allow(dead_code)]
312            client: ::fidl_next::protocol::Client<___T>,
313        }
314
315        impl<___T> PowerTokenProviderClient<___T>
316        where
317            ___T: ::fidl_next::Transport,
318        {
319            #[doc = " Returns a token which can be used with `fuchsia.power.broker` APIs to\n create a relationship between this driver\'s power element(s) and the\n power element this token is associated with.\n"]
320            pub fn get_token(&self) -> ::fidl_next::TwoWayFuture<'_, super::GetToken, ___T> {
321                ::fidl_next::TwoWayFuture::from_untyped(
322                    self.client.send_two_way::<::fidl_next::wire::EmptyMessageBody>(
323                        2926448721688236234,
324                        <super::GetToken as ::fidl_next::Method>::FLEXIBILITY,
325                        (),
326                    ),
327                )
328            }
329        }
330
331        /// The server for the `PowerTokenProvider` protocol.
332        #[repr(transparent)]
333        pub struct PowerTokenProviderServer<___T: ::fidl_next::Transport> {
334            server: ::fidl_next::protocol::Server<___T>,
335        }
336
337        impl<___T> PowerTokenProviderServer<___T> where ___T: ::fidl_next::Transport {}
338    }
339}
340
341#[diagnostic::on_unimplemented(
342    note = "If {Self} implements the non-local PowerTokenProviderClientHandler trait, use `spawn_as_local` or the `Local` adapter type"
343)]
344
345/// A client handler for the PowerTokenProvider protocol.
346///
347/// See [`PowerTokenProvider`] for more details.
348pub trait PowerTokenProviderLocalClientHandler<
349    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
350    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
351>
352{
353    fn on_unknown_interaction(&mut self, ordinal: u64) -> impl ::core::future::Future<Output = ()> {
354        ::core::future::ready(())
355    }
356}
357
358impl<___H, ___T> ::fidl_next::DispatchLocalClientMessage<___H, ___T> for PowerTokenProvider
359where
360    ___H: PowerTokenProviderLocalClientHandler<___T>,
361    ___T: ::fidl_next::Transport,
362{
363    async fn on_event(
364        handler: &mut ___H,
365        mut message: ::fidl_next::Message<___T>,
366    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<___T::Error>> {
367        match *message.header().ordinal {
368            ordinal => {
369                handler.on_unknown_interaction(ordinal).await;
370                if ::core::matches!(
371                    message.header().flexibility(),
372                    ::fidl_next::protocol::Flexibility::Strict
373                ) {
374                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
375                } else {
376                    Ok(())
377                }
378            }
379        }
380    }
381}
382
383#[diagnostic::on_unimplemented(
384    note = "If {Self} implements the non-local PowerTokenProviderServerHandler trait, use `spawn_as_local` or the `Local` adapter type"
385)]
386
387/// A server handler for the PowerTokenProvider protocol.
388///
389/// See [`PowerTokenProvider`] for more details.
390pub trait PowerTokenProviderLocalServerHandler<
391    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
392    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
393>
394{
395    #[doc = " Returns a token which can be used with `fuchsia.power.broker` APIs to\n create a relationship between this driver\'s power element(s) and the\n power element this token is associated with.\n"]
396    fn get_token(
397        &mut self,
398
399        responder: ::fidl_next::Responder<power_token_provider::GetToken, ___T>,
400    ) -> impl ::core::future::Future<Output = ()>;
401
402    fn on_unknown_interaction(&mut self, ordinal: u64) -> impl ::core::future::Future<Output = ()> {
403        ::core::future::ready(())
404    }
405}
406
407impl<___H, ___T> ::fidl_next::DispatchLocalServerMessage<___H, ___T> for PowerTokenProvider
408where
409    ___H: PowerTokenProviderLocalServerHandler<___T>,
410    ___T: ::fidl_next::Transport,
411{
412    async fn on_one_way(
413        handler: &mut ___H,
414        mut message: ::fidl_next::Message<___T>,
415    ) -> ::core::result::Result<
416        (),
417        ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>,
418    > {
419        match *message.header().ordinal {
420            ordinal => {
421                handler.on_unknown_interaction(ordinal).await;
422                if ::core::matches!(
423                    message.header().flexibility(),
424                    ::fidl_next::protocol::Flexibility::Strict
425                ) {
426                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
427                } else {
428                    Ok(())
429                }
430            }
431        }
432    }
433
434    async fn on_two_way(
435        handler: &mut ___H,
436        mut message: ::fidl_next::Message<___T>,
437        responder: ::fidl_next::protocol::Responder<___T>,
438    ) -> ::core::result::Result<
439        (),
440        ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>,
441    > {
442        match *message.header().ordinal {
443            2926448721688236234 => {
444                let responder = ::fidl_next::Responder::from_untyped(responder);
445
446                handler.get_token(responder).await;
447                Ok(())
448            }
449
450            ordinal => {
451                handler.on_unknown_interaction(ordinal).await;
452                if ::core::matches!(
453                    message.header().flexibility(),
454                    ::fidl_next::protocol::Flexibility::Strict
455                ) {
456                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
457                } else {
458                    responder
459                        .respond_framework_error(
460                            ordinal,
461                            ::fidl_next::FrameworkError::UnknownMethod,
462                        )
463                        .expect("encoding a framework error should never fail")
464                        .await?;
465                    Ok(())
466                }
467            }
468        }
469    }
470}
471
472/// A client handler for the PowerTokenProvider protocol.
473///
474/// See [`PowerTokenProvider`] for more details.
475pub trait PowerTokenProviderClientHandler<
476    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
477    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
478>
479{
480    fn on_unknown_interaction(
481        &mut self,
482        ordinal: u64,
483    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send {
484        ::core::future::ready(())
485    }
486}
487
488impl<___H, ___T> ::fidl_next::DispatchClientMessage<___H, ___T> for PowerTokenProvider
489where
490    ___H: PowerTokenProviderClientHandler<___T> + ::core::marker::Send,
491    ___T: ::fidl_next::Transport,
492{
493    async fn on_event(
494        handler: &mut ___H,
495        mut message: ::fidl_next::Message<___T>,
496    ) -> ::core::result::Result<(), ::fidl_next::ProtocolError<___T::Error>> {
497        match *message.header().ordinal {
498            ordinal => {
499                handler.on_unknown_interaction(ordinal).await;
500                if ::core::matches!(
501                    message.header().flexibility(),
502                    ::fidl_next::protocol::Flexibility::Strict
503                ) {
504                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
505                } else {
506                    Ok(())
507                }
508            }
509        }
510    }
511}
512
513/// A server handler for the PowerTokenProvider protocol.
514///
515/// See [`PowerTokenProvider`] for more details.
516pub trait PowerTokenProviderServerHandler<
517    #[cfg(target_os = "fuchsia")] ___T: ::fidl_next::Transport = ::fidl_next::fuchsia::zx::Channel,
518    #[cfg(not(target_os = "fuchsia"))] ___T: ::fidl_next::Transport,
519>
520{
521    #[doc = " Returns a token which can be used with `fuchsia.power.broker` APIs to\n create a relationship between this driver\'s power element(s) and the\n power element this token is associated with.\n"]
522    fn get_token(
523        &mut self,
524
525        responder: ::fidl_next::Responder<power_token_provider::GetToken, ___T>,
526    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send;
527
528    fn on_unknown_interaction(
529        &mut self,
530        ordinal: u64,
531    ) -> impl ::core::future::Future<Output = ()> + ::core::marker::Send {
532        ::core::future::ready(())
533    }
534}
535
536impl<___H, ___T> ::fidl_next::DispatchServerMessage<___H, ___T> for PowerTokenProvider
537where
538    ___H: PowerTokenProviderServerHandler<___T> + ::core::marker::Send,
539    ___T: ::fidl_next::Transport,
540{
541    async fn on_one_way(
542        handler: &mut ___H,
543        mut message: ::fidl_next::Message<___T>,
544    ) -> ::core::result::Result<
545        (),
546        ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>,
547    > {
548        match *message.header().ordinal {
549            ordinal => {
550                handler.on_unknown_interaction(ordinal).await;
551                if ::core::matches!(
552                    message.header().flexibility(),
553                    ::fidl_next::protocol::Flexibility::Strict
554                ) {
555                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
556                } else {
557                    Ok(())
558                }
559            }
560        }
561    }
562
563    async fn on_two_way(
564        handler: &mut ___H,
565        mut message: ::fidl_next::Message<___T>,
566        responder: ::fidl_next::protocol::Responder<___T>,
567    ) -> ::core::result::Result<
568        (),
569        ::fidl_next::ProtocolError<<___T as ::fidl_next::Transport>::Error>,
570    > {
571        match *message.header().ordinal {
572            2926448721688236234 => {
573                let responder = ::fidl_next::Responder::from_untyped(responder);
574
575                handler.get_token(responder).await;
576                Ok(())
577            }
578
579            ordinal => {
580                handler.on_unknown_interaction(ordinal).await;
581                if ::core::matches!(
582                    message.header().flexibility(),
583                    ::fidl_next::protocol::Flexibility::Strict
584                ) {
585                    Err(::fidl_next::ProtocolError::UnknownOrdinal(ordinal))
586                } else {
587                    responder
588                        .respond_framework_error(
589                            ordinal,
590                            ::fidl_next::FrameworkError::UnknownMethod,
591                        )
592                        .expect("encoding a framework error should never fail")
593                        .await?;
594                    Ok(())
595                }
596            }
597        }
598    }
599}
600
601impl<___T> PowerTokenProviderClientHandler<___T> for ::fidl_next::IgnoreEvents
602where
603    ___T: ::fidl_next::Transport,
604{
605    async fn on_unknown_interaction(&mut self, _: u64) {}
606}
607
608impl<___H, ___T> PowerTokenProviderLocalClientHandler<___T> for ::fidl_next::Local<___H>
609where
610    ___H: PowerTokenProviderClientHandler<___T>,
611    ___T: ::fidl_next::Transport,
612{
613    async fn on_unknown_interaction(&mut self, ordinal: u64) {
614        ___H::on_unknown_interaction(&mut self.0, ordinal).await
615    }
616}
617
618impl<___H, ___T> PowerTokenProviderLocalServerHandler<___T> for ::fidl_next::Local<___H>
619where
620    ___H: PowerTokenProviderServerHandler<___T>,
621    ___T: ::fidl_next::Transport,
622{
623    async fn get_token(
624        &mut self,
625
626        responder: ::fidl_next::Responder<power_token_provider::GetToken, ___T>,
627    ) {
628        ___H::get_token(&mut self.0, responder).await
629    }
630
631    async fn on_unknown_interaction(&mut self, ordinal: u64) {
632        ___H::on_unknown_interaction(&mut self.0, ordinal).await
633    }
634}
635
636/// The type corresponding to the PowerTokenService service.
637#[derive(Debug)]
638pub struct PowerTokenService;
639
640impl ::fidl_next::DiscoverableService for PowerTokenService {
641    const SERVICE_NAME: &'static str = "fuchsia.hardware.power.PowerTokenService";
642    const MEMBER_NAMES: &'static [&'static str] = &["token_provider"];
643}
644
645impl ::fidl_next::HasServiceRequest<::fidl_next::fuchsia::zx::Channel> for PowerTokenService {}
646
647impl<___C> ::fidl_next::Service<___C> for PowerTokenService
648where
649    ___C: ::fidl_next::protocol::ServiceConnector<::fidl_next::fuchsia::zx::Channel>,
650{
651    type Connector = PowerTokenServiceConnector<___C>;
652}
653
654/// A strongly-typed service connector for the `PowerTokenService` service.
655#[repr(transparent)]
656pub struct PowerTokenServiceConnector<___C> {
657    #[allow(dead_code)]
658    connector: ___C,
659}
660
661impl<___C> PowerTokenServiceConnector<___C>
662where
663    ___C: ::fidl_next::protocol::ServiceConnector<::fidl_next::fuchsia::zx::Channel>,
664{
665    /// Attempts to connect to the `token_provider` service member.
666    pub fn token_provider(
667        &self,
668        server_end: ::fidl_next::ServerEnd<
669            crate::PowerTokenProvider,
670            ::fidl_next::fuchsia::zx::Channel,
671        >,
672    ) -> ::core::result::Result<
673        (),
674        <___C as ::fidl_next::protocol::ServiceConnector<::fidl_next::fuchsia::zx::Channel>>::Error,
675    > {
676        ::fidl_next::protocol::ServiceConnector::<
677                ::fidl_next::fuchsia::zx::Channel
678            >::connect_to_member(
679                &self.connector,
680                "token_provider",
681                server_end.into_untyped(),
682            )
683    }
684}
685
686/// A service handler for the `PowerTokenService` service.
687pub trait PowerTokenServiceHandler {
688    /// Handles an attempt to connect to the `token_provider` member.
689    fn token_provider(
690        &self,
691        server_end: ::fidl_next::ServerEnd<
692            crate::PowerTokenProvider,
693            ::fidl_next::fuchsia::zx::Channel,
694        >,
695    );
696}
697
698impl<___H, ___T> ::fidl_next::DispatchServiceHandler<___H, ___T> for PowerTokenService
699where
700    ___H: PowerTokenServiceHandler,
701    ::fidl_next::fuchsia::zx::Channel: ::fidl_next::InstanceFromServiceTransport<___T>,
702{
703    fn on_connection(handler: &___H, member: &str, server_end: ___T) {
704        use ::fidl_next::InstanceFromServiceTransport;
705        match member {
706            "token_provider" => handler.token_provider(::fidl_next::ServerEnd::from_untyped(
707                ::fidl_next::fuchsia::zx::Channel::from_service_transport(server_end),
708            )),
709
710            _ => unreachable!(),
711        }
712    }
713}
714
715/// The type corresponding to the Service service.
716#[derive(Debug)]
717pub struct Service;
718
719impl ::fidl_next::DiscoverableService for Service {
720    const SERVICE_NAME: &'static str = "fuchsia.hardware.power.Service";
721    const MEMBER_NAMES: &'static [&'static str] = &["device"];
722}
723
724impl ::fidl_next::HasServiceRequest<::fidl_next::fuchsia::zx::Channel> for Service {}
725
726impl<___C> ::fidl_next::Service<___C> for Service
727where
728    ___C: ::fidl_next::protocol::ServiceConnector<::fidl_next::fuchsia::zx::Channel>,
729{
730    type Connector = ServiceConnector<___C>;
731}
732
733/// A strongly-typed service connector for the `Service` service.
734#[repr(transparent)]
735pub struct ServiceConnector<___C> {
736    #[allow(dead_code)]
737    connector: ___C,
738}
739
740impl<___C> ServiceConnector<___C>
741where
742    ___C: ::fidl_next::protocol::ServiceConnector<::fidl_next::fuchsia::zx::Channel>,
743{
744    /// Attempts to connect to the `device` service member.
745    pub fn device(
746        &self,
747        server_end: ::fidl_next::ServerEnd<crate::Device, ::fidl_next::fuchsia::zx::Channel>,
748    ) -> ::core::result::Result<
749        (),
750        <___C as ::fidl_next::protocol::ServiceConnector<::fidl_next::fuchsia::zx::Channel>>::Error,
751    > {
752        ::fidl_next::protocol::ServiceConnector::<
753                ::fidl_next::fuchsia::zx::Channel
754            >::connect_to_member(
755                &self.connector,
756                "device",
757                server_end.into_untyped(),
758            )
759    }
760}
761
762/// A service handler for the `Service` service.
763pub trait ServiceHandler {
764    /// Handles an attempt to connect to the `device` member.
765    fn device(
766        &self,
767        server_end: ::fidl_next::ServerEnd<crate::Device, ::fidl_next::fuchsia::zx::Channel>,
768    );
769}
770
771impl<___H, ___T> ::fidl_next::DispatchServiceHandler<___H, ___T> for Service
772where
773    ___H: ServiceHandler,
774    ::fidl_next::fuchsia::zx::Channel: ::fidl_next::InstanceFromServiceTransport<___T>,
775{
776    fn on_connection(handler: &___H, member: &str, server_end: ___T) {
777        use ::fidl_next::InstanceFromServiceTransport;
778        match member {
779            "device" => handler.device(::fidl_next::ServerEnd::from_untyped(
780                ::fidl_next::fuchsia::zx::Channel::from_service_transport(server_end),
781            )),
782
783            _ => unreachable!(),
784        }
785    }
786}
787
788pub use fidl_next_common_fuchsia_hardware_power::*;