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_developer_ffx_speedtest__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct SpeedtestSocketDownRequest {
16 pub socket: fidl::Socket,
17 pub params: TransferParams,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
21 for SpeedtestSocketDownRequest
22{
23}
24
25#[derive(Debug, PartialEq)]
26pub struct SpeedtestSocketUpRequest {
27 pub socket: fidl::Socket,
28 pub params: TransferParams,
29}
30
31impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for SpeedtestSocketUpRequest {}
32
33#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
34pub struct SpeedtestMarker;
35
36impl fidl::endpoints::ProtocolMarker for SpeedtestMarker {
37 type Proxy = SpeedtestProxy;
38 type RequestStream = SpeedtestRequestStream;
39 #[cfg(target_os = "fuchsia")]
40 type SynchronousProxy = SpeedtestSynchronousProxy;
41
42 const DEBUG_NAME: &'static str = "fuchsia.developer.ffx.speedtest.Speedtest";
43}
44impl fidl::endpoints::DiscoverableProtocolMarker for SpeedtestMarker {}
45
46pub trait SpeedtestProxyInterface: Send + Sync {
47 type PingResponseFut: std::future::Future<Output = Result<(), fidl::Error>> + Send;
48 fn r#ping(&self) -> Self::PingResponseFut;
49 type SocketUpResponseFut: std::future::Future<Output = Result<TransferReport, fidl::Error>>
50 + Send;
51 fn r#socket_up(
52 &self,
53 socket: fidl::Socket,
54 params: &TransferParams,
55 ) -> Self::SocketUpResponseFut;
56 type SocketDownResponseFut: std::future::Future<Output = Result<TransferReport, fidl::Error>>
57 + Send;
58 fn r#socket_down(
59 &self,
60 socket: fidl::Socket,
61 params: &TransferParams,
62 ) -> Self::SocketDownResponseFut;
63}
64#[derive(Debug)]
65#[cfg(target_os = "fuchsia")]
66pub struct SpeedtestSynchronousProxy {
67 client: fidl::client::sync::Client,
68}
69
70#[cfg(target_os = "fuchsia")]
71impl fidl::endpoints::SynchronousProxy for SpeedtestSynchronousProxy {
72 type Proxy = SpeedtestProxy;
73 type Protocol = SpeedtestMarker;
74
75 fn from_channel(inner: fidl::Channel) -> Self {
76 Self::new(inner)
77 }
78
79 fn into_channel(self) -> fidl::Channel {
80 self.client.into_channel()
81 }
82
83 fn as_channel(&self) -> &fidl::Channel {
84 self.client.as_channel()
85 }
86}
87
88#[cfg(target_os = "fuchsia")]
89impl SpeedtestSynchronousProxy {
90 pub fn new(channel: fidl::Channel) -> Self {
91 let protocol_name = <SpeedtestMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
92 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
93 }
94
95 pub fn into_channel(self) -> fidl::Channel {
96 self.client.into_channel()
97 }
98
99 pub fn wait_for_event(
102 &self,
103 deadline: zx::MonotonicInstant,
104 ) -> Result<SpeedtestEvent, fidl::Error> {
105 SpeedtestEvent::decode(self.client.wait_for_event(deadline)?)
106 }
107
108 pub fn r#ping(&self, ___deadline: zx::MonotonicInstant) -> Result<(), fidl::Error> {
110 let _response = self.client.send_query::<
111 fidl::encoding::EmptyPayload,
112 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
113 >(
114 (),
115 0x1511ccb237874689,
116 fidl::encoding::DynamicFlags::FLEXIBLE,
117 ___deadline,
118 )?
119 .into_result::<SpeedtestMarker>("ping")?;
120 Ok(_response)
121 }
122
123 pub fn r#socket_up(
125 &self,
126 mut socket: fidl::Socket,
127 mut params: &TransferParams,
128 ___deadline: zx::MonotonicInstant,
129 ) -> Result<TransferReport, fidl::Error> {
130 let _response = self
131 .client
132 .send_query::<SpeedtestSocketUpRequest, fidl::encoding::FlexibleType<TransferReport>>(
133 (socket, params),
134 0x7c530a369209ae87,
135 fidl::encoding::DynamicFlags::FLEXIBLE,
136 ___deadline,
137 )?
138 .into_result::<SpeedtestMarker>("socket_up")?;
139 Ok(_response)
140 }
141
142 pub fn r#socket_down(
144 &self,
145 mut socket: fidl::Socket,
146 mut params: &TransferParams,
147 ___deadline: zx::MonotonicInstant,
148 ) -> Result<TransferReport, fidl::Error> {
149 let _response = self
150 .client
151 .send_query::<SpeedtestSocketDownRequest, fidl::encoding::FlexibleType<TransferReport>>(
152 (socket, params),
153 0x426e13de44070751,
154 fidl::encoding::DynamicFlags::FLEXIBLE,
155 ___deadline,
156 )?
157 .into_result::<SpeedtestMarker>("socket_down")?;
158 Ok(_response)
159 }
160}
161
162#[cfg(target_os = "fuchsia")]
163impl From<SpeedtestSynchronousProxy> for zx::Handle {
164 fn from(value: SpeedtestSynchronousProxy) -> Self {
165 value.into_channel().into()
166 }
167}
168
169#[cfg(target_os = "fuchsia")]
170impl From<fidl::Channel> for SpeedtestSynchronousProxy {
171 fn from(value: fidl::Channel) -> Self {
172 Self::new(value)
173 }
174}
175
176#[derive(Debug, Clone)]
177pub struct SpeedtestProxy {
178 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
179}
180
181impl fidl::endpoints::Proxy for SpeedtestProxy {
182 type Protocol = SpeedtestMarker;
183
184 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
185 Self::new(inner)
186 }
187
188 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
189 self.client.into_channel().map_err(|client| Self { client })
190 }
191
192 fn as_channel(&self) -> &::fidl::AsyncChannel {
193 self.client.as_channel()
194 }
195}
196
197impl SpeedtestProxy {
198 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
200 let protocol_name = <SpeedtestMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
201 Self { client: fidl::client::Client::new(channel, protocol_name) }
202 }
203
204 pub fn take_event_stream(&self) -> SpeedtestEventStream {
210 SpeedtestEventStream { event_receiver: self.client.take_event_receiver() }
211 }
212
213 pub fn r#ping(
215 &self,
216 ) -> fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect> {
217 SpeedtestProxyInterface::r#ping(self)
218 }
219
220 pub fn r#socket_up(
222 &self,
223 mut socket: fidl::Socket,
224 mut params: &TransferParams,
225 ) -> fidl::client::QueryResponseFut<TransferReport, fidl::encoding::DefaultFuchsiaResourceDialect>
226 {
227 SpeedtestProxyInterface::r#socket_up(self, socket, params)
228 }
229
230 pub fn r#socket_down(
232 &self,
233 mut socket: fidl::Socket,
234 mut params: &TransferParams,
235 ) -> fidl::client::QueryResponseFut<TransferReport, fidl::encoding::DefaultFuchsiaResourceDialect>
236 {
237 SpeedtestProxyInterface::r#socket_down(self, socket, params)
238 }
239}
240
241impl SpeedtestProxyInterface for SpeedtestProxy {
242 type PingResponseFut =
243 fidl::client::QueryResponseFut<(), fidl::encoding::DefaultFuchsiaResourceDialect>;
244 fn r#ping(&self) -> Self::PingResponseFut {
245 fn _decode(
246 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
247 ) -> Result<(), fidl::Error> {
248 let _response = fidl::client::decode_transaction_body::<
249 fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>,
250 fidl::encoding::DefaultFuchsiaResourceDialect,
251 0x1511ccb237874689,
252 >(_buf?)?
253 .into_result::<SpeedtestMarker>("ping")?;
254 Ok(_response)
255 }
256 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, ()>(
257 (),
258 0x1511ccb237874689,
259 fidl::encoding::DynamicFlags::FLEXIBLE,
260 _decode,
261 )
262 }
263
264 type SocketUpResponseFut = fidl::client::QueryResponseFut<
265 TransferReport,
266 fidl::encoding::DefaultFuchsiaResourceDialect,
267 >;
268 fn r#socket_up(
269 &self,
270 mut socket: fidl::Socket,
271 mut params: &TransferParams,
272 ) -> Self::SocketUpResponseFut {
273 fn _decode(
274 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
275 ) -> Result<TransferReport, fidl::Error> {
276 let _response = fidl::client::decode_transaction_body::<
277 fidl::encoding::FlexibleType<TransferReport>,
278 fidl::encoding::DefaultFuchsiaResourceDialect,
279 0x7c530a369209ae87,
280 >(_buf?)?
281 .into_result::<SpeedtestMarker>("socket_up")?;
282 Ok(_response)
283 }
284 self.client.send_query_and_decode::<SpeedtestSocketUpRequest, TransferReport>(
285 (socket, params),
286 0x7c530a369209ae87,
287 fidl::encoding::DynamicFlags::FLEXIBLE,
288 _decode,
289 )
290 }
291
292 type SocketDownResponseFut = fidl::client::QueryResponseFut<
293 TransferReport,
294 fidl::encoding::DefaultFuchsiaResourceDialect,
295 >;
296 fn r#socket_down(
297 &self,
298 mut socket: fidl::Socket,
299 mut params: &TransferParams,
300 ) -> Self::SocketDownResponseFut {
301 fn _decode(
302 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
303 ) -> Result<TransferReport, fidl::Error> {
304 let _response = fidl::client::decode_transaction_body::<
305 fidl::encoding::FlexibleType<TransferReport>,
306 fidl::encoding::DefaultFuchsiaResourceDialect,
307 0x426e13de44070751,
308 >(_buf?)?
309 .into_result::<SpeedtestMarker>("socket_down")?;
310 Ok(_response)
311 }
312 self.client.send_query_and_decode::<SpeedtestSocketDownRequest, TransferReport>(
313 (socket, params),
314 0x426e13de44070751,
315 fidl::encoding::DynamicFlags::FLEXIBLE,
316 _decode,
317 )
318 }
319}
320
321pub struct SpeedtestEventStream {
322 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
323}
324
325impl std::marker::Unpin for SpeedtestEventStream {}
326
327impl futures::stream::FusedStream for SpeedtestEventStream {
328 fn is_terminated(&self) -> bool {
329 self.event_receiver.is_terminated()
330 }
331}
332
333impl futures::Stream for SpeedtestEventStream {
334 type Item = Result<SpeedtestEvent, fidl::Error>;
335
336 fn poll_next(
337 mut self: std::pin::Pin<&mut Self>,
338 cx: &mut std::task::Context<'_>,
339 ) -> std::task::Poll<Option<Self::Item>> {
340 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
341 &mut self.event_receiver,
342 cx
343 )?) {
344 Some(buf) => std::task::Poll::Ready(Some(SpeedtestEvent::decode(buf))),
345 None => std::task::Poll::Ready(None),
346 }
347 }
348}
349
350#[derive(Debug)]
351pub enum SpeedtestEvent {
352 #[non_exhaustive]
353 _UnknownEvent {
354 ordinal: u64,
356 },
357}
358
359impl SpeedtestEvent {
360 fn decode(
362 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
363 ) -> Result<SpeedtestEvent, fidl::Error> {
364 let (bytes, _handles) = buf.split_mut();
365 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
366 debug_assert_eq!(tx_header.tx_id, 0);
367 match tx_header.ordinal {
368 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
369 Ok(SpeedtestEvent::_UnknownEvent { ordinal: tx_header.ordinal })
370 }
371 _ => Err(fidl::Error::UnknownOrdinal {
372 ordinal: tx_header.ordinal,
373 protocol_name: <SpeedtestMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
374 }),
375 }
376 }
377}
378
379pub struct SpeedtestRequestStream {
381 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
382 is_terminated: bool,
383}
384
385impl std::marker::Unpin for SpeedtestRequestStream {}
386
387impl futures::stream::FusedStream for SpeedtestRequestStream {
388 fn is_terminated(&self) -> bool {
389 self.is_terminated
390 }
391}
392
393impl fidl::endpoints::RequestStream for SpeedtestRequestStream {
394 type Protocol = SpeedtestMarker;
395 type ControlHandle = SpeedtestControlHandle;
396
397 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
398 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
399 }
400
401 fn control_handle(&self) -> Self::ControlHandle {
402 SpeedtestControlHandle { inner: self.inner.clone() }
403 }
404
405 fn into_inner(
406 self,
407 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
408 {
409 (self.inner, self.is_terminated)
410 }
411
412 fn from_inner(
413 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
414 is_terminated: bool,
415 ) -> Self {
416 Self { inner, is_terminated }
417 }
418}
419
420impl futures::Stream for SpeedtestRequestStream {
421 type Item = Result<SpeedtestRequest, fidl::Error>;
422
423 fn poll_next(
424 mut self: std::pin::Pin<&mut Self>,
425 cx: &mut std::task::Context<'_>,
426 ) -> std::task::Poll<Option<Self::Item>> {
427 let this = &mut *self;
428 if this.inner.check_shutdown(cx) {
429 this.is_terminated = true;
430 return std::task::Poll::Ready(None);
431 }
432 if this.is_terminated {
433 panic!("polled SpeedtestRequestStream after completion");
434 }
435 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
436 |bytes, handles| {
437 match this.inner.channel().read_etc(cx, bytes, handles) {
438 std::task::Poll::Ready(Ok(())) => {}
439 std::task::Poll::Pending => return std::task::Poll::Pending,
440 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
441 this.is_terminated = true;
442 return std::task::Poll::Ready(None);
443 }
444 std::task::Poll::Ready(Err(e)) => {
445 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
446 e.into(),
447 ))))
448 }
449 }
450
451 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
453
454 std::task::Poll::Ready(Some(match header.ordinal {
455 0x1511ccb237874689 => {
456 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
457 let mut req = fidl::new_empty!(
458 fidl::encoding::EmptyPayload,
459 fidl::encoding::DefaultFuchsiaResourceDialect
460 );
461 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
462 let control_handle = SpeedtestControlHandle { inner: this.inner.clone() };
463 Ok(SpeedtestRequest::Ping {
464 responder: SpeedtestPingResponder {
465 control_handle: std::mem::ManuallyDrop::new(control_handle),
466 tx_id: header.tx_id,
467 },
468 })
469 }
470 0x7c530a369209ae87 => {
471 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
472 let mut req = fidl::new_empty!(
473 SpeedtestSocketUpRequest,
474 fidl::encoding::DefaultFuchsiaResourceDialect
475 );
476 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SpeedtestSocketUpRequest>(&header, _body_bytes, handles, &mut req)?;
477 let control_handle = SpeedtestControlHandle { inner: this.inner.clone() };
478 Ok(SpeedtestRequest::SocketUp {
479 socket: req.socket,
480 params: req.params,
481
482 responder: SpeedtestSocketUpResponder {
483 control_handle: std::mem::ManuallyDrop::new(control_handle),
484 tx_id: header.tx_id,
485 },
486 })
487 }
488 0x426e13de44070751 => {
489 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
490 let mut req = fidl::new_empty!(
491 SpeedtestSocketDownRequest,
492 fidl::encoding::DefaultFuchsiaResourceDialect
493 );
494 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SpeedtestSocketDownRequest>(&header, _body_bytes, handles, &mut req)?;
495 let control_handle = SpeedtestControlHandle { inner: this.inner.clone() };
496 Ok(SpeedtestRequest::SocketDown {
497 socket: req.socket,
498 params: req.params,
499
500 responder: SpeedtestSocketDownResponder {
501 control_handle: std::mem::ManuallyDrop::new(control_handle),
502 tx_id: header.tx_id,
503 },
504 })
505 }
506 _ if header.tx_id == 0
507 && header
508 .dynamic_flags()
509 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
510 {
511 Ok(SpeedtestRequest::_UnknownMethod {
512 ordinal: header.ordinal,
513 control_handle: SpeedtestControlHandle { inner: this.inner.clone() },
514 method_type: fidl::MethodType::OneWay,
515 })
516 }
517 _ if header
518 .dynamic_flags()
519 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
520 {
521 this.inner.send_framework_err(
522 fidl::encoding::FrameworkErr::UnknownMethod,
523 header.tx_id,
524 header.ordinal,
525 header.dynamic_flags(),
526 (bytes, handles),
527 )?;
528 Ok(SpeedtestRequest::_UnknownMethod {
529 ordinal: header.ordinal,
530 control_handle: SpeedtestControlHandle { inner: this.inner.clone() },
531 method_type: fidl::MethodType::TwoWay,
532 })
533 }
534 _ => Err(fidl::Error::UnknownOrdinal {
535 ordinal: header.ordinal,
536 protocol_name:
537 <SpeedtestMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
538 }),
539 }))
540 },
541 )
542 }
543}
544
545#[derive(Debug)]
546pub enum SpeedtestRequest {
547 Ping { responder: SpeedtestPingResponder },
549 SocketUp { socket: fidl::Socket, params: TransferParams, responder: SpeedtestSocketUpResponder },
551 SocketDown {
553 socket: fidl::Socket,
554 params: TransferParams,
555 responder: SpeedtestSocketDownResponder,
556 },
557 #[non_exhaustive]
559 _UnknownMethod {
560 ordinal: u64,
562 control_handle: SpeedtestControlHandle,
563 method_type: fidl::MethodType,
564 },
565}
566
567impl SpeedtestRequest {
568 #[allow(irrefutable_let_patterns)]
569 pub fn into_ping(self) -> Option<(SpeedtestPingResponder)> {
570 if let SpeedtestRequest::Ping { responder } = self {
571 Some((responder))
572 } else {
573 None
574 }
575 }
576
577 #[allow(irrefutable_let_patterns)]
578 pub fn into_socket_up(
579 self,
580 ) -> Option<(fidl::Socket, TransferParams, SpeedtestSocketUpResponder)> {
581 if let SpeedtestRequest::SocketUp { socket, params, responder } = self {
582 Some((socket, params, responder))
583 } else {
584 None
585 }
586 }
587
588 #[allow(irrefutable_let_patterns)]
589 pub fn into_socket_down(
590 self,
591 ) -> Option<(fidl::Socket, TransferParams, SpeedtestSocketDownResponder)> {
592 if let SpeedtestRequest::SocketDown { socket, params, responder } = self {
593 Some((socket, params, responder))
594 } else {
595 None
596 }
597 }
598
599 pub fn method_name(&self) -> &'static str {
601 match *self {
602 SpeedtestRequest::Ping { .. } => "ping",
603 SpeedtestRequest::SocketUp { .. } => "socket_up",
604 SpeedtestRequest::SocketDown { .. } => "socket_down",
605 SpeedtestRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
606 "unknown one-way method"
607 }
608 SpeedtestRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
609 "unknown two-way method"
610 }
611 }
612 }
613}
614
615#[derive(Debug, Clone)]
616pub struct SpeedtestControlHandle {
617 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
618}
619
620impl fidl::endpoints::ControlHandle for SpeedtestControlHandle {
621 fn shutdown(&self) {
622 self.inner.shutdown()
623 }
624 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
625 self.inner.shutdown_with_epitaph(status)
626 }
627
628 fn is_closed(&self) -> bool {
629 self.inner.channel().is_closed()
630 }
631 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
632 self.inner.channel().on_closed()
633 }
634
635 #[cfg(target_os = "fuchsia")]
636 fn signal_peer(
637 &self,
638 clear_mask: zx::Signals,
639 set_mask: zx::Signals,
640 ) -> Result<(), zx_status::Status> {
641 use fidl::Peered;
642 self.inner.channel().signal_peer(clear_mask, set_mask)
643 }
644}
645
646impl SpeedtestControlHandle {}
647
648#[must_use = "FIDL methods require a response to be sent"]
649#[derive(Debug)]
650pub struct SpeedtestPingResponder {
651 control_handle: std::mem::ManuallyDrop<SpeedtestControlHandle>,
652 tx_id: u32,
653}
654
655impl std::ops::Drop for SpeedtestPingResponder {
659 fn drop(&mut self) {
660 self.control_handle.shutdown();
661 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
663 }
664}
665
666impl fidl::endpoints::Responder for SpeedtestPingResponder {
667 type ControlHandle = SpeedtestControlHandle;
668
669 fn control_handle(&self) -> &SpeedtestControlHandle {
670 &self.control_handle
671 }
672
673 fn drop_without_shutdown(mut self) {
674 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
676 std::mem::forget(self);
678 }
679}
680
681impl SpeedtestPingResponder {
682 pub fn send(self) -> Result<(), fidl::Error> {
686 let _result = self.send_raw();
687 if _result.is_err() {
688 self.control_handle.shutdown();
689 }
690 self.drop_without_shutdown();
691 _result
692 }
693
694 pub fn send_no_shutdown_on_err(self) -> Result<(), fidl::Error> {
696 let _result = self.send_raw();
697 self.drop_without_shutdown();
698 _result
699 }
700
701 fn send_raw(&self) -> Result<(), fidl::Error> {
702 self.control_handle.inner.send::<fidl::encoding::FlexibleType<fidl::encoding::EmptyStruct>>(
703 fidl::encoding::Flexible::new(()),
704 self.tx_id,
705 0x1511ccb237874689,
706 fidl::encoding::DynamicFlags::FLEXIBLE,
707 )
708 }
709}
710
711#[must_use = "FIDL methods require a response to be sent"]
712#[derive(Debug)]
713pub struct SpeedtestSocketUpResponder {
714 control_handle: std::mem::ManuallyDrop<SpeedtestControlHandle>,
715 tx_id: u32,
716}
717
718impl std::ops::Drop for SpeedtestSocketUpResponder {
722 fn drop(&mut self) {
723 self.control_handle.shutdown();
724 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
726 }
727}
728
729impl fidl::endpoints::Responder for SpeedtestSocketUpResponder {
730 type ControlHandle = SpeedtestControlHandle;
731
732 fn control_handle(&self) -> &SpeedtestControlHandle {
733 &self.control_handle
734 }
735
736 fn drop_without_shutdown(mut self) {
737 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
739 std::mem::forget(self);
741 }
742}
743
744impl SpeedtestSocketUpResponder {
745 pub fn send(self, mut payload: &TransferReport) -> Result<(), fidl::Error> {
749 let _result = self.send_raw(payload);
750 if _result.is_err() {
751 self.control_handle.shutdown();
752 }
753 self.drop_without_shutdown();
754 _result
755 }
756
757 pub fn send_no_shutdown_on_err(self, mut payload: &TransferReport) -> Result<(), fidl::Error> {
759 let _result = self.send_raw(payload);
760 self.drop_without_shutdown();
761 _result
762 }
763
764 fn send_raw(&self, mut payload: &TransferReport) -> Result<(), fidl::Error> {
765 self.control_handle.inner.send::<fidl::encoding::FlexibleType<TransferReport>>(
766 fidl::encoding::Flexible::new(payload),
767 self.tx_id,
768 0x7c530a369209ae87,
769 fidl::encoding::DynamicFlags::FLEXIBLE,
770 )
771 }
772}
773
774#[must_use = "FIDL methods require a response to be sent"]
775#[derive(Debug)]
776pub struct SpeedtestSocketDownResponder {
777 control_handle: std::mem::ManuallyDrop<SpeedtestControlHandle>,
778 tx_id: u32,
779}
780
781impl std::ops::Drop for SpeedtestSocketDownResponder {
785 fn drop(&mut self) {
786 self.control_handle.shutdown();
787 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
789 }
790}
791
792impl fidl::endpoints::Responder for SpeedtestSocketDownResponder {
793 type ControlHandle = SpeedtestControlHandle;
794
795 fn control_handle(&self) -> &SpeedtestControlHandle {
796 &self.control_handle
797 }
798
799 fn drop_without_shutdown(mut self) {
800 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
802 std::mem::forget(self);
804 }
805}
806
807impl SpeedtestSocketDownResponder {
808 pub fn send(self, mut payload: &TransferReport) -> Result<(), fidl::Error> {
812 let _result = self.send_raw(payload);
813 if _result.is_err() {
814 self.control_handle.shutdown();
815 }
816 self.drop_without_shutdown();
817 _result
818 }
819
820 pub fn send_no_shutdown_on_err(self, mut payload: &TransferReport) -> Result<(), fidl::Error> {
822 let _result = self.send_raw(payload);
823 self.drop_without_shutdown();
824 _result
825 }
826
827 fn send_raw(&self, mut payload: &TransferReport) -> Result<(), fidl::Error> {
828 self.control_handle.inner.send::<fidl::encoding::FlexibleType<TransferReport>>(
829 fidl::encoding::Flexible::new(payload),
830 self.tx_id,
831 0x426e13de44070751,
832 fidl::encoding::DynamicFlags::FLEXIBLE,
833 )
834 }
835}
836
837mod internal {
838 use super::*;
839
840 impl fidl::encoding::ResourceTypeMarker for SpeedtestSocketDownRequest {
841 type Borrowed<'a> = &'a mut Self;
842 fn take_or_borrow<'a>(
843 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
844 ) -> Self::Borrowed<'a> {
845 value
846 }
847 }
848
849 unsafe impl fidl::encoding::TypeMarker for SpeedtestSocketDownRequest {
850 type Owned = Self;
851
852 #[inline(always)]
853 fn inline_align(_context: fidl::encoding::Context) -> usize {
854 8
855 }
856
857 #[inline(always)]
858 fn inline_size(_context: fidl::encoding::Context) -> usize {
859 24
860 }
861 }
862
863 unsafe impl
864 fidl::encoding::Encode<
865 SpeedtestSocketDownRequest,
866 fidl::encoding::DefaultFuchsiaResourceDialect,
867 > for &mut SpeedtestSocketDownRequest
868 {
869 #[inline]
870 unsafe fn encode(
871 self,
872 encoder: &mut fidl::encoding::Encoder<
873 '_,
874 fidl::encoding::DefaultFuchsiaResourceDialect,
875 >,
876 offset: usize,
877 _depth: fidl::encoding::Depth,
878 ) -> fidl::Result<()> {
879 encoder.debug_check_bounds::<SpeedtestSocketDownRequest>(offset);
880 fidl::encoding::Encode::<
882 SpeedtestSocketDownRequest,
883 fidl::encoding::DefaultFuchsiaResourceDialect,
884 >::encode(
885 (
886 <fidl::encoding::HandleType<
887 fidl::Socket,
888 { fidl::ObjectType::SOCKET.into_raw() },
889 16388,
890 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
891 &mut self.socket
892 ),
893 <TransferParams as fidl::encoding::ValueTypeMarker>::borrow(&self.params),
894 ),
895 encoder,
896 offset,
897 _depth,
898 )
899 }
900 }
901 unsafe impl<
902 T0: fidl::encoding::Encode<
903 fidl::encoding::HandleType<
904 fidl::Socket,
905 { fidl::ObjectType::SOCKET.into_raw() },
906 16388,
907 >,
908 fidl::encoding::DefaultFuchsiaResourceDialect,
909 >,
910 T1: fidl::encoding::Encode<TransferParams, fidl::encoding::DefaultFuchsiaResourceDialect>,
911 >
912 fidl::encoding::Encode<
913 SpeedtestSocketDownRequest,
914 fidl::encoding::DefaultFuchsiaResourceDialect,
915 > for (T0, T1)
916 {
917 #[inline]
918 unsafe fn encode(
919 self,
920 encoder: &mut fidl::encoding::Encoder<
921 '_,
922 fidl::encoding::DefaultFuchsiaResourceDialect,
923 >,
924 offset: usize,
925 depth: fidl::encoding::Depth,
926 ) -> fidl::Result<()> {
927 encoder.debug_check_bounds::<SpeedtestSocketDownRequest>(offset);
928 unsafe {
931 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
932 (ptr as *mut u64).write_unaligned(0);
933 }
934 self.0.encode(encoder, offset + 0, depth)?;
936 self.1.encode(encoder, offset + 8, depth)?;
937 Ok(())
938 }
939 }
940
941 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
942 for SpeedtestSocketDownRequest
943 {
944 #[inline(always)]
945 fn new_empty() -> Self {
946 Self {
947 socket: fidl::new_empty!(fidl::encoding::HandleType<fidl::Socket, { fidl::ObjectType::SOCKET.into_raw() }, 16388>, fidl::encoding::DefaultFuchsiaResourceDialect),
948 params: fidl::new_empty!(
949 TransferParams,
950 fidl::encoding::DefaultFuchsiaResourceDialect
951 ),
952 }
953 }
954
955 #[inline]
956 unsafe fn decode(
957 &mut self,
958 decoder: &mut fidl::encoding::Decoder<
959 '_,
960 fidl::encoding::DefaultFuchsiaResourceDialect,
961 >,
962 offset: usize,
963 _depth: fidl::encoding::Depth,
964 ) -> fidl::Result<()> {
965 decoder.debug_check_bounds::<Self>(offset);
966 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
968 let padval = unsafe { (ptr as *const u64).read_unaligned() };
969 let mask = 0xffffffff00000000u64;
970 let maskedval = padval & mask;
971 if maskedval != 0 {
972 return Err(fidl::Error::NonZeroPadding {
973 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
974 });
975 }
976 fidl::decode!(fidl::encoding::HandleType<fidl::Socket, { fidl::ObjectType::SOCKET.into_raw() }, 16388>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.socket, decoder, offset + 0, _depth)?;
977 fidl::decode!(
978 TransferParams,
979 fidl::encoding::DefaultFuchsiaResourceDialect,
980 &mut self.params,
981 decoder,
982 offset + 8,
983 _depth
984 )?;
985 Ok(())
986 }
987 }
988
989 impl fidl::encoding::ResourceTypeMarker for SpeedtestSocketUpRequest {
990 type Borrowed<'a> = &'a mut Self;
991 fn take_or_borrow<'a>(
992 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
993 ) -> Self::Borrowed<'a> {
994 value
995 }
996 }
997
998 unsafe impl fidl::encoding::TypeMarker for SpeedtestSocketUpRequest {
999 type Owned = Self;
1000
1001 #[inline(always)]
1002 fn inline_align(_context: fidl::encoding::Context) -> usize {
1003 8
1004 }
1005
1006 #[inline(always)]
1007 fn inline_size(_context: fidl::encoding::Context) -> usize {
1008 24
1009 }
1010 }
1011
1012 unsafe impl
1013 fidl::encoding::Encode<
1014 SpeedtestSocketUpRequest,
1015 fidl::encoding::DefaultFuchsiaResourceDialect,
1016 > for &mut SpeedtestSocketUpRequest
1017 {
1018 #[inline]
1019 unsafe fn encode(
1020 self,
1021 encoder: &mut fidl::encoding::Encoder<
1022 '_,
1023 fidl::encoding::DefaultFuchsiaResourceDialect,
1024 >,
1025 offset: usize,
1026 _depth: fidl::encoding::Depth,
1027 ) -> fidl::Result<()> {
1028 encoder.debug_check_bounds::<SpeedtestSocketUpRequest>(offset);
1029 fidl::encoding::Encode::<
1031 SpeedtestSocketUpRequest,
1032 fidl::encoding::DefaultFuchsiaResourceDialect,
1033 >::encode(
1034 (
1035 <fidl::encoding::HandleType<
1036 fidl::Socket,
1037 { fidl::ObjectType::SOCKET.into_raw() },
1038 16392,
1039 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
1040 &mut self.socket
1041 ),
1042 <TransferParams as fidl::encoding::ValueTypeMarker>::borrow(&self.params),
1043 ),
1044 encoder,
1045 offset,
1046 _depth,
1047 )
1048 }
1049 }
1050 unsafe impl<
1051 T0: fidl::encoding::Encode<
1052 fidl::encoding::HandleType<
1053 fidl::Socket,
1054 { fidl::ObjectType::SOCKET.into_raw() },
1055 16392,
1056 >,
1057 fidl::encoding::DefaultFuchsiaResourceDialect,
1058 >,
1059 T1: fidl::encoding::Encode<TransferParams, fidl::encoding::DefaultFuchsiaResourceDialect>,
1060 >
1061 fidl::encoding::Encode<
1062 SpeedtestSocketUpRequest,
1063 fidl::encoding::DefaultFuchsiaResourceDialect,
1064 > for (T0, T1)
1065 {
1066 #[inline]
1067 unsafe fn encode(
1068 self,
1069 encoder: &mut fidl::encoding::Encoder<
1070 '_,
1071 fidl::encoding::DefaultFuchsiaResourceDialect,
1072 >,
1073 offset: usize,
1074 depth: fidl::encoding::Depth,
1075 ) -> fidl::Result<()> {
1076 encoder.debug_check_bounds::<SpeedtestSocketUpRequest>(offset);
1077 unsafe {
1080 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1081 (ptr as *mut u64).write_unaligned(0);
1082 }
1083 self.0.encode(encoder, offset + 0, depth)?;
1085 self.1.encode(encoder, offset + 8, depth)?;
1086 Ok(())
1087 }
1088 }
1089
1090 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1091 for SpeedtestSocketUpRequest
1092 {
1093 #[inline(always)]
1094 fn new_empty() -> Self {
1095 Self {
1096 socket: fidl::new_empty!(fidl::encoding::HandleType<fidl::Socket, { fidl::ObjectType::SOCKET.into_raw() }, 16392>, fidl::encoding::DefaultFuchsiaResourceDialect),
1097 params: fidl::new_empty!(
1098 TransferParams,
1099 fidl::encoding::DefaultFuchsiaResourceDialect
1100 ),
1101 }
1102 }
1103
1104 #[inline]
1105 unsafe fn decode(
1106 &mut self,
1107 decoder: &mut fidl::encoding::Decoder<
1108 '_,
1109 fidl::encoding::DefaultFuchsiaResourceDialect,
1110 >,
1111 offset: usize,
1112 _depth: fidl::encoding::Depth,
1113 ) -> fidl::Result<()> {
1114 decoder.debug_check_bounds::<Self>(offset);
1115 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1117 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1118 let mask = 0xffffffff00000000u64;
1119 let maskedval = padval & mask;
1120 if maskedval != 0 {
1121 return Err(fidl::Error::NonZeroPadding {
1122 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1123 });
1124 }
1125 fidl::decode!(fidl::encoding::HandleType<fidl::Socket, { fidl::ObjectType::SOCKET.into_raw() }, 16392>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.socket, decoder, offset + 0, _depth)?;
1126 fidl::decode!(
1127 TransferParams,
1128 fidl::encoding::DefaultFuchsiaResourceDialect,
1129 &mut self.params,
1130 decoder,
1131 offset + 8,
1132 _depth
1133 )?;
1134 Ok(())
1135 }
1136 }
1137}