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::NullableHandle {
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
995 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
996 self.inner.shutdown_with_epitaph(status)
997 }
998
999 fn is_closed(&self) -> bool {
1000 self.inner.channel().is_closed()
1001 }
1002 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1003 self.inner.channel().on_closed()
1004 }
1005
1006 #[cfg(target_os = "fuchsia")]
1007 fn signal_peer(
1008 &self,
1009 clear_mask: zx::Signals,
1010 set_mask: zx::Signals,
1011 ) -> Result<(), zx_status::Status> {
1012 use fidl::Peered;
1013 self.inner.channel().signal_peer(clear_mask, set_mask)
1014 }
1015}
1016
1017impl MetricEventLoggerControlHandle {}
1018
1019#[must_use = "FIDL methods require a response to be sent"]
1020#[derive(Debug)]
1021pub struct MetricEventLoggerLogOccurrenceResponder {
1022 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1023 tx_id: u32,
1024}
1025
1026impl std::ops::Drop for MetricEventLoggerLogOccurrenceResponder {
1030 fn drop(&mut self) {
1031 self.control_handle.shutdown();
1032 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1034 }
1035}
1036
1037impl fidl::endpoints::Responder for MetricEventLoggerLogOccurrenceResponder {
1038 type ControlHandle = MetricEventLoggerControlHandle;
1039
1040 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1041 &self.control_handle
1042 }
1043
1044 fn drop_without_shutdown(mut self) {
1045 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1047 std::mem::forget(self);
1049 }
1050}
1051
1052impl MetricEventLoggerLogOccurrenceResponder {
1053 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1057 let _result = self.send_raw(result);
1058 if _result.is_err() {
1059 self.control_handle.shutdown();
1060 }
1061 self.drop_without_shutdown();
1062 _result
1063 }
1064
1065 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1067 let _result = self.send_raw(result);
1068 self.drop_without_shutdown();
1069 _result
1070 }
1071
1072 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1073 self.control_handle
1074 .inner
1075 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1076 result,
1077 self.tx_id,
1078 0x26308985ae2bb3ac,
1079 fidl::encoding::DynamicFlags::empty(),
1080 )
1081 }
1082}
1083
1084#[must_use = "FIDL methods require a response to be sent"]
1085#[derive(Debug)]
1086pub struct MetricEventLoggerLogIntegerResponder {
1087 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1088 tx_id: u32,
1089}
1090
1091impl std::ops::Drop for MetricEventLoggerLogIntegerResponder {
1095 fn drop(&mut self) {
1096 self.control_handle.shutdown();
1097 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1099 }
1100}
1101
1102impl fidl::endpoints::Responder for MetricEventLoggerLogIntegerResponder {
1103 type ControlHandle = MetricEventLoggerControlHandle;
1104
1105 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1106 &self.control_handle
1107 }
1108
1109 fn drop_without_shutdown(mut self) {
1110 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1112 std::mem::forget(self);
1114 }
1115}
1116
1117impl MetricEventLoggerLogIntegerResponder {
1118 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1122 let _result = self.send_raw(result);
1123 if _result.is_err() {
1124 self.control_handle.shutdown();
1125 }
1126 self.drop_without_shutdown();
1127 _result
1128 }
1129
1130 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1132 let _result = self.send_raw(result);
1133 self.drop_without_shutdown();
1134 _result
1135 }
1136
1137 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1138 self.control_handle
1139 .inner
1140 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1141 result,
1142 self.tx_id,
1143 0x5d453303a88bd552,
1144 fidl::encoding::DynamicFlags::empty(),
1145 )
1146 }
1147}
1148
1149#[must_use = "FIDL methods require a response to be sent"]
1150#[derive(Debug)]
1151pub struct MetricEventLoggerLogIntegerHistogramResponder {
1152 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1153 tx_id: u32,
1154}
1155
1156impl std::ops::Drop for MetricEventLoggerLogIntegerHistogramResponder {
1160 fn drop(&mut self) {
1161 self.control_handle.shutdown();
1162 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1164 }
1165}
1166
1167impl fidl::endpoints::Responder for MetricEventLoggerLogIntegerHistogramResponder {
1168 type ControlHandle = MetricEventLoggerControlHandle;
1169
1170 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1171 &self.control_handle
1172 }
1173
1174 fn drop_without_shutdown(mut self) {
1175 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1177 std::mem::forget(self);
1179 }
1180}
1181
1182impl MetricEventLoggerLogIntegerHistogramResponder {
1183 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1187 let _result = self.send_raw(result);
1188 if _result.is_err() {
1189 self.control_handle.shutdown();
1190 }
1191 self.drop_without_shutdown();
1192 _result
1193 }
1194
1195 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1197 let _result = self.send_raw(result);
1198 self.drop_without_shutdown();
1199 _result
1200 }
1201
1202 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1203 self.control_handle
1204 .inner
1205 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1206 result,
1207 self.tx_id,
1208 0x79ac8a6bc06a01c0,
1209 fidl::encoding::DynamicFlags::empty(),
1210 )
1211 }
1212}
1213
1214#[must_use = "FIDL methods require a response to be sent"]
1215#[derive(Debug)]
1216pub struct MetricEventLoggerLogStringResponder {
1217 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1218 tx_id: u32,
1219}
1220
1221impl std::ops::Drop for MetricEventLoggerLogStringResponder {
1225 fn drop(&mut self) {
1226 self.control_handle.shutdown();
1227 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1229 }
1230}
1231
1232impl fidl::endpoints::Responder for MetricEventLoggerLogStringResponder {
1233 type ControlHandle = MetricEventLoggerControlHandle;
1234
1235 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1236 &self.control_handle
1237 }
1238
1239 fn drop_without_shutdown(mut self) {
1240 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1242 std::mem::forget(self);
1244 }
1245}
1246
1247impl MetricEventLoggerLogStringResponder {
1248 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1252 let _result = self.send_raw(result);
1253 if _result.is_err() {
1254 self.control_handle.shutdown();
1255 }
1256 self.drop_without_shutdown();
1257 _result
1258 }
1259
1260 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1262 let _result = self.send_raw(result);
1263 self.drop_without_shutdown();
1264 _result
1265 }
1266
1267 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1268 self.control_handle
1269 .inner
1270 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1271 result,
1272 self.tx_id,
1273 0x1611efbdf6ac8300,
1274 fidl::encoding::DynamicFlags::empty(),
1275 )
1276 }
1277}
1278
1279#[must_use = "FIDL methods require a response to be sent"]
1280#[derive(Debug)]
1281pub struct MetricEventLoggerLogMetricEventsResponder {
1282 control_handle: std::mem::ManuallyDrop<MetricEventLoggerControlHandle>,
1283 tx_id: u32,
1284}
1285
1286impl std::ops::Drop for MetricEventLoggerLogMetricEventsResponder {
1290 fn drop(&mut self) {
1291 self.control_handle.shutdown();
1292 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1294 }
1295}
1296
1297impl fidl::endpoints::Responder for MetricEventLoggerLogMetricEventsResponder {
1298 type ControlHandle = MetricEventLoggerControlHandle;
1299
1300 fn control_handle(&self) -> &MetricEventLoggerControlHandle {
1301 &self.control_handle
1302 }
1303
1304 fn drop_without_shutdown(mut self) {
1305 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1307 std::mem::forget(self);
1309 }
1310}
1311
1312impl MetricEventLoggerLogMetricEventsResponder {
1313 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1317 let _result = self.send_raw(result);
1318 if _result.is_err() {
1319 self.control_handle.shutdown();
1320 }
1321 self.drop_without_shutdown();
1322 _result
1323 }
1324
1325 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1327 let _result = self.send_raw(result);
1328 self.drop_without_shutdown();
1329 _result
1330 }
1331
1332 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1333 self.control_handle
1334 .inner
1335 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1336 result,
1337 self.tx_id,
1338 0x4d8c26bb74820c6b,
1339 fidl::encoding::DynamicFlags::empty(),
1340 )
1341 }
1342}
1343
1344#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1345pub struct MetricEventLoggerFactoryMarker;
1346
1347impl fidl::endpoints::ProtocolMarker for MetricEventLoggerFactoryMarker {
1348 type Proxy = MetricEventLoggerFactoryProxy;
1349 type RequestStream = MetricEventLoggerFactoryRequestStream;
1350 #[cfg(target_os = "fuchsia")]
1351 type SynchronousProxy = MetricEventLoggerFactorySynchronousProxy;
1352
1353 const DEBUG_NAME: &'static str = "fuchsia.metrics.MetricEventLoggerFactory";
1354}
1355impl fidl::endpoints::DiscoverableProtocolMarker for MetricEventLoggerFactoryMarker {}
1356pub type MetricEventLoggerFactoryCreateMetricEventLoggerResult = Result<(), Error>;
1357pub type MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult = Result<(), Error>;
1358
1359pub trait MetricEventLoggerFactoryProxyInterface: Send + Sync {
1360 type CreateMetricEventLoggerResponseFut: std::future::Future<
1361 Output = Result<MetricEventLoggerFactoryCreateMetricEventLoggerResult, fidl::Error>,
1362 > + Send;
1363 fn r#create_metric_event_logger(
1364 &self,
1365 project_spec: &ProjectSpec,
1366 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1367 ) -> Self::CreateMetricEventLoggerResponseFut;
1368 type CreateMetricEventLoggerWithExperimentsResponseFut: std::future::Future<
1369 Output = Result<
1370 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1371 fidl::Error,
1372 >,
1373 > + Send;
1374 fn r#create_metric_event_logger_with_experiments(
1375 &self,
1376 project_spec: &ProjectSpec,
1377 experiment_ids: &[u32],
1378 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1379 ) -> Self::CreateMetricEventLoggerWithExperimentsResponseFut;
1380}
1381#[derive(Debug)]
1382#[cfg(target_os = "fuchsia")]
1383pub struct MetricEventLoggerFactorySynchronousProxy {
1384 client: fidl::client::sync::Client,
1385}
1386
1387#[cfg(target_os = "fuchsia")]
1388impl fidl::endpoints::SynchronousProxy for MetricEventLoggerFactorySynchronousProxy {
1389 type Proxy = MetricEventLoggerFactoryProxy;
1390 type Protocol = MetricEventLoggerFactoryMarker;
1391
1392 fn from_channel(inner: fidl::Channel) -> Self {
1393 Self::new(inner)
1394 }
1395
1396 fn into_channel(self) -> fidl::Channel {
1397 self.client.into_channel()
1398 }
1399
1400 fn as_channel(&self) -> &fidl::Channel {
1401 self.client.as_channel()
1402 }
1403}
1404
1405#[cfg(target_os = "fuchsia")]
1406impl MetricEventLoggerFactorySynchronousProxy {
1407 pub fn new(channel: fidl::Channel) -> Self {
1408 let protocol_name =
1409 <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1410 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1411 }
1412
1413 pub fn into_channel(self) -> fidl::Channel {
1414 self.client.into_channel()
1415 }
1416
1417 pub fn wait_for_event(
1420 &self,
1421 deadline: zx::MonotonicInstant,
1422 ) -> Result<MetricEventLoggerFactoryEvent, fidl::Error> {
1423 MetricEventLoggerFactoryEvent::decode(self.client.wait_for_event(deadline)?)
1424 }
1425
1426 pub fn r#create_metric_event_logger(
1428 &self,
1429 mut project_spec: &ProjectSpec,
1430 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1431 ___deadline: zx::MonotonicInstant,
1432 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerResult, fidl::Error> {
1433 let _response = self.client.send_query::<
1434 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
1435 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1436 >(
1437 (project_spec, logger,),
1438 0xd6cf51cee5039fe,
1439 fidl::encoding::DynamicFlags::empty(),
1440 ___deadline,
1441 )?;
1442 Ok(_response.map(|x| x))
1443 }
1444
1445 pub fn r#create_metric_event_logger_with_experiments(
1454 &self,
1455 mut project_spec: &ProjectSpec,
1456 mut experiment_ids: &[u32],
1457 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1458 ___deadline: zx::MonotonicInstant,
1459 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult, fidl::Error>
1460 {
1461 let _response = self.client.send_query::<
1462 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
1463 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1464 >(
1465 (project_spec, experiment_ids, logger,),
1466 0x7f1f745ef7bf48fa,
1467 fidl::encoding::DynamicFlags::empty(),
1468 ___deadline,
1469 )?;
1470 Ok(_response.map(|x| x))
1471 }
1472}
1473
1474#[cfg(target_os = "fuchsia")]
1475impl From<MetricEventLoggerFactorySynchronousProxy> for zx::NullableHandle {
1476 fn from(value: MetricEventLoggerFactorySynchronousProxy) -> Self {
1477 value.into_channel().into()
1478 }
1479}
1480
1481#[cfg(target_os = "fuchsia")]
1482impl From<fidl::Channel> for MetricEventLoggerFactorySynchronousProxy {
1483 fn from(value: fidl::Channel) -> Self {
1484 Self::new(value)
1485 }
1486}
1487
1488#[cfg(target_os = "fuchsia")]
1489impl fidl::endpoints::FromClient for MetricEventLoggerFactorySynchronousProxy {
1490 type Protocol = MetricEventLoggerFactoryMarker;
1491
1492 fn from_client(value: fidl::endpoints::ClientEnd<MetricEventLoggerFactoryMarker>) -> Self {
1493 Self::new(value.into_channel())
1494 }
1495}
1496
1497#[derive(Debug, Clone)]
1498pub struct MetricEventLoggerFactoryProxy {
1499 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1500}
1501
1502impl fidl::endpoints::Proxy for MetricEventLoggerFactoryProxy {
1503 type Protocol = MetricEventLoggerFactoryMarker;
1504
1505 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1506 Self::new(inner)
1507 }
1508
1509 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1510 self.client.into_channel().map_err(|client| Self { client })
1511 }
1512
1513 fn as_channel(&self) -> &::fidl::AsyncChannel {
1514 self.client.as_channel()
1515 }
1516}
1517
1518impl MetricEventLoggerFactoryProxy {
1519 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1521 let protocol_name =
1522 <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1523 Self { client: fidl::client::Client::new(channel, protocol_name) }
1524 }
1525
1526 pub fn take_event_stream(&self) -> MetricEventLoggerFactoryEventStream {
1532 MetricEventLoggerFactoryEventStream { event_receiver: self.client.take_event_receiver() }
1533 }
1534
1535 pub fn r#create_metric_event_logger(
1537 &self,
1538 mut project_spec: &ProjectSpec,
1539 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1540 ) -> fidl::client::QueryResponseFut<
1541 MetricEventLoggerFactoryCreateMetricEventLoggerResult,
1542 fidl::encoding::DefaultFuchsiaResourceDialect,
1543 > {
1544 MetricEventLoggerFactoryProxyInterface::r#create_metric_event_logger(
1545 self,
1546 project_spec,
1547 logger,
1548 )
1549 }
1550
1551 pub fn r#create_metric_event_logger_with_experiments(
1560 &self,
1561 mut project_spec: &ProjectSpec,
1562 mut experiment_ids: &[u32],
1563 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1564 ) -> fidl::client::QueryResponseFut<
1565 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1566 fidl::encoding::DefaultFuchsiaResourceDialect,
1567 > {
1568 MetricEventLoggerFactoryProxyInterface::r#create_metric_event_logger_with_experiments(
1569 self,
1570 project_spec,
1571 experiment_ids,
1572 logger,
1573 )
1574 }
1575}
1576
1577impl MetricEventLoggerFactoryProxyInterface for MetricEventLoggerFactoryProxy {
1578 type CreateMetricEventLoggerResponseFut = fidl::client::QueryResponseFut<
1579 MetricEventLoggerFactoryCreateMetricEventLoggerResult,
1580 fidl::encoding::DefaultFuchsiaResourceDialect,
1581 >;
1582 fn r#create_metric_event_logger(
1583 &self,
1584 mut project_spec: &ProjectSpec,
1585 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1586 ) -> Self::CreateMetricEventLoggerResponseFut {
1587 fn _decode(
1588 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1589 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerResult, fidl::Error> {
1590 let _response = fidl::client::decode_transaction_body::<
1591 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1592 fidl::encoding::DefaultFuchsiaResourceDialect,
1593 0xd6cf51cee5039fe,
1594 >(_buf?)?;
1595 Ok(_response.map(|x| x))
1596 }
1597 self.client.send_query_and_decode::<
1598 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
1599 MetricEventLoggerFactoryCreateMetricEventLoggerResult,
1600 >(
1601 (project_spec, logger,),
1602 0xd6cf51cee5039fe,
1603 fidl::encoding::DynamicFlags::empty(),
1604 _decode,
1605 )
1606 }
1607
1608 type CreateMetricEventLoggerWithExperimentsResponseFut = fidl::client::QueryResponseFut<
1609 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1610 fidl::encoding::DefaultFuchsiaResourceDialect,
1611 >;
1612 fn r#create_metric_event_logger_with_experiments(
1613 &self,
1614 mut project_spec: &ProjectSpec,
1615 mut experiment_ids: &[u32],
1616 mut logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1617 ) -> Self::CreateMetricEventLoggerWithExperimentsResponseFut {
1618 fn _decode(
1619 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1620 ) -> Result<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult, fidl::Error>
1621 {
1622 let _response = fidl::client::decode_transaction_body::<
1623 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>,
1624 fidl::encoding::DefaultFuchsiaResourceDialect,
1625 0x7f1f745ef7bf48fa,
1626 >(_buf?)?;
1627 Ok(_response.map(|x| x))
1628 }
1629 self.client.send_query_and_decode::<
1630 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
1631 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResult,
1632 >(
1633 (project_spec, experiment_ids, logger,),
1634 0x7f1f745ef7bf48fa,
1635 fidl::encoding::DynamicFlags::empty(),
1636 _decode,
1637 )
1638 }
1639}
1640
1641pub struct MetricEventLoggerFactoryEventStream {
1642 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1643}
1644
1645impl std::marker::Unpin for MetricEventLoggerFactoryEventStream {}
1646
1647impl futures::stream::FusedStream for MetricEventLoggerFactoryEventStream {
1648 fn is_terminated(&self) -> bool {
1649 self.event_receiver.is_terminated()
1650 }
1651}
1652
1653impl futures::Stream for MetricEventLoggerFactoryEventStream {
1654 type Item = Result<MetricEventLoggerFactoryEvent, fidl::Error>;
1655
1656 fn poll_next(
1657 mut self: std::pin::Pin<&mut Self>,
1658 cx: &mut std::task::Context<'_>,
1659 ) -> std::task::Poll<Option<Self::Item>> {
1660 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1661 &mut self.event_receiver,
1662 cx
1663 )?) {
1664 Some(buf) => std::task::Poll::Ready(Some(MetricEventLoggerFactoryEvent::decode(buf))),
1665 None => std::task::Poll::Ready(None),
1666 }
1667 }
1668}
1669
1670#[derive(Debug)]
1671pub enum MetricEventLoggerFactoryEvent {}
1672
1673impl MetricEventLoggerFactoryEvent {
1674 fn decode(
1676 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1677 ) -> Result<MetricEventLoggerFactoryEvent, fidl::Error> {
1678 let (bytes, _handles) = buf.split_mut();
1679 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1680 debug_assert_eq!(tx_header.tx_id, 0);
1681 match tx_header.ordinal {
1682 _ => Err(fidl::Error::UnknownOrdinal {
1683 ordinal: tx_header.ordinal,
1684 protocol_name:
1685 <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1686 }),
1687 }
1688 }
1689}
1690
1691pub struct MetricEventLoggerFactoryRequestStream {
1693 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1694 is_terminated: bool,
1695}
1696
1697impl std::marker::Unpin for MetricEventLoggerFactoryRequestStream {}
1698
1699impl futures::stream::FusedStream for MetricEventLoggerFactoryRequestStream {
1700 fn is_terminated(&self) -> bool {
1701 self.is_terminated
1702 }
1703}
1704
1705impl fidl::endpoints::RequestStream for MetricEventLoggerFactoryRequestStream {
1706 type Protocol = MetricEventLoggerFactoryMarker;
1707 type ControlHandle = MetricEventLoggerFactoryControlHandle;
1708
1709 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1710 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1711 }
1712
1713 fn control_handle(&self) -> Self::ControlHandle {
1714 MetricEventLoggerFactoryControlHandle { inner: self.inner.clone() }
1715 }
1716
1717 fn into_inner(
1718 self,
1719 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1720 {
1721 (self.inner, self.is_terminated)
1722 }
1723
1724 fn from_inner(
1725 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1726 is_terminated: bool,
1727 ) -> Self {
1728 Self { inner, is_terminated }
1729 }
1730}
1731
1732impl futures::Stream for MetricEventLoggerFactoryRequestStream {
1733 type Item = Result<MetricEventLoggerFactoryRequest, fidl::Error>;
1734
1735 fn poll_next(
1736 mut self: std::pin::Pin<&mut Self>,
1737 cx: &mut std::task::Context<'_>,
1738 ) -> std::task::Poll<Option<Self::Item>> {
1739 let this = &mut *self;
1740 if this.inner.check_shutdown(cx) {
1741 this.is_terminated = true;
1742 return std::task::Poll::Ready(None);
1743 }
1744 if this.is_terminated {
1745 panic!("polled MetricEventLoggerFactoryRequestStream after completion");
1746 }
1747 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1748 |bytes, handles| {
1749 match this.inner.channel().read_etc(cx, bytes, handles) {
1750 std::task::Poll::Ready(Ok(())) => {}
1751 std::task::Poll::Pending => return std::task::Poll::Pending,
1752 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1753 this.is_terminated = true;
1754 return std::task::Poll::Ready(None);
1755 }
1756 std::task::Poll::Ready(Err(e)) => {
1757 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1758 e.into(),
1759 ))));
1760 }
1761 }
1762
1763 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1765
1766 std::task::Poll::Ready(Some(match header.ordinal {
1767 0xd6cf51cee5039fe => {
1768 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1769 let mut req = fidl::new_empty!(MetricEventLoggerFactoryCreateMetricEventLoggerRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1770 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest>(&header, _body_bytes, handles, &mut req)?;
1771 let control_handle = MetricEventLoggerFactoryControlHandle {
1772 inner: this.inner.clone(),
1773 };
1774 Ok(MetricEventLoggerFactoryRequest::CreateMetricEventLogger {project_spec: req.project_spec,
1775logger: req.logger,
1776
1777 responder: MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1778 control_handle: std::mem::ManuallyDrop::new(control_handle),
1779 tx_id: header.tx_id,
1780 },
1781 })
1782 }
1783 0x7f1f745ef7bf48fa => {
1784 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1785 let mut req = fidl::new_empty!(MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1786 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest>(&header, _body_bytes, handles, &mut req)?;
1787 let control_handle = MetricEventLoggerFactoryControlHandle {
1788 inner: this.inner.clone(),
1789 };
1790 Ok(MetricEventLoggerFactoryRequest::CreateMetricEventLoggerWithExperiments {project_spec: req.project_spec,
1791experiment_ids: req.experiment_ids,
1792logger: req.logger,
1793
1794 responder: MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
1795 control_handle: std::mem::ManuallyDrop::new(control_handle),
1796 tx_id: header.tx_id,
1797 },
1798 })
1799 }
1800 _ => Err(fidl::Error::UnknownOrdinal {
1801 ordinal: header.ordinal,
1802 protocol_name: <MetricEventLoggerFactoryMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1803 }),
1804 }))
1805 },
1806 )
1807 }
1808}
1809
1810#[derive(Debug)]
1812pub enum MetricEventLoggerFactoryRequest {
1813 CreateMetricEventLogger {
1815 project_spec: ProjectSpec,
1816 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1817 responder: MetricEventLoggerFactoryCreateMetricEventLoggerResponder,
1818 },
1819 CreateMetricEventLoggerWithExperiments {
1828 project_spec: ProjectSpec,
1829 experiment_ids: Vec<u32>,
1830 logger: fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1831 responder: MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder,
1832 },
1833}
1834
1835impl MetricEventLoggerFactoryRequest {
1836 #[allow(irrefutable_let_patterns)]
1837 pub fn into_create_metric_event_logger(
1838 self,
1839 ) -> Option<(
1840 ProjectSpec,
1841 fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1842 MetricEventLoggerFactoryCreateMetricEventLoggerResponder,
1843 )> {
1844 if let MetricEventLoggerFactoryRequest::CreateMetricEventLogger {
1845 project_spec,
1846 logger,
1847 responder,
1848 } = self
1849 {
1850 Some((project_spec, logger, responder))
1851 } else {
1852 None
1853 }
1854 }
1855
1856 #[allow(irrefutable_let_patterns)]
1857 pub fn into_create_metric_event_logger_with_experiments(
1858 self,
1859 ) -> Option<(
1860 ProjectSpec,
1861 Vec<u32>,
1862 fidl::endpoints::ServerEnd<MetricEventLoggerMarker>,
1863 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder,
1864 )> {
1865 if let MetricEventLoggerFactoryRequest::CreateMetricEventLoggerWithExperiments {
1866 project_spec,
1867 experiment_ids,
1868 logger,
1869 responder,
1870 } = self
1871 {
1872 Some((project_spec, experiment_ids, logger, responder))
1873 } else {
1874 None
1875 }
1876 }
1877
1878 pub fn method_name(&self) -> &'static str {
1880 match *self {
1881 MetricEventLoggerFactoryRequest::CreateMetricEventLogger { .. } => {
1882 "create_metric_event_logger"
1883 }
1884 MetricEventLoggerFactoryRequest::CreateMetricEventLoggerWithExperiments { .. } => {
1885 "create_metric_event_logger_with_experiments"
1886 }
1887 }
1888 }
1889}
1890
1891#[derive(Debug, Clone)]
1892pub struct MetricEventLoggerFactoryControlHandle {
1893 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1894}
1895
1896impl fidl::endpoints::ControlHandle for MetricEventLoggerFactoryControlHandle {
1897 fn shutdown(&self) {
1898 self.inner.shutdown()
1899 }
1900
1901 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1902 self.inner.shutdown_with_epitaph(status)
1903 }
1904
1905 fn is_closed(&self) -> bool {
1906 self.inner.channel().is_closed()
1907 }
1908 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1909 self.inner.channel().on_closed()
1910 }
1911
1912 #[cfg(target_os = "fuchsia")]
1913 fn signal_peer(
1914 &self,
1915 clear_mask: zx::Signals,
1916 set_mask: zx::Signals,
1917 ) -> Result<(), zx_status::Status> {
1918 use fidl::Peered;
1919 self.inner.channel().signal_peer(clear_mask, set_mask)
1920 }
1921}
1922
1923impl MetricEventLoggerFactoryControlHandle {}
1924
1925#[must_use = "FIDL methods require a response to be sent"]
1926#[derive(Debug)]
1927pub struct MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1928 control_handle: std::mem::ManuallyDrop<MetricEventLoggerFactoryControlHandle>,
1929 tx_id: u32,
1930}
1931
1932impl std::ops::Drop for MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1936 fn drop(&mut self) {
1937 self.control_handle.shutdown();
1938 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1940 }
1941}
1942
1943impl fidl::endpoints::Responder for MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1944 type ControlHandle = MetricEventLoggerFactoryControlHandle;
1945
1946 fn control_handle(&self) -> &MetricEventLoggerFactoryControlHandle {
1947 &self.control_handle
1948 }
1949
1950 fn drop_without_shutdown(mut self) {
1951 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1953 std::mem::forget(self);
1955 }
1956}
1957
1958impl MetricEventLoggerFactoryCreateMetricEventLoggerResponder {
1959 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1963 let _result = self.send_raw(result);
1964 if _result.is_err() {
1965 self.control_handle.shutdown();
1966 }
1967 self.drop_without_shutdown();
1968 _result
1969 }
1970
1971 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1973 let _result = self.send_raw(result);
1974 self.drop_without_shutdown();
1975 _result
1976 }
1977
1978 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
1979 self.control_handle
1980 .inner
1981 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
1982 result,
1983 self.tx_id,
1984 0xd6cf51cee5039fe,
1985 fidl::encoding::DynamicFlags::empty(),
1986 )
1987 }
1988}
1989
1990#[must_use = "FIDL methods require a response to be sent"]
1991#[derive(Debug)]
1992pub struct MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
1993 control_handle: std::mem::ManuallyDrop<MetricEventLoggerFactoryControlHandle>,
1994 tx_id: u32,
1995}
1996
1997impl std::ops::Drop for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
2001 fn drop(&mut self) {
2002 self.control_handle.shutdown();
2003 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2005 }
2006}
2007
2008impl fidl::endpoints::Responder
2009 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder
2010{
2011 type ControlHandle = MetricEventLoggerFactoryControlHandle;
2012
2013 fn control_handle(&self) -> &MetricEventLoggerFactoryControlHandle {
2014 &self.control_handle
2015 }
2016
2017 fn drop_without_shutdown(mut self) {
2018 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2020 std::mem::forget(self);
2022 }
2023}
2024
2025impl MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsResponder {
2026 pub fn send(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2030 let _result = self.send_raw(result);
2031 if _result.is_err() {
2032 self.control_handle.shutdown();
2033 }
2034 self.drop_without_shutdown();
2035 _result
2036 }
2037
2038 pub fn send_no_shutdown_on_err(self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2040 let _result = self.send_raw(result);
2041 self.drop_without_shutdown();
2042 _result
2043 }
2044
2045 fn send_raw(&self, mut result: Result<(), Error>) -> Result<(), fidl::Error> {
2046 self.control_handle
2047 .inner
2048 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, Error>>(
2049 result,
2050 self.tx_id,
2051 0x7f1f745ef7bf48fa,
2052 fidl::encoding::DynamicFlags::empty(),
2053 )
2054 }
2055}
2056
2057mod internal {
2058 use super::*;
2059
2060 impl fidl::encoding::ResourceTypeMarker for MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
2061 type Borrowed<'a> = &'a mut Self;
2062 fn take_or_borrow<'a>(
2063 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2064 ) -> Self::Borrowed<'a> {
2065 value
2066 }
2067 }
2068
2069 unsafe impl fidl::encoding::TypeMarker for MetricEventLoggerFactoryCreateMetricEventLoggerRequest {
2070 type Owned = Self;
2071
2072 #[inline(always)]
2073 fn inline_align(_context: fidl::encoding::Context) -> usize {
2074 8
2075 }
2076
2077 #[inline(always)]
2078 fn inline_size(_context: fidl::encoding::Context) -> usize {
2079 24
2080 }
2081 }
2082
2083 unsafe impl
2084 fidl::encoding::Encode<
2085 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
2086 fidl::encoding::DefaultFuchsiaResourceDialect,
2087 > for &mut MetricEventLoggerFactoryCreateMetricEventLoggerRequest
2088 {
2089 #[inline]
2090 unsafe fn encode(
2091 self,
2092 encoder: &mut fidl::encoding::Encoder<
2093 '_,
2094 fidl::encoding::DefaultFuchsiaResourceDialect,
2095 >,
2096 offset: usize,
2097 _depth: fidl::encoding::Depth,
2098 ) -> fidl::Result<()> {
2099 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest>(
2100 offset,
2101 );
2102 fidl::encoding::Encode::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2104 (
2105 <ProjectSpec as fidl::encoding::ValueTypeMarker>::borrow(&self.project_spec),
2106 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.logger),
2107 ),
2108 encoder, offset, _depth
2109 )
2110 }
2111 }
2112 unsafe impl<
2113 T0: fidl::encoding::Encode<ProjectSpec, fidl::encoding::DefaultFuchsiaResourceDialect>,
2114 T1: fidl::encoding::Encode<
2115 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2116 fidl::encoding::DefaultFuchsiaResourceDialect,
2117 >,
2118 >
2119 fidl::encoding::Encode<
2120 MetricEventLoggerFactoryCreateMetricEventLoggerRequest,
2121 fidl::encoding::DefaultFuchsiaResourceDialect,
2122 > for (T0, T1)
2123 {
2124 #[inline]
2125 unsafe fn encode(
2126 self,
2127 encoder: &mut fidl::encoding::Encoder<
2128 '_,
2129 fidl::encoding::DefaultFuchsiaResourceDialect,
2130 >,
2131 offset: usize,
2132 depth: fidl::encoding::Depth,
2133 ) -> fidl::Result<()> {
2134 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerRequest>(
2135 offset,
2136 );
2137 unsafe {
2140 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
2141 (ptr as *mut u64).write_unaligned(0);
2142 }
2143 self.0.encode(encoder, offset + 0, depth)?;
2145 self.1.encode(encoder, offset + 16, depth)?;
2146 Ok(())
2147 }
2148 }
2149
2150 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2151 for MetricEventLoggerFactoryCreateMetricEventLoggerRequest
2152 {
2153 #[inline(always)]
2154 fn new_empty() -> Self {
2155 Self {
2156 project_spec: fidl::new_empty!(
2157 ProjectSpec,
2158 fidl::encoding::DefaultFuchsiaResourceDialect
2159 ),
2160 logger: fidl::new_empty!(
2161 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2162 fidl::encoding::DefaultFuchsiaResourceDialect
2163 ),
2164 }
2165 }
2166
2167 #[inline]
2168 unsafe fn decode(
2169 &mut self,
2170 decoder: &mut fidl::encoding::Decoder<
2171 '_,
2172 fidl::encoding::DefaultFuchsiaResourceDialect,
2173 >,
2174 offset: usize,
2175 _depth: fidl::encoding::Depth,
2176 ) -> fidl::Result<()> {
2177 decoder.debug_check_bounds::<Self>(offset);
2178 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
2180 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2181 let mask = 0xffffffff00000000u64;
2182 let maskedval = padval & mask;
2183 if maskedval != 0 {
2184 return Err(fidl::Error::NonZeroPadding {
2185 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
2186 });
2187 }
2188 fidl::decode!(
2189 ProjectSpec,
2190 fidl::encoding::DefaultFuchsiaResourceDialect,
2191 &mut self.project_spec,
2192 decoder,
2193 offset + 0,
2194 _depth
2195 )?;
2196 fidl::decode!(
2197 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2198 fidl::encoding::DefaultFuchsiaResourceDialect,
2199 &mut self.logger,
2200 decoder,
2201 offset + 16,
2202 _depth
2203 )?;
2204 Ok(())
2205 }
2206 }
2207
2208 impl fidl::encoding::ResourceTypeMarker
2209 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2210 {
2211 type Borrowed<'a> = &'a mut Self;
2212 fn take_or_borrow<'a>(
2213 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2214 ) -> Self::Borrowed<'a> {
2215 value
2216 }
2217 }
2218
2219 unsafe impl fidl::encoding::TypeMarker
2220 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2221 {
2222 type Owned = Self;
2223
2224 #[inline(always)]
2225 fn inline_align(_context: fidl::encoding::Context) -> usize {
2226 8
2227 }
2228
2229 #[inline(always)]
2230 fn inline_size(_context: fidl::encoding::Context) -> usize {
2231 40
2232 }
2233 }
2234
2235 unsafe impl
2236 fidl::encoding::Encode<
2237 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
2238 fidl::encoding::DefaultFuchsiaResourceDialect,
2239 > for &mut MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2240 {
2241 #[inline]
2242 unsafe fn encode(
2243 self,
2244 encoder: &mut fidl::encoding::Encoder<
2245 '_,
2246 fidl::encoding::DefaultFuchsiaResourceDialect,
2247 >,
2248 offset: usize,
2249 _depth: fidl::encoding::Depth,
2250 ) -> fidl::Result<()> {
2251 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest>(offset);
2252 fidl::encoding::Encode::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
2254 (
2255 <ProjectSpec as fidl::encoding::ValueTypeMarker>::borrow(&self.project_spec),
2256 <fidl::encoding::Vector<u32, 100> as fidl::encoding::ValueTypeMarker>::borrow(&self.experiment_ids),
2257 <fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.logger),
2258 ),
2259 encoder, offset, _depth
2260 )
2261 }
2262 }
2263 unsafe impl<
2264 T0: fidl::encoding::Encode<ProjectSpec, fidl::encoding::DefaultFuchsiaResourceDialect>,
2265 T1: fidl::encoding::Encode<
2266 fidl::encoding::Vector<u32, 100>,
2267 fidl::encoding::DefaultFuchsiaResourceDialect,
2268 >,
2269 T2: fidl::encoding::Encode<
2270 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2271 fidl::encoding::DefaultFuchsiaResourceDialect,
2272 >,
2273 >
2274 fidl::encoding::Encode<
2275 MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest,
2276 fidl::encoding::DefaultFuchsiaResourceDialect,
2277 > for (T0, T1, T2)
2278 {
2279 #[inline]
2280 unsafe fn encode(
2281 self,
2282 encoder: &mut fidl::encoding::Encoder<
2283 '_,
2284 fidl::encoding::DefaultFuchsiaResourceDialect,
2285 >,
2286 offset: usize,
2287 depth: fidl::encoding::Depth,
2288 ) -> fidl::Result<()> {
2289 encoder.debug_check_bounds::<MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest>(offset);
2290 unsafe {
2293 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
2294 (ptr as *mut u64).write_unaligned(0);
2295 }
2296 self.0.encode(encoder, offset + 0, depth)?;
2298 self.1.encode(encoder, offset + 16, depth)?;
2299 self.2.encode(encoder, offset + 32, depth)?;
2300 Ok(())
2301 }
2302 }
2303
2304 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2305 for MetricEventLoggerFactoryCreateMetricEventLoggerWithExperimentsRequest
2306 {
2307 #[inline(always)]
2308 fn new_empty() -> Self {
2309 Self {
2310 project_spec: fidl::new_empty!(
2311 ProjectSpec,
2312 fidl::encoding::DefaultFuchsiaResourceDialect
2313 ),
2314 experiment_ids: fidl::new_empty!(fidl::encoding::Vector<u32, 100>, fidl::encoding::DefaultFuchsiaResourceDialect),
2315 logger: fidl::new_empty!(
2316 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2317 fidl::encoding::DefaultFuchsiaResourceDialect
2318 ),
2319 }
2320 }
2321
2322 #[inline]
2323 unsafe fn decode(
2324 &mut self,
2325 decoder: &mut fidl::encoding::Decoder<
2326 '_,
2327 fidl::encoding::DefaultFuchsiaResourceDialect,
2328 >,
2329 offset: usize,
2330 _depth: fidl::encoding::Depth,
2331 ) -> fidl::Result<()> {
2332 decoder.debug_check_bounds::<Self>(offset);
2333 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
2335 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2336 let mask = 0xffffffff00000000u64;
2337 let maskedval = padval & mask;
2338 if maskedval != 0 {
2339 return Err(fidl::Error::NonZeroPadding {
2340 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
2341 });
2342 }
2343 fidl::decode!(
2344 ProjectSpec,
2345 fidl::encoding::DefaultFuchsiaResourceDialect,
2346 &mut self.project_spec,
2347 decoder,
2348 offset + 0,
2349 _depth
2350 )?;
2351 fidl::decode!(fidl::encoding::Vector<u32, 100>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.experiment_ids, decoder, offset + 16, _depth)?;
2352 fidl::decode!(
2353 fidl::encoding::Endpoint<fidl::endpoints::ServerEnd<MetricEventLoggerMarker>>,
2354 fidl::encoding::DefaultFuchsiaResourceDialect,
2355 &mut self.logger,
2356 decoder,
2357 offset + 32,
2358 _depth
2359 )?;
2360 Ok(())
2361 }
2362 }
2363}