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_weave__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct BootstrapImportWeaveConfigRequest {
16 pub config_json: fidl_fuchsia_mem::Buffer,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for BootstrapImportWeaveConfigRequest
21{
22}
23
24#[derive(Debug, PartialEq)]
25pub struct FactoryDataManagerGetWeaveCertificateResponse {
26 pub certificate: fidl_fuchsia_mem::Buffer,
27}
28
29impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
30 for FactoryDataManagerGetWeaveCertificateResponse
31{
32}
33
34#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
35pub struct StackGetPairingStateWatcherRequest {
36 pub watcher: fidl::endpoints::ServerEnd<PairingStateWatcherMarker>,
37}
38
39impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
40 for StackGetPairingStateWatcherRequest
41{
42}
43
44#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
45pub struct StackGetSvcDirectoryWatcherRequest {
46 pub endpoint_id: u64,
47 pub watcher: fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>,
48}
49
50impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
51 for StackGetSvcDirectoryWatcherRequest
52{
53}
54
55#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
56pub struct StackProviderSetWlanNetworkConfigProviderRequest {
57 pub provider: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
58}
59
60impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
61 for StackProviderSetWlanNetworkConfigProviderRequest
62{
63}
64
65#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
66pub struct BootstrapMarker;
67
68impl fidl::endpoints::ProtocolMarker for BootstrapMarker {
69 type Proxy = BootstrapProxy;
70 type RequestStream = BootstrapRequestStream;
71 #[cfg(target_os = "fuchsia")]
72 type SynchronousProxy = BootstrapSynchronousProxy;
73
74 const DEBUG_NAME: &'static str = "fuchsia.weave.Bootstrap";
75}
76impl fidl::endpoints::DiscoverableProtocolMarker for BootstrapMarker {}
77pub type BootstrapImportWeaveConfigResult = Result<(), i32>;
78
79pub trait BootstrapProxyInterface: Send + Sync {
80 type ImportWeaveConfigResponseFut: std::future::Future<Output = Result<BootstrapImportWeaveConfigResult, fidl::Error>>
81 + Send;
82 fn r#import_weave_config(
83 &self,
84 config_json: fidl_fuchsia_mem::Buffer,
85 ) -> Self::ImportWeaveConfigResponseFut;
86}
87#[derive(Debug)]
88#[cfg(target_os = "fuchsia")]
89pub struct BootstrapSynchronousProxy {
90 client: fidl::client::sync::Client,
91}
92
93#[cfg(target_os = "fuchsia")]
94impl fidl::endpoints::SynchronousProxy for BootstrapSynchronousProxy {
95 type Proxy = BootstrapProxy;
96 type Protocol = BootstrapMarker;
97
98 fn from_channel(inner: fidl::Channel) -> Self {
99 Self::new(inner)
100 }
101
102 fn into_channel(self) -> fidl::Channel {
103 self.client.into_channel()
104 }
105
106 fn as_channel(&self) -> &fidl::Channel {
107 self.client.as_channel()
108 }
109}
110
111#[cfg(target_os = "fuchsia")]
112impl BootstrapSynchronousProxy {
113 pub fn new(channel: fidl::Channel) -> Self {
114 let protocol_name = <BootstrapMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
115 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
116 }
117
118 pub fn into_channel(self) -> fidl::Channel {
119 self.client.into_channel()
120 }
121
122 pub fn wait_for_event(
125 &self,
126 deadline: zx::MonotonicInstant,
127 ) -> Result<BootstrapEvent, fidl::Error> {
128 BootstrapEvent::decode(self.client.wait_for_event(deadline)?)
129 }
130
131 pub fn r#import_weave_config(
138 &self,
139 mut config_json: fidl_fuchsia_mem::Buffer,
140 ___deadline: zx::MonotonicInstant,
141 ) -> Result<BootstrapImportWeaveConfigResult, fidl::Error> {
142 let _response = self.client.send_query::<
143 BootstrapImportWeaveConfigRequest,
144 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
145 >(
146 (&mut config_json,),
147 0x3cba680ade22f738,
148 fidl::encoding::DynamicFlags::empty(),
149 ___deadline,
150 )?;
151 Ok(_response.map(|x| x))
152 }
153}
154
155#[cfg(target_os = "fuchsia")]
156impl From<BootstrapSynchronousProxy> for zx::Handle {
157 fn from(value: BootstrapSynchronousProxy) -> Self {
158 value.into_channel().into()
159 }
160}
161
162#[cfg(target_os = "fuchsia")]
163impl From<fidl::Channel> for BootstrapSynchronousProxy {
164 fn from(value: fidl::Channel) -> Self {
165 Self::new(value)
166 }
167}
168
169#[cfg(target_os = "fuchsia")]
170impl fidl::endpoints::FromClient for BootstrapSynchronousProxy {
171 type Protocol = BootstrapMarker;
172
173 fn from_client(value: fidl::endpoints::ClientEnd<BootstrapMarker>) -> Self {
174 Self::new(value.into_channel())
175 }
176}
177
178#[derive(Debug, Clone)]
179pub struct BootstrapProxy {
180 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
181}
182
183impl fidl::endpoints::Proxy for BootstrapProxy {
184 type Protocol = BootstrapMarker;
185
186 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
187 Self::new(inner)
188 }
189
190 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
191 self.client.into_channel().map_err(|client| Self { client })
192 }
193
194 fn as_channel(&self) -> &::fidl::AsyncChannel {
195 self.client.as_channel()
196 }
197}
198
199impl BootstrapProxy {
200 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
202 let protocol_name = <BootstrapMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
203 Self { client: fidl::client::Client::new(channel, protocol_name) }
204 }
205
206 pub fn take_event_stream(&self) -> BootstrapEventStream {
212 BootstrapEventStream { event_receiver: self.client.take_event_receiver() }
213 }
214
215 pub fn r#import_weave_config(
222 &self,
223 mut config_json: fidl_fuchsia_mem::Buffer,
224 ) -> fidl::client::QueryResponseFut<
225 BootstrapImportWeaveConfigResult,
226 fidl::encoding::DefaultFuchsiaResourceDialect,
227 > {
228 BootstrapProxyInterface::r#import_weave_config(self, config_json)
229 }
230}
231
232impl BootstrapProxyInterface for BootstrapProxy {
233 type ImportWeaveConfigResponseFut = fidl::client::QueryResponseFut<
234 BootstrapImportWeaveConfigResult,
235 fidl::encoding::DefaultFuchsiaResourceDialect,
236 >;
237 fn r#import_weave_config(
238 &self,
239 mut config_json: fidl_fuchsia_mem::Buffer,
240 ) -> Self::ImportWeaveConfigResponseFut {
241 fn _decode(
242 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
243 ) -> Result<BootstrapImportWeaveConfigResult, fidl::Error> {
244 let _response = fidl::client::decode_transaction_body::<
245 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
246 fidl::encoding::DefaultFuchsiaResourceDialect,
247 0x3cba680ade22f738,
248 >(_buf?)?;
249 Ok(_response.map(|x| x))
250 }
251 self.client.send_query_and_decode::<
252 BootstrapImportWeaveConfigRequest,
253 BootstrapImportWeaveConfigResult,
254 >(
255 (&mut config_json,),
256 0x3cba680ade22f738,
257 fidl::encoding::DynamicFlags::empty(),
258 _decode,
259 )
260 }
261}
262
263pub struct BootstrapEventStream {
264 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
265}
266
267impl std::marker::Unpin for BootstrapEventStream {}
268
269impl futures::stream::FusedStream for BootstrapEventStream {
270 fn is_terminated(&self) -> bool {
271 self.event_receiver.is_terminated()
272 }
273}
274
275impl futures::Stream for BootstrapEventStream {
276 type Item = Result<BootstrapEvent, fidl::Error>;
277
278 fn poll_next(
279 mut self: std::pin::Pin<&mut Self>,
280 cx: &mut std::task::Context<'_>,
281 ) -> std::task::Poll<Option<Self::Item>> {
282 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
283 &mut self.event_receiver,
284 cx
285 )?) {
286 Some(buf) => std::task::Poll::Ready(Some(BootstrapEvent::decode(buf))),
287 None => std::task::Poll::Ready(None),
288 }
289 }
290}
291
292#[derive(Debug)]
293pub enum BootstrapEvent {}
294
295impl BootstrapEvent {
296 fn decode(
298 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
299 ) -> Result<BootstrapEvent, fidl::Error> {
300 let (bytes, _handles) = buf.split_mut();
301 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
302 debug_assert_eq!(tx_header.tx_id, 0);
303 match tx_header.ordinal {
304 _ => Err(fidl::Error::UnknownOrdinal {
305 ordinal: tx_header.ordinal,
306 protocol_name: <BootstrapMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
307 }),
308 }
309 }
310}
311
312pub struct BootstrapRequestStream {
314 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
315 is_terminated: bool,
316}
317
318impl std::marker::Unpin for BootstrapRequestStream {}
319
320impl futures::stream::FusedStream for BootstrapRequestStream {
321 fn is_terminated(&self) -> bool {
322 self.is_terminated
323 }
324}
325
326impl fidl::endpoints::RequestStream for BootstrapRequestStream {
327 type Protocol = BootstrapMarker;
328 type ControlHandle = BootstrapControlHandle;
329
330 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
331 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
332 }
333
334 fn control_handle(&self) -> Self::ControlHandle {
335 BootstrapControlHandle { inner: self.inner.clone() }
336 }
337
338 fn into_inner(
339 self,
340 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
341 {
342 (self.inner, self.is_terminated)
343 }
344
345 fn from_inner(
346 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
347 is_terminated: bool,
348 ) -> Self {
349 Self { inner, is_terminated }
350 }
351}
352
353impl futures::Stream for BootstrapRequestStream {
354 type Item = Result<BootstrapRequest, fidl::Error>;
355
356 fn poll_next(
357 mut self: std::pin::Pin<&mut Self>,
358 cx: &mut std::task::Context<'_>,
359 ) -> std::task::Poll<Option<Self::Item>> {
360 let this = &mut *self;
361 if this.inner.check_shutdown(cx) {
362 this.is_terminated = true;
363 return std::task::Poll::Ready(None);
364 }
365 if this.is_terminated {
366 panic!("polled BootstrapRequestStream after completion");
367 }
368 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
369 |bytes, handles| {
370 match this.inner.channel().read_etc(cx, bytes, handles) {
371 std::task::Poll::Ready(Ok(())) => {}
372 std::task::Poll::Pending => return std::task::Poll::Pending,
373 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
374 this.is_terminated = true;
375 return std::task::Poll::Ready(None);
376 }
377 std::task::Poll::Ready(Err(e)) => {
378 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
379 e.into(),
380 ))));
381 }
382 }
383
384 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
386
387 std::task::Poll::Ready(Some(match header.ordinal {
388 0x3cba680ade22f738 => {
389 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
390 let mut req = fidl::new_empty!(
391 BootstrapImportWeaveConfigRequest,
392 fidl::encoding::DefaultFuchsiaResourceDialect
393 );
394 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BootstrapImportWeaveConfigRequest>(&header, _body_bytes, handles, &mut req)?;
395 let control_handle = BootstrapControlHandle { inner: this.inner.clone() };
396 Ok(BootstrapRequest::ImportWeaveConfig {
397 config_json: req.config_json,
398
399 responder: BootstrapImportWeaveConfigResponder {
400 control_handle: std::mem::ManuallyDrop::new(control_handle),
401 tx_id: header.tx_id,
402 },
403 })
404 }
405 _ => Err(fidl::Error::UnknownOrdinal {
406 ordinal: header.ordinal,
407 protocol_name:
408 <BootstrapMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
409 }),
410 }))
411 },
412 )
413 }
414}
415
416#[derive(Debug)]
420pub enum BootstrapRequest {
421 ImportWeaveConfig {
428 config_json: fidl_fuchsia_mem::Buffer,
429 responder: BootstrapImportWeaveConfigResponder,
430 },
431}
432
433impl BootstrapRequest {
434 #[allow(irrefutable_let_patterns)]
435 pub fn into_import_weave_config(
436 self,
437 ) -> Option<(fidl_fuchsia_mem::Buffer, BootstrapImportWeaveConfigResponder)> {
438 if let BootstrapRequest::ImportWeaveConfig { config_json, responder } = self {
439 Some((config_json, responder))
440 } else {
441 None
442 }
443 }
444
445 pub fn method_name(&self) -> &'static str {
447 match *self {
448 BootstrapRequest::ImportWeaveConfig { .. } => "import_weave_config",
449 }
450 }
451}
452
453#[derive(Debug, Clone)]
454pub struct BootstrapControlHandle {
455 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
456}
457
458impl fidl::endpoints::ControlHandle for BootstrapControlHandle {
459 fn shutdown(&self) {
460 self.inner.shutdown()
461 }
462 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
463 self.inner.shutdown_with_epitaph(status)
464 }
465
466 fn is_closed(&self) -> bool {
467 self.inner.channel().is_closed()
468 }
469 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
470 self.inner.channel().on_closed()
471 }
472
473 #[cfg(target_os = "fuchsia")]
474 fn signal_peer(
475 &self,
476 clear_mask: zx::Signals,
477 set_mask: zx::Signals,
478 ) -> Result<(), zx_status::Status> {
479 use fidl::Peered;
480 self.inner.channel().signal_peer(clear_mask, set_mask)
481 }
482}
483
484impl BootstrapControlHandle {}
485
486#[must_use = "FIDL methods require a response to be sent"]
487#[derive(Debug)]
488pub struct BootstrapImportWeaveConfigResponder {
489 control_handle: std::mem::ManuallyDrop<BootstrapControlHandle>,
490 tx_id: u32,
491}
492
493impl std::ops::Drop for BootstrapImportWeaveConfigResponder {
497 fn drop(&mut self) {
498 self.control_handle.shutdown();
499 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
501 }
502}
503
504impl fidl::endpoints::Responder for BootstrapImportWeaveConfigResponder {
505 type ControlHandle = BootstrapControlHandle;
506
507 fn control_handle(&self) -> &BootstrapControlHandle {
508 &self.control_handle
509 }
510
511 fn drop_without_shutdown(mut self) {
512 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
514 std::mem::forget(self);
516 }
517}
518
519impl BootstrapImportWeaveConfigResponder {
520 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
524 let _result = self.send_raw(result);
525 if _result.is_err() {
526 self.control_handle.shutdown();
527 }
528 self.drop_without_shutdown();
529 _result
530 }
531
532 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
534 let _result = self.send_raw(result);
535 self.drop_without_shutdown();
536 _result
537 }
538
539 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
540 self.control_handle
541 .inner
542 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
543 result,
544 self.tx_id,
545 0x3cba680ade22f738,
546 fidl::encoding::DynamicFlags::empty(),
547 )
548 }
549}
550
551#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
552pub struct FactoryDataManagerMarker;
553
554impl fidl::endpoints::ProtocolMarker for FactoryDataManagerMarker {
555 type Proxy = FactoryDataManagerProxy;
556 type RequestStream = FactoryDataManagerRequestStream;
557 #[cfg(target_os = "fuchsia")]
558 type SynchronousProxy = FactoryDataManagerSynchronousProxy;
559
560 const DEBUG_NAME: &'static str = "fuchsia.weave.FactoryDataManager";
561}
562impl fidl::endpoints::DiscoverableProtocolMarker for FactoryDataManagerMarker {}
563pub type FactoryDataManagerGetPairingCodeResult = Result<Vec<u8>, ErrorCode>;
564pub type FactoryDataManagerGetWeaveCertificateResult = Result<fidl_fuchsia_mem::Buffer, ErrorCode>;
565
566pub trait FactoryDataManagerProxyInterface: Send + Sync {
567 type GetPairingCodeResponseFut: std::future::Future<Output = Result<FactoryDataManagerGetPairingCodeResult, fidl::Error>>
568 + Send;
569 fn r#get_pairing_code(&self) -> Self::GetPairingCodeResponseFut;
570 type GetWeaveCertificateResponseFut: std::future::Future<
571 Output = Result<FactoryDataManagerGetWeaveCertificateResult, fidl::Error>,
572 > + Send;
573 fn r#get_weave_certificate(&self) -> Self::GetWeaveCertificateResponseFut;
574}
575#[derive(Debug)]
576#[cfg(target_os = "fuchsia")]
577pub struct FactoryDataManagerSynchronousProxy {
578 client: fidl::client::sync::Client,
579}
580
581#[cfg(target_os = "fuchsia")]
582impl fidl::endpoints::SynchronousProxy for FactoryDataManagerSynchronousProxy {
583 type Proxy = FactoryDataManagerProxy;
584 type Protocol = FactoryDataManagerMarker;
585
586 fn from_channel(inner: fidl::Channel) -> Self {
587 Self::new(inner)
588 }
589
590 fn into_channel(self) -> fidl::Channel {
591 self.client.into_channel()
592 }
593
594 fn as_channel(&self) -> &fidl::Channel {
595 self.client.as_channel()
596 }
597}
598
599#[cfg(target_os = "fuchsia")]
600impl FactoryDataManagerSynchronousProxy {
601 pub fn new(channel: fidl::Channel) -> Self {
602 let protocol_name =
603 <FactoryDataManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
604 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
605 }
606
607 pub fn into_channel(self) -> fidl::Channel {
608 self.client.into_channel()
609 }
610
611 pub fn wait_for_event(
614 &self,
615 deadline: zx::MonotonicInstant,
616 ) -> Result<FactoryDataManagerEvent, fidl::Error> {
617 FactoryDataManagerEvent::decode(self.client.wait_for_event(deadline)?)
618 }
619
620 pub fn r#get_pairing_code(
622 &self,
623 ___deadline: zx::MonotonicInstant,
624 ) -> Result<FactoryDataManagerGetPairingCodeResult, fidl::Error> {
625 let _response =
626 self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
627 FactoryDataManagerGetPairingCodeResponse,
628 ErrorCode,
629 >>(
630 (),
631 0x75630bcd80418a0f,
632 fidl::encoding::DynamicFlags::empty(),
633 ___deadline,
634 )?;
635 Ok(_response.map(|x| x.pairing_code))
636 }
637
638 pub fn r#get_weave_certificate(
640 &self,
641 ___deadline: zx::MonotonicInstant,
642 ) -> Result<FactoryDataManagerGetWeaveCertificateResult, fidl::Error> {
643 let _response =
644 self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
645 FactoryDataManagerGetWeaveCertificateResponse,
646 ErrorCode,
647 >>(
648 (),
649 0x1b4feca8bc141380,
650 fidl::encoding::DynamicFlags::empty(),
651 ___deadline,
652 )?;
653 Ok(_response.map(|x| x.certificate))
654 }
655}
656
657#[cfg(target_os = "fuchsia")]
658impl From<FactoryDataManagerSynchronousProxy> for zx::Handle {
659 fn from(value: FactoryDataManagerSynchronousProxy) -> Self {
660 value.into_channel().into()
661 }
662}
663
664#[cfg(target_os = "fuchsia")]
665impl From<fidl::Channel> for FactoryDataManagerSynchronousProxy {
666 fn from(value: fidl::Channel) -> Self {
667 Self::new(value)
668 }
669}
670
671#[cfg(target_os = "fuchsia")]
672impl fidl::endpoints::FromClient for FactoryDataManagerSynchronousProxy {
673 type Protocol = FactoryDataManagerMarker;
674
675 fn from_client(value: fidl::endpoints::ClientEnd<FactoryDataManagerMarker>) -> Self {
676 Self::new(value.into_channel())
677 }
678}
679
680#[derive(Debug, Clone)]
681pub struct FactoryDataManagerProxy {
682 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
683}
684
685impl fidl::endpoints::Proxy for FactoryDataManagerProxy {
686 type Protocol = FactoryDataManagerMarker;
687
688 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
689 Self::new(inner)
690 }
691
692 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
693 self.client.into_channel().map_err(|client| Self { client })
694 }
695
696 fn as_channel(&self) -> &::fidl::AsyncChannel {
697 self.client.as_channel()
698 }
699}
700
701impl FactoryDataManagerProxy {
702 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
704 let protocol_name =
705 <FactoryDataManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
706 Self { client: fidl::client::Client::new(channel, protocol_name) }
707 }
708
709 pub fn take_event_stream(&self) -> FactoryDataManagerEventStream {
715 FactoryDataManagerEventStream { event_receiver: self.client.take_event_receiver() }
716 }
717
718 pub fn r#get_pairing_code(
720 &self,
721 ) -> fidl::client::QueryResponseFut<
722 FactoryDataManagerGetPairingCodeResult,
723 fidl::encoding::DefaultFuchsiaResourceDialect,
724 > {
725 FactoryDataManagerProxyInterface::r#get_pairing_code(self)
726 }
727
728 pub fn r#get_weave_certificate(
730 &self,
731 ) -> fidl::client::QueryResponseFut<
732 FactoryDataManagerGetWeaveCertificateResult,
733 fidl::encoding::DefaultFuchsiaResourceDialect,
734 > {
735 FactoryDataManagerProxyInterface::r#get_weave_certificate(self)
736 }
737}
738
739impl FactoryDataManagerProxyInterface for FactoryDataManagerProxy {
740 type GetPairingCodeResponseFut = fidl::client::QueryResponseFut<
741 FactoryDataManagerGetPairingCodeResult,
742 fidl::encoding::DefaultFuchsiaResourceDialect,
743 >;
744 fn r#get_pairing_code(&self) -> Self::GetPairingCodeResponseFut {
745 fn _decode(
746 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
747 ) -> Result<FactoryDataManagerGetPairingCodeResult, fidl::Error> {
748 let _response = fidl::client::decode_transaction_body::<
749 fidl::encoding::ResultType<FactoryDataManagerGetPairingCodeResponse, ErrorCode>,
750 fidl::encoding::DefaultFuchsiaResourceDialect,
751 0x75630bcd80418a0f,
752 >(_buf?)?;
753 Ok(_response.map(|x| x.pairing_code))
754 }
755 self.client.send_query_and_decode::<
756 fidl::encoding::EmptyPayload,
757 FactoryDataManagerGetPairingCodeResult,
758 >(
759 (),
760 0x75630bcd80418a0f,
761 fidl::encoding::DynamicFlags::empty(),
762 _decode,
763 )
764 }
765
766 type GetWeaveCertificateResponseFut = fidl::client::QueryResponseFut<
767 FactoryDataManagerGetWeaveCertificateResult,
768 fidl::encoding::DefaultFuchsiaResourceDialect,
769 >;
770 fn r#get_weave_certificate(&self) -> Self::GetWeaveCertificateResponseFut {
771 fn _decode(
772 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
773 ) -> Result<FactoryDataManagerGetWeaveCertificateResult, fidl::Error> {
774 let _response = fidl::client::decode_transaction_body::<
775 fidl::encoding::ResultType<
776 FactoryDataManagerGetWeaveCertificateResponse,
777 ErrorCode,
778 >,
779 fidl::encoding::DefaultFuchsiaResourceDialect,
780 0x1b4feca8bc141380,
781 >(_buf?)?;
782 Ok(_response.map(|x| x.certificate))
783 }
784 self.client.send_query_and_decode::<
785 fidl::encoding::EmptyPayload,
786 FactoryDataManagerGetWeaveCertificateResult,
787 >(
788 (),
789 0x1b4feca8bc141380,
790 fidl::encoding::DynamicFlags::empty(),
791 _decode,
792 )
793 }
794}
795
796pub struct FactoryDataManagerEventStream {
797 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
798}
799
800impl std::marker::Unpin for FactoryDataManagerEventStream {}
801
802impl futures::stream::FusedStream for FactoryDataManagerEventStream {
803 fn is_terminated(&self) -> bool {
804 self.event_receiver.is_terminated()
805 }
806}
807
808impl futures::Stream for FactoryDataManagerEventStream {
809 type Item = Result<FactoryDataManagerEvent, fidl::Error>;
810
811 fn poll_next(
812 mut self: std::pin::Pin<&mut Self>,
813 cx: &mut std::task::Context<'_>,
814 ) -> std::task::Poll<Option<Self::Item>> {
815 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
816 &mut self.event_receiver,
817 cx
818 )?) {
819 Some(buf) => std::task::Poll::Ready(Some(FactoryDataManagerEvent::decode(buf))),
820 None => std::task::Poll::Ready(None),
821 }
822 }
823}
824
825#[derive(Debug)]
826pub enum FactoryDataManagerEvent {}
827
828impl FactoryDataManagerEvent {
829 fn decode(
831 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
832 ) -> Result<FactoryDataManagerEvent, fidl::Error> {
833 let (bytes, _handles) = buf.split_mut();
834 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
835 debug_assert_eq!(tx_header.tx_id, 0);
836 match tx_header.ordinal {
837 _ => Err(fidl::Error::UnknownOrdinal {
838 ordinal: tx_header.ordinal,
839 protocol_name:
840 <FactoryDataManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
841 }),
842 }
843 }
844}
845
846pub struct FactoryDataManagerRequestStream {
848 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
849 is_terminated: bool,
850}
851
852impl std::marker::Unpin for FactoryDataManagerRequestStream {}
853
854impl futures::stream::FusedStream for FactoryDataManagerRequestStream {
855 fn is_terminated(&self) -> bool {
856 self.is_terminated
857 }
858}
859
860impl fidl::endpoints::RequestStream for FactoryDataManagerRequestStream {
861 type Protocol = FactoryDataManagerMarker;
862 type ControlHandle = FactoryDataManagerControlHandle;
863
864 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
865 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
866 }
867
868 fn control_handle(&self) -> Self::ControlHandle {
869 FactoryDataManagerControlHandle { inner: self.inner.clone() }
870 }
871
872 fn into_inner(
873 self,
874 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
875 {
876 (self.inner, self.is_terminated)
877 }
878
879 fn from_inner(
880 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
881 is_terminated: bool,
882 ) -> Self {
883 Self { inner, is_terminated }
884 }
885}
886
887impl futures::Stream for FactoryDataManagerRequestStream {
888 type Item = Result<FactoryDataManagerRequest, fidl::Error>;
889
890 fn poll_next(
891 mut self: std::pin::Pin<&mut Self>,
892 cx: &mut std::task::Context<'_>,
893 ) -> std::task::Poll<Option<Self::Item>> {
894 let this = &mut *self;
895 if this.inner.check_shutdown(cx) {
896 this.is_terminated = true;
897 return std::task::Poll::Ready(None);
898 }
899 if this.is_terminated {
900 panic!("polled FactoryDataManagerRequestStream after completion");
901 }
902 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
903 |bytes, handles| {
904 match this.inner.channel().read_etc(cx, bytes, handles) {
905 std::task::Poll::Ready(Ok(())) => {}
906 std::task::Poll::Pending => return std::task::Poll::Pending,
907 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
908 this.is_terminated = true;
909 return std::task::Poll::Ready(None);
910 }
911 std::task::Poll::Ready(Err(e)) => {
912 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
913 e.into(),
914 ))));
915 }
916 }
917
918 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
920
921 std::task::Poll::Ready(Some(match header.ordinal {
922 0x75630bcd80418a0f => {
923 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
924 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
925 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
926 let control_handle = FactoryDataManagerControlHandle {
927 inner: this.inner.clone(),
928 };
929 Ok(FactoryDataManagerRequest::GetPairingCode {
930 responder: FactoryDataManagerGetPairingCodeResponder {
931 control_handle: std::mem::ManuallyDrop::new(control_handle),
932 tx_id: header.tx_id,
933 },
934 })
935 }
936 0x1b4feca8bc141380 => {
937 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
938 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
939 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
940 let control_handle = FactoryDataManagerControlHandle {
941 inner: this.inner.clone(),
942 };
943 Ok(FactoryDataManagerRequest::GetWeaveCertificate {
944 responder: FactoryDataManagerGetWeaveCertificateResponder {
945 control_handle: std::mem::ManuallyDrop::new(control_handle),
946 tx_id: header.tx_id,
947 },
948 })
949 }
950 _ => Err(fidl::Error::UnknownOrdinal {
951 ordinal: header.ordinal,
952 protocol_name: <FactoryDataManagerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
953 }),
954 }))
955 },
956 )
957 }
958}
959
960#[derive(Debug)]
963pub enum FactoryDataManagerRequest {
964 GetPairingCode { responder: FactoryDataManagerGetPairingCodeResponder },
966 GetWeaveCertificate { responder: FactoryDataManagerGetWeaveCertificateResponder },
968}
969
970impl FactoryDataManagerRequest {
971 #[allow(irrefutable_let_patterns)]
972 pub fn into_get_pairing_code(self) -> Option<(FactoryDataManagerGetPairingCodeResponder)> {
973 if let FactoryDataManagerRequest::GetPairingCode { responder } = self {
974 Some((responder))
975 } else {
976 None
977 }
978 }
979
980 #[allow(irrefutable_let_patterns)]
981 pub fn into_get_weave_certificate(
982 self,
983 ) -> Option<(FactoryDataManagerGetWeaveCertificateResponder)> {
984 if let FactoryDataManagerRequest::GetWeaveCertificate { responder } = self {
985 Some((responder))
986 } else {
987 None
988 }
989 }
990
991 pub fn method_name(&self) -> &'static str {
993 match *self {
994 FactoryDataManagerRequest::GetPairingCode { .. } => "get_pairing_code",
995 FactoryDataManagerRequest::GetWeaveCertificate { .. } => "get_weave_certificate",
996 }
997 }
998}
999
1000#[derive(Debug, Clone)]
1001pub struct FactoryDataManagerControlHandle {
1002 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1003}
1004
1005impl fidl::endpoints::ControlHandle for FactoryDataManagerControlHandle {
1006 fn shutdown(&self) {
1007 self.inner.shutdown()
1008 }
1009 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1010 self.inner.shutdown_with_epitaph(status)
1011 }
1012
1013 fn is_closed(&self) -> bool {
1014 self.inner.channel().is_closed()
1015 }
1016 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1017 self.inner.channel().on_closed()
1018 }
1019
1020 #[cfg(target_os = "fuchsia")]
1021 fn signal_peer(
1022 &self,
1023 clear_mask: zx::Signals,
1024 set_mask: zx::Signals,
1025 ) -> Result<(), zx_status::Status> {
1026 use fidl::Peered;
1027 self.inner.channel().signal_peer(clear_mask, set_mask)
1028 }
1029}
1030
1031impl FactoryDataManagerControlHandle {}
1032
1033#[must_use = "FIDL methods require a response to be sent"]
1034#[derive(Debug)]
1035pub struct FactoryDataManagerGetPairingCodeResponder {
1036 control_handle: std::mem::ManuallyDrop<FactoryDataManagerControlHandle>,
1037 tx_id: u32,
1038}
1039
1040impl std::ops::Drop for FactoryDataManagerGetPairingCodeResponder {
1044 fn drop(&mut self) {
1045 self.control_handle.shutdown();
1046 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1048 }
1049}
1050
1051impl fidl::endpoints::Responder for FactoryDataManagerGetPairingCodeResponder {
1052 type ControlHandle = FactoryDataManagerControlHandle;
1053
1054 fn control_handle(&self) -> &FactoryDataManagerControlHandle {
1055 &self.control_handle
1056 }
1057
1058 fn drop_without_shutdown(mut self) {
1059 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1061 std::mem::forget(self);
1063 }
1064}
1065
1066impl FactoryDataManagerGetPairingCodeResponder {
1067 pub fn send(self, mut result: Result<&[u8], ErrorCode>) -> Result<(), fidl::Error> {
1071 let _result = self.send_raw(result);
1072 if _result.is_err() {
1073 self.control_handle.shutdown();
1074 }
1075 self.drop_without_shutdown();
1076 _result
1077 }
1078
1079 pub fn send_no_shutdown_on_err(
1081 self,
1082 mut result: Result<&[u8], ErrorCode>,
1083 ) -> Result<(), fidl::Error> {
1084 let _result = self.send_raw(result);
1085 self.drop_without_shutdown();
1086 _result
1087 }
1088
1089 fn send_raw(&self, mut result: Result<&[u8], ErrorCode>) -> Result<(), fidl::Error> {
1090 self.control_handle.inner.send::<fidl::encoding::ResultType<
1091 FactoryDataManagerGetPairingCodeResponse,
1092 ErrorCode,
1093 >>(
1094 result.map(|pairing_code| (pairing_code,)),
1095 self.tx_id,
1096 0x75630bcd80418a0f,
1097 fidl::encoding::DynamicFlags::empty(),
1098 )
1099 }
1100}
1101
1102#[must_use = "FIDL methods require a response to be sent"]
1103#[derive(Debug)]
1104pub struct FactoryDataManagerGetWeaveCertificateResponder {
1105 control_handle: std::mem::ManuallyDrop<FactoryDataManagerControlHandle>,
1106 tx_id: u32,
1107}
1108
1109impl std::ops::Drop for FactoryDataManagerGetWeaveCertificateResponder {
1113 fn drop(&mut self) {
1114 self.control_handle.shutdown();
1115 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1117 }
1118}
1119
1120impl fidl::endpoints::Responder for FactoryDataManagerGetWeaveCertificateResponder {
1121 type ControlHandle = FactoryDataManagerControlHandle;
1122
1123 fn control_handle(&self) -> &FactoryDataManagerControlHandle {
1124 &self.control_handle
1125 }
1126
1127 fn drop_without_shutdown(mut self) {
1128 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1130 std::mem::forget(self);
1132 }
1133}
1134
1135impl FactoryDataManagerGetWeaveCertificateResponder {
1136 pub fn send(
1140 self,
1141 mut result: Result<fidl_fuchsia_mem::Buffer, ErrorCode>,
1142 ) -> Result<(), fidl::Error> {
1143 let _result = self.send_raw(result);
1144 if _result.is_err() {
1145 self.control_handle.shutdown();
1146 }
1147 self.drop_without_shutdown();
1148 _result
1149 }
1150
1151 pub fn send_no_shutdown_on_err(
1153 self,
1154 mut result: Result<fidl_fuchsia_mem::Buffer, ErrorCode>,
1155 ) -> Result<(), fidl::Error> {
1156 let _result = self.send_raw(result);
1157 self.drop_without_shutdown();
1158 _result
1159 }
1160
1161 fn send_raw(
1162 &self,
1163 mut result: Result<fidl_fuchsia_mem::Buffer, ErrorCode>,
1164 ) -> Result<(), fidl::Error> {
1165 self.control_handle.inner.send::<fidl::encoding::ResultType<
1166 FactoryDataManagerGetWeaveCertificateResponse,
1167 ErrorCode,
1168 >>(
1169 result.as_mut().map_err(|e| *e).map(|certificate| (certificate,)),
1170 self.tx_id,
1171 0x1b4feca8bc141380,
1172 fidl::encoding::DynamicFlags::empty(),
1173 )
1174 }
1175}
1176
1177#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1178pub struct PairingStateWatcherMarker;
1179
1180impl fidl::endpoints::ProtocolMarker for PairingStateWatcherMarker {
1181 type Proxy = PairingStateWatcherProxy;
1182 type RequestStream = PairingStateWatcherRequestStream;
1183 #[cfg(target_os = "fuchsia")]
1184 type SynchronousProxy = PairingStateWatcherSynchronousProxy;
1185
1186 const DEBUG_NAME: &'static str = "(anonymous) PairingStateWatcher";
1187}
1188
1189pub trait PairingStateWatcherProxyInterface: Send + Sync {
1190 type WatchPairingStateResponseFut: std::future::Future<Output = Result<PairingState, fidl::Error>>
1191 + Send;
1192 fn r#watch_pairing_state(&self) -> Self::WatchPairingStateResponseFut;
1193}
1194#[derive(Debug)]
1195#[cfg(target_os = "fuchsia")]
1196pub struct PairingStateWatcherSynchronousProxy {
1197 client: fidl::client::sync::Client,
1198}
1199
1200#[cfg(target_os = "fuchsia")]
1201impl fidl::endpoints::SynchronousProxy for PairingStateWatcherSynchronousProxy {
1202 type Proxy = PairingStateWatcherProxy;
1203 type Protocol = PairingStateWatcherMarker;
1204
1205 fn from_channel(inner: fidl::Channel) -> Self {
1206 Self::new(inner)
1207 }
1208
1209 fn into_channel(self) -> fidl::Channel {
1210 self.client.into_channel()
1211 }
1212
1213 fn as_channel(&self) -> &fidl::Channel {
1214 self.client.as_channel()
1215 }
1216}
1217
1218#[cfg(target_os = "fuchsia")]
1219impl PairingStateWatcherSynchronousProxy {
1220 pub fn new(channel: fidl::Channel) -> Self {
1221 let protocol_name =
1222 <PairingStateWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1223 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1224 }
1225
1226 pub fn into_channel(self) -> fidl::Channel {
1227 self.client.into_channel()
1228 }
1229
1230 pub fn wait_for_event(
1233 &self,
1234 deadline: zx::MonotonicInstant,
1235 ) -> Result<PairingStateWatcherEvent, fidl::Error> {
1236 PairingStateWatcherEvent::decode(self.client.wait_for_event(deadline)?)
1237 }
1238
1239 pub fn r#watch_pairing_state(
1248 &self,
1249 ___deadline: zx::MonotonicInstant,
1250 ) -> Result<PairingState, fidl::Error> {
1251 let _response = self.client.send_query::<
1252 fidl::encoding::EmptyPayload,
1253 PairingStateWatcherWatchPairingStateResponse,
1254 >(
1255 (),
1256 0x1b3889b65cea014e,
1257 fidl::encoding::DynamicFlags::empty(),
1258 ___deadline,
1259 )?;
1260 Ok(_response.state)
1261 }
1262}
1263
1264#[cfg(target_os = "fuchsia")]
1265impl From<PairingStateWatcherSynchronousProxy> for zx::Handle {
1266 fn from(value: PairingStateWatcherSynchronousProxy) -> Self {
1267 value.into_channel().into()
1268 }
1269}
1270
1271#[cfg(target_os = "fuchsia")]
1272impl From<fidl::Channel> for PairingStateWatcherSynchronousProxy {
1273 fn from(value: fidl::Channel) -> Self {
1274 Self::new(value)
1275 }
1276}
1277
1278#[cfg(target_os = "fuchsia")]
1279impl fidl::endpoints::FromClient for PairingStateWatcherSynchronousProxy {
1280 type Protocol = PairingStateWatcherMarker;
1281
1282 fn from_client(value: fidl::endpoints::ClientEnd<PairingStateWatcherMarker>) -> Self {
1283 Self::new(value.into_channel())
1284 }
1285}
1286
1287#[derive(Debug, Clone)]
1288pub struct PairingStateWatcherProxy {
1289 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1290}
1291
1292impl fidl::endpoints::Proxy for PairingStateWatcherProxy {
1293 type Protocol = PairingStateWatcherMarker;
1294
1295 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1296 Self::new(inner)
1297 }
1298
1299 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1300 self.client.into_channel().map_err(|client| Self { client })
1301 }
1302
1303 fn as_channel(&self) -> &::fidl::AsyncChannel {
1304 self.client.as_channel()
1305 }
1306}
1307
1308impl PairingStateWatcherProxy {
1309 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1311 let protocol_name =
1312 <PairingStateWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1313 Self { client: fidl::client::Client::new(channel, protocol_name) }
1314 }
1315
1316 pub fn take_event_stream(&self) -> PairingStateWatcherEventStream {
1322 PairingStateWatcherEventStream { event_receiver: self.client.take_event_receiver() }
1323 }
1324
1325 pub fn r#watch_pairing_state(
1334 &self,
1335 ) -> fidl::client::QueryResponseFut<PairingState, fidl::encoding::DefaultFuchsiaResourceDialect>
1336 {
1337 PairingStateWatcherProxyInterface::r#watch_pairing_state(self)
1338 }
1339}
1340
1341impl PairingStateWatcherProxyInterface for PairingStateWatcherProxy {
1342 type WatchPairingStateResponseFut =
1343 fidl::client::QueryResponseFut<PairingState, fidl::encoding::DefaultFuchsiaResourceDialect>;
1344 fn r#watch_pairing_state(&self) -> Self::WatchPairingStateResponseFut {
1345 fn _decode(
1346 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1347 ) -> Result<PairingState, fidl::Error> {
1348 let _response = fidl::client::decode_transaction_body::<
1349 PairingStateWatcherWatchPairingStateResponse,
1350 fidl::encoding::DefaultFuchsiaResourceDialect,
1351 0x1b3889b65cea014e,
1352 >(_buf?)?;
1353 Ok(_response.state)
1354 }
1355 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, PairingState>(
1356 (),
1357 0x1b3889b65cea014e,
1358 fidl::encoding::DynamicFlags::empty(),
1359 _decode,
1360 )
1361 }
1362}
1363
1364pub struct PairingStateWatcherEventStream {
1365 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1366}
1367
1368impl std::marker::Unpin for PairingStateWatcherEventStream {}
1369
1370impl futures::stream::FusedStream for PairingStateWatcherEventStream {
1371 fn is_terminated(&self) -> bool {
1372 self.event_receiver.is_terminated()
1373 }
1374}
1375
1376impl futures::Stream for PairingStateWatcherEventStream {
1377 type Item = Result<PairingStateWatcherEvent, fidl::Error>;
1378
1379 fn poll_next(
1380 mut self: std::pin::Pin<&mut Self>,
1381 cx: &mut std::task::Context<'_>,
1382 ) -> std::task::Poll<Option<Self::Item>> {
1383 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1384 &mut self.event_receiver,
1385 cx
1386 )?) {
1387 Some(buf) => std::task::Poll::Ready(Some(PairingStateWatcherEvent::decode(buf))),
1388 None => std::task::Poll::Ready(None),
1389 }
1390 }
1391}
1392
1393#[derive(Debug)]
1394pub enum PairingStateWatcherEvent {}
1395
1396impl PairingStateWatcherEvent {
1397 fn decode(
1399 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1400 ) -> Result<PairingStateWatcherEvent, fidl::Error> {
1401 let (bytes, _handles) = buf.split_mut();
1402 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1403 debug_assert_eq!(tx_header.tx_id, 0);
1404 match tx_header.ordinal {
1405 _ => Err(fidl::Error::UnknownOrdinal {
1406 ordinal: tx_header.ordinal,
1407 protocol_name:
1408 <PairingStateWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1409 }),
1410 }
1411 }
1412}
1413
1414pub struct PairingStateWatcherRequestStream {
1416 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1417 is_terminated: bool,
1418}
1419
1420impl std::marker::Unpin for PairingStateWatcherRequestStream {}
1421
1422impl futures::stream::FusedStream for PairingStateWatcherRequestStream {
1423 fn is_terminated(&self) -> bool {
1424 self.is_terminated
1425 }
1426}
1427
1428impl fidl::endpoints::RequestStream for PairingStateWatcherRequestStream {
1429 type Protocol = PairingStateWatcherMarker;
1430 type ControlHandle = PairingStateWatcherControlHandle;
1431
1432 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1433 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1434 }
1435
1436 fn control_handle(&self) -> Self::ControlHandle {
1437 PairingStateWatcherControlHandle { inner: self.inner.clone() }
1438 }
1439
1440 fn into_inner(
1441 self,
1442 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1443 {
1444 (self.inner, self.is_terminated)
1445 }
1446
1447 fn from_inner(
1448 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1449 is_terminated: bool,
1450 ) -> Self {
1451 Self { inner, is_terminated }
1452 }
1453}
1454
1455impl futures::Stream for PairingStateWatcherRequestStream {
1456 type Item = Result<PairingStateWatcherRequest, fidl::Error>;
1457
1458 fn poll_next(
1459 mut self: std::pin::Pin<&mut Self>,
1460 cx: &mut std::task::Context<'_>,
1461 ) -> std::task::Poll<Option<Self::Item>> {
1462 let this = &mut *self;
1463 if this.inner.check_shutdown(cx) {
1464 this.is_terminated = true;
1465 return std::task::Poll::Ready(None);
1466 }
1467 if this.is_terminated {
1468 panic!("polled PairingStateWatcherRequestStream after completion");
1469 }
1470 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1471 |bytes, handles| {
1472 match this.inner.channel().read_etc(cx, bytes, handles) {
1473 std::task::Poll::Ready(Ok(())) => {}
1474 std::task::Poll::Pending => return std::task::Poll::Pending,
1475 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1476 this.is_terminated = true;
1477 return std::task::Poll::Ready(None);
1478 }
1479 std::task::Poll::Ready(Err(e)) => {
1480 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1481 e.into(),
1482 ))));
1483 }
1484 }
1485
1486 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1488
1489 std::task::Poll::Ready(Some(match header.ordinal {
1490 0x1b3889b65cea014e => {
1491 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1492 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1493 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1494 let control_handle = PairingStateWatcherControlHandle {
1495 inner: this.inner.clone(),
1496 };
1497 Ok(PairingStateWatcherRequest::WatchPairingState {
1498 responder: PairingStateWatcherWatchPairingStateResponder {
1499 control_handle: std::mem::ManuallyDrop::new(control_handle),
1500 tx_id: header.tx_id,
1501 },
1502 })
1503 }
1504 _ => Err(fidl::Error::UnknownOrdinal {
1505 ordinal: header.ordinal,
1506 protocol_name: <PairingStateWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1507 }),
1508 }))
1509 },
1510 )
1511 }
1512}
1513
1514#[derive(Debug)]
1517pub enum PairingStateWatcherRequest {
1518 WatchPairingState { responder: PairingStateWatcherWatchPairingStateResponder },
1527}
1528
1529impl PairingStateWatcherRequest {
1530 #[allow(irrefutable_let_patterns)]
1531 pub fn into_watch_pairing_state(
1532 self,
1533 ) -> Option<(PairingStateWatcherWatchPairingStateResponder)> {
1534 if let PairingStateWatcherRequest::WatchPairingState { responder } = self {
1535 Some((responder))
1536 } else {
1537 None
1538 }
1539 }
1540
1541 pub fn method_name(&self) -> &'static str {
1543 match *self {
1544 PairingStateWatcherRequest::WatchPairingState { .. } => "watch_pairing_state",
1545 }
1546 }
1547}
1548
1549#[derive(Debug, Clone)]
1550pub struct PairingStateWatcherControlHandle {
1551 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1552}
1553
1554impl fidl::endpoints::ControlHandle for PairingStateWatcherControlHandle {
1555 fn shutdown(&self) {
1556 self.inner.shutdown()
1557 }
1558 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1559 self.inner.shutdown_with_epitaph(status)
1560 }
1561
1562 fn is_closed(&self) -> bool {
1563 self.inner.channel().is_closed()
1564 }
1565 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1566 self.inner.channel().on_closed()
1567 }
1568
1569 #[cfg(target_os = "fuchsia")]
1570 fn signal_peer(
1571 &self,
1572 clear_mask: zx::Signals,
1573 set_mask: zx::Signals,
1574 ) -> Result<(), zx_status::Status> {
1575 use fidl::Peered;
1576 self.inner.channel().signal_peer(clear_mask, set_mask)
1577 }
1578}
1579
1580impl PairingStateWatcherControlHandle {}
1581
1582#[must_use = "FIDL methods require a response to be sent"]
1583#[derive(Debug)]
1584pub struct PairingStateWatcherWatchPairingStateResponder {
1585 control_handle: std::mem::ManuallyDrop<PairingStateWatcherControlHandle>,
1586 tx_id: u32,
1587}
1588
1589impl std::ops::Drop for PairingStateWatcherWatchPairingStateResponder {
1593 fn drop(&mut self) {
1594 self.control_handle.shutdown();
1595 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1597 }
1598}
1599
1600impl fidl::endpoints::Responder for PairingStateWatcherWatchPairingStateResponder {
1601 type ControlHandle = PairingStateWatcherControlHandle;
1602
1603 fn control_handle(&self) -> &PairingStateWatcherControlHandle {
1604 &self.control_handle
1605 }
1606
1607 fn drop_without_shutdown(mut self) {
1608 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1610 std::mem::forget(self);
1612 }
1613}
1614
1615impl PairingStateWatcherWatchPairingStateResponder {
1616 pub fn send(self, mut state: &PairingState) -> Result<(), fidl::Error> {
1620 let _result = self.send_raw(state);
1621 if _result.is_err() {
1622 self.control_handle.shutdown();
1623 }
1624 self.drop_without_shutdown();
1625 _result
1626 }
1627
1628 pub fn send_no_shutdown_on_err(self, mut state: &PairingState) -> Result<(), fidl::Error> {
1630 let _result = self.send_raw(state);
1631 self.drop_without_shutdown();
1632 _result
1633 }
1634
1635 fn send_raw(&self, mut state: &PairingState) -> Result<(), fidl::Error> {
1636 self.control_handle.inner.send::<PairingStateWatcherWatchPairingStateResponse>(
1637 (state,),
1638 self.tx_id,
1639 0x1b3889b65cea014e,
1640 fidl::encoding::DynamicFlags::empty(),
1641 )
1642 }
1643}
1644
1645#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1646pub struct ProvisionerMarker;
1647
1648impl fidl::endpoints::ProtocolMarker for ProvisionerMarker {
1649 type Proxy = ProvisionerProxy;
1650 type RequestStream = ProvisionerRequestStream;
1651 #[cfg(target_os = "fuchsia")]
1652 type SynchronousProxy = ProvisionerSynchronousProxy;
1653
1654 const DEBUG_NAME: &'static str = "fuchsia.weave.Provisioner";
1655}
1656impl fidl::endpoints::DiscoverableProtocolMarker for ProvisionerMarker {}
1657pub type ProvisionerGenerateKeyPairResult = Result<(Vec<u8>, Vec<u8>), ErrorCode>;
1658
1659pub trait ProvisionerProxyInterface: Send + Sync {
1660 type GenerateKeyPairResponseFut: std::future::Future<Output = Result<ProvisionerGenerateKeyPairResult, fidl::Error>>
1661 + Send;
1662 fn r#generate_key_pair(&self) -> Self::GenerateKeyPairResponseFut;
1663}
1664#[derive(Debug)]
1665#[cfg(target_os = "fuchsia")]
1666pub struct ProvisionerSynchronousProxy {
1667 client: fidl::client::sync::Client,
1668}
1669
1670#[cfg(target_os = "fuchsia")]
1671impl fidl::endpoints::SynchronousProxy for ProvisionerSynchronousProxy {
1672 type Proxy = ProvisionerProxy;
1673 type Protocol = ProvisionerMarker;
1674
1675 fn from_channel(inner: fidl::Channel) -> Self {
1676 Self::new(inner)
1677 }
1678
1679 fn into_channel(self) -> fidl::Channel {
1680 self.client.into_channel()
1681 }
1682
1683 fn as_channel(&self) -> &fidl::Channel {
1684 self.client.as_channel()
1685 }
1686}
1687
1688#[cfg(target_os = "fuchsia")]
1689impl ProvisionerSynchronousProxy {
1690 pub fn new(channel: fidl::Channel) -> Self {
1691 let protocol_name = <ProvisionerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1692 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1693 }
1694
1695 pub fn into_channel(self) -> fidl::Channel {
1696 self.client.into_channel()
1697 }
1698
1699 pub fn wait_for_event(
1702 &self,
1703 deadline: zx::MonotonicInstant,
1704 ) -> Result<ProvisionerEvent, fidl::Error> {
1705 ProvisionerEvent::decode(self.client.wait_for_event(deadline)?)
1706 }
1707
1708 pub fn r#generate_key_pair(
1717 &self,
1718 ___deadline: zx::MonotonicInstant,
1719 ) -> Result<ProvisionerGenerateKeyPairResult, fidl::Error> {
1720 let _response = self.client.send_query::<
1721 fidl::encoding::EmptyPayload,
1722 fidl::encoding::ResultType<ProvisionerGenerateKeyPairResponse, ErrorCode>,
1723 >(
1724 (),
1725 0x9ba1ad04f47bd9f,
1726 fidl::encoding::DynamicFlags::empty(),
1727 ___deadline,
1728 )?;
1729 Ok(_response.map(|x| (x.wrapped_private_key, x.public_key)))
1730 }
1731}
1732
1733#[cfg(target_os = "fuchsia")]
1734impl From<ProvisionerSynchronousProxy> for zx::Handle {
1735 fn from(value: ProvisionerSynchronousProxy) -> Self {
1736 value.into_channel().into()
1737 }
1738}
1739
1740#[cfg(target_os = "fuchsia")]
1741impl From<fidl::Channel> for ProvisionerSynchronousProxy {
1742 fn from(value: fidl::Channel) -> Self {
1743 Self::new(value)
1744 }
1745}
1746
1747#[cfg(target_os = "fuchsia")]
1748impl fidl::endpoints::FromClient for ProvisionerSynchronousProxy {
1749 type Protocol = ProvisionerMarker;
1750
1751 fn from_client(value: fidl::endpoints::ClientEnd<ProvisionerMarker>) -> Self {
1752 Self::new(value.into_channel())
1753 }
1754}
1755
1756#[derive(Debug, Clone)]
1757pub struct ProvisionerProxy {
1758 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1759}
1760
1761impl fidl::endpoints::Proxy for ProvisionerProxy {
1762 type Protocol = ProvisionerMarker;
1763
1764 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1765 Self::new(inner)
1766 }
1767
1768 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1769 self.client.into_channel().map_err(|client| Self { client })
1770 }
1771
1772 fn as_channel(&self) -> &::fidl::AsyncChannel {
1773 self.client.as_channel()
1774 }
1775}
1776
1777impl ProvisionerProxy {
1778 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1780 let protocol_name = <ProvisionerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1781 Self { client: fidl::client::Client::new(channel, protocol_name) }
1782 }
1783
1784 pub fn take_event_stream(&self) -> ProvisionerEventStream {
1790 ProvisionerEventStream { event_receiver: self.client.take_event_receiver() }
1791 }
1792
1793 pub fn r#generate_key_pair(
1802 &self,
1803 ) -> fidl::client::QueryResponseFut<
1804 ProvisionerGenerateKeyPairResult,
1805 fidl::encoding::DefaultFuchsiaResourceDialect,
1806 > {
1807 ProvisionerProxyInterface::r#generate_key_pair(self)
1808 }
1809}
1810
1811impl ProvisionerProxyInterface for ProvisionerProxy {
1812 type GenerateKeyPairResponseFut = fidl::client::QueryResponseFut<
1813 ProvisionerGenerateKeyPairResult,
1814 fidl::encoding::DefaultFuchsiaResourceDialect,
1815 >;
1816 fn r#generate_key_pair(&self) -> Self::GenerateKeyPairResponseFut {
1817 fn _decode(
1818 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1819 ) -> Result<ProvisionerGenerateKeyPairResult, fidl::Error> {
1820 let _response = fidl::client::decode_transaction_body::<
1821 fidl::encoding::ResultType<ProvisionerGenerateKeyPairResponse, ErrorCode>,
1822 fidl::encoding::DefaultFuchsiaResourceDialect,
1823 0x9ba1ad04f47bd9f,
1824 >(_buf?)?;
1825 Ok(_response.map(|x| (x.wrapped_private_key, x.public_key)))
1826 }
1827 self.client.send_query_and_decode::<
1828 fidl::encoding::EmptyPayload,
1829 ProvisionerGenerateKeyPairResult,
1830 >(
1831 (),
1832 0x9ba1ad04f47bd9f,
1833 fidl::encoding::DynamicFlags::empty(),
1834 _decode,
1835 )
1836 }
1837}
1838
1839pub struct ProvisionerEventStream {
1840 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1841}
1842
1843impl std::marker::Unpin for ProvisionerEventStream {}
1844
1845impl futures::stream::FusedStream for ProvisionerEventStream {
1846 fn is_terminated(&self) -> bool {
1847 self.event_receiver.is_terminated()
1848 }
1849}
1850
1851impl futures::Stream for ProvisionerEventStream {
1852 type Item = Result<ProvisionerEvent, fidl::Error>;
1853
1854 fn poll_next(
1855 mut self: std::pin::Pin<&mut Self>,
1856 cx: &mut std::task::Context<'_>,
1857 ) -> std::task::Poll<Option<Self::Item>> {
1858 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1859 &mut self.event_receiver,
1860 cx
1861 )?) {
1862 Some(buf) => std::task::Poll::Ready(Some(ProvisionerEvent::decode(buf))),
1863 None => std::task::Poll::Ready(None),
1864 }
1865 }
1866}
1867
1868#[derive(Debug)]
1869pub enum ProvisionerEvent {}
1870
1871impl ProvisionerEvent {
1872 fn decode(
1874 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1875 ) -> Result<ProvisionerEvent, fidl::Error> {
1876 let (bytes, _handles) = buf.split_mut();
1877 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1878 debug_assert_eq!(tx_header.tx_id, 0);
1879 match tx_header.ordinal {
1880 _ => Err(fidl::Error::UnknownOrdinal {
1881 ordinal: tx_header.ordinal,
1882 protocol_name: <ProvisionerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1883 }),
1884 }
1885 }
1886}
1887
1888pub struct ProvisionerRequestStream {
1890 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1891 is_terminated: bool,
1892}
1893
1894impl std::marker::Unpin for ProvisionerRequestStream {}
1895
1896impl futures::stream::FusedStream for ProvisionerRequestStream {
1897 fn is_terminated(&self) -> bool {
1898 self.is_terminated
1899 }
1900}
1901
1902impl fidl::endpoints::RequestStream for ProvisionerRequestStream {
1903 type Protocol = ProvisionerMarker;
1904 type ControlHandle = ProvisionerControlHandle;
1905
1906 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1907 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1908 }
1909
1910 fn control_handle(&self) -> Self::ControlHandle {
1911 ProvisionerControlHandle { inner: self.inner.clone() }
1912 }
1913
1914 fn into_inner(
1915 self,
1916 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1917 {
1918 (self.inner, self.is_terminated)
1919 }
1920
1921 fn from_inner(
1922 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1923 is_terminated: bool,
1924 ) -> Self {
1925 Self { inner, is_terminated }
1926 }
1927}
1928
1929impl futures::Stream for ProvisionerRequestStream {
1930 type Item = Result<ProvisionerRequest, fidl::Error>;
1931
1932 fn poll_next(
1933 mut self: std::pin::Pin<&mut Self>,
1934 cx: &mut std::task::Context<'_>,
1935 ) -> std::task::Poll<Option<Self::Item>> {
1936 let this = &mut *self;
1937 if this.inner.check_shutdown(cx) {
1938 this.is_terminated = true;
1939 return std::task::Poll::Ready(None);
1940 }
1941 if this.is_terminated {
1942 panic!("polled ProvisionerRequestStream after completion");
1943 }
1944 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1945 |bytes, handles| {
1946 match this.inner.channel().read_etc(cx, bytes, handles) {
1947 std::task::Poll::Ready(Ok(())) => {}
1948 std::task::Poll::Pending => return std::task::Poll::Pending,
1949 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1950 this.is_terminated = true;
1951 return std::task::Poll::Ready(None);
1952 }
1953 std::task::Poll::Ready(Err(e)) => {
1954 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1955 e.into(),
1956 ))));
1957 }
1958 }
1959
1960 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1962
1963 std::task::Poll::Ready(Some(match header.ordinal {
1964 0x9ba1ad04f47bd9f => {
1965 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1966 let mut req = fidl::new_empty!(
1967 fidl::encoding::EmptyPayload,
1968 fidl::encoding::DefaultFuchsiaResourceDialect
1969 );
1970 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1971 let control_handle = ProvisionerControlHandle { inner: this.inner.clone() };
1972 Ok(ProvisionerRequest::GenerateKeyPair {
1973 responder: ProvisionerGenerateKeyPairResponder {
1974 control_handle: std::mem::ManuallyDrop::new(control_handle),
1975 tx_id: header.tx_id,
1976 },
1977 })
1978 }
1979 _ => Err(fidl::Error::UnknownOrdinal {
1980 ordinal: header.ordinal,
1981 protocol_name:
1982 <ProvisionerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1983 }),
1984 }))
1985 },
1986 )
1987 }
1988}
1989
1990#[derive(Debug)]
1992pub enum ProvisionerRequest {
1993 GenerateKeyPair { responder: ProvisionerGenerateKeyPairResponder },
2002}
2003
2004impl ProvisionerRequest {
2005 #[allow(irrefutable_let_patterns)]
2006 pub fn into_generate_key_pair(self) -> Option<(ProvisionerGenerateKeyPairResponder)> {
2007 if let ProvisionerRequest::GenerateKeyPair { responder } = self {
2008 Some((responder))
2009 } else {
2010 None
2011 }
2012 }
2013
2014 pub fn method_name(&self) -> &'static str {
2016 match *self {
2017 ProvisionerRequest::GenerateKeyPair { .. } => "generate_key_pair",
2018 }
2019 }
2020}
2021
2022#[derive(Debug, Clone)]
2023pub struct ProvisionerControlHandle {
2024 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2025}
2026
2027impl fidl::endpoints::ControlHandle for ProvisionerControlHandle {
2028 fn shutdown(&self) {
2029 self.inner.shutdown()
2030 }
2031 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2032 self.inner.shutdown_with_epitaph(status)
2033 }
2034
2035 fn is_closed(&self) -> bool {
2036 self.inner.channel().is_closed()
2037 }
2038 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2039 self.inner.channel().on_closed()
2040 }
2041
2042 #[cfg(target_os = "fuchsia")]
2043 fn signal_peer(
2044 &self,
2045 clear_mask: zx::Signals,
2046 set_mask: zx::Signals,
2047 ) -> Result<(), zx_status::Status> {
2048 use fidl::Peered;
2049 self.inner.channel().signal_peer(clear_mask, set_mask)
2050 }
2051}
2052
2053impl ProvisionerControlHandle {}
2054
2055#[must_use = "FIDL methods require a response to be sent"]
2056#[derive(Debug)]
2057pub struct ProvisionerGenerateKeyPairResponder {
2058 control_handle: std::mem::ManuallyDrop<ProvisionerControlHandle>,
2059 tx_id: u32,
2060}
2061
2062impl std::ops::Drop for ProvisionerGenerateKeyPairResponder {
2066 fn drop(&mut self) {
2067 self.control_handle.shutdown();
2068 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2070 }
2071}
2072
2073impl fidl::endpoints::Responder for ProvisionerGenerateKeyPairResponder {
2074 type ControlHandle = ProvisionerControlHandle;
2075
2076 fn control_handle(&self) -> &ProvisionerControlHandle {
2077 &self.control_handle
2078 }
2079
2080 fn drop_without_shutdown(mut self) {
2081 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2083 std::mem::forget(self);
2085 }
2086}
2087
2088impl ProvisionerGenerateKeyPairResponder {
2089 pub fn send(self, mut result: Result<(&[u8], &[u8]), ErrorCode>) -> Result<(), fidl::Error> {
2093 let _result = self.send_raw(result);
2094 if _result.is_err() {
2095 self.control_handle.shutdown();
2096 }
2097 self.drop_without_shutdown();
2098 _result
2099 }
2100
2101 pub fn send_no_shutdown_on_err(
2103 self,
2104 mut result: Result<(&[u8], &[u8]), ErrorCode>,
2105 ) -> Result<(), fidl::Error> {
2106 let _result = self.send_raw(result);
2107 self.drop_without_shutdown();
2108 _result
2109 }
2110
2111 fn send_raw(&self, mut result: Result<(&[u8], &[u8]), ErrorCode>) -> Result<(), fidl::Error> {
2112 self.control_handle.inner.send::<fidl::encoding::ResultType<
2113 ProvisionerGenerateKeyPairResponse,
2114 ErrorCode,
2115 >>(
2116 result,
2117 self.tx_id,
2118 0x9ba1ad04f47bd9f,
2119 fidl::encoding::DynamicFlags::empty(),
2120 )
2121 }
2122}
2123
2124#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2125pub struct SignerMarker;
2126
2127impl fidl::endpoints::ProtocolMarker for SignerMarker {
2128 type Proxy = SignerProxy;
2129 type RequestStream = SignerRequestStream;
2130 #[cfg(target_os = "fuchsia")]
2131 type SynchronousProxy = SignerSynchronousProxy;
2132
2133 const DEBUG_NAME: &'static str = "fuchsia.weave.Signer";
2134}
2135impl fidl::endpoints::DiscoverableProtocolMarker for SignerMarker {}
2136pub type SignerSignHashResult = Result<Vec<u8>, ErrorCode>;
2137pub type SignerSignHashWithPrivateKeyResult = Result<Vec<u8>, ErrorCode>;
2138
2139pub trait SignerProxyInterface: Send + Sync {
2140 type SignHashResponseFut: std::future::Future<Output = Result<SignerSignHashResult, fidl::Error>>
2141 + Send;
2142 fn r#sign_hash(&self, hash: &[u8]) -> Self::SignHashResponseFut;
2143 type SignHashWithPrivateKeyResponseFut: std::future::Future<Output = Result<SignerSignHashWithPrivateKeyResult, fidl::Error>>
2144 + Send;
2145 fn r#sign_hash_with_private_key(
2146 &self,
2147 hash: &[u8],
2148 wrapped_private_key: &[u8],
2149 ) -> Self::SignHashWithPrivateKeyResponseFut;
2150}
2151#[derive(Debug)]
2152#[cfg(target_os = "fuchsia")]
2153pub struct SignerSynchronousProxy {
2154 client: fidl::client::sync::Client,
2155}
2156
2157#[cfg(target_os = "fuchsia")]
2158impl fidl::endpoints::SynchronousProxy for SignerSynchronousProxy {
2159 type Proxy = SignerProxy;
2160 type Protocol = SignerMarker;
2161
2162 fn from_channel(inner: fidl::Channel) -> Self {
2163 Self::new(inner)
2164 }
2165
2166 fn into_channel(self) -> fidl::Channel {
2167 self.client.into_channel()
2168 }
2169
2170 fn as_channel(&self) -> &fidl::Channel {
2171 self.client.as_channel()
2172 }
2173}
2174
2175#[cfg(target_os = "fuchsia")]
2176impl SignerSynchronousProxy {
2177 pub fn new(channel: fidl::Channel) -> Self {
2178 let protocol_name = <SignerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2179 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
2180 }
2181
2182 pub fn into_channel(self) -> fidl::Channel {
2183 self.client.into_channel()
2184 }
2185
2186 pub fn wait_for_event(
2189 &self,
2190 deadline: zx::MonotonicInstant,
2191 ) -> Result<SignerEvent, fidl::Error> {
2192 SignerEvent::decode(self.client.wait_for_event(deadline)?)
2193 }
2194
2195 pub fn r#sign_hash(
2200 &self,
2201 mut hash: &[u8],
2202 ___deadline: zx::MonotonicInstant,
2203 ) -> Result<SignerSignHashResult, fidl::Error> {
2204 let _response = self.client.send_query::<
2205 SignerSignHashRequest,
2206 fidl::encoding::ResultType<SignerSignHashResponse, ErrorCode>,
2207 >(
2208 (hash,),
2209 0x3bfb1667fc4fe864,
2210 fidl::encoding::DynamicFlags::empty(),
2211 ___deadline,
2212 )?;
2213 Ok(_response.map(|x| x.signature))
2214 }
2215
2216 pub fn r#sign_hash_with_private_key(
2222 &self,
2223 mut hash: &[u8],
2224 mut wrapped_private_key: &[u8],
2225 ___deadline: zx::MonotonicInstant,
2226 ) -> Result<SignerSignHashWithPrivateKeyResult, fidl::Error> {
2227 let _response = self.client.send_query::<
2228 SignerSignHashWithPrivateKeyRequest,
2229 fidl::encoding::ResultType<SignerSignHashWithPrivateKeyResponse, ErrorCode>,
2230 >(
2231 (hash, wrapped_private_key,),
2232 0x23e8ae3490affc11,
2233 fidl::encoding::DynamicFlags::empty(),
2234 ___deadline,
2235 )?;
2236 Ok(_response.map(|x| x.signature))
2237 }
2238}
2239
2240#[cfg(target_os = "fuchsia")]
2241impl From<SignerSynchronousProxy> for zx::Handle {
2242 fn from(value: SignerSynchronousProxy) -> Self {
2243 value.into_channel().into()
2244 }
2245}
2246
2247#[cfg(target_os = "fuchsia")]
2248impl From<fidl::Channel> for SignerSynchronousProxy {
2249 fn from(value: fidl::Channel) -> Self {
2250 Self::new(value)
2251 }
2252}
2253
2254#[cfg(target_os = "fuchsia")]
2255impl fidl::endpoints::FromClient for SignerSynchronousProxy {
2256 type Protocol = SignerMarker;
2257
2258 fn from_client(value: fidl::endpoints::ClientEnd<SignerMarker>) -> Self {
2259 Self::new(value.into_channel())
2260 }
2261}
2262
2263#[derive(Debug, Clone)]
2264pub struct SignerProxy {
2265 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2266}
2267
2268impl fidl::endpoints::Proxy for SignerProxy {
2269 type Protocol = SignerMarker;
2270
2271 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2272 Self::new(inner)
2273 }
2274
2275 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2276 self.client.into_channel().map_err(|client| Self { client })
2277 }
2278
2279 fn as_channel(&self) -> &::fidl::AsyncChannel {
2280 self.client.as_channel()
2281 }
2282}
2283
2284impl SignerProxy {
2285 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2287 let protocol_name = <SignerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2288 Self { client: fidl::client::Client::new(channel, protocol_name) }
2289 }
2290
2291 pub fn take_event_stream(&self) -> SignerEventStream {
2297 SignerEventStream { event_receiver: self.client.take_event_receiver() }
2298 }
2299
2300 pub fn r#sign_hash(
2305 &self,
2306 mut hash: &[u8],
2307 ) -> fidl::client::QueryResponseFut<
2308 SignerSignHashResult,
2309 fidl::encoding::DefaultFuchsiaResourceDialect,
2310 > {
2311 SignerProxyInterface::r#sign_hash(self, hash)
2312 }
2313
2314 pub fn r#sign_hash_with_private_key(
2320 &self,
2321 mut hash: &[u8],
2322 mut wrapped_private_key: &[u8],
2323 ) -> fidl::client::QueryResponseFut<
2324 SignerSignHashWithPrivateKeyResult,
2325 fidl::encoding::DefaultFuchsiaResourceDialect,
2326 > {
2327 SignerProxyInterface::r#sign_hash_with_private_key(self, hash, wrapped_private_key)
2328 }
2329}
2330
2331impl SignerProxyInterface for SignerProxy {
2332 type SignHashResponseFut = fidl::client::QueryResponseFut<
2333 SignerSignHashResult,
2334 fidl::encoding::DefaultFuchsiaResourceDialect,
2335 >;
2336 fn r#sign_hash(&self, mut hash: &[u8]) -> Self::SignHashResponseFut {
2337 fn _decode(
2338 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2339 ) -> Result<SignerSignHashResult, fidl::Error> {
2340 let _response = fidl::client::decode_transaction_body::<
2341 fidl::encoding::ResultType<SignerSignHashResponse, ErrorCode>,
2342 fidl::encoding::DefaultFuchsiaResourceDialect,
2343 0x3bfb1667fc4fe864,
2344 >(_buf?)?;
2345 Ok(_response.map(|x| x.signature))
2346 }
2347 self.client.send_query_and_decode::<SignerSignHashRequest, SignerSignHashResult>(
2348 (hash,),
2349 0x3bfb1667fc4fe864,
2350 fidl::encoding::DynamicFlags::empty(),
2351 _decode,
2352 )
2353 }
2354
2355 type SignHashWithPrivateKeyResponseFut = fidl::client::QueryResponseFut<
2356 SignerSignHashWithPrivateKeyResult,
2357 fidl::encoding::DefaultFuchsiaResourceDialect,
2358 >;
2359 fn r#sign_hash_with_private_key(
2360 &self,
2361 mut hash: &[u8],
2362 mut wrapped_private_key: &[u8],
2363 ) -> Self::SignHashWithPrivateKeyResponseFut {
2364 fn _decode(
2365 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2366 ) -> Result<SignerSignHashWithPrivateKeyResult, fidl::Error> {
2367 let _response = fidl::client::decode_transaction_body::<
2368 fidl::encoding::ResultType<SignerSignHashWithPrivateKeyResponse, ErrorCode>,
2369 fidl::encoding::DefaultFuchsiaResourceDialect,
2370 0x23e8ae3490affc11,
2371 >(_buf?)?;
2372 Ok(_response.map(|x| x.signature))
2373 }
2374 self.client.send_query_and_decode::<
2375 SignerSignHashWithPrivateKeyRequest,
2376 SignerSignHashWithPrivateKeyResult,
2377 >(
2378 (hash, wrapped_private_key,),
2379 0x23e8ae3490affc11,
2380 fidl::encoding::DynamicFlags::empty(),
2381 _decode,
2382 )
2383 }
2384}
2385
2386pub struct SignerEventStream {
2387 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2388}
2389
2390impl std::marker::Unpin for SignerEventStream {}
2391
2392impl futures::stream::FusedStream for SignerEventStream {
2393 fn is_terminated(&self) -> bool {
2394 self.event_receiver.is_terminated()
2395 }
2396}
2397
2398impl futures::Stream for SignerEventStream {
2399 type Item = Result<SignerEvent, fidl::Error>;
2400
2401 fn poll_next(
2402 mut self: std::pin::Pin<&mut Self>,
2403 cx: &mut std::task::Context<'_>,
2404 ) -> std::task::Poll<Option<Self::Item>> {
2405 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2406 &mut self.event_receiver,
2407 cx
2408 )?) {
2409 Some(buf) => std::task::Poll::Ready(Some(SignerEvent::decode(buf))),
2410 None => std::task::Poll::Ready(None),
2411 }
2412 }
2413}
2414
2415#[derive(Debug)]
2416pub enum SignerEvent {}
2417
2418impl SignerEvent {
2419 fn decode(
2421 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2422 ) -> Result<SignerEvent, fidl::Error> {
2423 let (bytes, _handles) = buf.split_mut();
2424 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2425 debug_assert_eq!(tx_header.tx_id, 0);
2426 match tx_header.ordinal {
2427 _ => Err(fidl::Error::UnknownOrdinal {
2428 ordinal: tx_header.ordinal,
2429 protocol_name: <SignerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2430 }),
2431 }
2432 }
2433}
2434
2435pub struct SignerRequestStream {
2437 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2438 is_terminated: bool,
2439}
2440
2441impl std::marker::Unpin for SignerRequestStream {}
2442
2443impl futures::stream::FusedStream for SignerRequestStream {
2444 fn is_terminated(&self) -> bool {
2445 self.is_terminated
2446 }
2447}
2448
2449impl fidl::endpoints::RequestStream for SignerRequestStream {
2450 type Protocol = SignerMarker;
2451 type ControlHandle = SignerControlHandle;
2452
2453 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2454 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2455 }
2456
2457 fn control_handle(&self) -> Self::ControlHandle {
2458 SignerControlHandle { inner: self.inner.clone() }
2459 }
2460
2461 fn into_inner(
2462 self,
2463 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2464 {
2465 (self.inner, self.is_terminated)
2466 }
2467
2468 fn from_inner(
2469 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2470 is_terminated: bool,
2471 ) -> Self {
2472 Self { inner, is_terminated }
2473 }
2474}
2475
2476impl futures::Stream for SignerRequestStream {
2477 type Item = Result<SignerRequest, fidl::Error>;
2478
2479 fn poll_next(
2480 mut self: std::pin::Pin<&mut Self>,
2481 cx: &mut std::task::Context<'_>,
2482 ) -> std::task::Poll<Option<Self::Item>> {
2483 let this = &mut *self;
2484 if this.inner.check_shutdown(cx) {
2485 this.is_terminated = true;
2486 return std::task::Poll::Ready(None);
2487 }
2488 if this.is_terminated {
2489 panic!("polled SignerRequestStream after completion");
2490 }
2491 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2492 |bytes, handles| {
2493 match this.inner.channel().read_etc(cx, bytes, handles) {
2494 std::task::Poll::Ready(Ok(())) => {}
2495 std::task::Poll::Pending => return std::task::Poll::Pending,
2496 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2497 this.is_terminated = true;
2498 return std::task::Poll::Ready(None);
2499 }
2500 std::task::Poll::Ready(Err(e)) => {
2501 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2502 e.into(),
2503 ))));
2504 }
2505 }
2506
2507 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2509
2510 std::task::Poll::Ready(Some(match header.ordinal {
2511 0x3bfb1667fc4fe864 => {
2512 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2513 let mut req = fidl::new_empty!(
2514 SignerSignHashRequest,
2515 fidl::encoding::DefaultFuchsiaResourceDialect
2516 );
2517 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SignerSignHashRequest>(&header, _body_bytes, handles, &mut req)?;
2518 let control_handle = SignerControlHandle { inner: this.inner.clone() };
2519 Ok(SignerRequest::SignHash {
2520 hash: req.hash,
2521
2522 responder: SignerSignHashResponder {
2523 control_handle: std::mem::ManuallyDrop::new(control_handle),
2524 tx_id: header.tx_id,
2525 },
2526 })
2527 }
2528 0x23e8ae3490affc11 => {
2529 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2530 let mut req = fidl::new_empty!(
2531 SignerSignHashWithPrivateKeyRequest,
2532 fidl::encoding::DefaultFuchsiaResourceDialect
2533 );
2534 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SignerSignHashWithPrivateKeyRequest>(&header, _body_bytes, handles, &mut req)?;
2535 let control_handle = SignerControlHandle { inner: this.inner.clone() };
2536 Ok(SignerRequest::SignHashWithPrivateKey {
2537 hash: req.hash,
2538 wrapped_private_key: req.wrapped_private_key,
2539
2540 responder: SignerSignHashWithPrivateKeyResponder {
2541 control_handle: std::mem::ManuallyDrop::new(control_handle),
2542 tx_id: header.tx_id,
2543 },
2544 })
2545 }
2546 _ => Err(fidl::Error::UnknownOrdinal {
2547 ordinal: header.ordinal,
2548 protocol_name:
2549 <SignerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2550 }),
2551 }))
2552 },
2553 )
2554 }
2555}
2556
2557#[derive(Debug)]
2560pub enum SignerRequest {
2561 SignHash { hash: Vec<u8>, responder: SignerSignHashResponder },
2566 SignHashWithPrivateKey {
2572 hash: Vec<u8>,
2573 wrapped_private_key: Vec<u8>,
2574 responder: SignerSignHashWithPrivateKeyResponder,
2575 },
2576}
2577
2578impl SignerRequest {
2579 #[allow(irrefutable_let_patterns)]
2580 pub fn into_sign_hash(self) -> Option<(Vec<u8>, SignerSignHashResponder)> {
2581 if let SignerRequest::SignHash { hash, responder } = self {
2582 Some((hash, responder))
2583 } else {
2584 None
2585 }
2586 }
2587
2588 #[allow(irrefutable_let_patterns)]
2589 pub fn into_sign_hash_with_private_key(
2590 self,
2591 ) -> Option<(Vec<u8>, Vec<u8>, SignerSignHashWithPrivateKeyResponder)> {
2592 if let SignerRequest::SignHashWithPrivateKey { hash, wrapped_private_key, responder } = self
2593 {
2594 Some((hash, wrapped_private_key, responder))
2595 } else {
2596 None
2597 }
2598 }
2599
2600 pub fn method_name(&self) -> &'static str {
2602 match *self {
2603 SignerRequest::SignHash { .. } => "sign_hash",
2604 SignerRequest::SignHashWithPrivateKey { .. } => "sign_hash_with_private_key",
2605 }
2606 }
2607}
2608
2609#[derive(Debug, Clone)]
2610pub struct SignerControlHandle {
2611 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2612}
2613
2614impl fidl::endpoints::ControlHandle for SignerControlHandle {
2615 fn shutdown(&self) {
2616 self.inner.shutdown()
2617 }
2618 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2619 self.inner.shutdown_with_epitaph(status)
2620 }
2621
2622 fn is_closed(&self) -> bool {
2623 self.inner.channel().is_closed()
2624 }
2625 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2626 self.inner.channel().on_closed()
2627 }
2628
2629 #[cfg(target_os = "fuchsia")]
2630 fn signal_peer(
2631 &self,
2632 clear_mask: zx::Signals,
2633 set_mask: zx::Signals,
2634 ) -> Result<(), zx_status::Status> {
2635 use fidl::Peered;
2636 self.inner.channel().signal_peer(clear_mask, set_mask)
2637 }
2638}
2639
2640impl SignerControlHandle {}
2641
2642#[must_use = "FIDL methods require a response to be sent"]
2643#[derive(Debug)]
2644pub struct SignerSignHashResponder {
2645 control_handle: std::mem::ManuallyDrop<SignerControlHandle>,
2646 tx_id: u32,
2647}
2648
2649impl std::ops::Drop for SignerSignHashResponder {
2653 fn drop(&mut self) {
2654 self.control_handle.shutdown();
2655 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2657 }
2658}
2659
2660impl fidl::endpoints::Responder for SignerSignHashResponder {
2661 type ControlHandle = SignerControlHandle;
2662
2663 fn control_handle(&self) -> &SignerControlHandle {
2664 &self.control_handle
2665 }
2666
2667 fn drop_without_shutdown(mut self) {
2668 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2670 std::mem::forget(self);
2672 }
2673}
2674
2675impl SignerSignHashResponder {
2676 pub fn send(self, mut result: Result<&[u8], ErrorCode>) -> Result<(), fidl::Error> {
2680 let _result = self.send_raw(result);
2681 if _result.is_err() {
2682 self.control_handle.shutdown();
2683 }
2684 self.drop_without_shutdown();
2685 _result
2686 }
2687
2688 pub fn send_no_shutdown_on_err(
2690 self,
2691 mut result: Result<&[u8], ErrorCode>,
2692 ) -> Result<(), fidl::Error> {
2693 let _result = self.send_raw(result);
2694 self.drop_without_shutdown();
2695 _result
2696 }
2697
2698 fn send_raw(&self, mut result: Result<&[u8], ErrorCode>) -> Result<(), fidl::Error> {
2699 self.control_handle
2700 .inner
2701 .send::<fidl::encoding::ResultType<SignerSignHashResponse, ErrorCode>>(
2702 result.map(|signature| (signature,)),
2703 self.tx_id,
2704 0x3bfb1667fc4fe864,
2705 fidl::encoding::DynamicFlags::empty(),
2706 )
2707 }
2708}
2709
2710#[must_use = "FIDL methods require a response to be sent"]
2711#[derive(Debug)]
2712pub struct SignerSignHashWithPrivateKeyResponder {
2713 control_handle: std::mem::ManuallyDrop<SignerControlHandle>,
2714 tx_id: u32,
2715}
2716
2717impl std::ops::Drop for SignerSignHashWithPrivateKeyResponder {
2721 fn drop(&mut self) {
2722 self.control_handle.shutdown();
2723 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2725 }
2726}
2727
2728impl fidl::endpoints::Responder for SignerSignHashWithPrivateKeyResponder {
2729 type ControlHandle = SignerControlHandle;
2730
2731 fn control_handle(&self) -> &SignerControlHandle {
2732 &self.control_handle
2733 }
2734
2735 fn drop_without_shutdown(mut self) {
2736 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2738 std::mem::forget(self);
2740 }
2741}
2742
2743impl SignerSignHashWithPrivateKeyResponder {
2744 pub fn send(self, mut result: Result<&[u8], ErrorCode>) -> Result<(), fidl::Error> {
2748 let _result = self.send_raw(result);
2749 if _result.is_err() {
2750 self.control_handle.shutdown();
2751 }
2752 self.drop_without_shutdown();
2753 _result
2754 }
2755
2756 pub fn send_no_shutdown_on_err(
2758 self,
2759 mut result: Result<&[u8], ErrorCode>,
2760 ) -> Result<(), fidl::Error> {
2761 let _result = self.send_raw(result);
2762 self.drop_without_shutdown();
2763 _result
2764 }
2765
2766 fn send_raw(&self, mut result: Result<&[u8], ErrorCode>) -> Result<(), fidl::Error> {
2767 self.control_handle.inner.send::<fidl::encoding::ResultType<
2768 SignerSignHashWithPrivateKeyResponse,
2769 ErrorCode,
2770 >>(
2771 result.map(|signature| (signature,)),
2772 self.tx_id,
2773 0x23e8ae3490affc11,
2774 fidl::encoding::DynamicFlags::empty(),
2775 )
2776 }
2777}
2778
2779#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2780pub struct StackMarker;
2781
2782impl fidl::endpoints::ProtocolMarker for StackMarker {
2783 type Proxy = StackProxy;
2784 type RequestStream = StackRequestStream;
2785 #[cfg(target_os = "fuchsia")]
2786 type SynchronousProxy = StackSynchronousProxy;
2787
2788 const DEBUG_NAME: &'static str = "fuchsia.weave.Stack";
2789}
2790impl fidl::endpoints::DiscoverableProtocolMarker for StackMarker {}
2791pub type StackGetQrCodeResult = Result<QrCode, ErrorCode>;
2792pub type StackResetConfigResult = Result<(), ErrorCode>;
2793
2794pub trait StackProxyInterface: Send + Sync {
2795 fn r#get_pairing_state_watcher(
2796 &self,
2797 watcher: fidl::endpoints::ServerEnd<PairingStateWatcherMarker>,
2798 ) -> Result<(), fidl::Error>;
2799 fn r#get_svc_directory_watcher(
2800 &self,
2801 endpoint_id: u64,
2802 watcher: fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>,
2803 ) -> Result<(), fidl::Error>;
2804 type GetQrCodeResponseFut: std::future::Future<Output = Result<StackGetQrCodeResult, fidl::Error>>
2805 + Send;
2806 fn r#get_qr_code(&self) -> Self::GetQrCodeResponseFut;
2807 type ResetConfigResponseFut: std::future::Future<Output = Result<StackResetConfigResult, fidl::Error>>
2808 + Send;
2809 fn r#reset_config(&self, flags: ResetConfigFlags) -> Self::ResetConfigResponseFut;
2810}
2811#[derive(Debug)]
2812#[cfg(target_os = "fuchsia")]
2813pub struct StackSynchronousProxy {
2814 client: fidl::client::sync::Client,
2815}
2816
2817#[cfg(target_os = "fuchsia")]
2818impl fidl::endpoints::SynchronousProxy for StackSynchronousProxy {
2819 type Proxy = StackProxy;
2820 type Protocol = StackMarker;
2821
2822 fn from_channel(inner: fidl::Channel) -> Self {
2823 Self::new(inner)
2824 }
2825
2826 fn into_channel(self) -> fidl::Channel {
2827 self.client.into_channel()
2828 }
2829
2830 fn as_channel(&self) -> &fidl::Channel {
2831 self.client.as_channel()
2832 }
2833}
2834
2835#[cfg(target_os = "fuchsia")]
2836impl StackSynchronousProxy {
2837 pub fn new(channel: fidl::Channel) -> Self {
2838 let protocol_name = <StackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2839 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
2840 }
2841
2842 pub fn into_channel(self) -> fidl::Channel {
2843 self.client.into_channel()
2844 }
2845
2846 pub fn wait_for_event(
2849 &self,
2850 deadline: zx::MonotonicInstant,
2851 ) -> Result<StackEvent, fidl::Error> {
2852 StackEvent::decode(self.client.wait_for_event(deadline)?)
2853 }
2854
2855 pub fn r#get_pairing_state_watcher(
2857 &self,
2858 mut watcher: fidl::endpoints::ServerEnd<PairingStateWatcherMarker>,
2859 ) -> Result<(), fidl::Error> {
2860 self.client.send::<StackGetPairingStateWatcherRequest>(
2861 (watcher,),
2862 0x674bbfa106efdc8d,
2863 fidl::encoding::DynamicFlags::empty(),
2864 )
2865 }
2866
2867 pub fn r#get_svc_directory_watcher(
2870 &self,
2871 mut endpoint_id: u64,
2872 mut watcher: fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>,
2873 ) -> Result<(), fidl::Error> {
2874 self.client.send::<StackGetSvcDirectoryWatcherRequest>(
2875 (endpoint_id, watcher),
2876 0x261fdbc7a8447180,
2877 fidl::encoding::DynamicFlags::empty(),
2878 )
2879 }
2880
2881 pub fn r#get_qr_code(
2883 &self,
2884 ___deadline: zx::MonotonicInstant,
2885 ) -> Result<StackGetQrCodeResult, fidl::Error> {
2886 let _response = self.client.send_query::<
2887 fidl::encoding::EmptyPayload,
2888 fidl::encoding::ResultType<StackGetQrCodeResponse, ErrorCode>,
2889 >(
2890 (),
2891 0x79e435f04eb8d342,
2892 fidl::encoding::DynamicFlags::empty(),
2893 ___deadline,
2894 )?;
2895 Ok(_response.map(|x| x.qr_code))
2896 }
2897
2898 pub fn r#reset_config(
2900 &self,
2901 mut flags: ResetConfigFlags,
2902 ___deadline: zx::MonotonicInstant,
2903 ) -> Result<StackResetConfigResult, fidl::Error> {
2904 let _response = self.client.send_query::<
2905 StackResetConfigRequest,
2906 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, ErrorCode>,
2907 >(
2908 (flags,),
2909 0x7a009a9b62d35c10,
2910 fidl::encoding::DynamicFlags::empty(),
2911 ___deadline,
2912 )?;
2913 Ok(_response.map(|x| x))
2914 }
2915}
2916
2917#[cfg(target_os = "fuchsia")]
2918impl From<StackSynchronousProxy> for zx::Handle {
2919 fn from(value: StackSynchronousProxy) -> Self {
2920 value.into_channel().into()
2921 }
2922}
2923
2924#[cfg(target_os = "fuchsia")]
2925impl From<fidl::Channel> for StackSynchronousProxy {
2926 fn from(value: fidl::Channel) -> Self {
2927 Self::new(value)
2928 }
2929}
2930
2931#[cfg(target_os = "fuchsia")]
2932impl fidl::endpoints::FromClient for StackSynchronousProxy {
2933 type Protocol = StackMarker;
2934
2935 fn from_client(value: fidl::endpoints::ClientEnd<StackMarker>) -> Self {
2936 Self::new(value.into_channel())
2937 }
2938}
2939
2940#[derive(Debug, Clone)]
2941pub struct StackProxy {
2942 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
2943}
2944
2945impl fidl::endpoints::Proxy for StackProxy {
2946 type Protocol = StackMarker;
2947
2948 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
2949 Self::new(inner)
2950 }
2951
2952 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
2953 self.client.into_channel().map_err(|client| Self { client })
2954 }
2955
2956 fn as_channel(&self) -> &::fidl::AsyncChannel {
2957 self.client.as_channel()
2958 }
2959}
2960
2961impl StackProxy {
2962 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
2964 let protocol_name = <StackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
2965 Self { client: fidl::client::Client::new(channel, protocol_name) }
2966 }
2967
2968 pub fn take_event_stream(&self) -> StackEventStream {
2974 StackEventStream { event_receiver: self.client.take_event_receiver() }
2975 }
2976
2977 pub fn r#get_pairing_state_watcher(
2979 &self,
2980 mut watcher: fidl::endpoints::ServerEnd<PairingStateWatcherMarker>,
2981 ) -> Result<(), fidl::Error> {
2982 StackProxyInterface::r#get_pairing_state_watcher(self, watcher)
2983 }
2984
2985 pub fn r#get_svc_directory_watcher(
2988 &self,
2989 mut endpoint_id: u64,
2990 mut watcher: fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>,
2991 ) -> Result<(), fidl::Error> {
2992 StackProxyInterface::r#get_svc_directory_watcher(self, endpoint_id, watcher)
2993 }
2994
2995 pub fn r#get_qr_code(
2997 &self,
2998 ) -> fidl::client::QueryResponseFut<
2999 StackGetQrCodeResult,
3000 fidl::encoding::DefaultFuchsiaResourceDialect,
3001 > {
3002 StackProxyInterface::r#get_qr_code(self)
3003 }
3004
3005 pub fn r#reset_config(
3007 &self,
3008 mut flags: ResetConfigFlags,
3009 ) -> fidl::client::QueryResponseFut<
3010 StackResetConfigResult,
3011 fidl::encoding::DefaultFuchsiaResourceDialect,
3012 > {
3013 StackProxyInterface::r#reset_config(self, flags)
3014 }
3015}
3016
3017impl StackProxyInterface for StackProxy {
3018 fn r#get_pairing_state_watcher(
3019 &self,
3020 mut watcher: fidl::endpoints::ServerEnd<PairingStateWatcherMarker>,
3021 ) -> Result<(), fidl::Error> {
3022 self.client.send::<StackGetPairingStateWatcherRequest>(
3023 (watcher,),
3024 0x674bbfa106efdc8d,
3025 fidl::encoding::DynamicFlags::empty(),
3026 )
3027 }
3028
3029 fn r#get_svc_directory_watcher(
3030 &self,
3031 mut endpoint_id: u64,
3032 mut watcher: fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>,
3033 ) -> Result<(), fidl::Error> {
3034 self.client.send::<StackGetSvcDirectoryWatcherRequest>(
3035 (endpoint_id, watcher),
3036 0x261fdbc7a8447180,
3037 fidl::encoding::DynamicFlags::empty(),
3038 )
3039 }
3040
3041 type GetQrCodeResponseFut = fidl::client::QueryResponseFut<
3042 StackGetQrCodeResult,
3043 fidl::encoding::DefaultFuchsiaResourceDialect,
3044 >;
3045 fn r#get_qr_code(&self) -> Self::GetQrCodeResponseFut {
3046 fn _decode(
3047 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3048 ) -> Result<StackGetQrCodeResult, fidl::Error> {
3049 let _response = fidl::client::decode_transaction_body::<
3050 fidl::encoding::ResultType<StackGetQrCodeResponse, ErrorCode>,
3051 fidl::encoding::DefaultFuchsiaResourceDialect,
3052 0x79e435f04eb8d342,
3053 >(_buf?)?;
3054 Ok(_response.map(|x| x.qr_code))
3055 }
3056 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, StackGetQrCodeResult>(
3057 (),
3058 0x79e435f04eb8d342,
3059 fidl::encoding::DynamicFlags::empty(),
3060 _decode,
3061 )
3062 }
3063
3064 type ResetConfigResponseFut = fidl::client::QueryResponseFut<
3065 StackResetConfigResult,
3066 fidl::encoding::DefaultFuchsiaResourceDialect,
3067 >;
3068 fn r#reset_config(&self, mut flags: ResetConfigFlags) -> Self::ResetConfigResponseFut {
3069 fn _decode(
3070 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
3071 ) -> Result<StackResetConfigResult, fidl::Error> {
3072 let _response = fidl::client::decode_transaction_body::<
3073 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, ErrorCode>,
3074 fidl::encoding::DefaultFuchsiaResourceDialect,
3075 0x7a009a9b62d35c10,
3076 >(_buf?)?;
3077 Ok(_response.map(|x| x))
3078 }
3079 self.client.send_query_and_decode::<StackResetConfigRequest, StackResetConfigResult>(
3080 (flags,),
3081 0x7a009a9b62d35c10,
3082 fidl::encoding::DynamicFlags::empty(),
3083 _decode,
3084 )
3085 }
3086}
3087
3088pub struct StackEventStream {
3089 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3090}
3091
3092impl std::marker::Unpin for StackEventStream {}
3093
3094impl futures::stream::FusedStream for StackEventStream {
3095 fn is_terminated(&self) -> bool {
3096 self.event_receiver.is_terminated()
3097 }
3098}
3099
3100impl futures::Stream for StackEventStream {
3101 type Item = Result<StackEvent, fidl::Error>;
3102
3103 fn poll_next(
3104 mut self: std::pin::Pin<&mut Self>,
3105 cx: &mut std::task::Context<'_>,
3106 ) -> std::task::Poll<Option<Self::Item>> {
3107 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3108 &mut self.event_receiver,
3109 cx
3110 )?) {
3111 Some(buf) => std::task::Poll::Ready(Some(StackEvent::decode(buf))),
3112 None => std::task::Poll::Ready(None),
3113 }
3114 }
3115}
3116
3117#[derive(Debug)]
3118pub enum StackEvent {}
3119
3120impl StackEvent {
3121 fn decode(
3123 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3124 ) -> Result<StackEvent, fidl::Error> {
3125 let (bytes, _handles) = buf.split_mut();
3126 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3127 debug_assert_eq!(tx_header.tx_id, 0);
3128 match tx_header.ordinal {
3129 _ => Err(fidl::Error::UnknownOrdinal {
3130 ordinal: tx_header.ordinal,
3131 protocol_name: <StackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3132 }),
3133 }
3134 }
3135}
3136
3137pub struct StackRequestStream {
3139 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3140 is_terminated: bool,
3141}
3142
3143impl std::marker::Unpin for StackRequestStream {}
3144
3145impl futures::stream::FusedStream for StackRequestStream {
3146 fn is_terminated(&self) -> bool {
3147 self.is_terminated
3148 }
3149}
3150
3151impl fidl::endpoints::RequestStream for StackRequestStream {
3152 type Protocol = StackMarker;
3153 type ControlHandle = StackControlHandle;
3154
3155 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3156 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3157 }
3158
3159 fn control_handle(&self) -> Self::ControlHandle {
3160 StackControlHandle { inner: self.inner.clone() }
3161 }
3162
3163 fn into_inner(
3164 self,
3165 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3166 {
3167 (self.inner, self.is_terminated)
3168 }
3169
3170 fn from_inner(
3171 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3172 is_terminated: bool,
3173 ) -> Self {
3174 Self { inner, is_terminated }
3175 }
3176}
3177
3178impl futures::Stream for StackRequestStream {
3179 type Item = Result<StackRequest, fidl::Error>;
3180
3181 fn poll_next(
3182 mut self: std::pin::Pin<&mut Self>,
3183 cx: &mut std::task::Context<'_>,
3184 ) -> std::task::Poll<Option<Self::Item>> {
3185 let this = &mut *self;
3186 if this.inner.check_shutdown(cx) {
3187 this.is_terminated = true;
3188 return std::task::Poll::Ready(None);
3189 }
3190 if this.is_terminated {
3191 panic!("polled StackRequestStream after completion");
3192 }
3193 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3194 |bytes, handles| {
3195 match this.inner.channel().read_etc(cx, bytes, handles) {
3196 std::task::Poll::Ready(Ok(())) => {}
3197 std::task::Poll::Pending => return std::task::Poll::Pending,
3198 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3199 this.is_terminated = true;
3200 return std::task::Poll::Ready(None);
3201 }
3202 std::task::Poll::Ready(Err(e)) => {
3203 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3204 e.into(),
3205 ))));
3206 }
3207 }
3208
3209 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3211
3212 std::task::Poll::Ready(Some(match header.ordinal {
3213 0x674bbfa106efdc8d => {
3214 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3215 let mut req = fidl::new_empty!(
3216 StackGetPairingStateWatcherRequest,
3217 fidl::encoding::DefaultFuchsiaResourceDialect
3218 );
3219 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<StackGetPairingStateWatcherRequest>(&header, _body_bytes, handles, &mut req)?;
3220 let control_handle = StackControlHandle { inner: this.inner.clone() };
3221 Ok(StackRequest::GetPairingStateWatcher {
3222 watcher: req.watcher,
3223
3224 control_handle,
3225 })
3226 }
3227 0x261fdbc7a8447180 => {
3228 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3229 let mut req = fidl::new_empty!(
3230 StackGetSvcDirectoryWatcherRequest,
3231 fidl::encoding::DefaultFuchsiaResourceDialect
3232 );
3233 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<StackGetSvcDirectoryWatcherRequest>(&header, _body_bytes, handles, &mut req)?;
3234 let control_handle = StackControlHandle { inner: this.inner.clone() };
3235 Ok(StackRequest::GetSvcDirectoryWatcher {
3236 endpoint_id: req.endpoint_id,
3237 watcher: req.watcher,
3238
3239 control_handle,
3240 })
3241 }
3242 0x79e435f04eb8d342 => {
3243 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3244 let mut req = fidl::new_empty!(
3245 fidl::encoding::EmptyPayload,
3246 fidl::encoding::DefaultFuchsiaResourceDialect
3247 );
3248 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
3249 let control_handle = StackControlHandle { inner: this.inner.clone() };
3250 Ok(StackRequest::GetQrCode {
3251 responder: StackGetQrCodeResponder {
3252 control_handle: std::mem::ManuallyDrop::new(control_handle),
3253 tx_id: header.tx_id,
3254 },
3255 })
3256 }
3257 0x7a009a9b62d35c10 => {
3258 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
3259 let mut req = fidl::new_empty!(
3260 StackResetConfigRequest,
3261 fidl::encoding::DefaultFuchsiaResourceDialect
3262 );
3263 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<StackResetConfigRequest>(&header, _body_bytes, handles, &mut req)?;
3264 let control_handle = StackControlHandle { inner: this.inner.clone() };
3265 Ok(StackRequest::ResetConfig {
3266 flags: req.flags,
3267
3268 responder: StackResetConfigResponder {
3269 control_handle: std::mem::ManuallyDrop::new(control_handle),
3270 tx_id: header.tx_id,
3271 },
3272 })
3273 }
3274 _ => Err(fidl::Error::UnknownOrdinal {
3275 ordinal: header.ordinal,
3276 protocol_name: <StackMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3277 }),
3278 }))
3279 },
3280 )
3281 }
3282}
3283
3284#[derive(Debug)]
3289pub enum StackRequest {
3290 GetPairingStateWatcher {
3292 watcher: fidl::endpoints::ServerEnd<PairingStateWatcherMarker>,
3293 control_handle: StackControlHandle,
3294 },
3295 GetSvcDirectoryWatcher {
3298 endpoint_id: u64,
3299 watcher: fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>,
3300 control_handle: StackControlHandle,
3301 },
3302 GetQrCode { responder: StackGetQrCodeResponder },
3304 ResetConfig { flags: ResetConfigFlags, responder: StackResetConfigResponder },
3306}
3307
3308impl StackRequest {
3309 #[allow(irrefutable_let_patterns)]
3310 pub fn into_get_pairing_state_watcher(
3311 self,
3312 ) -> Option<(fidl::endpoints::ServerEnd<PairingStateWatcherMarker>, StackControlHandle)> {
3313 if let StackRequest::GetPairingStateWatcher { watcher, control_handle } = self {
3314 Some((watcher, control_handle))
3315 } else {
3316 None
3317 }
3318 }
3319
3320 #[allow(irrefutable_let_patterns)]
3321 pub fn into_get_svc_directory_watcher(
3322 self,
3323 ) -> Option<(u64, fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>, StackControlHandle)>
3324 {
3325 if let StackRequest::GetSvcDirectoryWatcher { endpoint_id, watcher, control_handle } = self
3326 {
3327 Some((endpoint_id, watcher, control_handle))
3328 } else {
3329 None
3330 }
3331 }
3332
3333 #[allow(irrefutable_let_patterns)]
3334 pub fn into_get_qr_code(self) -> Option<(StackGetQrCodeResponder)> {
3335 if let StackRequest::GetQrCode { responder } = self { Some((responder)) } else { None }
3336 }
3337
3338 #[allow(irrefutable_let_patterns)]
3339 pub fn into_reset_config(self) -> Option<(ResetConfigFlags, StackResetConfigResponder)> {
3340 if let StackRequest::ResetConfig { flags, responder } = self {
3341 Some((flags, responder))
3342 } else {
3343 None
3344 }
3345 }
3346
3347 pub fn method_name(&self) -> &'static str {
3349 match *self {
3350 StackRequest::GetPairingStateWatcher { .. } => "get_pairing_state_watcher",
3351 StackRequest::GetSvcDirectoryWatcher { .. } => "get_svc_directory_watcher",
3352 StackRequest::GetQrCode { .. } => "get_qr_code",
3353 StackRequest::ResetConfig { .. } => "reset_config",
3354 }
3355 }
3356}
3357
3358#[derive(Debug, Clone)]
3359pub struct StackControlHandle {
3360 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3361}
3362
3363impl fidl::endpoints::ControlHandle for StackControlHandle {
3364 fn shutdown(&self) {
3365 self.inner.shutdown()
3366 }
3367 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3368 self.inner.shutdown_with_epitaph(status)
3369 }
3370
3371 fn is_closed(&self) -> bool {
3372 self.inner.channel().is_closed()
3373 }
3374 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3375 self.inner.channel().on_closed()
3376 }
3377
3378 #[cfg(target_os = "fuchsia")]
3379 fn signal_peer(
3380 &self,
3381 clear_mask: zx::Signals,
3382 set_mask: zx::Signals,
3383 ) -> Result<(), zx_status::Status> {
3384 use fidl::Peered;
3385 self.inner.channel().signal_peer(clear_mask, set_mask)
3386 }
3387}
3388
3389impl StackControlHandle {}
3390
3391#[must_use = "FIDL methods require a response to be sent"]
3392#[derive(Debug)]
3393pub struct StackGetQrCodeResponder {
3394 control_handle: std::mem::ManuallyDrop<StackControlHandle>,
3395 tx_id: u32,
3396}
3397
3398impl std::ops::Drop for StackGetQrCodeResponder {
3402 fn drop(&mut self) {
3403 self.control_handle.shutdown();
3404 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3406 }
3407}
3408
3409impl fidl::endpoints::Responder for StackGetQrCodeResponder {
3410 type ControlHandle = StackControlHandle;
3411
3412 fn control_handle(&self) -> &StackControlHandle {
3413 &self.control_handle
3414 }
3415
3416 fn drop_without_shutdown(mut self) {
3417 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3419 std::mem::forget(self);
3421 }
3422}
3423
3424impl StackGetQrCodeResponder {
3425 pub fn send(self, mut result: Result<&QrCode, ErrorCode>) -> Result<(), fidl::Error> {
3429 let _result = self.send_raw(result);
3430 if _result.is_err() {
3431 self.control_handle.shutdown();
3432 }
3433 self.drop_without_shutdown();
3434 _result
3435 }
3436
3437 pub fn send_no_shutdown_on_err(
3439 self,
3440 mut result: Result<&QrCode, ErrorCode>,
3441 ) -> Result<(), fidl::Error> {
3442 let _result = self.send_raw(result);
3443 self.drop_without_shutdown();
3444 _result
3445 }
3446
3447 fn send_raw(&self, mut result: Result<&QrCode, ErrorCode>) -> Result<(), fidl::Error> {
3448 self.control_handle
3449 .inner
3450 .send::<fidl::encoding::ResultType<StackGetQrCodeResponse, ErrorCode>>(
3451 result.map(|qr_code| (qr_code,)),
3452 self.tx_id,
3453 0x79e435f04eb8d342,
3454 fidl::encoding::DynamicFlags::empty(),
3455 )
3456 }
3457}
3458
3459#[must_use = "FIDL methods require a response to be sent"]
3460#[derive(Debug)]
3461pub struct StackResetConfigResponder {
3462 control_handle: std::mem::ManuallyDrop<StackControlHandle>,
3463 tx_id: u32,
3464}
3465
3466impl std::ops::Drop for StackResetConfigResponder {
3470 fn drop(&mut self) {
3471 self.control_handle.shutdown();
3472 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3474 }
3475}
3476
3477impl fidl::endpoints::Responder for StackResetConfigResponder {
3478 type ControlHandle = StackControlHandle;
3479
3480 fn control_handle(&self) -> &StackControlHandle {
3481 &self.control_handle
3482 }
3483
3484 fn drop_without_shutdown(mut self) {
3485 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3487 std::mem::forget(self);
3489 }
3490}
3491
3492impl StackResetConfigResponder {
3493 pub fn send(self, mut result: Result<(), ErrorCode>) -> Result<(), fidl::Error> {
3497 let _result = self.send_raw(result);
3498 if _result.is_err() {
3499 self.control_handle.shutdown();
3500 }
3501 self.drop_without_shutdown();
3502 _result
3503 }
3504
3505 pub fn send_no_shutdown_on_err(
3507 self,
3508 mut result: Result<(), ErrorCode>,
3509 ) -> Result<(), fidl::Error> {
3510 let _result = self.send_raw(result);
3511 self.drop_without_shutdown();
3512 _result
3513 }
3514
3515 fn send_raw(&self, mut result: Result<(), ErrorCode>) -> Result<(), fidl::Error> {
3516 self.control_handle
3517 .inner
3518 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, ErrorCode>>(
3519 result,
3520 self.tx_id,
3521 0x7a009a9b62d35c10,
3522 fidl::encoding::DynamicFlags::empty(),
3523 )
3524 }
3525}
3526
3527#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3528pub struct StackProviderMarker;
3529
3530impl fidl::endpoints::ProtocolMarker for StackProviderMarker {
3531 type Proxy = StackProviderProxy;
3532 type RequestStream = StackProviderRequestStream;
3533 #[cfg(target_os = "fuchsia")]
3534 type SynchronousProxy = StackProviderSynchronousProxy;
3535
3536 const DEBUG_NAME: &'static str = "fuchsia.weave.StackProvider";
3537}
3538impl fidl::endpoints::DiscoverableProtocolMarker for StackProviderMarker {}
3539
3540pub trait StackProviderProxyInterface: Send + Sync {
3541 fn r#set_wlan_network_config_provider(
3542 &self,
3543 provider: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
3544 ) -> Result<(), fidl::Error>;
3545}
3546#[derive(Debug)]
3547#[cfg(target_os = "fuchsia")]
3548pub struct StackProviderSynchronousProxy {
3549 client: fidl::client::sync::Client,
3550}
3551
3552#[cfg(target_os = "fuchsia")]
3553impl fidl::endpoints::SynchronousProxy for StackProviderSynchronousProxy {
3554 type Proxy = StackProviderProxy;
3555 type Protocol = StackProviderMarker;
3556
3557 fn from_channel(inner: fidl::Channel) -> Self {
3558 Self::new(inner)
3559 }
3560
3561 fn into_channel(self) -> fidl::Channel {
3562 self.client.into_channel()
3563 }
3564
3565 fn as_channel(&self) -> &fidl::Channel {
3566 self.client.as_channel()
3567 }
3568}
3569
3570#[cfg(target_os = "fuchsia")]
3571impl StackProviderSynchronousProxy {
3572 pub fn new(channel: fidl::Channel) -> Self {
3573 let protocol_name = <StackProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3574 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
3575 }
3576
3577 pub fn into_channel(self) -> fidl::Channel {
3578 self.client.into_channel()
3579 }
3580
3581 pub fn wait_for_event(
3584 &self,
3585 deadline: zx::MonotonicInstant,
3586 ) -> Result<StackProviderEvent, fidl::Error> {
3587 StackProviderEvent::decode(self.client.wait_for_event(deadline)?)
3588 }
3589
3590 pub fn r#set_wlan_network_config_provider(
3600 &self,
3601 mut provider: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
3602 ) -> Result<(), fidl::Error> {
3603 self.client.send::<StackProviderSetWlanNetworkConfigProviderRequest>(
3604 (provider,),
3605 0x60f817738f6028b4,
3606 fidl::encoding::DynamicFlags::empty(),
3607 )
3608 }
3609}
3610
3611#[cfg(target_os = "fuchsia")]
3612impl From<StackProviderSynchronousProxy> for zx::Handle {
3613 fn from(value: StackProviderSynchronousProxy) -> Self {
3614 value.into_channel().into()
3615 }
3616}
3617
3618#[cfg(target_os = "fuchsia")]
3619impl From<fidl::Channel> for StackProviderSynchronousProxy {
3620 fn from(value: fidl::Channel) -> Self {
3621 Self::new(value)
3622 }
3623}
3624
3625#[cfg(target_os = "fuchsia")]
3626impl fidl::endpoints::FromClient for StackProviderSynchronousProxy {
3627 type Protocol = StackProviderMarker;
3628
3629 fn from_client(value: fidl::endpoints::ClientEnd<StackProviderMarker>) -> Self {
3630 Self::new(value.into_channel())
3631 }
3632}
3633
3634#[derive(Debug, Clone)]
3635pub struct StackProviderProxy {
3636 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3637}
3638
3639impl fidl::endpoints::Proxy for StackProviderProxy {
3640 type Protocol = StackProviderMarker;
3641
3642 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3643 Self::new(inner)
3644 }
3645
3646 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3647 self.client.into_channel().map_err(|client| Self { client })
3648 }
3649
3650 fn as_channel(&self) -> &::fidl::AsyncChannel {
3651 self.client.as_channel()
3652 }
3653}
3654
3655impl StackProviderProxy {
3656 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3658 let protocol_name = <StackProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3659 Self { client: fidl::client::Client::new(channel, protocol_name) }
3660 }
3661
3662 pub fn take_event_stream(&self) -> StackProviderEventStream {
3668 StackProviderEventStream { event_receiver: self.client.take_event_receiver() }
3669 }
3670
3671 pub fn r#set_wlan_network_config_provider(
3681 &self,
3682 mut provider: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
3683 ) -> Result<(), fidl::Error> {
3684 StackProviderProxyInterface::r#set_wlan_network_config_provider(self, provider)
3685 }
3686}
3687
3688impl StackProviderProxyInterface for StackProviderProxy {
3689 fn r#set_wlan_network_config_provider(
3690 &self,
3691 mut provider: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
3692 ) -> Result<(), fidl::Error> {
3693 self.client.send::<StackProviderSetWlanNetworkConfigProviderRequest>(
3694 (provider,),
3695 0x60f817738f6028b4,
3696 fidl::encoding::DynamicFlags::empty(),
3697 )
3698 }
3699}
3700
3701pub struct StackProviderEventStream {
3702 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
3703}
3704
3705impl std::marker::Unpin for StackProviderEventStream {}
3706
3707impl futures::stream::FusedStream for StackProviderEventStream {
3708 fn is_terminated(&self) -> bool {
3709 self.event_receiver.is_terminated()
3710 }
3711}
3712
3713impl futures::Stream for StackProviderEventStream {
3714 type Item = Result<StackProviderEvent, fidl::Error>;
3715
3716 fn poll_next(
3717 mut self: std::pin::Pin<&mut Self>,
3718 cx: &mut std::task::Context<'_>,
3719 ) -> std::task::Poll<Option<Self::Item>> {
3720 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
3721 &mut self.event_receiver,
3722 cx
3723 )?) {
3724 Some(buf) => std::task::Poll::Ready(Some(StackProviderEvent::decode(buf))),
3725 None => std::task::Poll::Ready(None),
3726 }
3727 }
3728}
3729
3730#[derive(Debug)]
3731pub enum StackProviderEvent {}
3732
3733impl StackProviderEvent {
3734 fn decode(
3736 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
3737 ) -> Result<StackProviderEvent, fidl::Error> {
3738 let (bytes, _handles) = buf.split_mut();
3739 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3740 debug_assert_eq!(tx_header.tx_id, 0);
3741 match tx_header.ordinal {
3742 _ => Err(fidl::Error::UnknownOrdinal {
3743 ordinal: tx_header.ordinal,
3744 protocol_name: <StackProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3745 }),
3746 }
3747 }
3748}
3749
3750pub struct StackProviderRequestStream {
3752 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3753 is_terminated: bool,
3754}
3755
3756impl std::marker::Unpin for StackProviderRequestStream {}
3757
3758impl futures::stream::FusedStream for StackProviderRequestStream {
3759 fn is_terminated(&self) -> bool {
3760 self.is_terminated
3761 }
3762}
3763
3764impl fidl::endpoints::RequestStream for StackProviderRequestStream {
3765 type Protocol = StackProviderMarker;
3766 type ControlHandle = StackProviderControlHandle;
3767
3768 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
3769 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
3770 }
3771
3772 fn control_handle(&self) -> Self::ControlHandle {
3773 StackProviderControlHandle { inner: self.inner.clone() }
3774 }
3775
3776 fn into_inner(
3777 self,
3778 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
3779 {
3780 (self.inner, self.is_terminated)
3781 }
3782
3783 fn from_inner(
3784 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3785 is_terminated: bool,
3786 ) -> Self {
3787 Self { inner, is_terminated }
3788 }
3789}
3790
3791impl futures::Stream for StackProviderRequestStream {
3792 type Item = Result<StackProviderRequest, fidl::Error>;
3793
3794 fn poll_next(
3795 mut self: std::pin::Pin<&mut Self>,
3796 cx: &mut std::task::Context<'_>,
3797 ) -> std::task::Poll<Option<Self::Item>> {
3798 let this = &mut *self;
3799 if this.inner.check_shutdown(cx) {
3800 this.is_terminated = true;
3801 return std::task::Poll::Ready(None);
3802 }
3803 if this.is_terminated {
3804 panic!("polled StackProviderRequestStream after completion");
3805 }
3806 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
3807 |bytes, handles| {
3808 match this.inner.channel().read_etc(cx, bytes, handles) {
3809 std::task::Poll::Ready(Ok(())) => {}
3810 std::task::Poll::Pending => return std::task::Poll::Pending,
3811 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
3812 this.is_terminated = true;
3813 return std::task::Poll::Ready(None);
3814 }
3815 std::task::Poll::Ready(Err(e)) => {
3816 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
3817 e.into(),
3818 ))));
3819 }
3820 }
3821
3822 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
3824
3825 std::task::Poll::Ready(Some(match header.ordinal {
3826 0x60f817738f6028b4 => {
3827 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
3828 let mut req = fidl::new_empty!(
3829 StackProviderSetWlanNetworkConfigProviderRequest,
3830 fidl::encoding::DefaultFuchsiaResourceDialect
3831 );
3832 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<StackProviderSetWlanNetworkConfigProviderRequest>(&header, _body_bytes, handles, &mut req)?;
3833 let control_handle =
3834 StackProviderControlHandle { inner: this.inner.clone() };
3835 Ok(StackProviderRequest::SetWlanNetworkConfigProvider {
3836 provider: req.provider,
3837
3838 control_handle,
3839 })
3840 }
3841 _ => Err(fidl::Error::UnknownOrdinal {
3842 ordinal: header.ordinal,
3843 protocol_name:
3844 <StackProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
3845 }),
3846 }))
3847 },
3848 )
3849 }
3850}
3851
3852#[derive(Debug)]
3854pub enum StackProviderRequest {
3855 SetWlanNetworkConfigProvider {
3865 provider: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
3866 control_handle: StackProviderControlHandle,
3867 },
3868}
3869
3870impl StackProviderRequest {
3871 #[allow(irrefutable_let_patterns)]
3872 pub fn into_set_wlan_network_config_provider(
3873 self,
3874 ) -> Option<(
3875 fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
3876 StackProviderControlHandle,
3877 )> {
3878 if let StackProviderRequest::SetWlanNetworkConfigProvider { provider, control_handle } =
3879 self
3880 {
3881 Some((provider, control_handle))
3882 } else {
3883 None
3884 }
3885 }
3886
3887 pub fn method_name(&self) -> &'static str {
3889 match *self {
3890 StackProviderRequest::SetWlanNetworkConfigProvider { .. } => {
3891 "set_wlan_network_config_provider"
3892 }
3893 }
3894 }
3895}
3896
3897#[derive(Debug, Clone)]
3898pub struct StackProviderControlHandle {
3899 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3900}
3901
3902impl fidl::endpoints::ControlHandle for StackProviderControlHandle {
3903 fn shutdown(&self) {
3904 self.inner.shutdown()
3905 }
3906 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3907 self.inner.shutdown_with_epitaph(status)
3908 }
3909
3910 fn is_closed(&self) -> bool {
3911 self.inner.channel().is_closed()
3912 }
3913 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3914 self.inner.channel().on_closed()
3915 }
3916
3917 #[cfg(target_os = "fuchsia")]
3918 fn signal_peer(
3919 &self,
3920 clear_mask: zx::Signals,
3921 set_mask: zx::Signals,
3922 ) -> Result<(), zx_status::Status> {
3923 use fidl::Peered;
3924 self.inner.channel().signal_peer(clear_mask, set_mask)
3925 }
3926}
3927
3928impl StackProviderControlHandle {}
3929
3930#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
3931pub struct SvcDirectoryWatcherMarker;
3932
3933impl fidl::endpoints::ProtocolMarker for SvcDirectoryWatcherMarker {
3934 type Proxy = SvcDirectoryWatcherProxy;
3935 type RequestStream = SvcDirectoryWatcherRequestStream;
3936 #[cfg(target_os = "fuchsia")]
3937 type SynchronousProxy = SvcDirectoryWatcherSynchronousProxy;
3938
3939 const DEBUG_NAME: &'static str = "(anonymous) SvcDirectoryWatcher";
3940}
3941
3942pub trait SvcDirectoryWatcherProxyInterface: Send + Sync {
3943 type WatchServiceDirectoryResponseFut: std::future::Future<Output = Result<Vec<HostPort>, fidl::Error>>
3944 + Send;
3945 fn r#watch_service_directory(&self) -> Self::WatchServiceDirectoryResponseFut;
3946}
3947#[derive(Debug)]
3948#[cfg(target_os = "fuchsia")]
3949pub struct SvcDirectoryWatcherSynchronousProxy {
3950 client: fidl::client::sync::Client,
3951}
3952
3953#[cfg(target_os = "fuchsia")]
3954impl fidl::endpoints::SynchronousProxy for SvcDirectoryWatcherSynchronousProxy {
3955 type Proxy = SvcDirectoryWatcherProxy;
3956 type Protocol = SvcDirectoryWatcherMarker;
3957
3958 fn from_channel(inner: fidl::Channel) -> Self {
3959 Self::new(inner)
3960 }
3961
3962 fn into_channel(self) -> fidl::Channel {
3963 self.client.into_channel()
3964 }
3965
3966 fn as_channel(&self) -> &fidl::Channel {
3967 self.client.as_channel()
3968 }
3969}
3970
3971#[cfg(target_os = "fuchsia")]
3972impl SvcDirectoryWatcherSynchronousProxy {
3973 pub fn new(channel: fidl::Channel) -> Self {
3974 let protocol_name =
3975 <SvcDirectoryWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3976 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
3977 }
3978
3979 pub fn into_channel(self) -> fidl::Channel {
3980 self.client.into_channel()
3981 }
3982
3983 pub fn wait_for_event(
3986 &self,
3987 deadline: zx::MonotonicInstant,
3988 ) -> Result<SvcDirectoryWatcherEvent, fidl::Error> {
3989 SvcDirectoryWatcherEvent::decode(self.client.wait_for_event(deadline)?)
3990 }
3991
3992 pub fn r#watch_service_directory(
4002 &self,
4003 ___deadline: zx::MonotonicInstant,
4004 ) -> Result<Vec<HostPort>, fidl::Error> {
4005 let _response = self.client.send_query::<
4006 fidl::encoding::EmptyPayload,
4007 SvcDirectoryWatcherWatchServiceDirectoryResponse,
4008 >(
4009 (),
4010 0x4c1000286a01a142,
4011 fidl::encoding::DynamicFlags::empty(),
4012 ___deadline,
4013 )?;
4014 Ok(_response.host_port_list)
4015 }
4016}
4017
4018#[cfg(target_os = "fuchsia")]
4019impl From<SvcDirectoryWatcherSynchronousProxy> for zx::Handle {
4020 fn from(value: SvcDirectoryWatcherSynchronousProxy) -> Self {
4021 value.into_channel().into()
4022 }
4023}
4024
4025#[cfg(target_os = "fuchsia")]
4026impl From<fidl::Channel> for SvcDirectoryWatcherSynchronousProxy {
4027 fn from(value: fidl::Channel) -> Self {
4028 Self::new(value)
4029 }
4030}
4031
4032#[cfg(target_os = "fuchsia")]
4033impl fidl::endpoints::FromClient for SvcDirectoryWatcherSynchronousProxy {
4034 type Protocol = SvcDirectoryWatcherMarker;
4035
4036 fn from_client(value: fidl::endpoints::ClientEnd<SvcDirectoryWatcherMarker>) -> Self {
4037 Self::new(value.into_channel())
4038 }
4039}
4040
4041#[derive(Debug, Clone)]
4042pub struct SvcDirectoryWatcherProxy {
4043 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
4044}
4045
4046impl fidl::endpoints::Proxy for SvcDirectoryWatcherProxy {
4047 type Protocol = SvcDirectoryWatcherMarker;
4048
4049 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
4050 Self::new(inner)
4051 }
4052
4053 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
4054 self.client.into_channel().map_err(|client| Self { client })
4055 }
4056
4057 fn as_channel(&self) -> &::fidl::AsyncChannel {
4058 self.client.as_channel()
4059 }
4060}
4061
4062impl SvcDirectoryWatcherProxy {
4063 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
4065 let protocol_name =
4066 <SvcDirectoryWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
4067 Self { client: fidl::client::Client::new(channel, protocol_name) }
4068 }
4069
4070 pub fn take_event_stream(&self) -> SvcDirectoryWatcherEventStream {
4076 SvcDirectoryWatcherEventStream { event_receiver: self.client.take_event_receiver() }
4077 }
4078
4079 pub fn r#watch_service_directory(
4089 &self,
4090 ) -> fidl::client::QueryResponseFut<Vec<HostPort>, fidl::encoding::DefaultFuchsiaResourceDialect>
4091 {
4092 SvcDirectoryWatcherProxyInterface::r#watch_service_directory(self)
4093 }
4094}
4095
4096impl SvcDirectoryWatcherProxyInterface for SvcDirectoryWatcherProxy {
4097 type WatchServiceDirectoryResponseFut = fidl::client::QueryResponseFut<
4098 Vec<HostPort>,
4099 fidl::encoding::DefaultFuchsiaResourceDialect,
4100 >;
4101 fn r#watch_service_directory(&self) -> Self::WatchServiceDirectoryResponseFut {
4102 fn _decode(
4103 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4104 ) -> Result<Vec<HostPort>, fidl::Error> {
4105 let _response = fidl::client::decode_transaction_body::<
4106 SvcDirectoryWatcherWatchServiceDirectoryResponse,
4107 fidl::encoding::DefaultFuchsiaResourceDialect,
4108 0x4c1000286a01a142,
4109 >(_buf?)?;
4110 Ok(_response.host_port_list)
4111 }
4112 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<HostPort>>(
4113 (),
4114 0x4c1000286a01a142,
4115 fidl::encoding::DynamicFlags::empty(),
4116 _decode,
4117 )
4118 }
4119}
4120
4121pub struct SvcDirectoryWatcherEventStream {
4122 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
4123}
4124
4125impl std::marker::Unpin for SvcDirectoryWatcherEventStream {}
4126
4127impl futures::stream::FusedStream for SvcDirectoryWatcherEventStream {
4128 fn is_terminated(&self) -> bool {
4129 self.event_receiver.is_terminated()
4130 }
4131}
4132
4133impl futures::Stream for SvcDirectoryWatcherEventStream {
4134 type Item = Result<SvcDirectoryWatcherEvent, fidl::Error>;
4135
4136 fn poll_next(
4137 mut self: std::pin::Pin<&mut Self>,
4138 cx: &mut std::task::Context<'_>,
4139 ) -> std::task::Poll<Option<Self::Item>> {
4140 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
4141 &mut self.event_receiver,
4142 cx
4143 )?) {
4144 Some(buf) => std::task::Poll::Ready(Some(SvcDirectoryWatcherEvent::decode(buf))),
4145 None => std::task::Poll::Ready(None),
4146 }
4147 }
4148}
4149
4150#[derive(Debug)]
4151pub enum SvcDirectoryWatcherEvent {}
4152
4153impl SvcDirectoryWatcherEvent {
4154 fn decode(
4156 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
4157 ) -> Result<SvcDirectoryWatcherEvent, fidl::Error> {
4158 let (bytes, _handles) = buf.split_mut();
4159 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4160 debug_assert_eq!(tx_header.tx_id, 0);
4161 match tx_header.ordinal {
4162 _ => Err(fidl::Error::UnknownOrdinal {
4163 ordinal: tx_header.ordinal,
4164 protocol_name:
4165 <SvcDirectoryWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4166 }),
4167 }
4168 }
4169}
4170
4171pub struct SvcDirectoryWatcherRequestStream {
4173 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4174 is_terminated: bool,
4175}
4176
4177impl std::marker::Unpin for SvcDirectoryWatcherRequestStream {}
4178
4179impl futures::stream::FusedStream for SvcDirectoryWatcherRequestStream {
4180 fn is_terminated(&self) -> bool {
4181 self.is_terminated
4182 }
4183}
4184
4185impl fidl::endpoints::RequestStream for SvcDirectoryWatcherRequestStream {
4186 type Protocol = SvcDirectoryWatcherMarker;
4187 type ControlHandle = SvcDirectoryWatcherControlHandle;
4188
4189 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
4190 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
4191 }
4192
4193 fn control_handle(&self) -> Self::ControlHandle {
4194 SvcDirectoryWatcherControlHandle { inner: self.inner.clone() }
4195 }
4196
4197 fn into_inner(
4198 self,
4199 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
4200 {
4201 (self.inner, self.is_terminated)
4202 }
4203
4204 fn from_inner(
4205 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4206 is_terminated: bool,
4207 ) -> Self {
4208 Self { inner, is_terminated }
4209 }
4210}
4211
4212impl futures::Stream for SvcDirectoryWatcherRequestStream {
4213 type Item = Result<SvcDirectoryWatcherRequest, fidl::Error>;
4214
4215 fn poll_next(
4216 mut self: std::pin::Pin<&mut Self>,
4217 cx: &mut std::task::Context<'_>,
4218 ) -> std::task::Poll<Option<Self::Item>> {
4219 let this = &mut *self;
4220 if this.inner.check_shutdown(cx) {
4221 this.is_terminated = true;
4222 return std::task::Poll::Ready(None);
4223 }
4224 if this.is_terminated {
4225 panic!("polled SvcDirectoryWatcherRequestStream after completion");
4226 }
4227 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
4228 |bytes, handles| {
4229 match this.inner.channel().read_etc(cx, bytes, handles) {
4230 std::task::Poll::Ready(Ok(())) => {}
4231 std::task::Poll::Pending => return std::task::Poll::Pending,
4232 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
4233 this.is_terminated = true;
4234 return std::task::Poll::Ready(None);
4235 }
4236 std::task::Poll::Ready(Err(e)) => {
4237 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
4238 e.into(),
4239 ))));
4240 }
4241 }
4242
4243 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4245
4246 std::task::Poll::Ready(Some(match header.ordinal {
4247 0x4c1000286a01a142 => {
4248 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
4249 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
4250 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
4251 let control_handle = SvcDirectoryWatcherControlHandle {
4252 inner: this.inner.clone(),
4253 };
4254 Ok(SvcDirectoryWatcherRequest::WatchServiceDirectory {
4255 responder: SvcDirectoryWatcherWatchServiceDirectoryResponder {
4256 control_handle: std::mem::ManuallyDrop::new(control_handle),
4257 tx_id: header.tx_id,
4258 },
4259 })
4260 }
4261 _ => Err(fidl::Error::UnknownOrdinal {
4262 ordinal: header.ordinal,
4263 protocol_name: <SvcDirectoryWatcherMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4264 }),
4265 }))
4266 },
4267 )
4268 }
4269}
4270
4271#[derive(Debug)]
4275pub enum SvcDirectoryWatcherRequest {
4276 WatchServiceDirectory { responder: SvcDirectoryWatcherWatchServiceDirectoryResponder },
4286}
4287
4288impl SvcDirectoryWatcherRequest {
4289 #[allow(irrefutable_let_patterns)]
4290 pub fn into_watch_service_directory(
4291 self,
4292 ) -> Option<(SvcDirectoryWatcherWatchServiceDirectoryResponder)> {
4293 if let SvcDirectoryWatcherRequest::WatchServiceDirectory { responder } = self {
4294 Some((responder))
4295 } else {
4296 None
4297 }
4298 }
4299
4300 pub fn method_name(&self) -> &'static str {
4302 match *self {
4303 SvcDirectoryWatcherRequest::WatchServiceDirectory { .. } => "watch_service_directory",
4304 }
4305 }
4306}
4307
4308#[derive(Debug, Clone)]
4309pub struct SvcDirectoryWatcherControlHandle {
4310 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4311}
4312
4313impl fidl::endpoints::ControlHandle for SvcDirectoryWatcherControlHandle {
4314 fn shutdown(&self) {
4315 self.inner.shutdown()
4316 }
4317 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
4318 self.inner.shutdown_with_epitaph(status)
4319 }
4320
4321 fn is_closed(&self) -> bool {
4322 self.inner.channel().is_closed()
4323 }
4324 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
4325 self.inner.channel().on_closed()
4326 }
4327
4328 #[cfg(target_os = "fuchsia")]
4329 fn signal_peer(
4330 &self,
4331 clear_mask: zx::Signals,
4332 set_mask: zx::Signals,
4333 ) -> Result<(), zx_status::Status> {
4334 use fidl::Peered;
4335 self.inner.channel().signal_peer(clear_mask, set_mask)
4336 }
4337}
4338
4339impl SvcDirectoryWatcherControlHandle {}
4340
4341#[must_use = "FIDL methods require a response to be sent"]
4342#[derive(Debug)]
4343pub struct SvcDirectoryWatcherWatchServiceDirectoryResponder {
4344 control_handle: std::mem::ManuallyDrop<SvcDirectoryWatcherControlHandle>,
4345 tx_id: u32,
4346}
4347
4348impl std::ops::Drop for SvcDirectoryWatcherWatchServiceDirectoryResponder {
4352 fn drop(&mut self) {
4353 self.control_handle.shutdown();
4354 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4356 }
4357}
4358
4359impl fidl::endpoints::Responder for SvcDirectoryWatcherWatchServiceDirectoryResponder {
4360 type ControlHandle = SvcDirectoryWatcherControlHandle;
4361
4362 fn control_handle(&self) -> &SvcDirectoryWatcherControlHandle {
4363 &self.control_handle
4364 }
4365
4366 fn drop_without_shutdown(mut self) {
4367 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4369 std::mem::forget(self);
4371 }
4372}
4373
4374impl SvcDirectoryWatcherWatchServiceDirectoryResponder {
4375 pub fn send(self, mut host_port_list: &[HostPort]) -> Result<(), fidl::Error> {
4379 let _result = self.send_raw(host_port_list);
4380 if _result.is_err() {
4381 self.control_handle.shutdown();
4382 }
4383 self.drop_without_shutdown();
4384 _result
4385 }
4386
4387 pub fn send_no_shutdown_on_err(
4389 self,
4390 mut host_port_list: &[HostPort],
4391 ) -> Result<(), fidl::Error> {
4392 let _result = self.send_raw(host_port_list);
4393 self.drop_without_shutdown();
4394 _result
4395 }
4396
4397 fn send_raw(&self, mut host_port_list: &[HostPort]) -> Result<(), fidl::Error> {
4398 self.control_handle.inner.send::<SvcDirectoryWatcherWatchServiceDirectoryResponse>(
4399 (host_port_list,),
4400 self.tx_id,
4401 0x4c1000286a01a142,
4402 fidl::encoding::DynamicFlags::empty(),
4403 )
4404 }
4405}
4406
4407#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4408pub struct WlanNetworkConfigProviderMarker;
4409
4410impl fidl::endpoints::ProtocolMarker for WlanNetworkConfigProviderMarker {
4411 type Proxy = WlanNetworkConfigProviderProxy;
4412 type RequestStream = WlanNetworkConfigProviderRequestStream;
4413 #[cfg(target_os = "fuchsia")]
4414 type SynchronousProxy = WlanNetworkConfigProviderSynchronousProxy;
4415
4416 const DEBUG_NAME: &'static str = "(anonymous) WlanNetworkConfigProvider";
4417}
4418
4419pub trait WlanNetworkConfigProviderProxyInterface: Send + Sync {
4420 type WatchConnectedNetworkResponseFut: std::future::Future<Output = Result<fidl_fuchsia_wlan_policy::NetworkConfig, fidl::Error>>
4421 + Send;
4422 fn r#watch_connected_network(&self) -> Self::WatchConnectedNetworkResponseFut;
4423}
4424#[derive(Debug)]
4425#[cfg(target_os = "fuchsia")]
4426pub struct WlanNetworkConfigProviderSynchronousProxy {
4427 client: fidl::client::sync::Client,
4428}
4429
4430#[cfg(target_os = "fuchsia")]
4431impl fidl::endpoints::SynchronousProxy for WlanNetworkConfigProviderSynchronousProxy {
4432 type Proxy = WlanNetworkConfigProviderProxy;
4433 type Protocol = WlanNetworkConfigProviderMarker;
4434
4435 fn from_channel(inner: fidl::Channel) -> Self {
4436 Self::new(inner)
4437 }
4438
4439 fn into_channel(self) -> fidl::Channel {
4440 self.client.into_channel()
4441 }
4442
4443 fn as_channel(&self) -> &fidl::Channel {
4444 self.client.as_channel()
4445 }
4446}
4447
4448#[cfg(target_os = "fuchsia")]
4449impl WlanNetworkConfigProviderSynchronousProxy {
4450 pub fn new(channel: fidl::Channel) -> Self {
4451 let protocol_name =
4452 <WlanNetworkConfigProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
4453 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
4454 }
4455
4456 pub fn into_channel(self) -> fidl::Channel {
4457 self.client.into_channel()
4458 }
4459
4460 pub fn wait_for_event(
4463 &self,
4464 deadline: zx::MonotonicInstant,
4465 ) -> Result<WlanNetworkConfigProviderEvent, fidl::Error> {
4466 WlanNetworkConfigProviderEvent::decode(self.client.wait_for_event(deadline)?)
4467 }
4468
4469 pub fn r#watch_connected_network(
4475 &self,
4476 ___deadline: zx::MonotonicInstant,
4477 ) -> Result<fidl_fuchsia_wlan_policy::NetworkConfig, fidl::Error> {
4478 let _response = self.client.send_query::<
4479 fidl::encoding::EmptyPayload,
4480 WlanNetworkConfigProviderWatchConnectedNetworkResponse,
4481 >(
4482 (),
4483 0x966c5bf4d6dfce1,
4484 fidl::encoding::DynamicFlags::empty(),
4485 ___deadline,
4486 )?;
4487 Ok(_response.network_config)
4488 }
4489}
4490
4491#[cfg(target_os = "fuchsia")]
4492impl From<WlanNetworkConfigProviderSynchronousProxy> for zx::Handle {
4493 fn from(value: WlanNetworkConfigProviderSynchronousProxy) -> Self {
4494 value.into_channel().into()
4495 }
4496}
4497
4498#[cfg(target_os = "fuchsia")]
4499impl From<fidl::Channel> for WlanNetworkConfigProviderSynchronousProxy {
4500 fn from(value: fidl::Channel) -> Self {
4501 Self::new(value)
4502 }
4503}
4504
4505#[cfg(target_os = "fuchsia")]
4506impl fidl::endpoints::FromClient for WlanNetworkConfigProviderSynchronousProxy {
4507 type Protocol = WlanNetworkConfigProviderMarker;
4508
4509 fn from_client(value: fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>) -> Self {
4510 Self::new(value.into_channel())
4511 }
4512}
4513
4514#[derive(Debug, Clone)]
4515pub struct WlanNetworkConfigProviderProxy {
4516 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
4517}
4518
4519impl fidl::endpoints::Proxy for WlanNetworkConfigProviderProxy {
4520 type Protocol = WlanNetworkConfigProviderMarker;
4521
4522 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
4523 Self::new(inner)
4524 }
4525
4526 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
4527 self.client.into_channel().map_err(|client| Self { client })
4528 }
4529
4530 fn as_channel(&self) -> &::fidl::AsyncChannel {
4531 self.client.as_channel()
4532 }
4533}
4534
4535impl WlanNetworkConfigProviderProxy {
4536 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
4538 let protocol_name =
4539 <WlanNetworkConfigProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
4540 Self { client: fidl::client::Client::new(channel, protocol_name) }
4541 }
4542
4543 pub fn take_event_stream(&self) -> WlanNetworkConfigProviderEventStream {
4549 WlanNetworkConfigProviderEventStream { event_receiver: self.client.take_event_receiver() }
4550 }
4551
4552 pub fn r#watch_connected_network(
4558 &self,
4559 ) -> fidl::client::QueryResponseFut<
4560 fidl_fuchsia_wlan_policy::NetworkConfig,
4561 fidl::encoding::DefaultFuchsiaResourceDialect,
4562 > {
4563 WlanNetworkConfigProviderProxyInterface::r#watch_connected_network(self)
4564 }
4565}
4566
4567impl WlanNetworkConfigProviderProxyInterface for WlanNetworkConfigProviderProxy {
4568 type WatchConnectedNetworkResponseFut = fidl::client::QueryResponseFut<
4569 fidl_fuchsia_wlan_policy::NetworkConfig,
4570 fidl::encoding::DefaultFuchsiaResourceDialect,
4571 >;
4572 fn r#watch_connected_network(&self) -> Self::WatchConnectedNetworkResponseFut {
4573 fn _decode(
4574 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4575 ) -> Result<fidl_fuchsia_wlan_policy::NetworkConfig, fidl::Error> {
4576 let _response = fidl::client::decode_transaction_body::<
4577 WlanNetworkConfigProviderWatchConnectedNetworkResponse,
4578 fidl::encoding::DefaultFuchsiaResourceDialect,
4579 0x966c5bf4d6dfce1,
4580 >(_buf?)?;
4581 Ok(_response.network_config)
4582 }
4583 self.client.send_query_and_decode::<
4584 fidl::encoding::EmptyPayload,
4585 fidl_fuchsia_wlan_policy::NetworkConfig,
4586 >(
4587 (),
4588 0x966c5bf4d6dfce1,
4589 fidl::encoding::DynamicFlags::empty(),
4590 _decode,
4591 )
4592 }
4593}
4594
4595pub struct WlanNetworkConfigProviderEventStream {
4596 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
4597}
4598
4599impl std::marker::Unpin for WlanNetworkConfigProviderEventStream {}
4600
4601impl futures::stream::FusedStream for WlanNetworkConfigProviderEventStream {
4602 fn is_terminated(&self) -> bool {
4603 self.event_receiver.is_terminated()
4604 }
4605}
4606
4607impl futures::Stream for WlanNetworkConfigProviderEventStream {
4608 type Item = Result<WlanNetworkConfigProviderEvent, fidl::Error>;
4609
4610 fn poll_next(
4611 mut self: std::pin::Pin<&mut Self>,
4612 cx: &mut std::task::Context<'_>,
4613 ) -> std::task::Poll<Option<Self::Item>> {
4614 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
4615 &mut self.event_receiver,
4616 cx
4617 )?) {
4618 Some(buf) => std::task::Poll::Ready(Some(WlanNetworkConfigProviderEvent::decode(buf))),
4619 None => std::task::Poll::Ready(None),
4620 }
4621 }
4622}
4623
4624#[derive(Debug)]
4625pub enum WlanNetworkConfigProviderEvent {}
4626
4627impl WlanNetworkConfigProviderEvent {
4628 fn decode(
4630 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
4631 ) -> Result<WlanNetworkConfigProviderEvent, fidl::Error> {
4632 let (bytes, _handles) = buf.split_mut();
4633 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4634 debug_assert_eq!(tx_header.tx_id, 0);
4635 match tx_header.ordinal {
4636 _ => Err(fidl::Error::UnknownOrdinal {
4637 ordinal: tx_header.ordinal,
4638 protocol_name:
4639 <WlanNetworkConfigProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4640 }),
4641 }
4642 }
4643}
4644
4645pub struct WlanNetworkConfigProviderRequestStream {
4647 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4648 is_terminated: bool,
4649}
4650
4651impl std::marker::Unpin for WlanNetworkConfigProviderRequestStream {}
4652
4653impl futures::stream::FusedStream for WlanNetworkConfigProviderRequestStream {
4654 fn is_terminated(&self) -> bool {
4655 self.is_terminated
4656 }
4657}
4658
4659impl fidl::endpoints::RequestStream for WlanNetworkConfigProviderRequestStream {
4660 type Protocol = WlanNetworkConfigProviderMarker;
4661 type ControlHandle = WlanNetworkConfigProviderControlHandle;
4662
4663 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
4664 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
4665 }
4666
4667 fn control_handle(&self) -> Self::ControlHandle {
4668 WlanNetworkConfigProviderControlHandle { inner: self.inner.clone() }
4669 }
4670
4671 fn into_inner(
4672 self,
4673 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
4674 {
4675 (self.inner, self.is_terminated)
4676 }
4677
4678 fn from_inner(
4679 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4680 is_terminated: bool,
4681 ) -> Self {
4682 Self { inner, is_terminated }
4683 }
4684}
4685
4686impl futures::Stream for WlanNetworkConfigProviderRequestStream {
4687 type Item = Result<WlanNetworkConfigProviderRequest, fidl::Error>;
4688
4689 fn poll_next(
4690 mut self: std::pin::Pin<&mut Self>,
4691 cx: &mut std::task::Context<'_>,
4692 ) -> std::task::Poll<Option<Self::Item>> {
4693 let this = &mut *self;
4694 if this.inner.check_shutdown(cx) {
4695 this.is_terminated = true;
4696 return std::task::Poll::Ready(None);
4697 }
4698 if this.is_terminated {
4699 panic!("polled WlanNetworkConfigProviderRequestStream after completion");
4700 }
4701 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
4702 |bytes, handles| {
4703 match this.inner.channel().read_etc(cx, bytes, handles) {
4704 std::task::Poll::Ready(Ok(())) => {}
4705 std::task::Poll::Pending => return std::task::Poll::Pending,
4706 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
4707 this.is_terminated = true;
4708 return std::task::Poll::Ready(None);
4709 }
4710 std::task::Poll::Ready(Err(e)) => {
4711 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
4712 e.into(),
4713 ))));
4714 }
4715 }
4716
4717 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
4719
4720 std::task::Poll::Ready(Some(match header.ordinal {
4721 0x966c5bf4d6dfce1 => {
4722 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
4723 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
4724 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
4725 let control_handle = WlanNetworkConfigProviderControlHandle {
4726 inner: this.inner.clone(),
4727 };
4728 Ok(WlanNetworkConfigProviderRequest::WatchConnectedNetwork {
4729 responder: WlanNetworkConfigProviderWatchConnectedNetworkResponder {
4730 control_handle: std::mem::ManuallyDrop::new(control_handle),
4731 tx_id: header.tx_id,
4732 },
4733 })
4734 }
4735 _ => Err(fidl::Error::UnknownOrdinal {
4736 ordinal: header.ordinal,
4737 protocol_name: <WlanNetworkConfigProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
4738 }),
4739 }))
4740 },
4741 )
4742 }
4743}
4744
4745#[derive(Debug)]
4748pub enum WlanNetworkConfigProviderRequest {
4749 WatchConnectedNetwork { responder: WlanNetworkConfigProviderWatchConnectedNetworkResponder },
4755}
4756
4757impl WlanNetworkConfigProviderRequest {
4758 #[allow(irrefutable_let_patterns)]
4759 pub fn into_watch_connected_network(
4760 self,
4761 ) -> Option<(WlanNetworkConfigProviderWatchConnectedNetworkResponder)> {
4762 if let WlanNetworkConfigProviderRequest::WatchConnectedNetwork { responder } = self {
4763 Some((responder))
4764 } else {
4765 None
4766 }
4767 }
4768
4769 pub fn method_name(&self) -> &'static str {
4771 match *self {
4772 WlanNetworkConfigProviderRequest::WatchConnectedNetwork { .. } => {
4773 "watch_connected_network"
4774 }
4775 }
4776 }
4777}
4778
4779#[derive(Debug, Clone)]
4780pub struct WlanNetworkConfigProviderControlHandle {
4781 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
4782}
4783
4784impl fidl::endpoints::ControlHandle for WlanNetworkConfigProviderControlHandle {
4785 fn shutdown(&self) {
4786 self.inner.shutdown()
4787 }
4788 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
4789 self.inner.shutdown_with_epitaph(status)
4790 }
4791
4792 fn is_closed(&self) -> bool {
4793 self.inner.channel().is_closed()
4794 }
4795 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
4796 self.inner.channel().on_closed()
4797 }
4798
4799 #[cfg(target_os = "fuchsia")]
4800 fn signal_peer(
4801 &self,
4802 clear_mask: zx::Signals,
4803 set_mask: zx::Signals,
4804 ) -> Result<(), zx_status::Status> {
4805 use fidl::Peered;
4806 self.inner.channel().signal_peer(clear_mask, set_mask)
4807 }
4808}
4809
4810impl WlanNetworkConfigProviderControlHandle {}
4811
4812#[must_use = "FIDL methods require a response to be sent"]
4813#[derive(Debug)]
4814pub struct WlanNetworkConfigProviderWatchConnectedNetworkResponder {
4815 control_handle: std::mem::ManuallyDrop<WlanNetworkConfigProviderControlHandle>,
4816 tx_id: u32,
4817}
4818
4819impl std::ops::Drop for WlanNetworkConfigProviderWatchConnectedNetworkResponder {
4823 fn drop(&mut self) {
4824 self.control_handle.shutdown();
4825 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4827 }
4828}
4829
4830impl fidl::endpoints::Responder for WlanNetworkConfigProviderWatchConnectedNetworkResponder {
4831 type ControlHandle = WlanNetworkConfigProviderControlHandle;
4832
4833 fn control_handle(&self) -> &WlanNetworkConfigProviderControlHandle {
4834 &self.control_handle
4835 }
4836
4837 fn drop_without_shutdown(mut self) {
4838 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4840 std::mem::forget(self);
4842 }
4843}
4844
4845impl WlanNetworkConfigProviderWatchConnectedNetworkResponder {
4846 pub fn send(
4850 self,
4851 mut network_config: &fidl_fuchsia_wlan_policy::NetworkConfig,
4852 ) -> Result<(), fidl::Error> {
4853 let _result = self.send_raw(network_config);
4854 if _result.is_err() {
4855 self.control_handle.shutdown();
4856 }
4857 self.drop_without_shutdown();
4858 _result
4859 }
4860
4861 pub fn send_no_shutdown_on_err(
4863 self,
4864 mut network_config: &fidl_fuchsia_wlan_policy::NetworkConfig,
4865 ) -> Result<(), fidl::Error> {
4866 let _result = self.send_raw(network_config);
4867 self.drop_without_shutdown();
4868 _result
4869 }
4870
4871 fn send_raw(
4872 &self,
4873 mut network_config: &fidl_fuchsia_wlan_policy::NetworkConfig,
4874 ) -> Result<(), fidl::Error> {
4875 self.control_handle.inner.send::<WlanNetworkConfigProviderWatchConnectedNetworkResponse>(
4876 (network_config,),
4877 self.tx_id,
4878 0x966c5bf4d6dfce1,
4879 fidl::encoding::DynamicFlags::empty(),
4880 )
4881 }
4882}
4883
4884mod internal {
4885 use super::*;
4886
4887 impl fidl::encoding::ResourceTypeMarker for BootstrapImportWeaveConfigRequest {
4888 type Borrowed<'a> = &'a mut Self;
4889 fn take_or_borrow<'a>(
4890 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4891 ) -> Self::Borrowed<'a> {
4892 value
4893 }
4894 }
4895
4896 unsafe impl fidl::encoding::TypeMarker for BootstrapImportWeaveConfigRequest {
4897 type Owned = Self;
4898
4899 #[inline(always)]
4900 fn inline_align(_context: fidl::encoding::Context) -> usize {
4901 8
4902 }
4903
4904 #[inline(always)]
4905 fn inline_size(_context: fidl::encoding::Context) -> usize {
4906 16
4907 }
4908 }
4909
4910 unsafe impl
4911 fidl::encoding::Encode<
4912 BootstrapImportWeaveConfigRequest,
4913 fidl::encoding::DefaultFuchsiaResourceDialect,
4914 > for &mut BootstrapImportWeaveConfigRequest
4915 {
4916 #[inline]
4917 unsafe fn encode(
4918 self,
4919 encoder: &mut fidl::encoding::Encoder<
4920 '_,
4921 fidl::encoding::DefaultFuchsiaResourceDialect,
4922 >,
4923 offset: usize,
4924 _depth: fidl::encoding::Depth,
4925 ) -> fidl::Result<()> {
4926 encoder.debug_check_bounds::<BootstrapImportWeaveConfigRequest>(offset);
4927 fidl::encoding::Encode::<
4929 BootstrapImportWeaveConfigRequest,
4930 fidl::encoding::DefaultFuchsiaResourceDialect,
4931 >::encode(
4932 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4933 &mut self.config_json,
4934 ),),
4935 encoder,
4936 offset,
4937 _depth,
4938 )
4939 }
4940 }
4941 unsafe impl<
4942 T0: fidl::encoding::Encode<
4943 fidl_fuchsia_mem::Buffer,
4944 fidl::encoding::DefaultFuchsiaResourceDialect,
4945 >,
4946 >
4947 fidl::encoding::Encode<
4948 BootstrapImportWeaveConfigRequest,
4949 fidl::encoding::DefaultFuchsiaResourceDialect,
4950 > for (T0,)
4951 {
4952 #[inline]
4953 unsafe fn encode(
4954 self,
4955 encoder: &mut fidl::encoding::Encoder<
4956 '_,
4957 fidl::encoding::DefaultFuchsiaResourceDialect,
4958 >,
4959 offset: usize,
4960 depth: fidl::encoding::Depth,
4961 ) -> fidl::Result<()> {
4962 encoder.debug_check_bounds::<BootstrapImportWeaveConfigRequest>(offset);
4963 self.0.encode(encoder, offset + 0, depth)?;
4967 Ok(())
4968 }
4969 }
4970
4971 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4972 for BootstrapImportWeaveConfigRequest
4973 {
4974 #[inline(always)]
4975 fn new_empty() -> Self {
4976 Self {
4977 config_json: fidl::new_empty!(
4978 fidl_fuchsia_mem::Buffer,
4979 fidl::encoding::DefaultFuchsiaResourceDialect
4980 ),
4981 }
4982 }
4983
4984 #[inline]
4985 unsafe fn decode(
4986 &mut self,
4987 decoder: &mut fidl::encoding::Decoder<
4988 '_,
4989 fidl::encoding::DefaultFuchsiaResourceDialect,
4990 >,
4991 offset: usize,
4992 _depth: fidl::encoding::Depth,
4993 ) -> fidl::Result<()> {
4994 decoder.debug_check_bounds::<Self>(offset);
4995 fidl::decode!(
4997 fidl_fuchsia_mem::Buffer,
4998 fidl::encoding::DefaultFuchsiaResourceDialect,
4999 &mut self.config_json,
5000 decoder,
5001 offset + 0,
5002 _depth
5003 )?;
5004 Ok(())
5005 }
5006 }
5007
5008 impl fidl::encoding::ResourceTypeMarker for FactoryDataManagerGetWeaveCertificateResponse {
5009 type Borrowed<'a> = &'a mut Self;
5010 fn take_or_borrow<'a>(
5011 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5012 ) -> Self::Borrowed<'a> {
5013 value
5014 }
5015 }
5016
5017 unsafe impl fidl::encoding::TypeMarker for FactoryDataManagerGetWeaveCertificateResponse {
5018 type Owned = Self;
5019
5020 #[inline(always)]
5021 fn inline_align(_context: fidl::encoding::Context) -> usize {
5022 8
5023 }
5024
5025 #[inline(always)]
5026 fn inline_size(_context: fidl::encoding::Context) -> usize {
5027 16
5028 }
5029 }
5030
5031 unsafe impl
5032 fidl::encoding::Encode<
5033 FactoryDataManagerGetWeaveCertificateResponse,
5034 fidl::encoding::DefaultFuchsiaResourceDialect,
5035 > for &mut FactoryDataManagerGetWeaveCertificateResponse
5036 {
5037 #[inline]
5038 unsafe fn encode(
5039 self,
5040 encoder: &mut fidl::encoding::Encoder<
5041 '_,
5042 fidl::encoding::DefaultFuchsiaResourceDialect,
5043 >,
5044 offset: usize,
5045 _depth: fidl::encoding::Depth,
5046 ) -> fidl::Result<()> {
5047 encoder.debug_check_bounds::<FactoryDataManagerGetWeaveCertificateResponse>(offset);
5048 fidl::encoding::Encode::<
5050 FactoryDataManagerGetWeaveCertificateResponse,
5051 fidl::encoding::DefaultFuchsiaResourceDialect,
5052 >::encode(
5053 (<fidl_fuchsia_mem::Buffer as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
5054 &mut self.certificate,
5055 ),),
5056 encoder,
5057 offset,
5058 _depth,
5059 )
5060 }
5061 }
5062 unsafe impl<
5063 T0: fidl::encoding::Encode<
5064 fidl_fuchsia_mem::Buffer,
5065 fidl::encoding::DefaultFuchsiaResourceDialect,
5066 >,
5067 >
5068 fidl::encoding::Encode<
5069 FactoryDataManagerGetWeaveCertificateResponse,
5070 fidl::encoding::DefaultFuchsiaResourceDialect,
5071 > for (T0,)
5072 {
5073 #[inline]
5074 unsafe fn encode(
5075 self,
5076 encoder: &mut fidl::encoding::Encoder<
5077 '_,
5078 fidl::encoding::DefaultFuchsiaResourceDialect,
5079 >,
5080 offset: usize,
5081 depth: fidl::encoding::Depth,
5082 ) -> fidl::Result<()> {
5083 encoder.debug_check_bounds::<FactoryDataManagerGetWeaveCertificateResponse>(offset);
5084 self.0.encode(encoder, offset + 0, depth)?;
5088 Ok(())
5089 }
5090 }
5091
5092 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5093 for FactoryDataManagerGetWeaveCertificateResponse
5094 {
5095 #[inline(always)]
5096 fn new_empty() -> Self {
5097 Self {
5098 certificate: fidl::new_empty!(
5099 fidl_fuchsia_mem::Buffer,
5100 fidl::encoding::DefaultFuchsiaResourceDialect
5101 ),
5102 }
5103 }
5104
5105 #[inline]
5106 unsafe fn decode(
5107 &mut self,
5108 decoder: &mut fidl::encoding::Decoder<
5109 '_,
5110 fidl::encoding::DefaultFuchsiaResourceDialect,
5111 >,
5112 offset: usize,
5113 _depth: fidl::encoding::Depth,
5114 ) -> fidl::Result<()> {
5115 decoder.debug_check_bounds::<Self>(offset);
5116 fidl::decode!(
5118 fidl_fuchsia_mem::Buffer,
5119 fidl::encoding::DefaultFuchsiaResourceDialect,
5120 &mut self.certificate,
5121 decoder,
5122 offset + 0,
5123 _depth
5124 )?;
5125 Ok(())
5126 }
5127 }
5128
5129 impl fidl::encoding::ResourceTypeMarker for StackGetPairingStateWatcherRequest {
5130 type Borrowed<'a> = &'a mut Self;
5131 fn take_or_borrow<'a>(
5132 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5133 ) -> Self::Borrowed<'a> {
5134 value
5135 }
5136 }
5137
5138 unsafe impl fidl::encoding::TypeMarker for StackGetPairingStateWatcherRequest {
5139 type Owned = Self;
5140
5141 #[inline(always)]
5142 fn inline_align(_context: fidl::encoding::Context) -> usize {
5143 4
5144 }
5145
5146 #[inline(always)]
5147 fn inline_size(_context: fidl::encoding::Context) -> usize {
5148 4
5149 }
5150 }
5151
5152 unsafe impl
5153 fidl::encoding::Encode<
5154 StackGetPairingStateWatcherRequest,
5155 fidl::encoding::DefaultFuchsiaResourceDialect,
5156 > for &mut StackGetPairingStateWatcherRequest
5157 {
5158 #[inline]
5159 unsafe fn encode(
5160 self,
5161 encoder: &mut fidl::encoding::Encoder<
5162 '_,
5163 fidl::encoding::DefaultFuchsiaResourceDialect,
5164 >,
5165 offset: usize,
5166 _depth: fidl::encoding::Depth,
5167 ) -> fidl::Result<()> {
5168 encoder.debug_check_bounds::<StackGetPairingStateWatcherRequest>(offset);
5169 fidl::encoding::Encode::<StackGetPairingStateWatcherRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5171 (
5172 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PairingStateWatcherMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.watcher),
5173 ),
5174 encoder, offset, _depth
5175 )
5176 }
5177 }
5178 unsafe impl<
5179 T0: fidl::encoding::Encode<
5180 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PairingStateWatcherMarker>>,
5181 fidl::encoding::DefaultFuchsiaResourceDialect,
5182 >,
5183 >
5184 fidl::encoding::Encode<
5185 StackGetPairingStateWatcherRequest,
5186 fidl::encoding::DefaultFuchsiaResourceDialect,
5187 > for (T0,)
5188 {
5189 #[inline]
5190 unsafe fn encode(
5191 self,
5192 encoder: &mut fidl::encoding::Encoder<
5193 '_,
5194 fidl::encoding::DefaultFuchsiaResourceDialect,
5195 >,
5196 offset: usize,
5197 depth: fidl::encoding::Depth,
5198 ) -> fidl::Result<()> {
5199 encoder.debug_check_bounds::<StackGetPairingStateWatcherRequest>(offset);
5200 self.0.encode(encoder, offset + 0, depth)?;
5204 Ok(())
5205 }
5206 }
5207
5208 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5209 for StackGetPairingStateWatcherRequest
5210 {
5211 #[inline(always)]
5212 fn new_empty() -> Self {
5213 Self {
5214 watcher: fidl::new_empty!(
5215 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PairingStateWatcherMarker>>,
5216 fidl::encoding::DefaultFuchsiaResourceDialect
5217 ),
5218 }
5219 }
5220
5221 #[inline]
5222 unsafe fn decode(
5223 &mut self,
5224 decoder: &mut fidl::encoding::Decoder<
5225 '_,
5226 fidl::encoding::DefaultFuchsiaResourceDialect,
5227 >,
5228 offset: usize,
5229 _depth: fidl::encoding::Depth,
5230 ) -> fidl::Result<()> {
5231 decoder.debug_check_bounds::<Self>(offset);
5232 fidl::decode!(
5234 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<PairingStateWatcherMarker>>,
5235 fidl::encoding::DefaultFuchsiaResourceDialect,
5236 &mut self.watcher,
5237 decoder,
5238 offset + 0,
5239 _depth
5240 )?;
5241 Ok(())
5242 }
5243 }
5244
5245 impl fidl::encoding::ResourceTypeMarker for StackGetSvcDirectoryWatcherRequest {
5246 type Borrowed<'a> = &'a mut Self;
5247 fn take_or_borrow<'a>(
5248 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5249 ) -> Self::Borrowed<'a> {
5250 value
5251 }
5252 }
5253
5254 unsafe impl fidl::encoding::TypeMarker for StackGetSvcDirectoryWatcherRequest {
5255 type Owned = Self;
5256
5257 #[inline(always)]
5258 fn inline_align(_context: fidl::encoding::Context) -> usize {
5259 8
5260 }
5261
5262 #[inline(always)]
5263 fn inline_size(_context: fidl::encoding::Context) -> usize {
5264 16
5265 }
5266 }
5267
5268 unsafe impl
5269 fidl::encoding::Encode<
5270 StackGetSvcDirectoryWatcherRequest,
5271 fidl::encoding::DefaultFuchsiaResourceDialect,
5272 > for &mut StackGetSvcDirectoryWatcherRequest
5273 {
5274 #[inline]
5275 unsafe fn encode(
5276 self,
5277 encoder: &mut fidl::encoding::Encoder<
5278 '_,
5279 fidl::encoding::DefaultFuchsiaResourceDialect,
5280 >,
5281 offset: usize,
5282 _depth: fidl::encoding::Depth,
5283 ) -> fidl::Result<()> {
5284 encoder.debug_check_bounds::<StackGetSvcDirectoryWatcherRequest>(offset);
5285 fidl::encoding::Encode::<StackGetSvcDirectoryWatcherRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
5287 (
5288 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.endpoint_id),
5289 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.watcher),
5290 ),
5291 encoder, offset, _depth
5292 )
5293 }
5294 }
5295 unsafe impl<
5296 T0: fidl::encoding::Encode<u64, fidl::encoding::DefaultFuchsiaResourceDialect>,
5297 T1: fidl::encoding::Encode<
5298 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>>,
5299 fidl::encoding::DefaultFuchsiaResourceDialect,
5300 >,
5301 >
5302 fidl::encoding::Encode<
5303 StackGetSvcDirectoryWatcherRequest,
5304 fidl::encoding::DefaultFuchsiaResourceDialect,
5305 > for (T0, T1)
5306 {
5307 #[inline]
5308 unsafe fn encode(
5309 self,
5310 encoder: &mut fidl::encoding::Encoder<
5311 '_,
5312 fidl::encoding::DefaultFuchsiaResourceDialect,
5313 >,
5314 offset: usize,
5315 depth: fidl::encoding::Depth,
5316 ) -> fidl::Result<()> {
5317 encoder.debug_check_bounds::<StackGetSvcDirectoryWatcherRequest>(offset);
5318 unsafe {
5321 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
5322 (ptr as *mut u64).write_unaligned(0);
5323 }
5324 self.0.encode(encoder, offset + 0, depth)?;
5326 self.1.encode(encoder, offset + 8, depth)?;
5327 Ok(())
5328 }
5329 }
5330
5331 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5332 for StackGetSvcDirectoryWatcherRequest
5333 {
5334 #[inline(always)]
5335 fn new_empty() -> Self {
5336 Self {
5337 endpoint_id: fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect),
5338 watcher: fidl::new_empty!(
5339 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>>,
5340 fidl::encoding::DefaultFuchsiaResourceDialect
5341 ),
5342 }
5343 }
5344
5345 #[inline]
5346 unsafe fn decode(
5347 &mut self,
5348 decoder: &mut fidl::encoding::Decoder<
5349 '_,
5350 fidl::encoding::DefaultFuchsiaResourceDialect,
5351 >,
5352 offset: usize,
5353 _depth: fidl::encoding::Depth,
5354 ) -> fidl::Result<()> {
5355 decoder.debug_check_bounds::<Self>(offset);
5356 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
5358 let padval = unsafe { (ptr as *const u64).read_unaligned() };
5359 let mask = 0xffffffff00000000u64;
5360 let maskedval = padval & mask;
5361 if maskedval != 0 {
5362 return Err(fidl::Error::NonZeroPadding {
5363 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
5364 });
5365 }
5366 fidl::decode!(
5367 u64,
5368 fidl::encoding::DefaultFuchsiaResourceDialect,
5369 &mut self.endpoint_id,
5370 decoder,
5371 offset + 0,
5372 _depth
5373 )?;
5374 fidl::decode!(
5375 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<SvcDirectoryWatcherMarker>>,
5376 fidl::encoding::DefaultFuchsiaResourceDialect,
5377 &mut self.watcher,
5378 decoder,
5379 offset + 8,
5380 _depth
5381 )?;
5382 Ok(())
5383 }
5384 }
5385
5386 impl fidl::encoding::ResourceTypeMarker for StackProviderSetWlanNetworkConfigProviderRequest {
5387 type Borrowed<'a> = &'a mut Self;
5388 fn take_or_borrow<'a>(
5389 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
5390 ) -> Self::Borrowed<'a> {
5391 value
5392 }
5393 }
5394
5395 unsafe impl fidl::encoding::TypeMarker for StackProviderSetWlanNetworkConfigProviderRequest {
5396 type Owned = Self;
5397
5398 #[inline(always)]
5399 fn inline_align(_context: fidl::encoding::Context) -> usize {
5400 4
5401 }
5402
5403 #[inline(always)]
5404 fn inline_size(_context: fidl::encoding::Context) -> usize {
5405 4
5406 }
5407 }
5408
5409 unsafe impl
5410 fidl::encoding::Encode<
5411 StackProviderSetWlanNetworkConfigProviderRequest,
5412 fidl::encoding::DefaultFuchsiaResourceDialect,
5413 > for &mut StackProviderSetWlanNetworkConfigProviderRequest
5414 {
5415 #[inline]
5416 unsafe fn encode(
5417 self,
5418 encoder: &mut fidl::encoding::Encoder<
5419 '_,
5420 fidl::encoding::DefaultFuchsiaResourceDialect,
5421 >,
5422 offset: usize,
5423 _depth: fidl::encoding::Depth,
5424 ) -> fidl::Result<()> {
5425 encoder.debug_check_bounds::<StackProviderSetWlanNetworkConfigProviderRequest>(offset);
5426 fidl::encoding::Encode::<
5428 StackProviderSetWlanNetworkConfigProviderRequest,
5429 fidl::encoding::DefaultFuchsiaResourceDialect,
5430 >::encode(
5431 (<fidl::encoding::Endpoint<
5432 fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
5433 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
5434 &mut self.provider
5435 ),),
5436 encoder,
5437 offset,
5438 _depth,
5439 )
5440 }
5441 }
5442 unsafe impl<
5443 T0: fidl::encoding::Encode<
5444 fidl::encoding::Endpoint<
5445 fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
5446 >,
5447 fidl::encoding::DefaultFuchsiaResourceDialect,
5448 >,
5449 >
5450 fidl::encoding::Encode<
5451 StackProviderSetWlanNetworkConfigProviderRequest,
5452 fidl::encoding::DefaultFuchsiaResourceDialect,
5453 > for (T0,)
5454 {
5455 #[inline]
5456 unsafe fn encode(
5457 self,
5458 encoder: &mut fidl::encoding::Encoder<
5459 '_,
5460 fidl::encoding::DefaultFuchsiaResourceDialect,
5461 >,
5462 offset: usize,
5463 depth: fidl::encoding::Depth,
5464 ) -> fidl::Result<()> {
5465 encoder.debug_check_bounds::<StackProviderSetWlanNetworkConfigProviderRequest>(offset);
5466 self.0.encode(encoder, offset + 0, depth)?;
5470 Ok(())
5471 }
5472 }
5473
5474 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
5475 for StackProviderSetWlanNetworkConfigProviderRequest
5476 {
5477 #[inline(always)]
5478 fn new_empty() -> Self {
5479 Self {
5480 provider: fidl::new_empty!(
5481 fidl::encoding::Endpoint<
5482 fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
5483 >,
5484 fidl::encoding::DefaultFuchsiaResourceDialect
5485 ),
5486 }
5487 }
5488
5489 #[inline]
5490 unsafe fn decode(
5491 &mut self,
5492 decoder: &mut fidl::encoding::Decoder<
5493 '_,
5494 fidl::encoding::DefaultFuchsiaResourceDialect,
5495 >,
5496 offset: usize,
5497 _depth: fidl::encoding::Depth,
5498 ) -> fidl::Result<()> {
5499 decoder.debug_check_bounds::<Self>(offset);
5500 fidl::decode!(
5502 fidl::encoding::Endpoint<
5503 fidl::endpoints::ClientEnd<WlanNetworkConfigProviderMarker>,
5504 >,
5505 fidl::encoding::DefaultFuchsiaResourceDialect,
5506 &mut self.provider,
5507 decoder,
5508 offset + 0,
5509 _depth
5510 )?;
5511 Ok(())
5512 }
5513 }
5514}