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