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