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_metrics__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
16 pub project_spec: ProjectSpec,
17 pub logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
21 for MetricEventLoggerFactoryCreateMetricEventLoggerRequest
22{
23}
24
25#[derive(Debug, PartialEq)]
26pub struct MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest {
27 pub project_spec: ProjectSpec,
28 pub experiment_ids: Vec<u32>,
29 pub logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
30}
31
32impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
33 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
34{
35}
36
37#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
38pub struct MetricEventLoggerMarker;
39
40impl fidl::endpoints::ProtocolMarker for MetricEventLoggerMarker {
41 type Proxy = MetricEventLoggerProxy;
42 type RequestStream = MetricEventLoggerRequestStream;
43 #[cfg(target_os = "fuchsia")]
44 type SynchronousProxy = MetricEventLoggerSynchronousProxy;
45
46 const DEBUG_NAME: &'static str = "(anonymous) MetricEventLogger";
47}
48pub type MetricEventLoggerLogOccurrenceResult = Result<(), Error>;
49pub type MetricEventLoggerLogIntegerResult = Result<(), Error>;
50pub type MetricEventLoggerLogIntegerHistogramResult = Result<(), Error>;
51pub type MetricEventLoggerLogStringResult = Result<(), Error>;
52pub type MetricEventLoggerLogMetricEventsResult = Result<(), Error>;
53
54pub trait MetricEventLoggerProxyInterface: Send + Sync {
55 type LogOccurrenceResponseFut: std::future::Future<Output = Result<MetricEventLoggerLogOccurrenceResult, fidl::Error>>
56 + Send;
57 fn r#log_occurrence(
58 &self,
59 metric_id: u32,
60 count: u64,
61 event_codes: &[u32],
62 ) -> Self::LogOccurrenceResponseFut;
63 type LogIntegerResponseFut: std::future::Future<Output = Result<MetricEventLoggerLogIntegerResult, fidl::Error>>
64 + Send;
65 fn r#log_integer(
66 &self,
67 metric_id: u32,
68 value: i64,
69 event_codes: &[u32],
70 ) -> Self::LogIntegerResponseFut;
71 type LogIntegerHistogramResponseFut: std::future::Future<
72 Output = Result<MetricEventLoggerLogIntegerHistogramResult, fidl::Error>,
73 > + Send;
74 fn r#log_integer_histogram(
75 &self,
76 metric_id: u32,
77 histogram: &[HistogramBucket],
78 event_codes: &[u32],
79 ) -> Self::LogIntegerHistogramResponseFut;
80 type LogStringResponseFut: std::future::Future<Output = Result<MetricEventLoggerLogStringResult, fidl::Error>>
81 + Send;
82 fn r#log_string(
83 &self,
84 metric_id: u32,
85 string_value: &str,
86 event_codes: &[u32],
87 ) -> Self::LogStringResponseFut;
88 type LogMetricEventsResponseFut: std::future::Future<Output = Result<MetricEventLoggerLogMetricEventsResult, fidl::Error>>
89 + Send;
90 fn r#log_metric_events(&self, events: &[MetricEvent]) -> Self::LogMetricEventsResponseFut;
91}
92#[derive(Debug)]
93#[cfg(target_os = "fuchsia")]
94pub struct MetricEventLoggerSynchronousProxy {
95 client: fidl::client::sync::Client,
96}
97
98#[cfg(target_os = "fuchsia")]
99impl fidl::endpoints::SynchronousProxy for MetricEventLoggerSynchronousProxy {
100 type Proxy = MetricEventLoggerProxy;
101 type Protocol = MetricEventLoggerMarker;
102
103 fn from_channel(inner: fidl::Channel) -> Self {
104 Self::new(inner)
105 }
106
107 fn into_channel(self) -> fidl::Channel {
108 self.client.into_channel()
109 }
110
111 fn as_channel(&self) -> &fidl::Channel {
112 self.client.as_channel()
113 }
114}
115
116#[cfg(target_os = "fuchsia")]
117impl MetricEventLoggerSynchronousProxy {
118 pub fn new(channel: fidl::Channel) -> Self {
119 let protocol_name =
120 <MetricEventLoggerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
121 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
122 }
123
124 pub fn into_channel(self) -> fidl::Channel {
125 self.client.into_channel()
126 }
127
128 pub fn wait_for_event(
131 &self,
132 deadline: zx::MonotonicInstant,
133 ) -> Result<MetricEventLoggerEvent, fidl::Error> {
134 MetricEventLoggerEvent::decode(self.client.wait_for_event(deadline)?)
135 }
136
137 pub fn r#log_occurrence(
148 &self,
149 mut metric_id: u32,
150 mut count: u64,
151 mut event_codes: &[u32],
152 ___deadline: zx::MonotonicInstant,
153 ) -> Result<MetricEventLoggerLogOccurrenceResult, fidl::Error> {
154 let _response = self.client.send_query::<
155 MetricEventLoggerLogOccurrenceRequest,
156 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
157 >(
158 (metric_id, count, event_codes,),
159 0x26308985ae2bb3ac,
160 fidl::encoding::DynamicFlags::empty(),
161 ___deadline,
162 )?;
163 Ok(_response.map(|x| x))
164 }
165
166 pub fn r#log_integer(
176 &self,
177 mut metric_id: u32,
178 mut value: i64,
179 mut event_codes: &[u32],
180 ___deadline: zx::MonotonicInstant,
181 ) -> Result<MetricEventLoggerLogIntegerResult, fidl::Error> {
182 let _response = self.client.send_query::<
183 MetricEventLoggerLogIntegerRequest,
184 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
185 >(
186 (metric_id, value, event_codes,),
187 0x5d453303a88bd552,
188 fidl::encoding::DynamicFlags::empty(),
189 ___deadline,
190 )?;
191 Ok(_response.map(|x| x))
192 }
193
194 pub fn r#log_integer_histogram(
205 &self,
206 mut metric_id: u32,
207 mut histogram: &[HistogramBucket],
208 mut event_codes: &[u32],
209 ___deadline: zx::MonotonicInstant,
210 ) -> Result<MetricEventLoggerLogIntegerHistogramResult, fidl::Error> {
211 let _response = self.client.send_query::<
212 MetricEventLoggerLogIntegerHistogramRequest,
213 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
214 >(
215 (metric_id, histogram, event_codes,),
216 0x79ac8a6bc06a01c0,
217 fidl::encoding::DynamicFlags::empty(),
218 ___deadline,
219 )?;
220 Ok(_response.map(|x| x))
221 }
222
223 pub fn r#log_string(
233 &self,
234 mut metric_id: u32,
235 mut string_value: &str,
236 mut event_codes: &[u32],
237 ___deadline: zx::MonotonicInstant,
238 ) -> Result<MetricEventLoggerLogStringResult, fidl::Error> {
239 let _response = self.client.send_query::<
240 MetricEventLoggerLogStringRequest,
241 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
242 >(
243 (metric_id, string_value, event_codes,),
244 0x1611efbdf6ac8300,
245 fidl::encoding::DynamicFlags::empty(),
246 ___deadline,
247 )?;
248 Ok(_response.map(|x| x))
249 }
250
251 pub fn r#log_metric_events(
254 &self,
255 mut events: &[MetricEvent],
256 ___deadline: zx::MonotonicInstant,
257 ) -> Result<MetricEventLoggerLogMetricEventsResult, fidl::Error> {
258 let _response = self.client.send_query::<
259 MetricEventLoggerLogMetricEventsRequest,
260 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
261 >(
262 (events,),
263 0x4d8c26bb74820c6b,
264 fidl::encoding::DynamicFlags::empty(),
265 ___deadline,
266 )?;
267 Ok(_response.map(|x| x))
268 }
269}
270
271#[cfg(target_os = "fuchsia")]
272impl From<MetricEventLoggerSynchronousProxy> for zx::Handle {
273 fn from(value: MetricEventLoggerSynchronousProxy) -> Self {
274 value.into_channel().into()
275 }
276}
277
278#[cfg(target_os = "fuchsia")]
279impl From<fidl::Channel> for MetricEventLoggerSynchronousProxy {
280 fn from(value: fidl::Channel) -> Self {
281 Self::new(value)
282 }
283}
284
285#[cfg(target_os = "fuchsia")]
286impl fidl::endpoints::FromClient for MetricEventLoggerSynchronousProxy {
287 type Protocol = MetricEventLoggerMarker;
288
289 fn from_client(value: fidl::endpoints::ClientEnd<MetricEventLoggerMarker>) -> Self {
290 Self::new(value.into_channel())
291 }
292}
293
294#[derive(Debug, Clone)]
295pub struct MetricEventLoggerProxy {
296 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
297}
298
299impl fidl::endpoints::Proxy for MetricEventLoggerProxy {
300 type Protocol = MetricEventLoggerMarker;
301
302 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
303 Self::new(inner)
304 }
305
306 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
307 self.client.into_channel().map_err(|client| Self { client })
308 }
309
310 fn as_channel(&self) -> &::fidl::AsyncChannel {
311 self.client.as_channel()
312 }
313}
314
315impl MetricEventLoggerProxy {
316 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
318 let protocol_name =
319 <MetricEventLoggerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
320 Self { client: fidl::client::Client::new(channel, protocol_name) }
321 }
322
323 pub fn take_event_stream(&self) -> MetricEventLoggerEventStream {
329 MetricEventLoggerEventStream { event_receiver: self.client.take_event_receiver() }
330 }
331
332 pub fn r#log_occurrence(
343 &self,
344 mut metric_id: u32,
345 mut count: u64,
346 mut event_codes: &[u32],
347 ) -> fidl::client::QueryResponseFut<
348 MetricEventLoggerLogOccurrenceResult,
349 fidl::encoding::DefaultFuchsiaResourceDialect,
350 > {
351 MetricEventLoggerProxyInterface::r#log_occurrence(self, metric_id, count, event_codes)
352 }
353
354 pub fn r#log_integer(
364 &self,
365 mut metric_id: u32,
366 mut value: i64,
367 mut event_codes: &[u32],
368 ) -> fidl::client::QueryResponseFut<
369 MetricEventLoggerLogIntegerResult,
370 fidl::encoding::DefaultFuchsiaResourceDialect,
371 > {
372 MetricEventLoggerProxyInterface::r#log_integer(self, metric_id, value, event_codes)
373 }
374
375 pub fn r#log_integer_histogram(
386 &self,
387 mut metric_id: u32,
388 mut histogram: &[HistogramBucket],
389 mut event_codes: &[u32],
390 ) -> fidl::client::QueryResponseFut<
391 MetricEventLoggerLogIntegerHistogramResult,
392 fidl::encoding::DefaultFuchsiaResourceDialect,
393 > {
394 MetricEventLoggerProxyInterface::r#log_integer_histogram(
395 self,
396 metric_id,
397 histogram,
398 event_codes,
399 )
400 }
401
402 pub fn r#log_string(
412 &self,
413 mut metric_id: u32,
414 mut string_value: &str,
415 mut event_codes: &[u32],
416 ) -> fidl::client::QueryResponseFut<
417 MetricEventLoggerLogStringResult,
418 fidl::encoding::DefaultFuchsiaResourceDialect,
419 > {
420 MetricEventLoggerProxyInterface::r#log_string(self, metric_id, string_value, event_codes)
421 }
422
423 pub fn r#log_metric_events(
426 &self,
427 mut events: &[MetricEvent],
428 ) -> fidl::client::QueryResponseFut<
429 MetricEventLoggerLogMetricEventsResult,
430 fidl::encoding::DefaultFuchsiaResourceDialect,
431 > {
432 MetricEventLoggerProxyInterface::r#log_metric_events(self, events)
433 }
434}
435
436impl MetricEventLoggerProxyInterface for MetricEventLoggerProxy {
437 type LogOccurrenceResponseFut = fidl::client::QueryResponseFut<
438 MetricEventLoggerLogOccurrenceResult,
439 fidl::encoding::DefaultFuchsiaResourceDialect,
440 >;
441 fn r#log_occurrence(
442 &self,
443 mut metric_id: u32,
444 mut count: u64,
445 mut event_codes: &[u32],
446 ) -> Self::LogOccurrenceResponseFut {
447 fn _decode(
448 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
449 ) -> Result<MetricEventLoggerLogOccurrenceResult, fidl::Error> {
450 let _response = fidl::client::decode_transaction_body::<
451 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
452 fidl::encoding::DefaultFuchsiaResourceDialect,
453 0x26308985ae2bb3ac,
454 >(_buf?)?;
455 Ok(_response.map(|x| x))
456 }
457 self.client.send_query_and_decode::<
458 MetricEventLoggerLogOccurrenceRequest,
459 MetricEventLoggerLogOccurrenceResult,
460 >(
461 (metric_id, count, event_codes,),
462 0x26308985ae2bb3ac,
463 fidl::encoding::DynamicFlags::empty(),
464 _decode,
465 )
466 }
467
468 type LogIntegerResponseFut = fidl::client::QueryResponseFut<
469 MetricEventLoggerLogIntegerResult,
470 fidl::encoding::DefaultFuchsiaResourceDialect,
471 >;
472 fn r#log_integer(
473 &self,
474 mut metric_id: u32,
475 mut value: i64,
476 mut event_codes: &[u32],
477 ) -> Self::LogIntegerResponseFut {
478 fn _decode(
479 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
480 ) -> Result<MetricEventLoggerLogIntegerResult, fidl::Error> {
481 let _response = fidl::client::decode_transaction_body::<
482 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
483 fidl::encoding::DefaultFuchsiaResourceDialect,
484 0x5d453303a88bd552,
485 >(_buf?)?;
486 Ok(_response.map(|x| x))
487 }
488 self.client.send_query_and_decode::<
489 MetricEventLoggerLogIntegerRequest,
490 MetricEventLoggerLogIntegerResult,
491 >(
492 (metric_id, value, event_codes,),
493 0x5d453303a88bd552,
494 fidl::encoding::DynamicFlags::empty(),
495 _decode,
496 )
497 }
498
499 type LogIntegerHistogramResponseFut = fidl::client::QueryResponseFut<
500 MetricEventLoggerLogIntegerHistogramResult,
501 fidl::encoding::DefaultFuchsiaResourceDialect,
502 >;
503 fn r#log_integer_histogram(
504 &self,
505 mut metric_id: u32,
506 mut histogram: &[HistogramBucket],
507 mut event_codes: &[u32],
508 ) -> Self::LogIntegerHistogramResponseFut {
509 fn _decode(
510 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
511 ) -> Result<MetricEventLoggerLogIntegerHistogramResult, fidl::Error> {
512 let _response = fidl::client::decode_transaction_body::<
513 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
514 fidl::encoding::DefaultFuchsiaResourceDialect,
515 0x79ac8a6bc06a01c0,
516 >(_buf?)?;
517 Ok(_response.map(|x| x))
518 }
519 self.client.send_query_and_decode::<
520 MetricEventLoggerLogIntegerHistogramRequest,
521 MetricEventLoggerLogIntegerHistogramResult,
522 >(
523 (metric_id, histogram, event_codes,),
524 0x79ac8a6bc06a01c0,
525 fidl::encoding::DynamicFlags::empty(),
526 _decode,
527 )
528 }
529
530 type LogStringResponseFut = fidl::client::QueryResponseFut<
531 MetricEventLoggerLogStringResult,
532 fidl::encoding::DefaultFuchsiaResourceDialect,
533 >;
534 fn r#log_string(
535 &self,
536 mut metric_id: u32,
537 mut string_value: &str,
538 mut event_codes: &[u32],
539 ) -> Self::LogStringResponseFut {
540 fn _decode(
541 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
542 ) -> Result<MetricEventLoggerLogStringResult, fidl::Error> {
543 let _response = fidl::client::decode_transaction_body::<
544 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
545 fidl::encoding::DefaultFuchsiaResourceDialect,
546 0x1611efbdf6ac8300,
547 >(_buf?)?;
548 Ok(_response.map(|x| x))
549 }
550 self.client.send_query_and_decode::<
551 MetricEventLoggerLogStringRequest,
552 MetricEventLoggerLogStringResult,
553 >(
554 (metric_id, string_value, event_codes,),
555 0x1611efbdf6ac8300,
556 fidl::encoding::DynamicFlags::empty(),
557 _decode,
558 )
559 }
560
561 type LogMetricEventsResponseFut = fidl::client::QueryResponseFut<
562 MetricEventLoggerLogMetricEventsResult,
563 fidl::encoding::DefaultFuchsiaResourceDialect,
564 >;
565 fn r#log_metric_events(&self, mut events: &[MetricEvent]) -> Self::LogMetricEventsResponseFut {
566 fn _decode(
567 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
568 ) -> Result<MetricEventLoggerLogMetricEventsResult, fidl::Error> {
569 let _response = fidl::client::decode_transaction_body::<
570 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
571 fidl::encoding::DefaultFuchsiaResourceDialect,
572 0x4d8c26bb74820c6b,
573 >(_buf?)?;
574 Ok(_response.map(|x| x))
575 }
576 self.client.send_query_and_decode::<
577 MetricEventLoggerLogMetricEventsRequest,
578 MetricEventLoggerLogMetricEventsResult,
579 >(
580 (events,),
581 0x4d8c26bb74820c6b,
582 fidl::encoding::DynamicFlags::empty(),
583 _decode,
584 )
585 }
586}
587
588pub struct MetricEventLoggerEventStream {
589 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
590}
591
592impl std::marker::Unpin for MetricEventLoggerEventStream {}
593
594impl futures::stream::FusedStream for MetricEventLoggerEventStream {
595 fn is_terminated(&self) -> bool {
596 self.event_receiver.is_terminated()
597 }
598}
599
600impl futures::Stream for MetricEventLoggerEventStream {
601 type Item = Result<MetricEventLoggerEvent, fidl::Error>;
602
603 fn poll_next(
604 mut self: std::pin::Pin<&mut Self>,
605 cx: &mut std::task::Context<'_>,
606 ) -> std::task::Poll<Option<Self::Item>> {
607 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
608 &mut self.event_receiver,
609 cx
610 )?) {
611 Some(buf) => std::task::Poll::Ready(Some(MetricEventLoggerEvent::decode(buf))),
612 None => std::task::Poll::Ready(None),
613 }
614 }
615}
616
617#[derive(Debug)]
618pub enum MetricEventLoggerEvent {}
619
620impl MetricEventLoggerEvent {
621 fn decode(
623 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
624 ) -> Result<MetricEventLoggerEvent, fidl::Error> {
625 let (bytes, _handles) = buf.split_mut();
626 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
627 debug_assert_eq!(tx_header.tx_id, 0);
628 match tx_header.ordinal {
629 _ => Err(fidl::Error::UnknownOrdinal {
630 ordinal: tx_header.ordinal,
631 protocol_name:
632 <MetricEventLoggerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
633 }),
634 }
635 }
636}
637
638pub struct MetricEventLoggerRequestStream {
640 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
641 is_terminated: bool,
642}
643
644impl std::marker::Unpin for MetricEventLoggerRequestStream {}
645
646impl futures::stream::FusedStream for MetricEventLoggerRequestStream {
647 fn is_terminated(&self) -> bool {
648 self.is_terminated
649 }
650}
651
652impl fidl::endpoints::RequestStream for MetricEventLoggerRequestStream {
653 type Protocol = MetricEventLoggerMarker;
654 type ControlHandle = MetricEventLoggerControlHandle;
655
656 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
657 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
658 }
659
660 fn control_handle(&self) -> Self::ControlHandle {
661 MetricEventLoggerControlHandle { inner: self.inner.clone() }
662 }
663
664 fn into_inner(
665 self,
666 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
667 {
668 (self.inner, self.is_terminated)
669 }
670
671 fn from_inner(
672 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
673 is_terminated: bool,
674 ) -> Self {
675 Self { inner, is_terminated }
676 }
677}
678
679impl futures::Stream for MetricEventLoggerRequestStream {
680 type Item = Result<MetricEventLoggerRequest, fidl::Error>;
681
682 fn poll_next(
683 mut self: std::pin::Pin<&mut Self>,
684 cx: &mut std::task::Context<'_>,
685 ) -> std::task::Poll<Option<Self::Item>> {
686 let this = &mut *self;
687 if this.inner.check_shutdown(cx) {
688 this.is_terminated = true;
689 return std::task::Poll::Ready(None);
690 }
691 if this.is_terminated {
692 panic!("polled MetricEventLoggerRequestStream after completion");
693 }
694 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
695 |bytes, handles| {
696 match this.inner.channel().read_etc(cx, bytes, handles) {
697 std::task::Poll::Ready(Ok(())) => {}
698 std::task::Poll::Pending => return std::task::Poll::Pending,
699 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
700 this.is_terminated = true;
701 return std::task::Poll::Ready(None);
702 }
703 std::task::Poll::Ready(Err(e)) => {
704 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
705 e.into(),
706 ))))
707 }
708 }
709
710 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
712
713 std::task::Poll::Ready(Some(match header.ordinal {
714 0x26308985ae2bb3ac => {
715 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
716 let mut req = fidl::new_empty!(
717 MetricEventLoggerLogOccurrenceRequest,
718 fidl::encoding::DefaultFuchsiaResourceDialect
719 );
720 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerLogOccurrenceRequest>(&header, _body_bytes, handles, &mut req)?;
721 let control_handle =
722 MetricEventLoggerControlHandle { inner: this.inner.clone() };
723 Ok(MetricEventLoggerRequest::LogOccurrence {
724 metric_id: req.metric_id,
725 count: req.count,
726 event_codes: req.event_codes,
727
728 responder: MetricEventLoggerLogOccurrenceResponder {
729 control_handle: std::mem::ManuallyDrop::new(control_handle),
730 tx_id: header.tx_id,
731 },
732 })
733 }
734 0x5d453303a88bd552 => {
735 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
736 let mut req = fidl::new_empty!(
737 MetricEventLoggerLogIntegerRequest,
738 fidl::encoding::DefaultFuchsiaResourceDialect
739 );
740 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerLogIntegerRequest>(&header, _body_bytes, handles, &mut req)?;
741 let control_handle =
742 MetricEventLoggerControlHandle { inner: this.inner.clone() };
743 Ok(MetricEventLoggerRequest::LogInteger {
744 metric_id: req.metric_id,
745 value: req.value,
746 event_codes: req.event_codes,
747
748 responder: MetricEventLoggerLogIntegerResponder {
749 control_handle: std::mem::ManuallyDrop::new(control_handle),
750 tx_id: header.tx_id,
751 },
752 })
753 }
754 0x79ac8a6bc06a01c0 => {
755 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
756 let mut req = fidl::new_empty!(
757 MetricEventLoggerLogIntegerHistogramRequest,
758 fidl::encoding::DefaultFuchsiaResourceDialect
759 );
760 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerLogIntegerHistogramRequest>(&header, _body_bytes, handles, &mut req)?;
761 let control_handle =
762 MetricEventLoggerControlHandle { inner: this.inner.clone() };
763 Ok(MetricEventLoggerRequest::LogIntegerHistogram {
764 metric_id: req.metric_id,
765 histogram: req.histogram,
766 event_codes: req.event_codes,
767
768 responder: MetricEventLoggerLogIntegerHistogramResponder {
769 control_handle: std::mem::ManuallyDrop::new(control_handle),
770 tx_id: header.tx_id,
771 },
772 })
773 }
774 0x1611efbdf6ac8300 => {
775 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
776 let mut req = fidl::new_empty!(
777 MetricEventLoggerLogStringRequest,
778 fidl::encoding::DefaultFuchsiaResourceDialect
779 );
780 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerLogStringRequest>(&header, _body_bytes, handles, &mut req)?;
781 let control_handle =
782 MetricEventLoggerControlHandle { inner: this.inner.clone() };
783 Ok(MetricEventLoggerRequest::LogString {
784 metric_id: req.metric_id,
785 string_value: req.string_value,
786 event_codes: req.event_codes,
787
788 responder: MetricEventLoggerLogStringResponder {
789 control_handle: std::mem::ManuallyDrop::new(control_handle),
790 tx_id: header.tx_id,
791 },
792 })
793 }
794 0x4d8c26bb74820c6b => {
795 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
796 let mut req = fidl::new_empty!(
797 MetricEventLoggerLogMetricEventsRequest,
798 fidl::encoding::DefaultFuchsiaResourceDialect
799 );
800 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerLogMetricEventsRequest>(&header, _body_bytes, handles, &mut req)?;
801 let control_handle =
802 MetricEventLoggerControlHandle { inner: this.inner.clone() };
803 Ok(MetricEventLoggerRequest::LogMetricEvents {
804 events: req.events,
805
806 responder: MetricEventLoggerLogMetricEventsResponder {
807 control_handle: std::mem::ManuallyDrop::new(control_handle),
808 tx_id: header.tx_id,
809 },
810 })
811 }
812 _ => Err(fidl::Error::UnknownOrdinal {
813 ordinal: header.ordinal,
814 protocol_name:
815 <MetricEventLoggerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
816 }),
817 }))
818 },
819 )
820 }
821}
822
823#[derive(Debug)]
825pub enum MetricEventLoggerRequest {
826 LogOccurrence {
837 metric_id: u32,
838 count: u64,
839 event_codes: Vec<u32>,
840 responder: MetricEventLoggerLogOccurrenceResponder,
841 },
842 LogInteger {
852 metric_id: u32,
853 value: i64,
854 event_codes: Vec<u32>,
855 responder: MetricEventLoggerLogIntegerResponder,
856 },
857 LogIntegerHistogram {
868 metric_id: u32,
869 histogram: Vec<HistogramBucket>,
870 event_codes: Vec<u32>,
871 responder: MetricEventLoggerLogIntegerHistogramResponder,
872 },
873 LogString {
883 metric_id: u32,
884 string_value: String,
885 event_codes: Vec<u32>,
886 responder: MetricEventLoggerLogStringResponder,
887 },
888 LogMetricEvents {
891 events: Vec<MetricEvent>,
892 responder: MetricEventLoggerLogMetricEventsResponder,
893 },
894}
895
896impl MetricEventLoggerRequest {
897 #[allow(irrefutable_let_patterns)]
898 pub fn into_log_occurrence(
899 self,
900 ) -> Option<(u32, u64, Vec<u32>, MetricEventLoggerLogOccurrenceResponder)> {
901 if let MetricEventLoggerRequest::LogOccurrence {
902 metric_id,
903 count,
904 event_codes,
905 responder,
906 } = self
907 {
908 Some((metric_id, count, event_codes, responder))
909 } else {
910 None
911 }
912 }
913
914 #[allow(irrefutable_let_patterns)]
915 pub fn into_log_integer(
916 self,
917 ) -> Option<(u32, i64, Vec<u32>, MetricEventLoggerLogIntegerResponder)> {
918 if let MetricEventLoggerRequest::LogInteger { metric_id, value, event_codes, responder } =
919 self
920 {
921 Some((metric_id, value, event_codes, responder))
922 } else {
923 None
924 }
925 }
926
927 #[allow(irrefutable_let_patterns)]
928 pub fn into_log_integer_histogram(
929 self,
930 ) -> Option<(u32, Vec<HistogramBucket>, Vec<u32>, MetricEventLoggerLogIntegerHistogramResponder)>
931 {
932 if let MetricEventLoggerRequest::LogIntegerHistogram {
933 metric_id,
934 histogram,
935 event_codes,
936 responder,
937 } = self
938 {
939 Some((metric_id, histogram, event_codes, responder))
940 } else {
941 None
942 }
943 }
944
945 #[allow(irrefutable_let_patterns)]
946 pub fn into_log_string(
947 self,
948 ) -> Option<(u32, String, Vec<u32>, MetricEventLoggerLogStringResponder)> {
949 if let MetricEventLoggerRequest::LogString {
950 metric_id,
951 string_value,
952 event_codes,
953 responder,
954 } = self
955 {
956 Some((metric_id, string_value, event_codes, responder))
957 } else {
958 None
959 }
960 }
961
962 #[allow(irrefutable_let_patterns)]
963 pub fn into_log_metric_events(
964 self,
965 ) -> Option<(Vec<MetricEvent>, MetricEventLoggerLogMetricEventsResponder)> {
966 if let MetricEventLoggerRequest::LogMetricEvents { events, responder } = self {
967 Some((events, responder))
968 } else {
969 None
970 }
971 }
972
973 pub fn method_name(&self) -> &'static str {
975 match *self {
976 MetricEventLoggerRequest::LogOccurrence { .. } => "log_occurrence",
977 MetricEventLoggerRequest::LogInteger { .. } => "log_integer",
978 MetricEventLoggerRequest::LogIntegerHistogram { .. } => "log_integer_histogram",
979 MetricEventLoggerRequest::LogString { .. } => "log_string",
980 MetricEventLoggerRequest::LogMetricEvents { .. } => "log_metric_events",
981 }
982 }
983}
984
985#[derive(Debug, Clone)]
986pub struct MetricEventLoggerControlHandle {
987 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
988}
989
990impl fidl::endpoints::ControlHandle for MetricEventLoggerControlHandle {
991 fn shutdown(&self) {
992 self.inner.shutdown()
993 }
994 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
995 self.inner.shutdown_with_epitaph(status)
996 }
997
998 fn is_closed(&self) -> bool {
999 self.inner.channel().is_closed()
1000 }
1001 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1002 self.inner.channel().on_closed()
1003 }
1004
1005 #[cfg(target_os = "fuchsia")]
1006 fn signal_peer(
1007 &self,
1008 clear_mask: zx::Signals,
1009 set_mask: zx::Signals,
1010 ) -> Result<(), zx_status::Status> {
1011 use fidl::Peered;
1012 self.inner.channel().signal_peer(clear_mask, set_mask)
1013 }
1014}
1015
1016impl MetricEventLoggerControlHandle {}
1017
1018#[must_use = "FIDL methods require a response to be sent"]
1019#[derive(Debug)]
1020pub struct MetricEventLoggerLogOccurrenceResponder {
1021 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1022 tx_id: u32,
1023}
1024
1025impl std::ops::Drop for MetricEventLoggerLogOccurrenceResponder {
1029 fn drop(&mut self) {
1030 self.control_handle.shutdown();
1031 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1033 }
1034}
1035
1036impl fidl::endpoints::Responder for MetricEventLoggerLogOccurrenceResponder {
1037 type ControlHandle = MetricEventLoggerControlHandle;
1038
1039 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1040 &self.control_handle
1041 }
1042
1043 fn drop_without_shutdown(mut self) {
1044 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1046 std::mem::forget(self);
1048 }
1049}
1050
1051impl MetricEventLoggerLogOccurrenceResponder {
1052 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1056 let _result = self.send_raw(result);
1057 if _result.is_err() {
1058 self.control_handle.shutdown();
1059 }
1060 self.drop_without_shutdown();
1061 _result
1062 }
1063
1064 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1066 let _result = self.send_raw(result);
1067 self.drop_without_shutdown();
1068 _result
1069 }
1070
1071 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1072 self.control_handle
1073 .inner
1074 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1075 result,
1076 self.tx_id,
1077 0x26308985ae2bb3ac,
1078 fidl::encoding::DynamicFlags::empty(),
1079 )
1080 }
1081}
1082
1083#[must_use = "FIDL methods require a response to be sent"]
1084#[derive(Debug)]
1085pub struct MetricEventLoggerLogIntegerResponder {
1086 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1087 tx_id: u32,
1088}
1089
1090impl std::ops::Drop for MetricEventLoggerLogIntegerResponder {
1094 fn drop(&mut self) {
1095 self.control_handle.shutdown();
1096 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1098 }
1099}
1100
1101impl fidl::endpoints::Responder for MetricEventLoggerLogIntegerResponder {
1102 type ControlHandle = MetricEventLoggerControlHandle;
1103
1104 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1105 &self.control_handle
1106 }
1107
1108 fn drop_without_shutdown(mut self) {
1109 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1111 std::mem::forget(self);
1113 }
1114}
1115
1116impl MetricEventLoggerLogIntegerResponder {
1117 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1121 let _result = self.send_raw(result);
1122 if _result.is_err() {
1123 self.control_handle.shutdown();
1124 }
1125 self.drop_without_shutdown();
1126 _result
1127 }
1128
1129 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1131 let _result = self.send_raw(result);
1132 self.drop_without_shutdown();
1133 _result
1134 }
1135
1136 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1137 self.control_handle
1138 .inner
1139 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1140 result,
1141 self.tx_id,
1142 0x5d453303a88bd552,
1143 fidl::encoding::DynamicFlags::empty(),
1144 )
1145 }
1146}
1147
1148#[must_use = "FIDL methods require a response to be sent"]
1149#[derive(Debug)]
1150pub struct MetricEventLoggerLogIntegerHistogramResponder {
1151 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1152 tx_id: u32,
1153}
1154
1155impl std::ops::Drop for MetricEventLoggerLogIntegerHistogramResponder {
1159 fn drop(&mut self) {
1160 self.control_handle.shutdown();
1161 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1163 }
1164}
1165
1166impl fidl::endpoints::Responder for MetricEventLoggerLogIntegerHistogramResponder {
1167 type ControlHandle = MetricEventLoggerControlHandle;
1168
1169 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1170 &self.control_handle
1171 }
1172
1173 fn drop_without_shutdown(mut self) {
1174 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1176 std::mem::forget(self);
1178 }
1179}
1180
1181impl MetricEventLoggerLogIntegerHistogramResponder {
1182 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1186 let _result = self.send_raw(result);
1187 if _result.is_err() {
1188 self.control_handle.shutdown();
1189 }
1190 self.drop_without_shutdown();
1191 _result
1192 }
1193
1194 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1196 let _result = self.send_raw(result);
1197 self.drop_without_shutdown();
1198 _result
1199 }
1200
1201 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1202 self.control_handle
1203 .inner
1204 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1205 result,
1206 self.tx_id,
1207 0x79ac8a6bc06a01c0,
1208 fidl::encoding::DynamicFlags::empty(),
1209 )
1210 }
1211}
1212
1213#[must_use = "FIDL methods require a response to be sent"]
1214#[derive(Debug)]
1215pub struct MetricEventLoggerLogStringResponder {
1216 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1217 tx_id: u32,
1218}
1219
1220impl std::ops::Drop for MetricEventLoggerLogStringResponder {
1224 fn drop(&mut self) {
1225 self.control_handle.shutdown();
1226 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1228 }
1229}
1230
1231impl fidl::endpoints::Responder for MetricEventLoggerLogStringResponder {
1232 type ControlHandle = MetricEventLoggerControlHandle;
1233
1234 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1235 &self.control_handle
1236 }
1237
1238 fn drop_without_shutdown(mut self) {
1239 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1241 std::mem::forget(self);
1243 }
1244}
1245
1246impl MetricEventLoggerLogStringResponder {
1247 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1251 let _result = self.send_raw(result);
1252 if _result.is_err() {
1253 self.control_handle.shutdown();
1254 }
1255 self.drop_without_shutdown();
1256 _result
1257 }
1258
1259 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1261 let _result = self.send_raw(result);
1262 self.drop_without_shutdown();
1263 _result
1264 }
1265
1266 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1267 self.control_handle
1268 .inner
1269 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1270 result,
1271 self.tx_id,
1272 0x1611efbdf6ac8300,
1273 fidl::encoding::DynamicFlags::empty(),
1274 )
1275 }
1276}
1277
1278#[must_use = "FIDL methods require a response to be sent"]
1279#[derive(Debug)]
1280pub struct MetricEventLoggerLogMetricEventsResponder {
1281 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1282 tx_id: u32,
1283}
1284
1285impl std::ops::Drop for MetricEventLoggerLogMetricEventsResponder {
1289 fn drop(&mut self) {
1290 self.control_handle.shutdown();
1291 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1293 }
1294}
1295
1296impl fidl::endpoints::Responder for MetricEventLoggerLogMetricEventsResponder {
1297 type ControlHandle = MetricEventLoggerControlHandle;
1298
1299 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1300 &self.control_handle
1301 }
1302
1303 fn drop_without_shutdown(mut self) {
1304 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1306 std::mem::forget(self);
1308 }
1309}
1310
1311impl MetricEventLoggerLogMetricEventsResponder {
1312 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1316 let _result = self.send_raw(result);
1317 if _result.is_err() {
1318 self.control_handle.shutdown();
1319 }
1320 self.drop_without_shutdown();
1321 _result
1322 }
1323
1324 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1326 let _result = self.send_raw(result);
1327 self.drop_without_shutdown();
1328 _result
1329 }
1330
1331 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1332 self.control_handle
1333 .inner
1334 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1335 result,
1336 self.tx_id,
1337 0x4d8c26bb74820c6b,
1338 fidl::encoding::DynamicFlags::empty(),
1339 )
1340 }
1341}
1342
1343#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1344pub struct MetricEventLoggerFactoryMarker;
1345
1346impl fidl::endpoints::ProtocolMarker for MetricEventLoggerFactoryMarker {
1347 type Proxy = MetricEventLoggerFactoryProxy;
1348 type RequestStream = MetricEventLoggerFactoryRequestStream;
1349 #[cfg(target_os = "fuchsia")]
1350 type SynchronousProxy = MetricEventLoggerFactorySynchronousProxy;
1351
1352 const DEBUG_NAME: &'static str = "fuchsia.metrics.MetricEventLoggerFactory";
1353}
1354impl fidl::endpoints::DiscoverableProtocolMarker for MetricEventLoggerFactoryMarker {}
1355pub type MetricEventLoggerFactoryCreateMetricEventLoggerResult = Result<(), Error>;
1356pub type MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult = Result<(), Error>;
1357
1358pub trait MetricEventLoggerFactoryProxyInterface: Send + Sync {
1359 type CreateMetricEventLoggerResponseFut: std::future::Future<
1360 Output = Result<MetricEventLoggerFactoryCreateMetricEventLoggerResult, fidl::Error>,
1361 > + Send;
1362 fn r#create_metric_event_logger(
1363 &self,
1364 project_spec: &ProjectSpec,
1365 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1366 ) -> Self::CreateMetricEventLoggerResponseFut;
1367 type CreateMetricEventLoggerWithExperimentsResponseFut: std::future::Future<
1368 Output = Result<
1369 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1370 fidl::Error,
1371 >,
1372 > + Send;
1373 fn r#create_metric_event_logger_with_experiments(
1374 &self,
1375 project_spec: &ProjectSpec,
1376 experiment_ids: &[u32],
1377 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1378 ) -> Self::CreateMetricEventLoggerWithExperimentsResponseFut;
1379}
1380#[derive(Debug)]
1381#[cfg(target_os = "fuchsia")]
1382pub struct MetricEventLoggerFactorySynchronousProxy {
1383 client: fidl::client::sync::Client,
1384}
1385
1386#[cfg(target_os = "fuchsia")]
1387impl fidl::endpoints::SynchronousProxy for MetricEventLoggerFactorySynchronousProxy {
1388 type Proxy = MetricEventLoggerFactoryProxy;
1389 type Protocol = MetricEventLoggerFactoryMarker;
1390
1391 fn from_channel(inner: fidl::Channel) -> Self {
1392 Self::new(inner)
1393 }
1394
1395 fn into_channel(self) -> fidl::Channel {
1396 self.client.into_channel()
1397 }
1398
1399 fn as_channel(&self) -> &fidl::Channel {
1400 self.client.as_channel()
1401 }
1402}
1403
1404#[cfg(target_os = "fuchsia")]
1405impl MetricEventLoggerFactorySynchronousProxy {
1406 pub fn new(channel: fidl::Channel) -> Self {
1407 let protocol_name =
1408 <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1409 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1410 }
1411
1412 pub fn into_channel(self) -> fidl::Channel {
1413 self.client.into_channel()
1414 }
1415
1416 pub fn wait_for_event(
1419 &self,
1420 deadline: zx::MonotonicInstant,
1421 ) -> Result<MetricEventLoggerFactoryEvent, fidl::Error> {
1422 MetricEventLoggerFactoryEvent::decode(self.client.wait_for_event(deadline)?)
1423 }
1424
1425 pub fn r#create_metric_event_logger(
1427 &self,
1428 mut project_spec: &ProjectSpec,
1429 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1430 ___deadline: zx::MonotonicInstant,
1431 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerResult, fidl::Error> {
1432 let _response = self.client.send_query::<
1433 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
1434 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1435 >(
1436 (project_spec, logger,),
1437 0xd6cf51cee5039fe,
1438 fidl::encoding::DynamicFlags::empty(),
1439 ___deadline,
1440 )?;
1441 Ok(_response.map(|x| x))
1442 }
1443
1444 pub fn r#create_metric_event_logger_with_experiments(
1453 &self,
1454 mut project_spec: &ProjectSpec,
1455 mut experiment_ids: &[u32],
1456 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1457 ___deadline: zx::MonotonicInstant,
1458 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult, fidl::Error>
1459 {
1460 let _response = self.client.send_query::<
1461 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
1462 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1463 >(
1464 (project_spec, experiment_ids, logger,),
1465 0x7f1f745ef7bf48fa,
1466 fidl::encoding::DynamicFlags::empty(),
1467 ___deadline,
1468 )?;
1469 Ok(_response.map(|x| x))
1470 }
1471}
1472
1473#[cfg(target_os = "fuchsia")]
1474impl From<MetricEventLoggerFactorySynchronousProxy> for zx::Handle {
1475 fn from(value: MetricEventLoggerFactorySynchronousProxy) -> Self {
1476 value.into_channel().into()
1477 }
1478}
1479
1480#[cfg(target_os = "fuchsia")]
1481impl From<fidl::Channel> for MetricEventLoggerFactorySynchronousProxy {
1482 fn from(value: fidl::Channel) -> Self {
1483 Self::new(value)
1484 }
1485}
1486
1487#[cfg(target_os = "fuchsia")]
1488impl fidl::endpoints::FromClient for MetricEventLoggerFactorySynchronousProxy {
1489 type Protocol = MetricEventLoggerFactoryMarker;
1490
1491 fn from_client(value: fidl::endpoints::ClientEnd<MetricEventLoggerFactoryMarker>) -> Self {
1492 Self::new(value.into_channel())
1493 }
1494}
1495
1496#[derive(Debug, Clone)]
1497pub struct MetricEventLoggerFactoryProxy {
1498 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1499}
1500
1501impl fidl::endpoints::Proxy for MetricEventLoggerFactoryProxy {
1502 type Protocol = MetricEventLoggerFactoryMarker;
1503
1504 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1505 Self::new(inner)
1506 }
1507
1508 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1509 self.client.into_channel().map_err(|client| Self { client })
1510 }
1511
1512 fn as_channel(&self) -> &::fidl::AsyncChannel {
1513 self.client.as_channel()
1514 }
1515}
1516
1517impl MetricEventLoggerFactoryProxy {
1518 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1520 let protocol_name =
1521 <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1522 Self { client: fidl::client::Client::new(channel, protocol_name) }
1523 }
1524
1525 pub fn take_event_stream(&self) -> MetricEventLoggerFactoryEventStream {
1531 MetricEventLoggerFactoryEventStream { event_receiver: self.client.take_event_receiver() }
1532 }
1533
1534 pub fn r#create_metric_event_logger(
1536 &self,
1537 mut project_spec: &ProjectSpec,
1538 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1539 ) -> fidl::client::QueryResponseFut<
1540 MetricEventLoggerFactoryCreateMetricEventLoggerResult,
1541 fidl::encoding::DefaultFuchsiaResourceDialect,
1542 > {
1543 MetricEventLoggerFactoryProxyInterface::r#create_metric_event_logger(
1544 self,
1545 project_spec,
1546 logger,
1547 )
1548 }
1549
1550 pub fn r#create_metric_event_logger_with_experiments(
1559 &self,
1560 mut project_spec: &ProjectSpec,
1561 mut experiment_ids: &[u32],
1562 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1563 ) -> fidl::client::QueryResponseFut<
1564 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1565 fidl::encoding::DefaultFuchsiaResourceDialect,
1566 > {
1567 MetricEventLoggerFactoryProxyInterface::r#create_metric_event_logger_with_experiments(
1568 self,
1569 project_spec,
1570 experiment_ids,
1571 logger,
1572 )
1573 }
1574}
1575
1576impl MetricEventLoggerFactoryProxyInterface for MetricEventLoggerFactoryProxy {
1577 type CreateMetricEventLoggerResponseFut = fidl::client::QueryResponseFut<
1578 MetricEventLoggerFactoryCreateMetricEventLoggerResult,
1579 fidl::encoding::DefaultFuchsiaResourceDialect,
1580 >;
1581 fn r#create_metric_event_logger(
1582 &self,
1583 mut project_spec: &ProjectSpec,
1584 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1585 ) -> Self::CreateMetricEventLoggerResponseFut {
1586 fn _decode(
1587 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1588 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerResult, fidl::Error> {
1589 let _response = fidl::client::decode_transaction_body::<
1590 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1591 fidl::encoding::DefaultFuchsiaResourceDialect,
1592 0xd6cf51cee5039fe,
1593 >(_buf?)?;
1594 Ok(_response.map(|x| x))
1595 }
1596 self.client.send_query_and_decode::<
1597 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
1598 MetricEventLoggerFactoryCreateMetricEventLoggerResult,
1599 >(
1600 (project_spec, logger,),
1601 0xd6cf51cee5039fe,
1602 fidl::encoding::DynamicFlags::empty(),
1603 _decode,
1604 )
1605 }
1606
1607 type CreateMetricEventLoggerWithExperimentsResponseFut = fidl::client::QueryResponseFut<
1608 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1609 fidl::encoding::DefaultFuchsiaResourceDialect,
1610 >;
1611 fn r#create_metric_event_logger_with_experiments(
1612 &self,
1613 mut project_spec: &ProjectSpec,
1614 mut experiment_ids: &[u32],
1615 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1616 ) -> Self::CreateMetricEventLoggerWithExperimentsResponseFut {
1617 fn _decode(
1618 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1619 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult, fidl::Error>
1620 {
1621 let _response = fidl::client::decode_transaction_body::<
1622 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1623 fidl::encoding::DefaultFuchsiaResourceDialect,
1624 0x7f1f745ef7bf48fa,
1625 >(_buf?)?;
1626 Ok(_response.map(|x| x))
1627 }
1628 self.client.send_query_and_decode::<
1629 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
1630 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1631 >(
1632 (project_spec, experiment_ids, logger,),
1633 0x7f1f745ef7bf48fa,
1634 fidl::encoding::DynamicFlags::empty(),
1635 _decode,
1636 )
1637 }
1638}
1639
1640pub struct MetricEventLoggerFactoryEventStream {
1641 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1642}
1643
1644impl std::marker::Unpin for MetricEventLoggerFactoryEventStream {}
1645
1646impl futures::stream::FusedStream for MetricEventLoggerFactoryEventStream {
1647 fn is_terminated(&self) -> bool {
1648 self.event_receiver.is_terminated()
1649 }
1650}
1651
1652impl futures::Stream for MetricEventLoggerFactoryEventStream {
1653 type Item = Result<MetricEventLoggerFactoryEvent, fidl::Error>;
1654
1655 fn poll_next(
1656 mut self: std::pin::Pin<&mut Self>,
1657 cx: &mut std::task::Context<'_>,
1658 ) -> std::task::Poll<Option<Self::Item>> {
1659 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1660 &mut self.event_receiver,
1661 cx
1662 )?) {
1663 Some(buf) => std::task::Poll::Ready(Some(MetricEventLoggerFactoryEvent::decode(buf))),
1664 None => std::task::Poll::Ready(None),
1665 }
1666 }
1667}
1668
1669#[derive(Debug)]
1670pub enum MetricEventLoggerFactoryEvent {}
1671
1672impl MetricEventLoggerFactoryEvent {
1673 fn decode(
1675 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1676 ) -> Result<MetricEventLoggerFactoryEvent, fidl::Error> {
1677 let (bytes, _handles) = buf.split_mut();
1678 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1679 debug_assert_eq!(tx_header.tx_id, 0);
1680 match tx_header.ordinal {
1681 _ => Err(fidl::Error::UnknownOrdinal {
1682 ordinal: tx_header.ordinal,
1683 protocol_name:
1684 <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1685 }),
1686 }
1687 }
1688}
1689
1690pub struct MetricEventLoggerFactoryRequestStream {
1692 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1693 is_terminated: bool,
1694}
1695
1696impl std::marker::Unpin for MetricEventLoggerFactoryRequestStream {}
1697
1698impl futures::stream::FusedStream for MetricEventLoggerFactoryRequestStream {
1699 fn is_terminated(&self) -> bool {
1700 self.is_terminated
1701 }
1702}
1703
1704impl fidl::endpoints::RequestStream for MetricEventLoggerFactoryRequestStream {
1705 type Protocol = MetricEventLoggerFactoryMarker;
1706 type ControlHandle = MetricEventLoggerFactoryControlHandle;
1707
1708 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1709 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1710 }
1711
1712 fn control_handle(&self) -> Self::ControlHandle {
1713 MetricEventLoggerFactoryControlHandle { inner: self.inner.clone() }
1714 }
1715
1716 fn into_inner(
1717 self,
1718 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1719 {
1720 (self.inner, self.is_terminated)
1721 }
1722
1723 fn from_inner(
1724 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1725 is_terminated: bool,
1726 ) -> Self {
1727 Self { inner, is_terminated }
1728 }
1729}
1730
1731impl futures::Stream for MetricEventLoggerFactoryRequestStream {
1732 type Item = Result<MetricEventLoggerFactoryRequest, fidl::Error>;
1733
1734 fn poll_next(
1735 mut self: std::pin::Pin<&mut Self>,
1736 cx: &mut std::task::Context<'_>,
1737 ) -> std::task::Poll<Option<Self::Item>> {
1738 let this = &mut *self;
1739 if this.inner.check_shutdown(cx) {
1740 this.is_terminated = true;
1741 return std::task::Poll::Ready(None);
1742 }
1743 if this.is_terminated {
1744 panic!("polled MetricEventLoggerFactoryRequestStream after completion");
1745 }
1746 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1747 |bytes, handles| {
1748 match this.inner.channel().read_etc(cx, bytes, handles) {
1749 std::task::Poll::Ready(Ok(())) => {}
1750 std::task::Poll::Pending => return std::task::Poll::Pending,
1751 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1752 this.is_terminated = true;
1753 return std::task::Poll::Ready(None);
1754 }
1755 std::task::Poll::Ready(Err(e)) => {
1756 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1757 e.into(),
1758 ))))
1759 }
1760 }
1761
1762 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1764
1765 std::task::Poll::Ready(Some(match header.ordinal {
1766 0xd6cf51cee5039fe => {
1767 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1768 let mut req = fidl::new_empty!(MetricEventLoggerFactoryCreateMetricEventLoggerRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1769 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest>(&header, _body_bytes, handles, &mut req)?;
1770 let control_handle = MetricEventLoggerFactoryControlHandle {
1771 inner: this.inner.clone(),
1772 };
1773 Ok(MetricEventLoggerFactoryRequest::CreateMetricEventLogger {project_spec: req.project_spec,
1774logger: req.logger,
1775
1776 responder: MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1777 control_handle: std::mem::ManuallyDrop::new(control_handle),
1778 tx_id: header.tx_id,
1779 },
1780 })
1781 }
1782 0x7f1f745ef7bf48fa => {
1783 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1784 let mut req = fidl::new_empty!(MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1785 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest>(&header, _body_bytes, handles, &mut req)?;
1786 let control_handle = MetricEventLoggerFactoryControlHandle {
1787 inner: this.inner.clone(),
1788 };
1789 Ok(MetricEventLoggerFactoryRequest::CreateMetricEventLoggerWithExperiments {project_spec: req.project_spec,
1790experiment_ids: req.experiment_ids,
1791logger: req.logger,
1792
1793 responder: MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
1794 control_handle: std::mem::ManuallyDrop::new(control_handle),
1795 tx_id: header.tx_id,
1796 },
1797 })
1798 }
1799 _ => Err(fidl::Error::UnknownOrdinal {
1800 ordinal: header.ordinal,
1801 protocol_name: <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1802 }),
1803 }))
1804 },
1805 )
1806 }
1807}
1808
1809#[derive(Debug)]
1811pub enum MetricEventLoggerFactoryRequest {
1812 CreateMetricEventLogger {
1814 project_spec: ProjectSpec,
1815 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1816 responder: MetricEventLoggerFactoryCreateMetricEventLoggerResponder,
1817 },
1818 CreateMetricEventLoggerWithExperiments {
1827 project_spec: ProjectSpec,
1828 experiment_ids: Vec<u32>,
1829 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1830 responder: MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder,
1831 },
1832}
1833
1834impl MetricEventLoggerFactoryRequest {
1835 #[allow(irrefutable_let_patterns)]
1836 pub fn into_create_metric_event_logger(
1837 self,
1838 ) -> Option<(
1839 ProjectSpec,
1840 fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1841 MetricEventLoggerFactoryCreateMetricEventLoggerResponder,
1842 )> {
1843 if let MetricEventLoggerFactoryRequest::CreateMetricEventLogger {
1844 project_spec,
1845 logger,
1846 responder,
1847 } = self
1848 {
1849 Some((project_spec, logger, responder))
1850 } else {
1851 None
1852 }
1853 }
1854
1855 #[allow(irrefutable_let_patterns)]
1856 pub fn into_create_metric_event_logger_with_experiments(
1857 self,
1858 ) -> Option<(
1859 ProjectSpec,
1860 Vec<u32>,
1861 fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1862 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder,
1863 )> {
1864 if let MetricEventLoggerFactoryRequest::CreateMetricEventLoggerWithExperiments {
1865 project_spec,
1866 experiment_ids,
1867 logger,
1868 responder,
1869 } = self
1870 {
1871 Some((project_spec, experiment_ids, logger, responder))
1872 } else {
1873 None
1874 }
1875 }
1876
1877 pub fn method_name(&self) -> &'static str {
1879 match *self {
1880 MetricEventLoggerFactoryRequest::CreateMetricEventLogger { .. } => {
1881 "create_metric_event_logger"
1882 }
1883 MetricEventLoggerFactoryRequest::CreateMetricEventLoggerWithExperiments { .. } => {
1884 "create_metric_event_logger_with_experiments"
1885 }
1886 }
1887 }
1888}
1889
1890#[derive(Debug, Clone)]
1891pub struct MetricEventLoggerFactoryControlHandle {
1892 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1893}
1894
1895impl fidl::endpoints::ControlHandle for MetricEventLoggerFactoryControlHandle {
1896 fn shutdown(&self) {
1897 self.inner.shutdown()
1898 }
1899 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1900 self.inner.shutdown_with_epitaph(status)
1901 }
1902
1903 fn is_closed(&self) -> bool {
1904 self.inner.channel().is_closed()
1905 }
1906 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1907 self.inner.channel().on_closed()
1908 }
1909
1910 #[cfg(target_os = "fuchsia")]
1911 fn signal_peer(
1912 &self,
1913 clear_mask: zx::Signals,
1914 set_mask: zx::Signals,
1915 ) -> Result<(), zx_status::Status> {
1916 use fidl::Peered;
1917 self.inner.channel().signal_peer(clear_mask, set_mask)
1918 }
1919}
1920
1921impl MetricEventLoggerFactoryControlHandle {}
1922
1923#[must_use = "FIDL methods require a response to be sent"]
1924#[derive(Debug)]
1925pub struct MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1926 control_handle: std::mem::ManuallyDrop<MetricEventLoggerFactoryControlHandle>,
1927 tx_id: u32,
1928}
1929
1930impl std::ops::Drop for MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1934 fn drop(&mut self) {
1935 self.control_handle.shutdown();
1936 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1938 }
1939}
1940
1941impl fidl::endpoints::Responder for MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1942 type ControlHandle = MetricEventLoggerFactoryControlHandle;
1943
1944 fn control_handle(&self) -> &MetricEventLoggerFactoryControlHandle {
1945 &self.control_handle
1946 }
1947
1948 fn drop_without_shutdown(mut self) {
1949 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1951 std::mem::forget(self);
1953 }
1954}
1955
1956impl MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1957 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1961 let _result = self.send_raw(result);
1962 if _result.is_err() {
1963 self.control_handle.shutdown();
1964 }
1965 self.drop_without_shutdown();
1966 _result
1967 }
1968
1969 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1971 let _result = self.send_raw(result);
1972 self.drop_without_shutdown();
1973 _result
1974 }
1975
1976 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1977 self.control_handle
1978 .inner
1979 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1980 result,
1981 self.tx_id,
1982 0xd6cf51cee5039fe,
1983 fidl::encoding::DynamicFlags::empty(),
1984 )
1985 }
1986}
1987
1988#[must_use = "FIDL methods require a response to be sent"]
1989#[derive(Debug)]
1990pub struct MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
1991 control_handle: std::mem::ManuallyDrop<MetricEventLoggerFactoryControlHandle>,
1992 tx_id: u32,
1993}
1994
1995impl std::ops::Drop for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
1999 fn drop(&mut self) {
2000 self.control_handle.shutdown();
2001 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2003 }
2004}
2005
2006impl fidl::endpoints::Responder
2007 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder
2008{
2009 type ControlHandle = MetricEventLoggerFactoryControlHandle;
2010
2011 fn control_handle(&self) -> &MetricEventLoggerFactoryControlHandle {
2012 &self.control_handle
2013 }
2014
2015 fn drop_without_shutdown(mut self) {
2016 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2018 std::mem::forget(self);
2020 }
2021}
2022
2023impl MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
2024 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2028 let _result = self.send_raw(result);
2029 if _result.is_err() {
2030 self.control_handle.shutdown();
2031 }
2032 self.drop_without_shutdown();
2033 _result
2034 }
2035
2036 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2038 let _result = self.send_raw(result);
2039 self.drop_without_shutdown();
2040 _result
2041 }
2042
2043 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2044 self.control_handle
2045 .inner
2046 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
2047 result,
2048 self.tx_id,
2049 0x7f1f745ef7bf48fa,
2050 fidl::encoding::DynamicFlags::empty(),
2051 )
2052 }
2053}
2054
2055mod internal {
2056 use super::*;
2057
2058 impl fidl::encoding::ResourceTypeMarker for MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
2059 type Borrowed<'a> = &'a mut Self;
2060 fn take_or_borrow<'a>(
2061 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2062 ) -> Self::Borrowed<'a> {
2063 value
2064 }
2065 }
2066
2067 unsafe impl fidl::encoding::TypeMarker for MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
2068 type Owned = Self;
2069
2070 #[inline(always)]
2071 fn inline_align(_context: fidl::encoding::Context) -> usize {
2072 8
2073 }
2074
2075 #[inline(always)]
2076 fn inline_size(_context: fidl::encoding::Context) -> usize {
2077 24
2078 }
2079 }
2080
2081 unsafe impl
2082 fidl::encoding::Encode<
2083 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
2084 fidl::encoding::DefaultFuchsiaResourceDialect,
2085 > for &mut MetricEventLoggerFactoryCreateMetricEventLoggerRequest
2086 {
2087 #[inline]
2088 unsafe fn encode(
2089 self,
2090 encoder: &mut fidl::encoding::Encoder<
2091 '_,
2092 fidl::encoding::DefaultFuchsiaResourceDialect,
2093 >,
2094 offset: usize,
2095 _depth: fidl::encoding::Depth,
2096 ) -> fidl::Result<()> {
2097 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest>(
2098 offset,
2099 );
2100 fidl::encoding::Encode::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2102 (
2103 <ProjectSpec as fidl::encoding::ValueTypeMarker>::borrow(&self.project_spec),
2104 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.logger),
2105 ),
2106 encoder, offset, _depth
2107 )
2108 }
2109 }
2110 unsafe impl<
2111 T0: fidl::encoding::Encode<ProjectSpec, fidl::encoding::DefaultFuchsiaResourceDialect>,
2112 T1: fidl::encoding::Encode<
2113 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2114 fidl::encoding::DefaultFuchsiaResourceDialect,
2115 >,
2116 >
2117 fidl::encoding::Encode<
2118 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
2119 fidl::encoding::DefaultFuchsiaResourceDialect,
2120 > for (T0, T1)
2121 {
2122 #[inline]
2123 unsafe fn encode(
2124 self,
2125 encoder: &mut fidl::encoding::Encoder<
2126 '_,
2127 fidl::encoding::DefaultFuchsiaResourceDialect,
2128 >,
2129 offset: usize,
2130 depth: fidl::encoding::Depth,
2131 ) -> fidl::Result<()> {
2132 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest>(
2133 offset,
2134 );
2135 unsafe {
2138 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
2139 (ptr as *mut u64).write_unaligned(0);
2140 }
2141 self.0.encode(encoder, offset + 0, depth)?;
2143 self.1.encode(encoder, offset + 16, depth)?;
2144 Ok(())
2145 }
2146 }
2147
2148 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2149 for MetricEventLoggerFactoryCreateMetricEventLoggerRequest
2150 {
2151 #[inline(always)]
2152 fn new_empty() -> Self {
2153 Self {
2154 project_spec: fidl::new_empty!(
2155 ProjectSpec,
2156 fidl::encoding::DefaultFuchsiaResourceDialect
2157 ),
2158 logger: fidl::new_empty!(
2159 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2160 fidl::encoding::DefaultFuchsiaResourceDialect
2161 ),
2162 }
2163 }
2164
2165 #[inline]
2166 unsafe fn decode(
2167 &mut self,
2168 decoder: &mut fidl::encoding::Decoder<
2169 '_,
2170 fidl::encoding::DefaultFuchsiaResourceDialect,
2171 >,
2172 offset: usize,
2173 _depth: fidl::encoding::Depth,
2174 ) -> fidl::Result<()> {
2175 decoder.debug_check_bounds::<Self>(offset);
2176 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
2178 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2179 let mask = 0xffffffff00000000u64;
2180 let maskedval = padval & mask;
2181 if maskedval != 0 {
2182 return Err(fidl::Error::NonZeroPadding {
2183 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
2184 });
2185 }
2186 fidl::decode!(
2187 ProjectSpec,
2188 fidl::encoding::DefaultFuchsiaResourceDialect,
2189 &mut self.project_spec,
2190 decoder,
2191 offset + 0,
2192 _depth
2193 )?;
2194 fidl::decode!(
2195 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2196 fidl::encoding::DefaultFuchsiaResourceDialect,
2197 &mut self.logger,
2198 decoder,
2199 offset + 16,
2200 _depth
2201 )?;
2202 Ok(())
2203 }
2204 }
2205
2206 impl fidl::encoding::ResourceTypeMarker
2207 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2208 {
2209 type Borrowed<'a> = &'a mut Self;
2210 fn take_or_borrow<'a>(
2211 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2212 ) -> Self::Borrowed<'a> {
2213 value
2214 }
2215 }
2216
2217 unsafe impl fidl::encoding::TypeMarker
2218 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2219 {
2220 type Owned = Self;
2221
2222 #[inline(always)]
2223 fn inline_align(_context: fidl::encoding::Context) -> usize {
2224 8
2225 }
2226
2227 #[inline(always)]
2228 fn inline_size(_context: fidl::encoding::Context) -> usize {
2229 40
2230 }
2231 }
2232
2233 unsafe impl
2234 fidl::encoding::Encode<
2235 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
2236 fidl::encoding::DefaultFuchsiaResourceDialect,
2237 > for &mut MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2238 {
2239 #[inline]
2240 unsafe fn encode(
2241 self,
2242 encoder: &mut fidl::encoding::Encoder<
2243 '_,
2244 fidl::encoding::DefaultFuchsiaResourceDialect,
2245 >,
2246 offset: usize,
2247 _depth: fidl::encoding::Depth,
2248 ) -> fidl::Result<()> {
2249 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest>(offset);
2250 fidl::encoding::Encode::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2252 (
2253 <ProjectSpec as fidl::encoding::ValueTypeMarker>::borrow(&self.project_spec),
2254 <fidl::encoding::Vector<u32, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.experiment_ids),
2255 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.logger),
2256 ),
2257 encoder, offset, _depth
2258 )
2259 }
2260 }
2261 unsafe impl<
2262 T0: fidl::encoding::Encode<ProjectSpec, fidl::encoding::DefaultFuchsiaResourceDialect>,
2263 T1: fidl::encoding::Encode<
2264 fidl::encoding::Vector<u32, 100>,
2265 fidl::encoding::DefaultFuchsiaResourceDialect,
2266 >,
2267 T2: fidl::encoding::Encode<
2268 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2269 fidl::encoding::DefaultFuchsiaResourceDialect,
2270 >,
2271 >
2272 fidl::encoding::Encode<
2273 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
2274 fidl::encoding::DefaultFuchsiaResourceDialect,
2275 > for (T0, T1, T2)
2276 {
2277 #[inline]
2278 unsafe fn encode(
2279 self,
2280 encoder: &mut fidl::encoding::Encoder<
2281 '_,
2282 fidl::encoding::DefaultFuchsiaResourceDialect,
2283 >,
2284 offset: usize,
2285 depth: fidl::encoding::Depth,
2286 ) -> fidl::Result<()> {
2287 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest>(offset);
2288 unsafe {
2291 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
2292 (ptr as *mut u64).write_unaligned(0);
2293 }
2294 self.0.encode(encoder, offset + 0, depth)?;
2296 self.1.encode(encoder, offset + 16, depth)?;
2297 self.2.encode(encoder, offset + 32, depth)?;
2298 Ok(())
2299 }
2300 }
2301
2302 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2303 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2304 {
2305 #[inline(always)]
2306 fn new_empty() -> Self {
2307 Self {
2308 project_spec: fidl::new_empty!(
2309 ProjectSpec,
2310 fidl::encoding::DefaultFuchsiaResourceDialect
2311 ),
2312 experiment_ids: fidl::new_empty!(fidl::encoding::Vector<u32, 100>, fidl::encoding::DefaultFuchsiaResourceDialect),
2313 logger: fidl::new_empty!(
2314 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2315 fidl::encoding::DefaultFuchsiaResourceDialect
2316 ),
2317 }
2318 }
2319
2320 #[inline]
2321 unsafe fn decode(
2322 &mut self,
2323 decoder: &mut fidl::encoding::Decoder<
2324 '_,
2325 fidl::encoding::DefaultFuchsiaResourceDialect,
2326 >,
2327 offset: usize,
2328 _depth: fidl::encoding::Depth,
2329 ) -> fidl::Result<()> {
2330 decoder.debug_check_bounds::<Self>(offset);
2331 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
2333 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2334 let mask = 0xffffffff00000000u64;
2335 let maskedval = padval & mask;
2336 if maskedval != 0 {
2337 return Err(fidl::Error::NonZeroPadding {
2338 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
2339 });
2340 }
2341 fidl::decode!(
2342 ProjectSpec,
2343 fidl::encoding::DefaultFuchsiaResourceDialect,
2344 &mut self.project_spec,
2345 decoder,
2346 offset + 0,
2347 _depth
2348 )?;
2349 fidl::decode!(fidl::encoding::Vector<u32, 100>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.experiment_ids, decoder, offset + 16, _depth)?;
2350 fidl::decode!(
2351 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2352 fidl::encoding::DefaultFuchsiaResourceDialect,
2353 &mut self.logger,
2354 decoder,
2355 offset + 32,
2356 _depth
2357 )?;
2358 Ok(())
2359 }
2360 }
2361}