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_test_runner_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct LibraryLoaderCacheBuilderCreateRequest {
16 pub lib_directory: fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
17 pub cache: fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
21 for LibraryLoaderCacheBuilderCreateRequest
22{
23}
24
25#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
26pub struct LibraryLoaderCacheServeRequest {
27 pub loader: fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
31 for LibraryLoaderCacheServeRequest
32{
33}
34
35#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
36pub struct LibraryLoaderCacheMarker;
37
38impl fidl::endpoints::ProtocolMarker for LibraryLoaderCacheMarker {
39 type Proxy = LibraryLoaderCacheProxy;
40 type RequestStream = LibraryLoaderCacheRequestStream;
41 #[cfg(target_os = "fuchsia")]
42 type SynchronousProxy = LibraryLoaderCacheSynchronousProxy;
43
44 const DEBUG_NAME: &'static str = "(anonymous) LibraryLoaderCache";
45}
46
47pub trait LibraryLoaderCacheProxyInterface: Send + Sync {
48 fn r#serve(
49 &self,
50 loader: fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
51 ) -> Result<(), fidl::Error>;
52}
53#[derive(Debug)]
54#[cfg(target_os = "fuchsia")]
55pub struct LibraryLoaderCacheSynchronousProxy {
56 client: fidl::client::sync::Client,
57}
58
59#[cfg(target_os = "fuchsia")]
60impl fidl::endpoints::SynchronousProxy for LibraryLoaderCacheSynchronousProxy {
61 type Proxy = LibraryLoaderCacheProxy;
62 type Protocol = LibraryLoaderCacheMarker;
63
64 fn from_channel(inner: fidl::Channel) -> Self {
65 Self::new(inner)
66 }
67
68 fn into_channel(self) -> fidl::Channel {
69 self.client.into_channel()
70 }
71
72 fn as_channel(&self) -> &fidl::Channel {
73 self.client.as_channel()
74 }
75}
76
77#[cfg(target_os = "fuchsia")]
78impl LibraryLoaderCacheSynchronousProxy {
79 pub fn new(channel: fidl::Channel) -> Self {
80 Self { client: fidl::client::sync::Client::new(channel) }
81 }
82
83 pub fn into_channel(self) -> fidl::Channel {
84 self.client.into_channel()
85 }
86
87 pub fn wait_for_event(
90 &self,
91 deadline: zx::MonotonicInstant,
92 ) -> Result<LibraryLoaderCacheEvent, fidl::Error> {
93 LibraryLoaderCacheEvent::decode(
94 self.client.wait_for_event::<LibraryLoaderCacheMarker>(deadline)?,
95 )
96 }
97
98 pub fn r#serve(
100 &self,
101 mut loader: fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
102 ) -> Result<(), fidl::Error> {
103 self.client.send::<LibraryLoaderCacheServeRequest>(
104 (loader,),
105 0x1940439126b02e8f,
106 fidl::encoding::DynamicFlags::empty(),
107 )
108 }
109}
110
111#[cfg(target_os = "fuchsia")]
112impl From<LibraryLoaderCacheSynchronousProxy> for zx::NullableHandle {
113 fn from(value: LibraryLoaderCacheSynchronousProxy) -> Self {
114 value.into_channel().into()
115 }
116}
117
118#[cfg(target_os = "fuchsia")]
119impl From<fidl::Channel> for LibraryLoaderCacheSynchronousProxy {
120 fn from(value: fidl::Channel) -> Self {
121 Self::new(value)
122 }
123}
124
125#[cfg(target_os = "fuchsia")]
126impl fidl::endpoints::FromClient for LibraryLoaderCacheSynchronousProxy {
127 type Protocol = LibraryLoaderCacheMarker;
128
129 fn from_client(value: fidl::endpoints::ClientEnd<LibraryLoaderCacheMarker>) -> Self {
130 Self::new(value.into_channel())
131 }
132}
133
134#[derive(Debug, Clone)]
135pub struct LibraryLoaderCacheProxy {
136 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
137}
138
139impl fidl::endpoints::Proxy for LibraryLoaderCacheProxy {
140 type Protocol = LibraryLoaderCacheMarker;
141
142 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
143 Self::new(inner)
144 }
145
146 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
147 self.client.into_channel().map_err(|client| Self { client })
148 }
149
150 fn as_channel(&self) -> &::fidl::AsyncChannel {
151 self.client.as_channel()
152 }
153}
154
155impl LibraryLoaderCacheProxy {
156 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
158 let protocol_name =
159 <LibraryLoaderCacheMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
160 Self { client: fidl::client::Client::new(channel, protocol_name) }
161 }
162
163 pub fn take_event_stream(&self) -> LibraryLoaderCacheEventStream {
169 LibraryLoaderCacheEventStream { event_receiver: self.client.take_event_receiver() }
170 }
171
172 pub fn r#serve(
174 &self,
175 mut loader: fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
176 ) -> Result<(), fidl::Error> {
177 LibraryLoaderCacheProxyInterface::r#serve(self, loader)
178 }
179}
180
181impl LibraryLoaderCacheProxyInterface for LibraryLoaderCacheProxy {
182 fn r#serve(
183 &self,
184 mut loader: fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
185 ) -> Result<(), fidl::Error> {
186 self.client.send::<LibraryLoaderCacheServeRequest>(
187 (loader,),
188 0x1940439126b02e8f,
189 fidl::encoding::DynamicFlags::empty(),
190 )
191 }
192}
193
194pub struct LibraryLoaderCacheEventStream {
195 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
196}
197
198impl std::marker::Unpin for LibraryLoaderCacheEventStream {}
199
200impl futures::stream::FusedStream for LibraryLoaderCacheEventStream {
201 fn is_terminated(&self) -> bool {
202 self.event_receiver.is_terminated()
203 }
204}
205
206impl futures::Stream for LibraryLoaderCacheEventStream {
207 type Item = Result<LibraryLoaderCacheEvent, fidl::Error>;
208
209 fn poll_next(
210 mut self: std::pin::Pin<&mut Self>,
211 cx: &mut std::task::Context<'_>,
212 ) -> std::task::Poll<Option<Self::Item>> {
213 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
214 &mut self.event_receiver,
215 cx
216 )?) {
217 Some(buf) => std::task::Poll::Ready(Some(LibraryLoaderCacheEvent::decode(buf))),
218 None => std::task::Poll::Ready(None),
219 }
220 }
221}
222
223#[derive(Debug)]
224pub enum LibraryLoaderCacheEvent {}
225
226impl LibraryLoaderCacheEvent {
227 fn decode(
229 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
230 ) -> Result<LibraryLoaderCacheEvent, fidl::Error> {
231 let (bytes, _handles) = buf.split_mut();
232 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
233 debug_assert_eq!(tx_header.tx_id, 0);
234 match tx_header.ordinal {
235 _ => Err(fidl::Error::UnknownOrdinal {
236 ordinal: tx_header.ordinal,
237 protocol_name:
238 <LibraryLoaderCacheMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
239 }),
240 }
241 }
242}
243
244pub struct LibraryLoaderCacheRequestStream {
246 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
247 is_terminated: bool,
248}
249
250impl std::marker::Unpin for LibraryLoaderCacheRequestStream {}
251
252impl futures::stream::FusedStream for LibraryLoaderCacheRequestStream {
253 fn is_terminated(&self) -> bool {
254 self.is_terminated
255 }
256}
257
258impl fidl::endpoints::RequestStream for LibraryLoaderCacheRequestStream {
259 type Protocol = LibraryLoaderCacheMarker;
260 type ControlHandle = LibraryLoaderCacheControlHandle;
261
262 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
263 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
264 }
265
266 fn control_handle(&self) -> Self::ControlHandle {
267 LibraryLoaderCacheControlHandle { inner: self.inner.clone() }
268 }
269
270 fn into_inner(
271 self,
272 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
273 {
274 (self.inner, self.is_terminated)
275 }
276
277 fn from_inner(
278 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
279 is_terminated: bool,
280 ) -> Self {
281 Self { inner, is_terminated }
282 }
283}
284
285impl futures::Stream for LibraryLoaderCacheRequestStream {
286 type Item = Result<LibraryLoaderCacheRequest, fidl::Error>;
287
288 fn poll_next(
289 mut self: std::pin::Pin<&mut Self>,
290 cx: &mut std::task::Context<'_>,
291 ) -> std::task::Poll<Option<Self::Item>> {
292 let this = &mut *self;
293 if this.inner.check_shutdown(cx) {
294 this.is_terminated = true;
295 return std::task::Poll::Ready(None);
296 }
297 if this.is_terminated {
298 panic!("polled LibraryLoaderCacheRequestStream after completion");
299 }
300 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
301 |bytes, handles| {
302 match this.inner.channel().read_etc(cx, bytes, handles) {
303 std::task::Poll::Ready(Ok(())) => {}
304 std::task::Poll::Pending => return std::task::Poll::Pending,
305 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
306 this.is_terminated = true;
307 return std::task::Poll::Ready(None);
308 }
309 std::task::Poll::Ready(Err(e)) => {
310 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
311 e.into(),
312 ))));
313 }
314 }
315
316 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
318
319 std::task::Poll::Ready(Some(match header.ordinal {
320 0x1940439126b02e8f => {
321 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
322 let mut req = fidl::new_empty!(LibraryLoaderCacheServeRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
323 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LibraryLoaderCacheServeRequest>(&header, _body_bytes, handles, &mut req)?;
324 let control_handle = LibraryLoaderCacheControlHandle {
325 inner: this.inner.clone(),
326 };
327 Ok(LibraryLoaderCacheRequest::Serve {loader: req.loader,
328
329 control_handle,
330 })
331 }
332 _ => Err(fidl::Error::UnknownOrdinal {
333 ordinal: header.ordinal,
334 protocol_name: <LibraryLoaderCacheMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
335 }),
336 }))
337 },
338 )
339 }
340}
341
342#[derive(Debug)]
344pub enum LibraryLoaderCacheRequest {
345 Serve {
347 loader: fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
348 control_handle: LibraryLoaderCacheControlHandle,
349 },
350}
351
352impl LibraryLoaderCacheRequest {
353 #[allow(irrefutable_let_patterns)]
354 pub fn into_serve(
355 self,
356 ) -> Option<(
357 fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
358 LibraryLoaderCacheControlHandle,
359 )> {
360 if let LibraryLoaderCacheRequest::Serve { loader, control_handle } = self {
361 Some((loader, control_handle))
362 } else {
363 None
364 }
365 }
366
367 pub fn method_name(&self) -> &'static str {
369 match *self {
370 LibraryLoaderCacheRequest::Serve { .. } => "serve",
371 }
372 }
373}
374
375#[derive(Debug, Clone)]
376pub struct LibraryLoaderCacheControlHandle {
377 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
378}
379
380impl LibraryLoaderCacheControlHandle {
381 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
382 self.inner.shutdown_with_epitaph(status.into())
383 }
384}
385
386impl fidl::endpoints::ControlHandle for LibraryLoaderCacheControlHandle {
387 fn shutdown(&self) {
388 self.inner.shutdown()
389 }
390
391 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
392 self.inner.shutdown_with_epitaph(status)
393 }
394
395 fn is_closed(&self) -> bool {
396 self.inner.channel().is_closed()
397 }
398 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
399 self.inner.channel().on_closed()
400 }
401
402 #[cfg(target_os = "fuchsia")]
403 fn signal_peer(
404 &self,
405 clear_mask: zx::Signals,
406 set_mask: zx::Signals,
407 ) -> Result<(), zx_status::Status> {
408 use fidl::Peered;
409 self.inner.channel().signal_peer(clear_mask, set_mask)
410 }
411}
412
413impl LibraryLoaderCacheControlHandle {}
414
415#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
416pub struct LibraryLoaderCacheBuilderMarker;
417
418impl fidl::endpoints::ProtocolMarker for LibraryLoaderCacheBuilderMarker {
419 type Proxy = LibraryLoaderCacheBuilderProxy;
420 type RequestStream = LibraryLoaderCacheBuilderRequestStream;
421 #[cfg(target_os = "fuchsia")]
422 type SynchronousProxy = LibraryLoaderCacheBuilderSynchronousProxy;
423
424 const DEBUG_NAME: &'static str = "fuchsia.test.runner.LibraryLoaderCacheBuilder";
425}
426impl fidl::endpoints::DiscoverableProtocolMarker for LibraryLoaderCacheBuilderMarker {}
427
428pub trait LibraryLoaderCacheBuilderProxyInterface: Send + Sync {
429 fn r#create(
430 &self,
431 lib_directory: fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
432 cache: fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
433 ) -> Result<(), fidl::Error>;
434}
435#[derive(Debug)]
436#[cfg(target_os = "fuchsia")]
437pub struct LibraryLoaderCacheBuilderSynchronousProxy {
438 client: fidl::client::sync::Client,
439}
440
441#[cfg(target_os = "fuchsia")]
442impl fidl::endpoints::SynchronousProxy for LibraryLoaderCacheBuilderSynchronousProxy {
443 type Proxy = LibraryLoaderCacheBuilderProxy;
444 type Protocol = LibraryLoaderCacheBuilderMarker;
445
446 fn from_channel(inner: fidl::Channel) -> Self {
447 Self::new(inner)
448 }
449
450 fn into_channel(self) -> fidl::Channel {
451 self.client.into_channel()
452 }
453
454 fn as_channel(&self) -> &fidl::Channel {
455 self.client.as_channel()
456 }
457}
458
459#[cfg(target_os = "fuchsia")]
460impl LibraryLoaderCacheBuilderSynchronousProxy {
461 pub fn new(channel: fidl::Channel) -> Self {
462 Self { client: fidl::client::sync::Client::new(channel) }
463 }
464
465 pub fn into_channel(self) -> fidl::Channel {
466 self.client.into_channel()
467 }
468
469 pub fn wait_for_event(
472 &self,
473 deadline: zx::MonotonicInstant,
474 ) -> Result<LibraryLoaderCacheBuilderEvent, fidl::Error> {
475 LibraryLoaderCacheBuilderEvent::decode(
476 self.client.wait_for_event::<LibraryLoaderCacheBuilderMarker>(deadline)?,
477 )
478 }
479
480 pub fn r#create(
485 &self,
486 mut lib_directory: fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
487 mut cache: fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
488 ) -> Result<(), fidl::Error> {
489 self.client.send::<LibraryLoaderCacheBuilderCreateRequest>(
490 (lib_directory, cache),
491 0x5f1be6b603264b0c,
492 fidl::encoding::DynamicFlags::empty(),
493 )
494 }
495}
496
497#[cfg(target_os = "fuchsia")]
498impl From<LibraryLoaderCacheBuilderSynchronousProxy> for zx::NullableHandle {
499 fn from(value: LibraryLoaderCacheBuilderSynchronousProxy) -> Self {
500 value.into_channel().into()
501 }
502}
503
504#[cfg(target_os = "fuchsia")]
505impl From<fidl::Channel> for LibraryLoaderCacheBuilderSynchronousProxy {
506 fn from(value: fidl::Channel) -> Self {
507 Self::new(value)
508 }
509}
510
511#[cfg(target_os = "fuchsia")]
512impl fidl::endpoints::FromClient for LibraryLoaderCacheBuilderSynchronousProxy {
513 type Protocol = LibraryLoaderCacheBuilderMarker;
514
515 fn from_client(value: fidl::endpoints::ClientEnd<LibraryLoaderCacheBuilderMarker>) -> Self {
516 Self::new(value.into_channel())
517 }
518}
519
520#[derive(Debug, Clone)]
521pub struct LibraryLoaderCacheBuilderProxy {
522 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
523}
524
525impl fidl::endpoints::Proxy for LibraryLoaderCacheBuilderProxy {
526 type Protocol = LibraryLoaderCacheBuilderMarker;
527
528 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
529 Self::new(inner)
530 }
531
532 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
533 self.client.into_channel().map_err(|client| Self { client })
534 }
535
536 fn as_channel(&self) -> &::fidl::AsyncChannel {
537 self.client.as_channel()
538 }
539}
540
541impl LibraryLoaderCacheBuilderProxy {
542 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
544 let protocol_name =
545 <LibraryLoaderCacheBuilderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
546 Self { client: fidl::client::Client::new(channel, protocol_name) }
547 }
548
549 pub fn take_event_stream(&self) -> LibraryLoaderCacheBuilderEventStream {
555 LibraryLoaderCacheBuilderEventStream { event_receiver: self.client.take_event_receiver() }
556 }
557
558 pub fn r#create(
563 &self,
564 mut lib_directory: fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
565 mut cache: fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
566 ) -> Result<(), fidl::Error> {
567 LibraryLoaderCacheBuilderProxyInterface::r#create(self, lib_directory, cache)
568 }
569}
570
571impl LibraryLoaderCacheBuilderProxyInterface for LibraryLoaderCacheBuilderProxy {
572 fn r#create(
573 &self,
574 mut lib_directory: fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
575 mut cache: fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
576 ) -> Result<(), fidl::Error> {
577 self.client.send::<LibraryLoaderCacheBuilderCreateRequest>(
578 (lib_directory, cache),
579 0x5f1be6b603264b0c,
580 fidl::encoding::DynamicFlags::empty(),
581 )
582 }
583}
584
585pub struct LibraryLoaderCacheBuilderEventStream {
586 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
587}
588
589impl std::marker::Unpin for LibraryLoaderCacheBuilderEventStream {}
590
591impl futures::stream::FusedStream for LibraryLoaderCacheBuilderEventStream {
592 fn is_terminated(&self) -> bool {
593 self.event_receiver.is_terminated()
594 }
595}
596
597impl futures::Stream for LibraryLoaderCacheBuilderEventStream {
598 type Item = Result<LibraryLoaderCacheBuilderEvent, fidl::Error>;
599
600 fn poll_next(
601 mut self: std::pin::Pin<&mut Self>,
602 cx: &mut std::task::Context<'_>,
603 ) -> std::task::Poll<Option<Self::Item>> {
604 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
605 &mut self.event_receiver,
606 cx
607 )?) {
608 Some(buf) => std::task::Poll::Ready(Some(LibraryLoaderCacheBuilderEvent::decode(buf))),
609 None => std::task::Poll::Ready(None),
610 }
611 }
612}
613
614#[derive(Debug)]
615pub enum LibraryLoaderCacheBuilderEvent {}
616
617impl LibraryLoaderCacheBuilderEvent {
618 fn decode(
620 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
621 ) -> Result<LibraryLoaderCacheBuilderEvent, fidl::Error> {
622 let (bytes, _handles) = buf.split_mut();
623 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
624 debug_assert_eq!(tx_header.tx_id, 0);
625 match tx_header.ordinal {
626 _ => Err(fidl::Error::UnknownOrdinal {
627 ordinal: tx_header.ordinal,
628 protocol_name:
629 <LibraryLoaderCacheBuilderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
630 }),
631 }
632 }
633}
634
635pub struct LibraryLoaderCacheBuilderRequestStream {
637 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
638 is_terminated: bool,
639}
640
641impl std::marker::Unpin for LibraryLoaderCacheBuilderRequestStream {}
642
643impl futures::stream::FusedStream for LibraryLoaderCacheBuilderRequestStream {
644 fn is_terminated(&self) -> bool {
645 self.is_terminated
646 }
647}
648
649impl fidl::endpoints::RequestStream for LibraryLoaderCacheBuilderRequestStream {
650 type Protocol = LibraryLoaderCacheBuilderMarker;
651 type ControlHandle = LibraryLoaderCacheBuilderControlHandle;
652
653 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
654 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
655 }
656
657 fn control_handle(&self) -> Self::ControlHandle {
658 LibraryLoaderCacheBuilderControlHandle { inner: self.inner.clone() }
659 }
660
661 fn into_inner(
662 self,
663 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
664 {
665 (self.inner, self.is_terminated)
666 }
667
668 fn from_inner(
669 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
670 is_terminated: bool,
671 ) -> Self {
672 Self { inner, is_terminated }
673 }
674}
675
676impl futures::Stream for LibraryLoaderCacheBuilderRequestStream {
677 type Item = Result<LibraryLoaderCacheBuilderRequest, fidl::Error>;
678
679 fn poll_next(
680 mut self: std::pin::Pin<&mut Self>,
681 cx: &mut std::task::Context<'_>,
682 ) -> std::task::Poll<Option<Self::Item>> {
683 let this = &mut *self;
684 if this.inner.check_shutdown(cx) {
685 this.is_terminated = true;
686 return std::task::Poll::Ready(None);
687 }
688 if this.is_terminated {
689 panic!("polled LibraryLoaderCacheBuilderRequestStream after completion");
690 }
691 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
692 |bytes, handles| {
693 match this.inner.channel().read_etc(cx, bytes, handles) {
694 std::task::Poll::Ready(Ok(())) => {}
695 std::task::Poll::Pending => return std::task::Poll::Pending,
696 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
697 this.is_terminated = true;
698 return std::task::Poll::Ready(None);
699 }
700 std::task::Poll::Ready(Err(e)) => {
701 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
702 e.into(),
703 ))));
704 }
705 }
706
707 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
709
710 std::task::Poll::Ready(Some(match header.ordinal {
711 0x5f1be6b603264b0c => {
712 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
713 let mut req = fidl::new_empty!(LibraryLoaderCacheBuilderCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
714 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<LibraryLoaderCacheBuilderCreateRequest>(&header, _body_bytes, handles, &mut req)?;
715 let control_handle = LibraryLoaderCacheBuilderControlHandle {
716 inner: this.inner.clone(),
717 };
718 Ok(LibraryLoaderCacheBuilderRequest::Create {lib_directory: req.lib_directory,
719cache: req.cache,
720
721 control_handle,
722 })
723 }
724 _ => Err(fidl::Error::UnknownOrdinal {
725 ordinal: header.ordinal,
726 protocol_name: <LibraryLoaderCacheBuilderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
727 }),
728 }))
729 },
730 )
731 }
732}
733
734#[derive(Debug)]
738pub enum LibraryLoaderCacheBuilderRequest {
739 Create {
744 lib_directory: fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
745 cache: fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
746 control_handle: LibraryLoaderCacheBuilderControlHandle,
747 },
748}
749
750impl LibraryLoaderCacheBuilderRequest {
751 #[allow(irrefutable_let_patterns)]
752 pub fn into_create(
753 self,
754 ) -> Option<(
755 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
756 fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>,
757 LibraryLoaderCacheBuilderControlHandle,
758 )> {
759 if let LibraryLoaderCacheBuilderRequest::Create { lib_directory, cache, control_handle } =
760 self
761 {
762 Some((lib_directory, cache, control_handle))
763 } else {
764 None
765 }
766 }
767
768 pub fn method_name(&self) -> &'static str {
770 match *self {
771 LibraryLoaderCacheBuilderRequest::Create { .. } => "create",
772 }
773 }
774}
775
776#[derive(Debug, Clone)]
777pub struct LibraryLoaderCacheBuilderControlHandle {
778 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
779}
780
781impl LibraryLoaderCacheBuilderControlHandle {
782 pub fn shutdown_with_epitaph(&self, status: impl Into<fidl::Epitaph>) {
783 self.inner.shutdown_with_epitaph(status.into())
784 }
785}
786
787impl fidl::endpoints::ControlHandle for LibraryLoaderCacheBuilderControlHandle {
788 fn shutdown(&self) {
789 self.inner.shutdown()
790 }
791
792 fn shutdown_with_epitaph(&self, status: fidl::Epitaph) {
793 self.inner.shutdown_with_epitaph(status)
794 }
795
796 fn is_closed(&self) -> bool {
797 self.inner.channel().is_closed()
798 }
799 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
800 self.inner.channel().on_closed()
801 }
802
803 #[cfg(target_os = "fuchsia")]
804 fn signal_peer(
805 &self,
806 clear_mask: zx::Signals,
807 set_mask: zx::Signals,
808 ) -> Result<(), zx_status::Status> {
809 use fidl::Peered;
810 self.inner.channel().signal_peer(clear_mask, set_mask)
811 }
812}
813
814impl LibraryLoaderCacheBuilderControlHandle {}
815
816mod internal {
817 use super::*;
818
819 impl fidl::encoding::ResourceTypeMarker for LibraryLoaderCacheBuilderCreateRequest {
820 type Borrowed<'a> = &'a mut Self;
821 fn take_or_borrow<'a>(
822 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
823 ) -> Self::Borrowed<'a> {
824 value
825 }
826 }
827
828 unsafe impl fidl::encoding::TypeMarker for LibraryLoaderCacheBuilderCreateRequest {
829 type Owned = Self;
830
831 #[inline(always)]
832 fn inline_align(_context: fidl::encoding::Context) -> usize {
833 4
834 }
835
836 #[inline(always)]
837 fn inline_size(_context: fidl::encoding::Context) -> usize {
838 8
839 }
840 }
841
842 unsafe impl
843 fidl::encoding::Encode<
844 LibraryLoaderCacheBuilderCreateRequest,
845 fidl::encoding::DefaultFuchsiaResourceDialect,
846 > for &mut LibraryLoaderCacheBuilderCreateRequest
847 {
848 #[inline]
849 unsafe fn encode(
850 self,
851 encoder: &mut fidl::encoding::Encoder<
852 '_,
853 fidl::encoding::DefaultFuchsiaResourceDialect,
854 >,
855 offset: usize,
856 _depth: fidl::encoding::Depth,
857 ) -> fidl::Result<()> {
858 encoder.debug_check_bounds::<LibraryLoaderCacheBuilderCreateRequest>(offset);
859 fidl::encoding::Encode::<LibraryLoaderCacheBuilderCreateRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
861 (
862 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.lib_directory),
863 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.cache),
864 ),
865 encoder, offset, _depth
866 )
867 }
868 }
869 unsafe impl<
870 T0: fidl::encoding::Encode<
871 fidl::encoding::Endpoint<
872 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
873 >,
874 fidl::encoding::DefaultFuchsiaResourceDialect,
875 >,
876 T1: fidl::encoding::Encode<
877 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>>,
878 fidl::encoding::DefaultFuchsiaResourceDialect,
879 >,
880 >
881 fidl::encoding::Encode<
882 LibraryLoaderCacheBuilderCreateRequest,
883 fidl::encoding::DefaultFuchsiaResourceDialect,
884 > for (T0, T1)
885 {
886 #[inline]
887 unsafe fn encode(
888 self,
889 encoder: &mut fidl::encoding::Encoder<
890 '_,
891 fidl::encoding::DefaultFuchsiaResourceDialect,
892 >,
893 offset: usize,
894 depth: fidl::encoding::Depth,
895 ) -> fidl::Result<()> {
896 encoder.debug_check_bounds::<LibraryLoaderCacheBuilderCreateRequest>(offset);
897 self.0.encode(encoder, offset + 0, depth)?;
901 self.1.encode(encoder, offset + 4, depth)?;
902 Ok(())
903 }
904 }
905
906 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
907 for LibraryLoaderCacheBuilderCreateRequest
908 {
909 #[inline(always)]
910 fn new_empty() -> Self {
911 Self {
912 lib_directory: fidl::new_empty!(
913 fidl::encoding::Endpoint<
914 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
915 >,
916 fidl::encoding::DefaultFuchsiaResourceDialect
917 ),
918 cache: fidl::new_empty!(
919 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>>,
920 fidl::encoding::DefaultFuchsiaResourceDialect
921 ),
922 }
923 }
924
925 #[inline]
926 unsafe fn decode(
927 &mut self,
928 decoder: &mut fidl::encoding::Decoder<
929 '_,
930 fidl::encoding::DefaultFuchsiaResourceDialect,
931 >,
932 offset: usize,
933 _depth: fidl::encoding::Depth,
934 ) -> fidl::Result<()> {
935 decoder.debug_check_bounds::<Self>(offset);
936 fidl::decode!(
938 fidl::encoding::Endpoint<
939 fidl::endpoints::ClientEnd<fidl_fuchsia_io::DirectoryMarker>,
940 >,
941 fidl::encoding::DefaultFuchsiaResourceDialect,
942 &mut self.lib_directory,
943 decoder,
944 offset + 0,
945 _depth
946 )?;
947 fidl::decode!(
948 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<LibraryLoaderCacheMarker>>,
949 fidl::encoding::DefaultFuchsiaResourceDialect,
950 &mut self.cache,
951 decoder,
952 offset + 4,
953 _depth
954 )?;
955 Ok(())
956 }
957 }
958
959 impl fidl::encoding::ResourceTypeMarker for LibraryLoaderCacheServeRequest {
960 type Borrowed<'a> = &'a mut Self;
961 fn take_or_borrow<'a>(
962 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
963 ) -> Self::Borrowed<'a> {
964 value
965 }
966 }
967
968 unsafe impl fidl::encoding::TypeMarker for LibraryLoaderCacheServeRequest {
969 type Owned = Self;
970
971 #[inline(always)]
972 fn inline_align(_context: fidl::encoding::Context) -> usize {
973 4
974 }
975
976 #[inline(always)]
977 fn inline_size(_context: fidl::encoding::Context) -> usize {
978 4
979 }
980 }
981
982 unsafe impl
983 fidl::encoding::Encode<
984 LibraryLoaderCacheServeRequest,
985 fidl::encoding::DefaultFuchsiaResourceDialect,
986 > for &mut LibraryLoaderCacheServeRequest
987 {
988 #[inline]
989 unsafe fn encode(
990 self,
991 encoder: &mut fidl::encoding::Encoder<
992 '_,
993 fidl::encoding::DefaultFuchsiaResourceDialect,
994 >,
995 offset: usize,
996 _depth: fidl::encoding::Depth,
997 ) -> fidl::Result<()> {
998 encoder.debug_check_bounds::<LibraryLoaderCacheServeRequest>(offset);
999 fidl::encoding::Encode::<
1001 LibraryLoaderCacheServeRequest,
1002 fidl::encoding::DefaultFuchsiaResourceDialect,
1003 >::encode(
1004 (<fidl::encoding::Endpoint<
1005 fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
1006 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1007 &mut self.loader
1008 ),),
1009 encoder,
1010 offset,
1011 _depth,
1012 )
1013 }
1014 }
1015 unsafe impl<
1016 T0: fidl::encoding::Encode<
1017 fidl::encoding::Endpoint<
1018 fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
1019 >,
1020 fidl::encoding::DefaultFuchsiaResourceDialect,
1021 >,
1022 >
1023 fidl::encoding::Encode<
1024 LibraryLoaderCacheServeRequest,
1025 fidl::encoding::DefaultFuchsiaResourceDialect,
1026 > for (T0,)
1027 {
1028 #[inline]
1029 unsafe fn encode(
1030 self,
1031 encoder: &mut fidl::encoding::Encoder<
1032 '_,
1033 fidl::encoding::DefaultFuchsiaResourceDialect,
1034 >,
1035 offset: usize,
1036 depth: fidl::encoding::Depth,
1037 ) -> fidl::Result<()> {
1038 encoder.debug_check_bounds::<LibraryLoaderCacheServeRequest>(offset);
1039 self.0.encode(encoder, offset + 0, depth)?;
1043 Ok(())
1044 }
1045 }
1046
1047 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1048 for LibraryLoaderCacheServeRequest
1049 {
1050 #[inline(always)]
1051 fn new_empty() -> Self {
1052 Self {
1053 loader: fidl::new_empty!(
1054 fidl::encoding::Endpoint<
1055 fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
1056 >,
1057 fidl::encoding::DefaultFuchsiaResourceDialect
1058 ),
1059 }
1060 }
1061
1062 #[inline]
1063 unsafe fn decode(
1064 &mut self,
1065 decoder: &mut fidl::encoding::Decoder<
1066 '_,
1067 fidl::encoding::DefaultFuchsiaResourceDialect,
1068 >,
1069 offset: usize,
1070 _depth: fidl::encoding::Depth,
1071 ) -> fidl::Result<()> {
1072 decoder.debug_check_bounds::<Self>(offset);
1073 fidl::decode!(
1075 fidl::encoding::Endpoint<
1076 fidl::endpoints::ServerEnd<fidl_fuchsia_ldsvc::LoaderMarker>,
1077 >,
1078 fidl::encoding::DefaultFuchsiaResourceDialect,
1079 &mut self.loader,
1080 decoder,
1081 offset + 0,
1082 _depth
1083 )?;
1084 Ok(())
1085 }
1086 }
1087}