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