1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_fonts__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ProviderGetFontResponse {
16 pub response: Option<Box<Response>>,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ProviderGetFontResponse {}
20
21#[derive(Debug, PartialEq)]
22pub struct ProviderGetTypefaceResponse {
23 pub response: TypefaceResponse,
24}
25
26impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
27 for ProviderGetTypefaceResponse
28{
29}
30
31#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
32pub struct ProviderRegisterFontSetEventListenerRequest {
33 pub listener: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
34}
35
36impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
37 for ProviderRegisterFontSetEventListenerRequest
38{
39}
40
41#[derive(Debug, PartialEq)]
42pub struct Response {
43 pub buffer: fidl_fuchsia_mem::Buffer,
44 pub buffer_id: u32,
48 pub font_index: u32,
51}
52
53impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Response {}
54
55#[derive(Debug, Default, PartialEq)]
60pub struct TypefaceResponse {
61 pub buffer: Option<fidl_fuchsia_mem::Buffer>,
65 pub buffer_id: Option<u32>,
69 pub font_index: Option<u32>,
72 #[doc(hidden)]
73 pub __source_breaking: fidl::marker::SourceBreaking,
74}
75
76impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for TypefaceResponse {}
77
78#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
79pub struct FontSetEventListenerMarker;
80
81impl fidl::endpoints::ProtocolMarker for FontSetEventListenerMarker {
82 type Proxy = FontSetEventListenerProxy;
83 type RequestStream = FontSetEventListenerRequestStream;
84 #[cfg(target_os = "fuchsia")]
85 type SynchronousProxy = FontSetEventListenerSynchronousProxy;
86
87 const DEBUG_NAME: &'static str = "(anonymous) FontSetEventListener";
88}
89
90pub trait FontSetEventListenerProxyInterface: Send + Sync {
91 type OnFontSetUpdatedResponseFut: std::future::Future<Output = Result<(), fidl::Error>> + Send;
92 fn r#on_font_set_updated(
93 &self,
94 event: &FontSetUpdatedEvent,
95 ) -> Self::OnFontSetUpdatedResponseFut;
96}
97#[derive(Debug)]
98#[cfg(target_os = "fuchsia")]
99pub struct FontSetEventListenerSynchronousProxy {
100 client: fidl::client::sync::Client,
101}
102
103#[cfg(target_os = "fuchsia")]
104impl fidl::endpoints::SynchronousProxy for FontSetEventListenerSynchronousProxy {
105 type Proxy = FontSetEventListenerProxy;
106 type Protocol = FontSetEventListenerMarker;
107
108 fn from_channel(inner: fidl::Channel) -> Self {
109 Self::new(inner)
110 }
111
112 fn into_channel(self) -> fidl::Channel {
113 self.client.into_channel()
114 }
115
116 fn as_channel(&self) -> &fidl::Channel {
117 self.client.as_channel()
118 }
119}
120
121#[cfg(target_os = "fuchsia")]
122impl FontSetEventListenerSynchronousProxy {
123 pub fn new(channel: fidl::Channel) -> Self {
124 Self { client: fidl::client::sync::Client::new(channel) }
125 }
126
127 pub fn into_channel(self) -> fidl::Channel {
128 self.client.into_channel()
129 }
130
131 pub fn wait_for_event(
134 &self,
135 deadline: zx::MonotonicInstant,
136 ) -> Result<FontSetEventListenerEvent, fidl::Error> {
137 FontSetEventListenerEvent::decode(
138 self.client.wait_for_event::<FontSetEventListenerMarker>(deadline)?,
139 )
140 }
141
142 pub fn r#on_font_set_updated(
145 &self,
146 mut event: &FontSetUpdatedEvent,
147 ___deadline: zx::MonotonicInstant,
148 ) -> Result<(), fidl::Error> {
149 let _response = self.client.send_query::<
150 FontSetEventListenerOnFontSetUpdatedRequest,
151 fidl::encoding::EmptyPayload,
152 FontSetEventListenerMarker,
153 >(
154 (event,),
155 0xf0cd2d121f881f9,
156 fidl::encoding::DynamicFlags::empty(),
157 ___deadline,
158 )?;
159 Ok(_response)
160 }
161}
162
163#[cfg(target_os = "fuchsia")]
164impl From<FontSetEventListenerSynchronousProxy> for zx::NullableHandle {
165 fn from(value: FontSetEventListenerSynchronousProxy) -> Self {
166 value.into_channel().into()
167 }
168}
169
170#[cfg(target_os = "fuchsia")]
171impl From<fidl::Channel> for FontSetEventListenerSynchronousProxy {
172 fn from(value: fidl::Channel) -> Self {
173 Self::new(value)
174 }
175}
176
177#[cfg(target_os = "fuchsia")]
178impl fidl::endpoints::FromClient for FontSetEventListenerSynchronousProxy {
179 type Protocol = FontSetEventListenerMarker;
180
181 fn from_client(value: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>) -> Self {
182 Self::new(value.into_channel())
183 }
184}
185
186#[derive(Debug, Clone)]
187pub struct FontSetEventListenerProxy {
188 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
189}
190
191impl fidl::endpoints::Proxy for FontSetEventListenerProxy {
192 type Protocol = FontSetEventListenerMarker;
193
194 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
195 Self::new(inner)
196 }
197
198 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
199 self.client.into_channel().map_err(|client| Self { client })
200 }
201
202 fn as_channel(&self) -> &::fidl::AsyncChannel {
203 self.client.as_channel()
204 }
205}
206
207impl FontSetEventListenerProxy {
208 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
210 let protocol_name =
211 <FontSetEventListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
212 Self { client: fidl::client::Client::new(channel, protocol_name) }
213 }
214
215 pub fn take_event_stream(&self) -> FontSetEventListenerEventStream {
221 FontSetEventListenerEventStream { event_receiver: self.client.take_event_receiver() }
222 }
223
224 pub fn r#on_font_set_updated(
227 &self,
228 mut event: &FontSetUpdatedEvent,
229 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
230 FontSetEventListenerProxyInterface::r#on_font_set_updated(self, event)
231 }
232}
233
234impl FontSetEventListenerProxyInterface for FontSetEventListenerProxy {
235 type OnFontSetUpdatedResponseFut =
236 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
237 fn r#on_font_set_updated(
238 &self,
239 mut event: &FontSetUpdatedEvent,
240 ) -> Self::OnFontSetUpdatedResponseFut {
241 fn _decode(
242 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
243 ) -> Result<(), fidl::Error> {
244 let _response = fidl::client::decode_transaction_body::<
245 fidl::encoding::EmptyPayload,
246 fidl::encoding::DefaultFuchsiaResourceDialect,
247 0xf0cd2d121f881f9,
248 >(_buf?)?;
249 Ok(_response)
250 }
251 self.client.send_query_and_decode::<FontSetEventListenerOnFontSetUpdatedRequest, ()>(
252 (event,),
253 0xf0cd2d121f881f9,
254 fidl::encoding::DynamicFlags::empty(),
255 _decode,
256 )
257 }
258}
259
260pub struct FontSetEventListenerEventStream {
261 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
262}
263
264impl std::marker::Unpin for FontSetEventListenerEventStream {}
265
266impl futures::stream::FusedStream for FontSetEventListenerEventStream {
267 fn is_terminated(&self) -> bool {
268 self.event_receiver.is_terminated()
269 }
270}
271
272impl futures::Stream for FontSetEventListenerEventStream {
273 type Item = Result<FontSetEventListenerEvent, fidl::Error>;
274
275 fn poll_next(
276 mut self: std::pin::Pin<&mut Self>,
277 cx: &mut std::task::Context<'_>,
278 ) -> std::task::Poll<Option<Self::Item>> {
279 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
280 &mut self.event_receiver,
281 cx
282 )?) {
283 Some(buf) => std::task::Poll::Ready(Some(FontSetEventListenerEvent::decode(buf))),
284 None => std::task::Poll::Ready(None),
285 }
286 }
287}
288
289#[derive(Debug)]
290pub enum FontSetEventListenerEvent {}
291
292impl FontSetEventListenerEvent {
293 fn decode(
295 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
296 ) -> Result<FontSetEventListenerEvent, fidl::Error> {
297 let (bytes, _handles) = buf.split_mut();
298 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
299 debug_assert_eq!(tx_header.tx_id, 0);
300 match tx_header.ordinal {
301 _ => Err(fidl::Error::UnknownOrdinal {
302 ordinal: tx_header.ordinal,
303 protocol_name:
304 <FontSetEventListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
305 }),
306 }
307 }
308}
309
310pub struct FontSetEventListenerRequestStream {
312 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
313 is_terminated: bool,
314}
315
316impl std::marker::Unpin for FontSetEventListenerRequestStream {}
317
318impl futures::stream::FusedStream for FontSetEventListenerRequestStream {
319 fn is_terminated(&self) -> bool {
320 self.is_terminated
321 }
322}
323
324impl fidl::endpoints::RequestStream for FontSetEventListenerRequestStream {
325 type Protocol = FontSetEventListenerMarker;
326 type ControlHandle = FontSetEventListenerControlHandle;
327
328 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
329 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
330 }
331
332 fn control_handle(&self) -> Self::ControlHandle {
333 FontSetEventListenerControlHandle { inner: self.inner.clone() }
334 }
335
336 fn into_inner(
337 self,
338 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
339 {
340 (self.inner, self.is_terminated)
341 }
342
343 fn from_inner(
344 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
345 is_terminated: bool,
346 ) -> Self {
347 Self { inner, is_terminated }
348 }
349}
350
351impl futures::Stream for FontSetEventListenerRequestStream {
352 type Item = Result<FontSetEventListenerRequest, fidl::Error>;
353
354 fn poll_next(
355 mut self: std::pin::Pin<&mut Self>,
356 cx: &mut std::task::Context<'_>,
357 ) -> std::task::Poll<Option<Self::Item>> {
358 let this = &mut *self;
359 if this.inner.check_shutdown(cx) {
360 this.is_terminated = true;
361 return std::task::Poll::Ready(None);
362 }
363 if this.is_terminated {
364 panic!("polled FontSetEventListenerRequestStream after completion");
365 }
366 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
367 |bytes, handles| {
368 match this.inner.channel().read_etc(cx, bytes, handles) {
369 std::task::Poll::Ready(Ok(())) => {}
370 std::task::Poll::Pending => return std::task::Poll::Pending,
371 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
372 this.is_terminated = true;
373 return std::task::Poll::Ready(None);
374 }
375 std::task::Poll::Ready(Err(e)) => {
376 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
377 e.into(),
378 ))));
379 }
380 }
381
382 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
384
385 std::task::Poll::Ready(Some(match header.ordinal {
386 0xf0cd2d121f881f9 => {
387 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
388 let mut req = fidl::new_empty!(FontSetEventListenerOnFontSetUpdatedRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
389 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<FontSetEventListenerOnFontSetUpdatedRequest>(&header, _body_bytes, handles, &mut req)?;
390 let control_handle = FontSetEventListenerControlHandle {
391 inner: this.inner.clone(),
392 };
393 Ok(FontSetEventListenerRequest::OnFontSetUpdated {event: req.event,
394
395 responder: FontSetEventListenerOnFontSetUpdatedResponder {
396 control_handle: std::mem::ManuallyDrop::new(control_handle),
397 tx_id: header.tx_id,
398 },
399 })
400 }
401 _ => Err(fidl::Error::UnknownOrdinal {
402 ordinal: header.ordinal,
403 protocol_name: <FontSetEventListenerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
404 }),
405 }))
406 },
407 )
408 }
409}
410
411#[derive(Debug)]
415pub enum FontSetEventListenerRequest {
416 OnFontSetUpdated {
419 event: FontSetUpdatedEvent,
420 responder: FontSetEventListenerOnFontSetUpdatedResponder,
421 },
422}
423
424impl FontSetEventListenerRequest {
425 #[allow(irrefutable_let_patterns)]
426 pub fn into_on_font_set_updated(
427 self,
428 ) -> Option<(FontSetUpdatedEvent, FontSetEventListenerOnFontSetUpdatedResponder)> {
429 if let FontSetEventListenerRequest::OnFontSetUpdated { event, responder } = self {
430 Some((event, responder))
431 } else {
432 None
433 }
434 }
435
436 pub fn method_name(&self) -> &'static str {
438 match *self {
439 FontSetEventListenerRequest::OnFontSetUpdated { .. } => "on_font_set_updated",
440 }
441 }
442}
443
444#[derive(Debug, Clone)]
445pub struct FontSetEventListenerControlHandle {
446 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
447}
448
449impl fidl::endpoints::ControlHandle for FontSetEventListenerControlHandle {
450 fn shutdown(&self) {
451 self.inner.shutdown()
452 }
453
454 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
455 self.inner.shutdown_with_epitaph(status)
456 }
457
458 fn is_closed(&self) -> bool {
459 self.inner.channel().is_closed()
460 }
461 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
462 self.inner.channel().on_closed()
463 }
464
465 #[cfg(target_os = "fuchsia")]
466 fn signal_peer(
467 &self,
468 clear_mask: zx::Signals,
469 set_mask: zx::Signals,
470 ) -> Result<(), zx_status::Status> {
471 use fidl::Peered;
472 self.inner.channel().signal_peer(clear_mask, set_mask)
473 }
474}
475
476impl FontSetEventListenerControlHandle {}
477
478#[must_use = "FIDL methods require a response to be sent"]
479#[derive(Debug)]
480pub struct FontSetEventListenerOnFontSetUpdatedResponder {
481 control_handle: std::mem::ManuallyDrop<FontSetEventListenerControlHandle>,
482 tx_id: u32,
483}
484
485impl std::ops::Drop for FontSetEventListenerOnFontSetUpdatedResponder {
489 fn drop(&mut self) {
490 self.control_handle.shutdown();
491 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
493 }
494}
495
496impl fidl::endpoints::Responder for FontSetEventListenerOnFontSetUpdatedResponder {
497 type ControlHandle = FontSetEventListenerControlHandle;
498
499 fn control_handle(&self) -> &FontSetEventListenerControlHandle {
500 &self.control_handle
501 }
502
503 fn drop_without_shutdown(mut self) {
504 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
506 std::mem::forget(self);
508 }
509}
510
511impl FontSetEventListenerOnFontSetUpdatedResponder {
512 pub fn send(self) -> Result<(), fidl::Error> {
516 let _result = self.send_raw();
517 if _result.is_err() {
518 self.control_handle.shutdown();
519 }
520 self.drop_without_shutdown();
521 _result
522 }
523
524 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
526 let _result = self.send_raw();
527 self.drop_without_shutdown();
528 _result
529 }
530
531 fn send_raw(&self) -> Result<(), fidl::Error> {
532 self.control_handle.inner.send::<fidl::encoding::EmptyPayload>(
533 (),
534 self.tx_id,
535 0xf0cd2d121f881f9,
536 fidl::encoding::DynamicFlags::empty(),
537 )
538 }
539}
540
541#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
542pub struct ProviderMarker;
543
544impl fidl::endpoints::ProtocolMarker for ProviderMarker {
545 type Proxy = ProviderProxy;
546 type RequestStream = ProviderRequestStream;
547 #[cfg(target_os = "fuchsia")]
548 type SynchronousProxy = ProviderSynchronousProxy;
549
550 const DEBUG_NAME: &'static str = "fuchsia.fonts.Provider";
551}
552impl fidl::endpoints::DiscoverableProtocolMarker for ProviderMarker {}
553
554pub trait ProviderProxyInterface: Send + Sync {
555 type GetFontResponseFut: std::future::Future<Output = Result<Option<Box<Response>>, fidl::Error>>
556 + Send;
557 fn r#get_font(&self, request: &Request) -> Self::GetFontResponseFut;
558 type GetFamilyInfoResponseFut: std::future::Future<Output = Result<Option<Box<FamilyInfo>>, fidl::Error>>
559 + Send;
560 fn r#get_family_info(&self, family: &str) -> Self::GetFamilyInfoResponseFut;
561 type GetTypefaceResponseFut: std::future::Future<Output = Result<TypefaceResponse, fidl::Error>>
562 + Send;
563 fn r#get_typeface(&self, request: &TypefaceRequest) -> Self::GetTypefaceResponseFut;
564 type GetFontFamilyInfoResponseFut: std::future::Future<Output = Result<FontFamilyInfo, fidl::Error>>
565 + Send;
566 fn r#get_font_family_info(&self, family: &FamilyName) -> Self::GetFontFamilyInfoResponseFut;
567 type RegisterFontSetEventListenerResponseFut: std::future::Future<Output = Result<(), fidl::Error>>
568 + Send;
569 fn r#register_font_set_event_listener(
570 &self,
571 listener: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
572 ) -> Self::RegisterFontSetEventListenerResponseFut;
573}
574#[derive(Debug)]
575#[cfg(target_os = "fuchsia")]
576pub struct ProviderSynchronousProxy {
577 client: fidl::client::sync::Client,
578}
579
580#[cfg(target_os = "fuchsia")]
581impl fidl::endpoints::SynchronousProxy for ProviderSynchronousProxy {
582 type Proxy = ProviderProxy;
583 type Protocol = ProviderMarker;
584
585 fn from_channel(inner: fidl::Channel) -> Self {
586 Self::new(inner)
587 }
588
589 fn into_channel(self) -> fidl::Channel {
590 self.client.into_channel()
591 }
592
593 fn as_channel(&self) -> &fidl::Channel {
594 self.client.as_channel()
595 }
596}
597
598#[cfg(target_os = "fuchsia")]
599impl ProviderSynchronousProxy {
600 pub fn new(channel: fidl::Channel) -> Self {
601 Self { client: fidl::client::sync::Client::new(channel) }
602 }
603
604 pub fn into_channel(self) -> fidl::Channel {
605 self.client.into_channel()
606 }
607
608 pub fn wait_for_event(
611 &self,
612 deadline: zx::MonotonicInstant,
613 ) -> Result<ProviderEvent, fidl::Error> {
614 ProviderEvent::decode(self.client.wait_for_event::<ProviderMarker>(deadline)?)
615 }
616
617 pub fn r#get_font(
621 &self,
622 mut request: &Request,
623 ___deadline: zx::MonotonicInstant,
624 ) -> Result<Option<Box<Response>>, fidl::Error> {
625 let _response = self
626 .client
627 .send_query::<ProviderGetFontRequest, ProviderGetFontResponse, ProviderMarker>(
628 (request,),
629 0x6daeaad83184076b,
630 fidl::encoding::DynamicFlags::empty(),
631 ___deadline,
632 )?;
633 Ok(_response.response)
634 }
635
636 pub fn r#get_family_info(
643 &self,
644 mut family: &str,
645 ___deadline: zx::MonotonicInstant,
646 ) -> Result<Option<Box<FamilyInfo>>, fidl::Error> {
647 let _response = self.client.send_query::<
648 ProviderGetFamilyInfoRequest,
649 ProviderGetFamilyInfoResponse,
650 ProviderMarker,
651 >(
652 (family,),
653 0x27aba13280090db3,
654 fidl::encoding::DynamicFlags::empty(),
655 ___deadline,
656 )?;
657 Ok(_response.family_info)
658 }
659
660 pub fn r#get_typeface(
664 &self,
665 mut request: &TypefaceRequest,
666 ___deadline: zx::MonotonicInstant,
667 ) -> Result<TypefaceResponse, fidl::Error> {
668 let _response = self
669 .client
670 .send_query::<ProviderGetTypefaceRequest, ProviderGetTypefaceResponse, ProviderMarker>(
671 (request,),
672 0x5481d24f1a4b0671,
673 fidl::encoding::DynamicFlags::empty(),
674 ___deadline,
675 )?;
676 Ok(_response.response)
677 }
678
679 pub fn r#get_font_family_info(
686 &self,
687 mut family: &FamilyName,
688 ___deadline: zx::MonotonicInstant,
689 ) -> Result<FontFamilyInfo, fidl::Error> {
690 let _response = self.client.send_query::<
691 ProviderGetFontFamilyInfoRequest,
692 ProviderGetFontFamilyInfoResponse,
693 ProviderMarker,
694 >(
695 (family,),
696 0x7520ee83bf25c9ca,
697 fidl::encoding::DynamicFlags::empty(),
698 ___deadline,
699 )?;
700 Ok(_response.family_info)
701 }
702
703 pub fn r#register_font_set_event_listener(
708 &self,
709 mut listener: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
710 ___deadline: zx::MonotonicInstant,
711 ) -> Result<(), fidl::Error> {
712 let _response = self.client.send_query::<
713 ProviderRegisterFontSetEventListenerRequest,
714 fidl::encoding::EmptyPayload,
715 ProviderMarker,
716 >(
717 (listener,),
718 0x196898fd17cb694c,
719 fidl::encoding::DynamicFlags::empty(),
720 ___deadline,
721 )?;
722 Ok(_response)
723 }
724}
725
726#[cfg(target_os = "fuchsia")]
727impl From<ProviderSynchronousProxy> for zx::NullableHandle {
728 fn from(value: ProviderSynchronousProxy) -> Self {
729 value.into_channel().into()
730 }
731}
732
733#[cfg(target_os = "fuchsia")]
734impl From<fidl::Channel> for ProviderSynchronousProxy {
735 fn from(value: fidl::Channel) -> Self {
736 Self::new(value)
737 }
738}
739
740#[cfg(target_os = "fuchsia")]
741impl fidl::endpoints::FromClient for ProviderSynchronousProxy {
742 type Protocol = ProviderMarker;
743
744 fn from_client(value: fidl::endpoints::ClientEnd<ProviderMarker>) -> Self {
745 Self::new(value.into_channel())
746 }
747}
748
749#[derive(Debug, Clone)]
750pub struct ProviderProxy {
751 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
752}
753
754impl fidl::endpoints::Proxy for ProviderProxy {
755 type Protocol = ProviderMarker;
756
757 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
758 Self::new(inner)
759 }
760
761 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
762 self.client.into_channel().map_err(|client| Self { client })
763 }
764
765 fn as_channel(&self) -> &::fidl::AsyncChannel {
766 self.client.as_channel()
767 }
768}
769
770impl ProviderProxy {
771 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
773 let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
774 Self { client: fidl::client::Client::new(channel, protocol_name) }
775 }
776
777 pub fn take_event_stream(&self) -> ProviderEventStream {
783 ProviderEventStream { event_receiver: self.client.take_event_receiver() }
784 }
785
786 pub fn r#get_font(
790 &self,
791 mut request: &Request,
792 ) -> fidl::client::QueryResponseFut<
793 Option<Box<Response>>,
794 fidl::encoding::DefaultFuchsiaResourceDialect,
795 > {
796 ProviderProxyInterface::r#get_font(self, request)
797 }
798
799 pub fn r#get_family_info(
806 &self,
807 mut family: &str,
808 ) -> fidl::client::QueryResponseFut<
809 Option<Box<FamilyInfo>>,
810 fidl::encoding::DefaultFuchsiaResourceDialect,
811 > {
812 ProviderProxyInterface::r#get_family_info(self, family)
813 }
814
815 pub fn r#get_typeface(
819 &self,
820 mut request: &TypefaceRequest,
821 ) -> fidl::client::QueryResponseFut<
822 TypefaceResponse,
823 fidl::encoding::DefaultFuchsiaResourceDialect,
824 > {
825 ProviderProxyInterface::r#get_typeface(self, request)
826 }
827
828 pub fn r#get_font_family_info(
835 &self,
836 mut family: &FamilyName,
837 ) -> fidl::client::QueryResponseFut<FontFamilyInfo, fidl::encoding::DefaultFuchsiaResourceDialect>
838 {
839 ProviderProxyInterface::r#get_font_family_info(self, family)
840 }
841
842 pub fn r#register_font_set_event_listener(
847 &self,
848 mut listener: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
849 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
850 ProviderProxyInterface::r#register_font_set_event_listener(self, listener)
851 }
852}
853
854impl ProviderProxyInterface for ProviderProxy {
855 type GetFontResponseFut = fidl::client::QueryResponseFut<
856 Option<Box<Response>>,
857 fidl::encoding::DefaultFuchsiaResourceDialect,
858 >;
859 fn r#get_font(&self, mut request: &Request) -> Self::GetFontResponseFut {
860 fn _decode(
861 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
862 ) -> Result<Option<Box<Response>>, fidl::Error> {
863 let _response = fidl::client::decode_transaction_body::<
864 ProviderGetFontResponse,
865 fidl::encoding::DefaultFuchsiaResourceDialect,
866 0x6daeaad83184076b,
867 >(_buf?)?;
868 Ok(_response.response)
869 }
870 self.client.send_query_and_decode::<ProviderGetFontRequest, Option<Box<Response>>>(
871 (request,),
872 0x6daeaad83184076b,
873 fidl::encoding::DynamicFlags::empty(),
874 _decode,
875 )
876 }
877
878 type GetFamilyInfoResponseFut = fidl::client::QueryResponseFut<
879 Option<Box<FamilyInfo>>,
880 fidl::encoding::DefaultFuchsiaResourceDialect,
881 >;
882 fn r#get_family_info(&self, mut family: &str) -> Self::GetFamilyInfoResponseFut {
883 fn _decode(
884 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
885 ) -> Result<Option<Box<FamilyInfo>>, fidl::Error> {
886 let _response = fidl::client::decode_transaction_body::<
887 ProviderGetFamilyInfoResponse,
888 fidl::encoding::DefaultFuchsiaResourceDialect,
889 0x27aba13280090db3,
890 >(_buf?)?;
891 Ok(_response.family_info)
892 }
893 self.client.send_query_and_decode::<ProviderGetFamilyInfoRequest, Option<Box<FamilyInfo>>>(
894 (family,),
895 0x27aba13280090db3,
896 fidl::encoding::DynamicFlags::empty(),
897 _decode,
898 )
899 }
900
901 type GetTypefaceResponseFut = fidl::client::QueryResponseFut<
902 TypefaceResponse,
903 fidl::encoding::DefaultFuchsiaResourceDialect,
904 >;
905 fn r#get_typeface(&self, mut request: &TypefaceRequest) -> Self::GetTypefaceResponseFut {
906 fn _decode(
907 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
908 ) -> Result<TypefaceResponse, fidl::Error> {
909 let _response = fidl::client::decode_transaction_body::<
910 ProviderGetTypefaceResponse,
911 fidl::encoding::DefaultFuchsiaResourceDialect,
912 0x5481d24f1a4b0671,
913 >(_buf?)?;
914 Ok(_response.response)
915 }
916 self.client.send_query_and_decode::<ProviderGetTypefaceRequest, TypefaceResponse>(
917 (request,),
918 0x5481d24f1a4b0671,
919 fidl::encoding::DynamicFlags::empty(),
920 _decode,
921 )
922 }
923
924 type GetFontFamilyInfoResponseFut = fidl::client::QueryResponseFut<
925 FontFamilyInfo,
926 fidl::encoding::DefaultFuchsiaResourceDialect,
927 >;
928 fn r#get_font_family_info(
929 &self,
930 mut family: &FamilyName,
931 ) -> Self::GetFontFamilyInfoResponseFut {
932 fn _decode(
933 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
934 ) -> Result<FontFamilyInfo, fidl::Error> {
935 let _response = fidl::client::decode_transaction_body::<
936 ProviderGetFontFamilyInfoResponse,
937 fidl::encoding::DefaultFuchsiaResourceDialect,
938 0x7520ee83bf25c9ca,
939 >(_buf?)?;
940 Ok(_response.family_info)
941 }
942 self.client.send_query_and_decode::<ProviderGetFontFamilyInfoRequest, FontFamilyInfo>(
943 (family,),
944 0x7520ee83bf25c9ca,
945 fidl::encoding::DynamicFlags::empty(),
946 _decode,
947 )
948 }
949
950 type RegisterFontSetEventListenerResponseFut =
951 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
952 fn r#register_font_set_event_listener(
953 &self,
954 mut listener: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
955 ) -> Self::RegisterFontSetEventListenerResponseFut {
956 fn _decode(
957 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
958 ) -> Result<(), fidl::Error> {
959 let _response = fidl::client::decode_transaction_body::<
960 fidl::encoding::EmptyPayload,
961 fidl::encoding::DefaultFuchsiaResourceDialect,
962 0x196898fd17cb694c,
963 >(_buf?)?;
964 Ok(_response)
965 }
966 self.client.send_query_and_decode::<ProviderRegisterFontSetEventListenerRequest, ()>(
967 (listener,),
968 0x196898fd17cb694c,
969 fidl::encoding::DynamicFlags::empty(),
970 _decode,
971 )
972 }
973}
974
975pub struct ProviderEventStream {
976 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
977}
978
979impl std::marker::Unpin for ProviderEventStream {}
980
981impl futures::stream::FusedStream for ProviderEventStream {
982 fn is_terminated(&self) -> bool {
983 self.event_receiver.is_terminated()
984 }
985}
986
987impl futures::Stream for ProviderEventStream {
988 type Item = Result<ProviderEvent, fidl::Error>;
989
990 fn poll_next(
991 mut self: std::pin::Pin<&mut Self>,
992 cx: &mut std::task::Context<'_>,
993 ) -> std::task::Poll<Option<Self::Item>> {
994 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
995 &mut self.event_receiver,
996 cx
997 )?) {
998 Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
999 None => std::task::Poll::Ready(None),
1000 }
1001 }
1002}
1003
1004#[derive(Debug)]
1005pub enum ProviderEvent {}
1006
1007impl ProviderEvent {
1008 fn decode(
1010 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1011 ) -> Result<ProviderEvent, fidl::Error> {
1012 let (bytes, _handles) = buf.split_mut();
1013 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1014 debug_assert_eq!(tx_header.tx_id, 0);
1015 match tx_header.ordinal {
1016 _ => Err(fidl::Error::UnknownOrdinal {
1017 ordinal: tx_header.ordinal,
1018 protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1019 }),
1020 }
1021 }
1022}
1023
1024pub struct ProviderRequestStream {
1026 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1027 is_terminated: bool,
1028}
1029
1030impl std::marker::Unpin for ProviderRequestStream {}
1031
1032impl futures::stream::FusedStream for ProviderRequestStream {
1033 fn is_terminated(&self) -> bool {
1034 self.is_terminated
1035 }
1036}
1037
1038impl fidl::endpoints::RequestStream for ProviderRequestStream {
1039 type Protocol = ProviderMarker;
1040 type ControlHandle = ProviderControlHandle;
1041
1042 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1043 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1044 }
1045
1046 fn control_handle(&self) -> Self::ControlHandle {
1047 ProviderControlHandle { inner: self.inner.clone() }
1048 }
1049
1050 fn into_inner(
1051 self,
1052 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1053 {
1054 (self.inner, self.is_terminated)
1055 }
1056
1057 fn from_inner(
1058 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1059 is_terminated: bool,
1060 ) -> Self {
1061 Self { inner, is_terminated }
1062 }
1063}
1064
1065impl futures::Stream for ProviderRequestStream {
1066 type Item = Result<ProviderRequest, fidl::Error>;
1067
1068 fn poll_next(
1069 mut self: std::pin::Pin<&mut Self>,
1070 cx: &mut std::task::Context<'_>,
1071 ) -> std::task::Poll<Option<Self::Item>> {
1072 let this = &mut *self;
1073 if this.inner.check_shutdown(cx) {
1074 this.is_terminated = true;
1075 return std::task::Poll::Ready(None);
1076 }
1077 if this.is_terminated {
1078 panic!("polled ProviderRequestStream after completion");
1079 }
1080 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1081 |bytes, handles| {
1082 match this.inner.channel().read_etc(cx, bytes, handles) {
1083 std::task::Poll::Ready(Ok(())) => {}
1084 std::task::Poll::Pending => return std::task::Poll::Pending,
1085 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1086 this.is_terminated = true;
1087 return std::task::Poll::Ready(None);
1088 }
1089 std::task::Poll::Ready(Err(e)) => {
1090 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1091 e.into(),
1092 ))));
1093 }
1094 }
1095
1096 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1098
1099 std::task::Poll::Ready(Some(match header.ordinal {
1100 0x6daeaad83184076b => {
1101 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1102 let mut req = fidl::new_empty!(
1103 ProviderGetFontRequest,
1104 fidl::encoding::DefaultFuchsiaResourceDialect
1105 );
1106 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderGetFontRequest>(&header, _body_bytes, handles, &mut req)?;
1107 let control_handle = ProviderControlHandle { inner: this.inner.clone() };
1108 Ok(ProviderRequest::GetFont {
1109 request: req.request,
1110
1111 responder: ProviderGetFontResponder {
1112 control_handle: std::mem::ManuallyDrop::new(control_handle),
1113 tx_id: header.tx_id,
1114 },
1115 })
1116 }
1117 0x27aba13280090db3 => {
1118 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1119 let mut req = fidl::new_empty!(
1120 ProviderGetFamilyInfoRequest,
1121 fidl::encoding::DefaultFuchsiaResourceDialect
1122 );
1123 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderGetFamilyInfoRequest>(&header, _body_bytes, handles, &mut req)?;
1124 let control_handle = ProviderControlHandle { inner: this.inner.clone() };
1125 Ok(ProviderRequest::GetFamilyInfo {
1126 family: req.family,
1127
1128 responder: ProviderGetFamilyInfoResponder {
1129 control_handle: std::mem::ManuallyDrop::new(control_handle),
1130 tx_id: header.tx_id,
1131 },
1132 })
1133 }
1134 0x5481d24f1a4b0671 => {
1135 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1136 let mut req = fidl::new_empty!(
1137 ProviderGetTypefaceRequest,
1138 fidl::encoding::DefaultFuchsiaResourceDialect
1139 );
1140 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderGetTypefaceRequest>(&header, _body_bytes, handles, &mut req)?;
1141 let control_handle = ProviderControlHandle { inner: this.inner.clone() };
1142 Ok(ProviderRequest::GetTypeface {
1143 request: req.request,
1144
1145 responder: ProviderGetTypefaceResponder {
1146 control_handle: std::mem::ManuallyDrop::new(control_handle),
1147 tx_id: header.tx_id,
1148 },
1149 })
1150 }
1151 0x7520ee83bf25c9ca => {
1152 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1153 let mut req = fidl::new_empty!(
1154 ProviderGetFontFamilyInfoRequest,
1155 fidl::encoding::DefaultFuchsiaResourceDialect
1156 );
1157 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderGetFontFamilyInfoRequest>(&header, _body_bytes, handles, &mut req)?;
1158 let control_handle = ProviderControlHandle { inner: this.inner.clone() };
1159 Ok(ProviderRequest::GetFontFamilyInfo {
1160 family: req.family,
1161
1162 responder: ProviderGetFontFamilyInfoResponder {
1163 control_handle: std::mem::ManuallyDrop::new(control_handle),
1164 tx_id: header.tx_id,
1165 },
1166 })
1167 }
1168 0x196898fd17cb694c => {
1169 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1170 let mut req = fidl::new_empty!(
1171 ProviderRegisterFontSetEventListenerRequest,
1172 fidl::encoding::DefaultFuchsiaResourceDialect
1173 );
1174 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderRegisterFontSetEventListenerRequest>(&header, _body_bytes, handles, &mut req)?;
1175 let control_handle = ProviderControlHandle { inner: this.inner.clone() };
1176 Ok(ProviderRequest::RegisterFontSetEventListener {
1177 listener: req.listener,
1178
1179 responder: ProviderRegisterFontSetEventListenerResponder {
1180 control_handle: std::mem::ManuallyDrop::new(control_handle),
1181 tx_id: header.tx_id,
1182 },
1183 })
1184 }
1185 _ => Err(fidl::Error::UnknownOrdinal {
1186 ordinal: header.ordinal,
1187 protocol_name:
1188 <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1189 }),
1190 }))
1191 },
1192 )
1193 }
1194}
1195
1196#[derive(Debug)]
1200pub enum ProviderRequest {
1201 GetFont { request: Request, responder: ProviderGetFontResponder },
1205 GetFamilyInfo { family: String, responder: ProviderGetFamilyInfoResponder },
1212 GetTypeface { request: TypefaceRequest, responder: ProviderGetTypefaceResponder },
1216 GetFontFamilyInfo { family: FamilyName, responder: ProviderGetFontFamilyInfoResponder },
1223 RegisterFontSetEventListener {
1228 listener: fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
1229 responder: ProviderRegisterFontSetEventListenerResponder,
1230 },
1231}
1232
1233impl ProviderRequest {
1234 #[allow(irrefutable_let_patterns)]
1235 pub fn into_get_font(self) -> Option<(Request, ProviderGetFontResponder)> {
1236 if let ProviderRequest::GetFont { request, responder } = self {
1237 Some((request, responder))
1238 } else {
1239 None
1240 }
1241 }
1242
1243 #[allow(irrefutable_let_patterns)]
1244 pub fn into_get_family_info(self) -> Option<(String, ProviderGetFamilyInfoResponder)> {
1245 if let ProviderRequest::GetFamilyInfo { family, responder } = self {
1246 Some((family, responder))
1247 } else {
1248 None
1249 }
1250 }
1251
1252 #[allow(irrefutable_let_patterns)]
1253 pub fn into_get_typeface(self) -> Option<(TypefaceRequest, ProviderGetTypefaceResponder)> {
1254 if let ProviderRequest::GetTypeface { request, responder } = self {
1255 Some((request, responder))
1256 } else {
1257 None
1258 }
1259 }
1260
1261 #[allow(irrefutable_let_patterns)]
1262 pub fn into_get_font_family_info(
1263 self,
1264 ) -> Option<(FamilyName, ProviderGetFontFamilyInfoResponder)> {
1265 if let ProviderRequest::GetFontFamilyInfo { family, responder } = self {
1266 Some((family, responder))
1267 } else {
1268 None
1269 }
1270 }
1271
1272 #[allow(irrefutable_let_patterns)]
1273 pub fn into_register_font_set_event_listener(
1274 self,
1275 ) -> Option<(
1276 fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
1277 ProviderRegisterFontSetEventListenerResponder,
1278 )> {
1279 if let ProviderRequest::RegisterFontSetEventListener { listener, responder } = self {
1280 Some((listener, responder))
1281 } else {
1282 None
1283 }
1284 }
1285
1286 pub fn method_name(&self) -> &'static str {
1288 match *self {
1289 ProviderRequest::GetFont { .. } => "get_font",
1290 ProviderRequest::GetFamilyInfo { .. } => "get_family_info",
1291 ProviderRequest::GetTypeface { .. } => "get_typeface",
1292 ProviderRequest::GetFontFamilyInfo { .. } => "get_font_family_info",
1293 ProviderRequest::RegisterFontSetEventListener { .. } => {
1294 "register_font_set_event_listener"
1295 }
1296 }
1297 }
1298}
1299
1300#[derive(Debug, Clone)]
1301pub struct ProviderControlHandle {
1302 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1303}
1304
1305impl fidl::endpoints::ControlHandle for ProviderControlHandle {
1306 fn shutdown(&self) {
1307 self.inner.shutdown()
1308 }
1309
1310 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1311 self.inner.shutdown_with_epitaph(status)
1312 }
1313
1314 fn is_closed(&self) -> bool {
1315 self.inner.channel().is_closed()
1316 }
1317 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1318 self.inner.channel().on_closed()
1319 }
1320
1321 #[cfg(target_os = "fuchsia")]
1322 fn signal_peer(
1323 &self,
1324 clear_mask: zx::Signals,
1325 set_mask: zx::Signals,
1326 ) -> Result<(), zx_status::Status> {
1327 use fidl::Peered;
1328 self.inner.channel().signal_peer(clear_mask, set_mask)
1329 }
1330}
1331
1332impl ProviderControlHandle {}
1333
1334#[must_use = "FIDL methods require a response to be sent"]
1335#[derive(Debug)]
1336pub struct ProviderGetFontResponder {
1337 control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
1338 tx_id: u32,
1339}
1340
1341impl std::ops::Drop for ProviderGetFontResponder {
1345 fn drop(&mut self) {
1346 self.control_handle.shutdown();
1347 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1349 }
1350}
1351
1352impl fidl::endpoints::Responder for ProviderGetFontResponder {
1353 type ControlHandle = ProviderControlHandle;
1354
1355 fn control_handle(&self) -> &ProviderControlHandle {
1356 &self.control_handle
1357 }
1358
1359 fn drop_without_shutdown(mut self) {
1360 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1362 std::mem::forget(self);
1364 }
1365}
1366
1367impl ProviderGetFontResponder {
1368 pub fn send(self, mut response: Option<Response>) -> Result<(), fidl::Error> {
1372 let _result = self.send_raw(response);
1373 if _result.is_err() {
1374 self.control_handle.shutdown();
1375 }
1376 self.drop_without_shutdown();
1377 _result
1378 }
1379
1380 pub fn send_no_shutdown_on_err(
1382 self,
1383 mut response: Option<Response>,
1384 ) -> Result<(), fidl::Error> {
1385 let _result = self.send_raw(response);
1386 self.drop_without_shutdown();
1387 _result
1388 }
1389
1390 fn send_raw(&self, mut response: Option<Response>) -> Result<(), fidl::Error> {
1391 self.control_handle.inner.send::<ProviderGetFontResponse>(
1392 (response.as_mut(),),
1393 self.tx_id,
1394 0x6daeaad83184076b,
1395 fidl::encoding::DynamicFlags::empty(),
1396 )
1397 }
1398}
1399
1400#[must_use = "FIDL methods require a response to be sent"]
1401#[derive(Debug)]
1402pub struct ProviderGetFamilyInfoResponder {
1403 control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
1404 tx_id: u32,
1405}
1406
1407impl std::ops::Drop for ProviderGetFamilyInfoResponder {
1411 fn drop(&mut self) {
1412 self.control_handle.shutdown();
1413 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1415 }
1416}
1417
1418impl fidl::endpoints::Responder for ProviderGetFamilyInfoResponder {
1419 type ControlHandle = ProviderControlHandle;
1420
1421 fn control_handle(&self) -> &ProviderControlHandle {
1422 &self.control_handle
1423 }
1424
1425 fn drop_without_shutdown(mut self) {
1426 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1428 std::mem::forget(self);
1430 }
1431}
1432
1433impl ProviderGetFamilyInfoResponder {
1434 pub fn send(self, mut family_info: Option<&FamilyInfo>) -> Result<(), fidl::Error> {
1438 let _result = self.send_raw(family_info);
1439 if _result.is_err() {
1440 self.control_handle.shutdown();
1441 }
1442 self.drop_without_shutdown();
1443 _result
1444 }
1445
1446 pub fn send_no_shutdown_on_err(
1448 self,
1449 mut family_info: Option<&FamilyInfo>,
1450 ) -> Result<(), fidl::Error> {
1451 let _result = self.send_raw(family_info);
1452 self.drop_without_shutdown();
1453 _result
1454 }
1455
1456 fn send_raw(&self, mut family_info: Option<&FamilyInfo>) -> Result<(), fidl::Error> {
1457 self.control_handle.inner.send::<ProviderGetFamilyInfoResponse>(
1458 (family_info,),
1459 self.tx_id,
1460 0x27aba13280090db3,
1461 fidl::encoding::DynamicFlags::empty(),
1462 )
1463 }
1464}
1465
1466#[must_use = "FIDL methods require a response to be sent"]
1467#[derive(Debug)]
1468pub struct ProviderGetTypefaceResponder {
1469 control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
1470 tx_id: u32,
1471}
1472
1473impl std::ops::Drop for ProviderGetTypefaceResponder {
1477 fn drop(&mut self) {
1478 self.control_handle.shutdown();
1479 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1481 }
1482}
1483
1484impl fidl::endpoints::Responder for ProviderGetTypefaceResponder {
1485 type ControlHandle = ProviderControlHandle;
1486
1487 fn control_handle(&self) -> &ProviderControlHandle {
1488 &self.control_handle
1489 }
1490
1491 fn drop_without_shutdown(mut self) {
1492 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1494 std::mem::forget(self);
1496 }
1497}
1498
1499impl ProviderGetTypefaceResponder {
1500 pub fn send(self, mut response: TypefaceResponse) -> Result<(), fidl::Error> {
1504 let _result = self.send_raw(response);
1505 if _result.is_err() {
1506 self.control_handle.shutdown();
1507 }
1508 self.drop_without_shutdown();
1509 _result
1510 }
1511
1512 pub fn send_no_shutdown_on_err(
1514 self,
1515 mut response: TypefaceResponse,
1516 ) -> Result<(), fidl::Error> {
1517 let _result = self.send_raw(response);
1518 self.drop_without_shutdown();
1519 _result
1520 }
1521
1522 fn send_raw(&self, mut response: TypefaceResponse) -> Result<(), fidl::Error> {
1523 self.control_handle.inner.send::<ProviderGetTypefaceResponse>(
1524 (&mut response,),
1525 self.tx_id,
1526 0x5481d24f1a4b0671,
1527 fidl::encoding::DynamicFlags::empty(),
1528 )
1529 }
1530}
1531
1532#[must_use = "FIDL methods require a response to be sent"]
1533#[derive(Debug)]
1534pub struct ProviderGetFontFamilyInfoResponder {
1535 control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
1536 tx_id: u32,
1537}
1538
1539impl std::ops::Drop for ProviderGetFontFamilyInfoResponder {
1543 fn drop(&mut self) {
1544 self.control_handle.shutdown();
1545 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1547 }
1548}
1549
1550impl fidl::endpoints::Responder for ProviderGetFontFamilyInfoResponder {
1551 type ControlHandle = ProviderControlHandle;
1552
1553 fn control_handle(&self) -> &ProviderControlHandle {
1554 &self.control_handle
1555 }
1556
1557 fn drop_without_shutdown(mut self) {
1558 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1560 std::mem::forget(self);
1562 }
1563}
1564
1565impl ProviderGetFontFamilyInfoResponder {
1566 pub fn send(self, mut family_info: &FontFamilyInfo) -> Result<(), fidl::Error> {
1570 let _result = self.send_raw(family_info);
1571 if _result.is_err() {
1572 self.control_handle.shutdown();
1573 }
1574 self.drop_without_shutdown();
1575 _result
1576 }
1577
1578 pub fn send_no_shutdown_on_err(
1580 self,
1581 mut family_info: &FontFamilyInfo,
1582 ) -> Result<(), fidl::Error> {
1583 let _result = self.send_raw(family_info);
1584 self.drop_without_shutdown();
1585 _result
1586 }
1587
1588 fn send_raw(&self, mut family_info: &FontFamilyInfo) -> Result<(), fidl::Error> {
1589 self.control_handle.inner.send::<ProviderGetFontFamilyInfoResponse>(
1590 (family_info,),
1591 self.tx_id,
1592 0x7520ee83bf25c9ca,
1593 fidl::encoding::DynamicFlags::empty(),
1594 )
1595 }
1596}
1597
1598#[must_use = "FIDL methods require a response to be sent"]
1599#[derive(Debug)]
1600pub struct ProviderRegisterFontSetEventListenerResponder {
1601 control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
1602 tx_id: u32,
1603}
1604
1605impl std::ops::Drop for ProviderRegisterFontSetEventListenerResponder {
1609 fn drop(&mut self) {
1610 self.control_handle.shutdown();
1611 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1613 }
1614}
1615
1616impl fidl::endpoints::Responder for ProviderRegisterFontSetEventListenerResponder {
1617 type ControlHandle = ProviderControlHandle;
1618
1619 fn control_handle(&self) -> &ProviderControlHandle {
1620 &self.control_handle
1621 }
1622
1623 fn drop_without_shutdown(mut self) {
1624 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1626 std::mem::forget(self);
1628 }
1629}
1630
1631impl ProviderRegisterFontSetEventListenerResponder {
1632 pub fn send(self) -> Result<(), fidl::Error> {
1636 let _result = self.send_raw();
1637 if _result.is_err() {
1638 self.control_handle.shutdown();
1639 }
1640 self.drop_without_shutdown();
1641 _result
1642 }
1643
1644 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
1646 let _result = self.send_raw();
1647 self.drop_without_shutdown();
1648 _result
1649 }
1650
1651 fn send_raw(&self) -> Result<(), fidl::Error> {
1652 self.control_handle.inner.send::<fidl::encoding::EmptyPayload>(
1653 (),
1654 self.tx_id,
1655 0x196898fd17cb694c,
1656 fidl::encoding::DynamicFlags::empty(),
1657 )
1658 }
1659}
1660
1661mod internal {
1662 use super::*;
1663
1664 impl fidl::encoding::ResourceTypeMarker for ProviderGetFontResponse {
1665 type Borrowed<'a> = &'a mut Self;
1666 fn take_or_borrow<'a>(
1667 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1668 ) -> Self::Borrowed<'a> {
1669 value
1670 }
1671 }
1672
1673 unsafe impl fidl::encoding::TypeMarker for ProviderGetFontResponse {
1674 type Owned = Self;
1675
1676 #[inline(always)]
1677 fn inline_align(_context: fidl::encoding::Context) -> usize {
1678 8
1679 }
1680
1681 #[inline(always)]
1682 fn inline_size(_context: fidl::encoding::Context) -> usize {
1683 8
1684 }
1685 }
1686
1687 unsafe impl
1688 fidl::encoding::Encode<
1689 ProviderGetFontResponse,
1690 fidl::encoding::DefaultFuchsiaResourceDialect,
1691 > for &mut ProviderGetFontResponse
1692 {
1693 #[inline]
1694 unsafe fn encode(
1695 self,
1696 encoder: &mut fidl::encoding::Encoder<
1697 '_,
1698 fidl::encoding::DefaultFuchsiaResourceDialect,
1699 >,
1700 offset: usize,
1701 _depth: fidl::encoding::Depth,
1702 ) -> fidl::Result<()> {
1703 encoder.debug_check_bounds::<ProviderGetFontResponse>(offset);
1704 fidl::encoding::Encode::<ProviderGetFontResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
1706 (
1707 <fidl::encoding::Boxed<Response> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.response),
1708 ),
1709 encoder, offset, _depth
1710 )
1711 }
1712 }
1713 unsafe impl<
1714 T0: fidl::encoding::Encode<
1715 fidl::encoding::Boxed<Response>,
1716 fidl::encoding::DefaultFuchsiaResourceDialect,
1717 >,
1718 >
1719 fidl::encoding::Encode<
1720 ProviderGetFontResponse,
1721 fidl::encoding::DefaultFuchsiaResourceDialect,
1722 > for (T0,)
1723 {
1724 #[inline]
1725 unsafe fn encode(
1726 self,
1727 encoder: &mut fidl::encoding::Encoder<
1728 '_,
1729 fidl::encoding::DefaultFuchsiaResourceDialect,
1730 >,
1731 offset: usize,
1732 depth: fidl::encoding::Depth,
1733 ) -> fidl::Result<()> {
1734 encoder.debug_check_bounds::<ProviderGetFontResponse>(offset);
1735 self.0.encode(encoder, offset + 0, depth)?;
1739 Ok(())
1740 }
1741 }
1742
1743 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1744 for ProviderGetFontResponse
1745 {
1746 #[inline(always)]
1747 fn new_empty() -> Self {
1748 Self {
1749 response: fidl::new_empty!(
1750 fidl::encoding::Boxed<Response>,
1751 fidl::encoding::DefaultFuchsiaResourceDialect
1752 ),
1753 }
1754 }
1755
1756 #[inline]
1757 unsafe fn decode(
1758 &mut self,
1759 decoder: &mut fidl::encoding::Decoder<
1760 '_,
1761 fidl::encoding::DefaultFuchsiaResourceDialect,
1762 >,
1763 offset: usize,
1764 _depth: fidl::encoding::Depth,
1765 ) -> fidl::Result<()> {
1766 decoder.debug_check_bounds::<Self>(offset);
1767 fidl::decode!(
1769 fidl::encoding::Boxed<Response>,
1770 fidl::encoding::DefaultFuchsiaResourceDialect,
1771 &mut self.response,
1772 decoder,
1773 offset + 0,
1774 _depth
1775 )?;
1776 Ok(())
1777 }
1778 }
1779
1780 impl fidl::encoding::ResourceTypeMarker for ProviderGetTypefaceResponse {
1781 type Borrowed<'a> = &'a mut Self;
1782 fn take_or_borrow<'a>(
1783 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1784 ) -> Self::Borrowed<'a> {
1785 value
1786 }
1787 }
1788
1789 unsafe impl fidl::encoding::TypeMarker for ProviderGetTypefaceResponse {
1790 type Owned = Self;
1791
1792 #[inline(always)]
1793 fn inline_align(_context: fidl::encoding::Context) -> usize {
1794 8
1795 }
1796
1797 #[inline(always)]
1798 fn inline_size(_context: fidl::encoding::Context) -> usize {
1799 16
1800 }
1801 }
1802
1803 unsafe impl
1804 fidl::encoding::Encode<
1805 ProviderGetTypefaceResponse,
1806 fidl::encoding::DefaultFuchsiaResourceDialect,
1807 > for &mut ProviderGetTypefaceResponse
1808 {
1809 #[inline]
1810 unsafe fn encode(
1811 self,
1812 encoder: &mut fidl::encoding::Encoder<
1813 '_,
1814 fidl::encoding::DefaultFuchsiaResourceDialect,
1815 >,
1816 offset: usize,
1817 _depth: fidl::encoding::Depth,
1818 ) -> fidl::Result<()> {
1819 encoder.debug_check_bounds::<ProviderGetTypefaceResponse>(offset);
1820 fidl::encoding::Encode::<
1822 ProviderGetTypefaceResponse,
1823 fidl::encoding::DefaultFuchsiaResourceDialect,
1824 >::encode(
1825 (<TypefaceResponse as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1826 &mut self.response,
1827 ),),
1828 encoder,
1829 offset,
1830 _depth,
1831 )
1832 }
1833 }
1834 unsafe impl<
1835 T0: fidl::encoding::Encode<TypefaceResponse, fidl::encoding::DefaultFuchsiaResourceDialect>,
1836 >
1837 fidl::encoding::Encode<
1838 ProviderGetTypefaceResponse,
1839 fidl::encoding::DefaultFuchsiaResourceDialect,
1840 > for (T0,)
1841 {
1842 #[inline]
1843 unsafe fn encode(
1844 self,
1845 encoder: &mut fidl::encoding::Encoder<
1846 '_,
1847 fidl::encoding::DefaultFuchsiaResourceDialect,
1848 >,
1849 offset: usize,
1850 depth: fidl::encoding::Depth,
1851 ) -> fidl::Result<()> {
1852 encoder.debug_check_bounds::<ProviderGetTypefaceResponse>(offset);
1853 self.0.encode(encoder, offset + 0, depth)?;
1857 Ok(())
1858 }
1859 }
1860
1861 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1862 for ProviderGetTypefaceResponse
1863 {
1864 #[inline(always)]
1865 fn new_empty() -> Self {
1866 Self {
1867 response: fidl::new_empty!(
1868 TypefaceResponse,
1869 fidl::encoding::DefaultFuchsiaResourceDialect
1870 ),
1871 }
1872 }
1873
1874 #[inline]
1875 unsafe fn decode(
1876 &mut self,
1877 decoder: &mut fidl::encoding::Decoder<
1878 '_,
1879 fidl::encoding::DefaultFuchsiaResourceDialect,
1880 >,
1881 offset: usize,
1882 _depth: fidl::encoding::Depth,
1883 ) -> fidl::Result<()> {
1884 decoder.debug_check_bounds::<Self>(offset);
1885 fidl::decode!(
1887 TypefaceResponse,
1888 fidl::encoding::DefaultFuchsiaResourceDialect,
1889 &mut self.response,
1890 decoder,
1891 offset + 0,
1892 _depth
1893 )?;
1894 Ok(())
1895 }
1896 }
1897
1898 impl fidl::encoding::ResourceTypeMarker for ProviderRegisterFontSetEventListenerRequest {
1899 type Borrowed<'a> = &'a mut Self;
1900 fn take_or_borrow<'a>(
1901 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1902 ) -> Self::Borrowed<'a> {
1903 value
1904 }
1905 }
1906
1907 unsafe impl fidl::encoding::TypeMarker for ProviderRegisterFontSetEventListenerRequest {
1908 type Owned = Self;
1909
1910 #[inline(always)]
1911 fn inline_align(_context: fidl::encoding::Context) -> usize {
1912 4
1913 }
1914
1915 #[inline(always)]
1916 fn inline_size(_context: fidl::encoding::Context) -> usize {
1917 4
1918 }
1919 }
1920
1921 unsafe impl
1922 fidl::encoding::Encode<
1923 ProviderRegisterFontSetEventListenerRequest,
1924 fidl::encoding::DefaultFuchsiaResourceDialect,
1925 > for &mut ProviderRegisterFontSetEventListenerRequest
1926 {
1927 #[inline]
1928 unsafe fn encode(
1929 self,
1930 encoder: &mut fidl::encoding::Encoder<
1931 '_,
1932 fidl::encoding::DefaultFuchsiaResourceDialect,
1933 >,
1934 offset: usize,
1935 _depth: fidl::encoding::Depth,
1936 ) -> fidl::Result<()> {
1937 encoder.debug_check_bounds::<ProviderRegisterFontSetEventListenerRequest>(offset);
1938 fidl::encoding::Encode::<
1940 ProviderRegisterFontSetEventListenerRequest,
1941 fidl::encoding::DefaultFuchsiaResourceDialect,
1942 >::encode(
1943 (
1944 <fidl::encoding::Endpoint<
1945 fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
1946 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1947 &mut self.listener
1948 ),
1949 ),
1950 encoder,
1951 offset,
1952 _depth,
1953 )
1954 }
1955 }
1956 unsafe impl<
1957 T0: fidl::encoding::Encode<
1958 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<FontSetEventListenerMarker>>,
1959 fidl::encoding::DefaultFuchsiaResourceDialect,
1960 >,
1961 >
1962 fidl::encoding::Encode<
1963 ProviderRegisterFontSetEventListenerRequest,
1964 fidl::encoding::DefaultFuchsiaResourceDialect,
1965 > for (T0,)
1966 {
1967 #[inline]
1968 unsafe fn encode(
1969 self,
1970 encoder: &mut fidl::encoding::Encoder<
1971 '_,
1972 fidl::encoding::DefaultFuchsiaResourceDialect,
1973 >,
1974 offset: usize,
1975 depth: fidl::encoding::Depth,
1976 ) -> fidl::Result<()> {
1977 encoder.debug_check_bounds::<ProviderRegisterFontSetEventListenerRequest>(offset);
1978 self.0.encode(encoder, offset + 0, depth)?;
1982 Ok(())
1983 }
1984 }
1985
1986 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1987 for ProviderRegisterFontSetEventListenerRequest
1988 {
1989 #[inline(always)]
1990 fn new_empty() -> Self {
1991 Self {
1992 listener: fidl::new_empty!(
1993 fidl::encoding::Endpoint<
1994 fidl::endpoints::ClientEnd<FontSetEventListenerMarker>,
1995 >,
1996 fidl::encoding::DefaultFuchsiaResourceDialect
1997 ),
1998 }
1999 }
2000
2001 #[inline]
2002 unsafe fn decode(
2003 &mut self,
2004 decoder: &mut fidl::encoding::Decoder<
2005 '_,
2006 fidl::encoding::DefaultFuchsiaResourceDialect,
2007 >,
2008 offset: usize,
2009 _depth: fidl::encoding::Depth,
2010 ) -> fidl::Result<()> {
2011 decoder.debug_check_bounds::<Self>(offset);
2012 fidl::decode!(
2014 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<FontSetEventListenerMarker>>,
2015 fidl::encoding::DefaultFuchsiaResourceDialect,
2016 &mut self.listener,
2017 decoder,
2018 offset + 0,
2019 _depth
2020 )?;
2021 Ok(())
2022 }
2023 }
2024
2025 impl fidl::encoding::ResourceTypeMarker for Response {
2026 type Borrowed<'a> = &'a mut Self;
2027 fn take_or_borrow<'a>(
2028 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2029 ) -> Self::Borrowed<'a> {
2030 value
2031 }
2032 }
2033
2034 unsafe impl fidl::encoding::TypeMarker for Response {
2035 type Owned = Self;
2036
2037 #[inline(always)]
2038 fn inline_align(_context: fidl::encoding::Context) -> usize {
2039 8
2040 }
2041
2042 #[inline(always)]
2043 fn inline_size(_context: fidl::encoding::Context) -> usize {
2044 24
2045 }
2046 }
2047
2048 unsafe impl fidl::encoding::Encode<Response, fidl::encoding::DefaultFuchsiaResourceDialect>
2049 for &mut Response
2050 {
2051 #[inline]
2052 unsafe fn encode(
2053 self,
2054 encoder: &mut fidl::encoding::Encoder<
2055 '_,
2056 fidl::encoding::DefaultFuchsiaResourceDialect,
2057 >,
2058 offset: usize,
2059 _depth: fidl::encoding::Depth,
2060 ) -> fidl::Result<()> {
2061 encoder.debug_check_bounds::<Response>(offset);
2062 fidl::encoding::Encode::<Response, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2064 (
2065 <fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.buffer),
2066 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.buffer_id),
2067 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.font_index),
2068 ),
2069 encoder, offset, _depth
2070 )
2071 }
2072 }
2073 unsafe impl<
2074 T0: fidl::encoding::Encode<
2075 fidl_fuchsia_mem::Buffer,
2076 fidl::encoding::DefaultFuchsiaResourceDialect,
2077 >,
2078 T1: fidl::encoding::Encode<u32, fidl::encoding::DefaultFuchsiaResourceDialect>,
2079 T2: fidl::encoding::Encode<u32, fidl::encoding::DefaultFuchsiaResourceDialect>,
2080 > fidl::encoding::Encode<Response, fidl::encoding::DefaultFuchsiaResourceDialect>
2081 for (T0, T1, T2)
2082 {
2083 #[inline]
2084 unsafe fn encode(
2085 self,
2086 encoder: &mut fidl::encoding::Encoder<
2087 '_,
2088 fidl::encoding::DefaultFuchsiaResourceDialect,
2089 >,
2090 offset: usize,
2091 depth: fidl::encoding::Depth,
2092 ) -> fidl::Result<()> {
2093 encoder.debug_check_bounds::<Response>(offset);
2094 self.0.encode(encoder, offset + 0, depth)?;
2098 self.1.encode(encoder, offset + 16, depth)?;
2099 self.2.encode(encoder, offset + 20, depth)?;
2100 Ok(())
2101 }
2102 }
2103
2104 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Response {
2105 #[inline(always)]
2106 fn new_empty() -> Self {
2107 Self {
2108 buffer: fidl::new_empty!(
2109 fidl_fuchsia_mem::Buffer,
2110 fidl::encoding::DefaultFuchsiaResourceDialect
2111 ),
2112 buffer_id: fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect),
2113 font_index: fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect),
2114 }
2115 }
2116
2117 #[inline]
2118 unsafe fn decode(
2119 &mut self,
2120 decoder: &mut fidl::encoding::Decoder<
2121 '_,
2122 fidl::encoding::DefaultFuchsiaResourceDialect,
2123 >,
2124 offset: usize,
2125 _depth: fidl::encoding::Depth,
2126 ) -> fidl::Result<()> {
2127 decoder.debug_check_bounds::<Self>(offset);
2128 fidl::decode!(
2130 fidl_fuchsia_mem::Buffer,
2131 fidl::encoding::DefaultFuchsiaResourceDialect,
2132 &mut self.buffer,
2133 decoder,
2134 offset + 0,
2135 _depth
2136 )?;
2137 fidl::decode!(
2138 u32,
2139 fidl::encoding::DefaultFuchsiaResourceDialect,
2140 &mut self.buffer_id,
2141 decoder,
2142 offset + 16,
2143 _depth
2144 )?;
2145 fidl::decode!(
2146 u32,
2147 fidl::encoding::DefaultFuchsiaResourceDialect,
2148 &mut self.font_index,
2149 decoder,
2150 offset + 20,
2151 _depth
2152 )?;
2153 Ok(())
2154 }
2155 }
2156
2157 impl TypefaceResponse {
2158 #[inline(always)]
2159 fn max_ordinal_present(&self) -> u64 {
2160 if let Some(_) = self.font_index {
2161 return 3;
2162 }
2163 if let Some(_) = self.buffer_id {
2164 return 2;
2165 }
2166 if let Some(_) = self.buffer {
2167 return 1;
2168 }
2169 0
2170 }
2171 }
2172
2173 impl fidl::encoding::ResourceTypeMarker for TypefaceResponse {
2174 type Borrowed<'a> = &'a mut Self;
2175 fn take_or_borrow<'a>(
2176 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2177 ) -> Self::Borrowed<'a> {
2178 value
2179 }
2180 }
2181
2182 unsafe impl fidl::encoding::TypeMarker for TypefaceResponse {
2183 type Owned = Self;
2184
2185 #[inline(always)]
2186 fn inline_align(_context: fidl::encoding::Context) -> usize {
2187 8
2188 }
2189
2190 #[inline(always)]
2191 fn inline_size(_context: fidl::encoding::Context) -> usize {
2192 16
2193 }
2194 }
2195
2196 unsafe impl
2197 fidl::encoding::Encode<TypefaceResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
2198 for &mut TypefaceResponse
2199 {
2200 unsafe fn encode(
2201 self,
2202 encoder: &mut fidl::encoding::Encoder<
2203 '_,
2204 fidl::encoding::DefaultFuchsiaResourceDialect,
2205 >,
2206 offset: usize,
2207 mut depth: fidl::encoding::Depth,
2208 ) -> fidl::Result<()> {
2209 encoder.debug_check_bounds::<TypefaceResponse>(offset);
2210 let max_ordinal: u64 = self.max_ordinal_present();
2212 encoder.write_num(max_ordinal, offset);
2213 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2214 if max_ordinal == 0 {
2216 return Ok(());
2217 }
2218 depth.increment()?;
2219 let envelope_size = 8;
2220 let bytes_len = max_ordinal as usize * envelope_size;
2221 #[allow(unused_variables)]
2222 let offset = encoder.out_of_line_offset(bytes_len);
2223 let mut _prev_end_offset: usize = 0;
2224 if 1 > max_ordinal {
2225 return Ok(());
2226 }
2227
2228 let cur_offset: usize = (1 - 1) * envelope_size;
2231
2232 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2234
2235 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_mem::Buffer, fidl::encoding::DefaultFuchsiaResourceDialect>(
2240 self.buffer.as_mut().map(<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow),
2241 encoder, offset + cur_offset, depth
2242 )?;
2243
2244 _prev_end_offset = cur_offset + envelope_size;
2245 if 2 > max_ordinal {
2246 return Ok(());
2247 }
2248
2249 let cur_offset: usize = (2 - 1) * envelope_size;
2252
2253 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2255
2256 fidl::encoding::encode_in_envelope_optional::<
2261 u32,
2262 fidl::encoding::DefaultFuchsiaResourceDialect,
2263 >(
2264 self.buffer_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2265 encoder,
2266 offset + cur_offset,
2267 depth,
2268 )?;
2269
2270 _prev_end_offset = cur_offset + envelope_size;
2271 if 3 > max_ordinal {
2272 return Ok(());
2273 }
2274
2275 let cur_offset: usize = (3 - 1) * envelope_size;
2278
2279 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2281
2282 fidl::encoding::encode_in_envelope_optional::<
2287 u32,
2288 fidl::encoding::DefaultFuchsiaResourceDialect,
2289 >(
2290 self.font_index.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2291 encoder,
2292 offset + cur_offset,
2293 depth,
2294 )?;
2295
2296 _prev_end_offset = cur_offset + envelope_size;
2297
2298 Ok(())
2299 }
2300 }
2301
2302 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2303 for TypefaceResponse
2304 {
2305 #[inline(always)]
2306 fn new_empty() -> Self {
2307 Self::default()
2308 }
2309
2310 unsafe fn decode(
2311 &mut self,
2312 decoder: &mut fidl::encoding::Decoder<
2313 '_,
2314 fidl::encoding::DefaultFuchsiaResourceDialect,
2315 >,
2316 offset: usize,
2317 mut depth: fidl::encoding::Depth,
2318 ) -> fidl::Result<()> {
2319 decoder.debug_check_bounds::<Self>(offset);
2320 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2321 None => return Err(fidl::Error::NotNullable),
2322 Some(len) => len,
2323 };
2324 if len == 0 {
2326 return Ok(());
2327 };
2328 depth.increment()?;
2329 let envelope_size = 8;
2330 let bytes_len = len * envelope_size;
2331 let offset = decoder.out_of_line_offset(bytes_len)?;
2332 let mut _next_ordinal_to_read = 0;
2334 let mut next_offset = offset;
2335 let end_offset = offset + bytes_len;
2336 _next_ordinal_to_read += 1;
2337 if next_offset >= end_offset {
2338 return Ok(());
2339 }
2340
2341 while _next_ordinal_to_read < 1 {
2343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2344 _next_ordinal_to_read += 1;
2345 next_offset += envelope_size;
2346 }
2347
2348 let next_out_of_line = decoder.next_out_of_line();
2349 let handles_before = decoder.remaining_handles();
2350 if let Some((inlined, num_bytes, num_handles)) =
2351 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2352 {
2353 let member_inline_size =
2354 <fidl_fuchsia_mem::Buffer as fidl::encoding::TypeMarker>::inline_size(
2355 decoder.context,
2356 );
2357 if inlined != (member_inline_size <= 4) {
2358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2359 }
2360 let inner_offset;
2361 let mut inner_depth = depth.clone();
2362 if inlined {
2363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2364 inner_offset = next_offset;
2365 } else {
2366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2367 inner_depth.increment()?;
2368 }
2369 let val_ref = self.buffer.get_or_insert_with(|| {
2370 fidl::new_empty!(
2371 fidl_fuchsia_mem::Buffer,
2372 fidl::encoding::DefaultFuchsiaResourceDialect
2373 )
2374 });
2375 fidl::decode!(
2376 fidl_fuchsia_mem::Buffer,
2377 fidl::encoding::DefaultFuchsiaResourceDialect,
2378 val_ref,
2379 decoder,
2380 inner_offset,
2381 inner_depth
2382 )?;
2383 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2384 {
2385 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2386 }
2387 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2388 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2389 }
2390 }
2391
2392 next_offset += envelope_size;
2393 _next_ordinal_to_read += 1;
2394 if next_offset >= end_offset {
2395 return Ok(());
2396 }
2397
2398 while _next_ordinal_to_read < 2 {
2400 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2401 _next_ordinal_to_read += 1;
2402 next_offset += envelope_size;
2403 }
2404
2405 let next_out_of_line = decoder.next_out_of_line();
2406 let handles_before = decoder.remaining_handles();
2407 if let Some((inlined, num_bytes, num_handles)) =
2408 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2409 {
2410 let member_inline_size =
2411 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2412 if inlined != (member_inline_size <= 4) {
2413 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2414 }
2415 let inner_offset;
2416 let mut inner_depth = depth.clone();
2417 if inlined {
2418 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2419 inner_offset = next_offset;
2420 } else {
2421 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2422 inner_depth.increment()?;
2423 }
2424 let val_ref = self.buffer_id.get_or_insert_with(|| {
2425 fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
2426 });
2427 fidl::decode!(
2428 u32,
2429 fidl::encoding::DefaultFuchsiaResourceDialect,
2430 val_ref,
2431 decoder,
2432 inner_offset,
2433 inner_depth
2434 )?;
2435 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2436 {
2437 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2438 }
2439 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2440 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2441 }
2442 }
2443
2444 next_offset += envelope_size;
2445 _next_ordinal_to_read += 1;
2446 if next_offset >= end_offset {
2447 return Ok(());
2448 }
2449
2450 while _next_ordinal_to_read < 3 {
2452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2453 _next_ordinal_to_read += 1;
2454 next_offset += envelope_size;
2455 }
2456
2457 let next_out_of_line = decoder.next_out_of_line();
2458 let handles_before = decoder.remaining_handles();
2459 if let Some((inlined, num_bytes, num_handles)) =
2460 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2461 {
2462 let member_inline_size =
2463 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2464 if inlined != (member_inline_size <= 4) {
2465 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2466 }
2467 let inner_offset;
2468 let mut inner_depth = depth.clone();
2469 if inlined {
2470 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2471 inner_offset = next_offset;
2472 } else {
2473 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2474 inner_depth.increment()?;
2475 }
2476 let val_ref = self.font_index.get_or_insert_with(|| {
2477 fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect)
2478 });
2479 fidl::decode!(
2480 u32,
2481 fidl::encoding::DefaultFuchsiaResourceDialect,
2482 val_ref,
2483 decoder,
2484 inner_offset,
2485 inner_depth
2486 )?;
2487 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2488 {
2489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2490 }
2491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2493 }
2494 }
2495
2496 next_offset += envelope_size;
2497
2498 while next_offset < end_offset {
2500 _next_ordinal_to_read += 1;
2501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2502 next_offset += envelope_size;
2503 }
2504
2505 Ok(())
2506 }
2507 }
2508}