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