fidl_fuchsia_posix_socket_raw/
fidl_fuchsia_posix_socket_raw.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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_posix_socket_raw__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ProviderSocketWithOptionsRequest {
16    pub domain: fidl_fuchsia_posix_socket::Domain,
17    pub proto: ProtocolAssociation,
18    pub opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
19}
20
21impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
22    for ProviderSocketWithOptionsRequest
23{
24}
25
26#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
27pub struct ProviderSocketWithOptionsResponse {
28    pub s: fidl::endpoints::ClientEnd<SocketMarker>,
29}
30
31impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
32    for ProviderSocketWithOptionsResponse
33{
34}
35
36#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
37pub struct ProviderSocketResponse {
38    pub s: fidl::endpoints::ClientEnd<SocketMarker>,
39}
40
41impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ProviderSocketResponse {}
42
43#[derive(Debug, Default, PartialEq)]
44pub struct SocketDescribeResponse {
45    /// Signals additional information about the state of the socket such as
46    /// readiness or shutdown-ness.
47    pub event: Option<fidl::EventPair>,
48    #[doc(hidden)]
49    pub __source_breaking: fidl::marker::SourceBreaking,
50}
51
52impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for SocketDescribeResponse {}
53
54#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
55pub struct ProviderMarker;
56
57impl fidl::endpoints::ProtocolMarker for ProviderMarker {
58    type Proxy = ProviderProxy;
59    type RequestStream = ProviderRequestStream;
60    #[cfg(target_os = "fuchsia")]
61    type SynchronousProxy = ProviderSynchronousProxy;
62
63    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Provider";
64}
65impl fidl::endpoints::DiscoverableProtocolMarker for ProviderMarker {}
66pub type ProviderSocketResult =
67    Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>;
68pub type ProviderSocketWithOptionsResult =
69    Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>;
70
71pub trait ProviderProxyInterface: Send + Sync {
72    type SocketResponseFut: std::future::Future<Output = Result<ProviderSocketResult, fidl::Error>>
73        + Send;
74    fn r#socket(
75        &self,
76        domain: fidl_fuchsia_posix_socket::Domain,
77        proto: &ProtocolAssociation,
78    ) -> Self::SocketResponseFut;
79    type SocketWithOptionsResponseFut: std::future::Future<Output = Result<ProviderSocketWithOptionsResult, fidl::Error>>
80        + Send;
81    fn r#socket_with_options(
82        &self,
83        domain: fidl_fuchsia_posix_socket::Domain,
84        proto: &ProtocolAssociation,
85        opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
86    ) -> Self::SocketWithOptionsResponseFut;
87}
88#[derive(Debug)]
89#[cfg(target_os = "fuchsia")]
90pub struct ProviderSynchronousProxy {
91    client: fidl::client::sync::Client,
92}
93
94#[cfg(target_os = "fuchsia")]
95impl fidl::endpoints::SynchronousProxy for ProviderSynchronousProxy {
96    type Proxy = ProviderProxy;
97    type Protocol = ProviderMarker;
98
99    fn from_channel(inner: fidl::Channel) -> Self {
100        Self::new(inner)
101    }
102
103    fn into_channel(self) -> fidl::Channel {
104        self.client.into_channel()
105    }
106
107    fn as_channel(&self) -> &fidl::Channel {
108        self.client.as_channel()
109    }
110}
111
112#[cfg(target_os = "fuchsia")]
113impl ProviderSynchronousProxy {
114    pub fn new(channel: fidl::Channel) -> Self {
115        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
116        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
117    }
118
119    pub fn into_channel(self) -> fidl::Channel {
120        self.client.into_channel()
121    }
122
123    /// Waits until an event arrives and returns it. It is safe for other
124    /// threads to make concurrent requests while waiting for an event.
125    pub fn wait_for_event(
126        &self,
127        deadline: zx::MonotonicInstant,
128    ) -> Result<ProviderEvent, fidl::Error> {
129        ProviderEvent::decode(self.client.wait_for_event(deadline)?)
130    }
131
132    /// Requests a raw socket.
133    pub fn r#socket(
134        &self,
135        mut domain: fidl_fuchsia_posix_socket::Domain,
136        mut proto: &ProtocolAssociation,
137        ___deadline: zx::MonotonicInstant,
138    ) -> Result<ProviderSocketResult, fidl::Error> {
139        let _response =
140            self.client.send_query::<ProviderSocketRequest, fidl::encoding::ResultType<
141                ProviderSocketResponse,
142                fidl_fuchsia_posix::Errno,
143            >>(
144                (domain, proto),
145                0xdfa6a591ab48fd1,
146                fidl::encoding::DynamicFlags::empty(),
147                ___deadline,
148            )?;
149        Ok(_response.map(|x| x.s))
150    }
151
152    /// Requests a raw socket with creation options.
153    pub fn r#socket_with_options(
154        &self,
155        mut domain: fidl_fuchsia_posix_socket::Domain,
156        mut proto: &ProtocolAssociation,
157        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
158        ___deadline: zx::MonotonicInstant,
159    ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
160        let _response =
161            self.client.send_query::<ProviderSocketWithOptionsRequest, fidl::encoding::ResultType<
162                ProviderSocketWithOptionsResponse,
163                fidl_fuchsia_posix::Errno,
164            >>(
165                (domain, proto, &mut opts),
166                0x34cd6e7e82c46f85,
167                fidl::encoding::DynamicFlags::empty(),
168                ___deadline,
169            )?;
170        Ok(_response.map(|x| x.s))
171    }
172}
173
174#[cfg(target_os = "fuchsia")]
175impl From<ProviderSynchronousProxy> for zx::NullableHandle {
176    fn from(value: ProviderSynchronousProxy) -> Self {
177        value.into_channel().into()
178    }
179}
180
181#[cfg(target_os = "fuchsia")]
182impl From<fidl::Channel> for ProviderSynchronousProxy {
183    fn from(value: fidl::Channel) -> Self {
184        Self::new(value)
185    }
186}
187
188#[cfg(target_os = "fuchsia")]
189impl fidl::endpoints::FromClient for ProviderSynchronousProxy {
190    type Protocol = ProviderMarker;
191
192    fn from_client(value: fidl::endpoints::ClientEnd<ProviderMarker>) -> Self {
193        Self::new(value.into_channel())
194    }
195}
196
197#[derive(Debug, Clone)]
198pub struct ProviderProxy {
199    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
200}
201
202impl fidl::endpoints::Proxy for ProviderProxy {
203    type Protocol = ProviderMarker;
204
205    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
206        Self::new(inner)
207    }
208
209    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
210        self.client.into_channel().map_err(|client| Self { client })
211    }
212
213    fn as_channel(&self) -> &::fidl::AsyncChannel {
214        self.client.as_channel()
215    }
216}
217
218impl ProviderProxy {
219    /// Create a new Proxy for fuchsia.posix.socket.raw/Provider.
220    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
221        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
222        Self { client: fidl::client::Client::new(channel, protocol_name) }
223    }
224
225    /// Get a Stream of events from the remote end of the protocol.
226    ///
227    /// # Panics
228    ///
229    /// Panics if the event stream was already taken.
230    pub fn take_event_stream(&self) -> ProviderEventStream {
231        ProviderEventStream { event_receiver: self.client.take_event_receiver() }
232    }
233
234    /// Requests a raw socket.
235    pub fn r#socket(
236        &self,
237        mut domain: fidl_fuchsia_posix_socket::Domain,
238        mut proto: &ProtocolAssociation,
239    ) -> fidl::client::QueryResponseFut<
240        ProviderSocketResult,
241        fidl::encoding::DefaultFuchsiaResourceDialect,
242    > {
243        ProviderProxyInterface::r#socket(self, domain, proto)
244    }
245
246    /// Requests a raw socket with creation options.
247    pub fn r#socket_with_options(
248        &self,
249        mut domain: fidl_fuchsia_posix_socket::Domain,
250        mut proto: &ProtocolAssociation,
251        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
252    ) -> fidl::client::QueryResponseFut<
253        ProviderSocketWithOptionsResult,
254        fidl::encoding::DefaultFuchsiaResourceDialect,
255    > {
256        ProviderProxyInterface::r#socket_with_options(self, domain, proto, opts)
257    }
258}
259
260impl ProviderProxyInterface for ProviderProxy {
261    type SocketResponseFut = fidl::client::QueryResponseFut<
262        ProviderSocketResult,
263        fidl::encoding::DefaultFuchsiaResourceDialect,
264    >;
265    fn r#socket(
266        &self,
267        mut domain: fidl_fuchsia_posix_socket::Domain,
268        mut proto: &ProtocolAssociation,
269    ) -> Self::SocketResponseFut {
270        fn _decode(
271            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
272        ) -> Result<ProviderSocketResult, fidl::Error> {
273            let _response = fidl::client::decode_transaction_body::<
274                fidl::encoding::ResultType<ProviderSocketResponse, fidl_fuchsia_posix::Errno>,
275                fidl::encoding::DefaultFuchsiaResourceDialect,
276                0xdfa6a591ab48fd1,
277            >(_buf?)?;
278            Ok(_response.map(|x| x.s))
279        }
280        self.client.send_query_and_decode::<ProviderSocketRequest, ProviderSocketResult>(
281            (domain, proto),
282            0xdfa6a591ab48fd1,
283            fidl::encoding::DynamicFlags::empty(),
284            _decode,
285        )
286    }
287
288    type SocketWithOptionsResponseFut = fidl::client::QueryResponseFut<
289        ProviderSocketWithOptionsResult,
290        fidl::encoding::DefaultFuchsiaResourceDialect,
291    >;
292    fn r#socket_with_options(
293        &self,
294        mut domain: fidl_fuchsia_posix_socket::Domain,
295        mut proto: &ProtocolAssociation,
296        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
297    ) -> Self::SocketWithOptionsResponseFut {
298        fn _decode(
299            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
300        ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
301            let _response = fidl::client::decode_transaction_body::<
302                fidl::encoding::ResultType<
303                    ProviderSocketWithOptionsResponse,
304                    fidl_fuchsia_posix::Errno,
305                >,
306                fidl::encoding::DefaultFuchsiaResourceDialect,
307                0x34cd6e7e82c46f85,
308            >(_buf?)?;
309            Ok(_response.map(|x| x.s))
310        }
311        self.client.send_query_and_decode::<
312            ProviderSocketWithOptionsRequest,
313            ProviderSocketWithOptionsResult,
314        >(
315            (domain, proto, &mut opts,),
316            0x34cd6e7e82c46f85,
317            fidl::encoding::DynamicFlags::empty(),
318            _decode,
319        )
320    }
321}
322
323pub struct ProviderEventStream {
324    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
325}
326
327impl std::marker::Unpin for ProviderEventStream {}
328
329impl futures::stream::FusedStream for ProviderEventStream {
330    fn is_terminated(&self) -> bool {
331        self.event_receiver.is_terminated()
332    }
333}
334
335impl futures::Stream for ProviderEventStream {
336    type Item = Result<ProviderEvent, fidl::Error>;
337
338    fn poll_next(
339        mut self: std::pin::Pin<&mut Self>,
340        cx: &mut std::task::Context<'_>,
341    ) -> std::task::Poll<Option<Self::Item>> {
342        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
343            &mut self.event_receiver,
344            cx
345        )?) {
346            Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
347            None => std::task::Poll::Ready(None),
348        }
349    }
350}
351
352#[derive(Debug)]
353pub enum ProviderEvent {}
354
355impl ProviderEvent {
356    /// Decodes a message buffer as a [`ProviderEvent`].
357    fn decode(
358        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
359    ) -> Result<ProviderEvent, fidl::Error> {
360        let (bytes, _handles) = buf.split_mut();
361        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
362        debug_assert_eq!(tx_header.tx_id, 0);
363        match tx_header.ordinal {
364            _ => Err(fidl::Error::UnknownOrdinal {
365                ordinal: tx_header.ordinal,
366                protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
367            }),
368        }
369    }
370}
371
372/// A Stream of incoming requests for fuchsia.posix.socket.raw/Provider.
373pub struct ProviderRequestStream {
374    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
375    is_terminated: bool,
376}
377
378impl std::marker::Unpin for ProviderRequestStream {}
379
380impl futures::stream::FusedStream for ProviderRequestStream {
381    fn is_terminated(&self) -> bool {
382        self.is_terminated
383    }
384}
385
386impl fidl::endpoints::RequestStream for ProviderRequestStream {
387    type Protocol = ProviderMarker;
388    type ControlHandle = ProviderControlHandle;
389
390    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
391        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
392    }
393
394    fn control_handle(&self) -> Self::ControlHandle {
395        ProviderControlHandle { inner: self.inner.clone() }
396    }
397
398    fn into_inner(
399        self,
400    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
401    {
402        (self.inner, self.is_terminated)
403    }
404
405    fn from_inner(
406        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
407        is_terminated: bool,
408    ) -> Self {
409        Self { inner, is_terminated }
410    }
411}
412
413impl futures::Stream for ProviderRequestStream {
414    type Item = Result<ProviderRequest, fidl::Error>;
415
416    fn poll_next(
417        mut self: std::pin::Pin<&mut Self>,
418        cx: &mut std::task::Context<'_>,
419    ) -> std::task::Poll<Option<Self::Item>> {
420        let this = &mut *self;
421        if this.inner.check_shutdown(cx) {
422            this.is_terminated = true;
423            return std::task::Poll::Ready(None);
424        }
425        if this.is_terminated {
426            panic!("polled ProviderRequestStream after completion");
427        }
428        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
429            |bytes, handles| {
430                match this.inner.channel().read_etc(cx, bytes, handles) {
431                    std::task::Poll::Ready(Ok(())) => {}
432                    std::task::Poll::Pending => return std::task::Poll::Pending,
433                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
434                        this.is_terminated = true;
435                        return std::task::Poll::Ready(None);
436                    }
437                    std::task::Poll::Ready(Err(e)) => {
438                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
439                            e.into(),
440                        ))));
441                    }
442                }
443
444                // A message has been received from the channel
445                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
446
447                std::task::Poll::Ready(Some(match header.ordinal {
448                    0xdfa6a591ab48fd1 => {
449                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
450                        let mut req = fidl::new_empty!(
451                            ProviderSocketRequest,
452                            fidl::encoding::DefaultFuchsiaResourceDialect
453                        );
454                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketRequest>(&header, _body_bytes, handles, &mut req)?;
455                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
456                        Ok(ProviderRequest::Socket {
457                            domain: req.domain,
458                            proto: req.proto,
459
460                            responder: ProviderSocketResponder {
461                                control_handle: std::mem::ManuallyDrop::new(control_handle),
462                                tx_id: header.tx_id,
463                            },
464                        })
465                    }
466                    0x34cd6e7e82c46f85 => {
467                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
468                        let mut req = fidl::new_empty!(
469                            ProviderSocketWithOptionsRequest,
470                            fidl::encoding::DefaultFuchsiaResourceDialect
471                        );
472                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketWithOptionsRequest>(&header, _body_bytes, handles, &mut req)?;
473                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
474                        Ok(ProviderRequest::SocketWithOptions {
475                            domain: req.domain,
476                            proto: req.proto,
477                            opts: req.opts,
478
479                            responder: ProviderSocketWithOptionsResponder {
480                                control_handle: std::mem::ManuallyDrop::new(control_handle),
481                                tx_id: header.tx_id,
482                            },
483                        })
484                    }
485                    _ => Err(fidl::Error::UnknownOrdinal {
486                        ordinal: header.ordinal,
487                        protocol_name:
488                            <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
489                    }),
490                }))
491            },
492        )
493    }
494}
495
496/// A raw network socket provider.
497#[derive(Debug)]
498pub enum ProviderRequest {
499    /// Requests a raw socket.
500    Socket {
501        domain: fidl_fuchsia_posix_socket::Domain,
502        proto: ProtocolAssociation,
503        responder: ProviderSocketResponder,
504    },
505    /// Requests a raw socket with creation options.
506    SocketWithOptions {
507        domain: fidl_fuchsia_posix_socket::Domain,
508        proto: ProtocolAssociation,
509        opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
510        responder: ProviderSocketWithOptionsResponder,
511    },
512}
513
514impl ProviderRequest {
515    #[allow(irrefutable_let_patterns)]
516    pub fn into_socket(
517        self,
518    ) -> Option<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation, ProviderSocketResponder)>
519    {
520        if let ProviderRequest::Socket { domain, proto, responder } = self {
521            Some((domain, proto, responder))
522        } else {
523            None
524        }
525    }
526
527    #[allow(irrefutable_let_patterns)]
528    pub fn into_socket_with_options(
529        self,
530    ) -> Option<(
531        fidl_fuchsia_posix_socket::Domain,
532        ProtocolAssociation,
533        fidl_fuchsia_posix_socket::SocketCreationOptions,
534        ProviderSocketWithOptionsResponder,
535    )> {
536        if let ProviderRequest::SocketWithOptions { domain, proto, opts, responder } = self {
537            Some((domain, proto, opts, responder))
538        } else {
539            None
540        }
541    }
542
543    /// Name of the method defined in FIDL
544    pub fn method_name(&self) -> &'static str {
545        match *self {
546            ProviderRequest::Socket { .. } => "socket",
547            ProviderRequest::SocketWithOptions { .. } => "socket_with_options",
548        }
549    }
550}
551
552#[derive(Debug, Clone)]
553pub struct ProviderControlHandle {
554    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
555}
556
557impl fidl::endpoints::ControlHandle for ProviderControlHandle {
558    fn shutdown(&self) {
559        self.inner.shutdown()
560    }
561
562    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
563        self.inner.shutdown_with_epitaph(status)
564    }
565
566    fn is_closed(&self) -> bool {
567        self.inner.channel().is_closed()
568    }
569    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
570        self.inner.channel().on_closed()
571    }
572
573    #[cfg(target_os = "fuchsia")]
574    fn signal_peer(
575        &self,
576        clear_mask: zx::Signals,
577        set_mask: zx::Signals,
578    ) -> Result<(), zx_status::Status> {
579        use fidl::Peered;
580        self.inner.channel().signal_peer(clear_mask, set_mask)
581    }
582}
583
584impl ProviderControlHandle {}
585
586#[must_use = "FIDL methods require a response to be sent"]
587#[derive(Debug)]
588pub struct ProviderSocketResponder {
589    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
590    tx_id: u32,
591}
592
593/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
594/// if the responder is dropped without sending a response, so that the client
595/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
596impl std::ops::Drop for ProviderSocketResponder {
597    fn drop(&mut self) {
598        self.control_handle.shutdown();
599        // Safety: drops once, never accessed again
600        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
601    }
602}
603
604impl fidl::endpoints::Responder for ProviderSocketResponder {
605    type ControlHandle = ProviderControlHandle;
606
607    fn control_handle(&self) -> &ProviderControlHandle {
608        &self.control_handle
609    }
610
611    fn drop_without_shutdown(mut self) {
612        // Safety: drops once, never accessed again due to mem::forget
613        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
614        // Prevent Drop from running (which would shut down the channel)
615        std::mem::forget(self);
616    }
617}
618
619impl ProviderSocketResponder {
620    /// Sends a response to the FIDL transaction.
621    ///
622    /// Sets the channel to shutdown if an error occurs.
623    pub fn send(
624        self,
625        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
626    ) -> Result<(), fidl::Error> {
627        let _result = self.send_raw(result);
628        if _result.is_err() {
629            self.control_handle.shutdown();
630        }
631        self.drop_without_shutdown();
632        _result
633    }
634
635    /// Similar to "send" but does not shutdown the channel if an error occurs.
636    pub fn send_no_shutdown_on_err(
637        self,
638        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
639    ) -> Result<(), fidl::Error> {
640        let _result = self.send_raw(result);
641        self.drop_without_shutdown();
642        _result
643    }
644
645    fn send_raw(
646        &self,
647        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
648    ) -> Result<(), fidl::Error> {
649        self.control_handle.inner.send::<fidl::encoding::ResultType<
650            ProviderSocketResponse,
651            fidl_fuchsia_posix::Errno,
652        >>(
653            result.map(|s| (s,)),
654            self.tx_id,
655            0xdfa6a591ab48fd1,
656            fidl::encoding::DynamicFlags::empty(),
657        )
658    }
659}
660
661#[must_use = "FIDL methods require a response to be sent"]
662#[derive(Debug)]
663pub struct ProviderSocketWithOptionsResponder {
664    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
665    tx_id: u32,
666}
667
668/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
669/// if the responder is dropped without sending a response, so that the client
670/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
671impl std::ops::Drop for ProviderSocketWithOptionsResponder {
672    fn drop(&mut self) {
673        self.control_handle.shutdown();
674        // Safety: drops once, never accessed again
675        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
676    }
677}
678
679impl fidl::endpoints::Responder for ProviderSocketWithOptionsResponder {
680    type ControlHandle = ProviderControlHandle;
681
682    fn control_handle(&self) -> &ProviderControlHandle {
683        &self.control_handle
684    }
685
686    fn drop_without_shutdown(mut self) {
687        // Safety: drops once, never accessed again due to mem::forget
688        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
689        // Prevent Drop from running (which would shut down the channel)
690        std::mem::forget(self);
691    }
692}
693
694impl ProviderSocketWithOptionsResponder {
695    /// Sends a response to the FIDL transaction.
696    ///
697    /// Sets the channel to shutdown if an error occurs.
698    pub fn send(
699        self,
700        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
701    ) -> Result<(), fidl::Error> {
702        let _result = self.send_raw(result);
703        if _result.is_err() {
704            self.control_handle.shutdown();
705        }
706        self.drop_without_shutdown();
707        _result
708    }
709
710    /// Similar to "send" but does not shutdown the channel if an error occurs.
711    pub fn send_no_shutdown_on_err(
712        self,
713        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
714    ) -> Result<(), fidl::Error> {
715        let _result = self.send_raw(result);
716        self.drop_without_shutdown();
717        _result
718    }
719
720    fn send_raw(
721        &self,
722        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
723    ) -> Result<(), fidl::Error> {
724        self.control_handle.inner.send::<fidl::encoding::ResultType<
725            ProviderSocketWithOptionsResponse,
726            fidl_fuchsia_posix::Errno,
727        >>(
728            result.map(|s| (s,)),
729            self.tx_id,
730            0x34cd6e7e82c46f85,
731            fidl::encoding::DynamicFlags::empty(),
732        )
733    }
734}
735
736#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
737pub struct SocketMarker;
738
739impl fidl::endpoints::ProtocolMarker for SocketMarker {
740    type Proxy = SocketProxy;
741    type RequestStream = SocketRequestStream;
742    #[cfg(target_os = "fuchsia")]
743    type SynchronousProxy = SocketSynchronousProxy;
744
745    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Socket";
746}
747impl fidl::endpoints::DiscoverableProtocolMarker for SocketMarker {}
748pub type SocketRecvMsgResult = Result<
749    (
750        Option<Box<fidl_fuchsia_net::SocketAddress>>,
751        Vec<u8>,
752        fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
753        u32,
754    ),
755    fidl_fuchsia_posix::Errno,
756>;
757pub type SocketSendMsgResult = Result<(), fidl_fuchsia_posix::Errno>;
758pub type SocketGetInfoResult =
759    Result<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation), fidl_fuchsia_posix::Errno>;
760pub type SocketSetIpHeaderIncludedResult = Result<(), fidl_fuchsia_posix::Errno>;
761pub type SocketGetIpHeaderIncludedResult = Result<bool, fidl_fuchsia_posix::Errno>;
762pub type SocketSetIcmpv6FilterResult = Result<(), fidl_fuchsia_posix::Errno>;
763pub type SocketGetIcmpv6FilterResult = Result<Icmpv6Filter, fidl_fuchsia_posix::Errno>;
764pub type SocketSetIpv6ChecksumResult = Result<(), fidl_fuchsia_posix::Errno>;
765pub type SocketGetIpv6ChecksumResult = Result<Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>;
766
767pub trait SocketProxyInterface: Send + Sync {
768    fn r#clone(
769        &self,
770        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
771    ) -> Result<(), fidl::Error>;
772    type CloseResponseFut: std::future::Future<
773            Output = Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error>,
774        > + Send;
775    fn r#close(&self) -> Self::CloseResponseFut;
776    type QueryResponseFut: std::future::Future<Output = Result<Vec<u8>, fidl::Error>> + Send;
777    fn r#query(&self) -> Self::QueryResponseFut;
778    type SetReuseAddressResponseFut: std::future::Future<
779            Output = Result<
780                fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
781                fidl::Error,
782            >,
783        > + Send;
784    fn r#set_reuse_address(&self, value: bool) -> Self::SetReuseAddressResponseFut;
785    type GetReuseAddressResponseFut: std::future::Future<
786            Output = Result<
787                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
788                fidl::Error,
789            >,
790        > + Send;
791    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut;
792    type GetErrorResponseFut: std::future::Future<
793            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error>,
794        > + Send;
795    fn r#get_error(&self) -> Self::GetErrorResponseFut;
796    type SetBroadcastResponseFut: std::future::Future<
797            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error>,
798        > + Send;
799    fn r#set_broadcast(&self, value: bool) -> Self::SetBroadcastResponseFut;
800    type GetBroadcastResponseFut: std::future::Future<
801            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error>,
802        > + Send;
803    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut;
804    type SetSendBufferResponseFut: std::future::Future<
805            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error>,
806        > + Send;
807    fn r#set_send_buffer(&self, value_bytes: u64) -> Self::SetSendBufferResponseFut;
808    type GetSendBufferResponseFut: std::future::Future<
809            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error>,
810        > + Send;
811    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut;
812    type SetReceiveBufferResponseFut: std::future::Future<
813            Output = Result<
814                fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
815                fidl::Error,
816            >,
817        > + Send;
818    fn r#set_receive_buffer(&self, value_bytes: u64) -> Self::SetReceiveBufferResponseFut;
819    type GetReceiveBufferResponseFut: std::future::Future<
820            Output = Result<
821                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
822                fidl::Error,
823            >,
824        > + Send;
825    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut;
826    type SetKeepAliveResponseFut: std::future::Future<
827            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error>,
828        > + Send;
829    fn r#set_keep_alive(&self, value: bool) -> Self::SetKeepAliveResponseFut;
830    type GetKeepAliveResponseFut: std::future::Future<
831            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error>,
832        > + Send;
833    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut;
834    type SetOutOfBandInlineResponseFut: std::future::Future<
835            Output = Result<
836                fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
837                fidl::Error,
838            >,
839        > + Send;
840    fn r#set_out_of_band_inline(&self, value: bool) -> Self::SetOutOfBandInlineResponseFut;
841    type GetOutOfBandInlineResponseFut: std::future::Future<
842            Output = Result<
843                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
844                fidl::Error,
845            >,
846        > + Send;
847    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut;
848    type SetNoCheckResponseFut: std::future::Future<
849            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error>,
850        > + Send;
851    fn r#set_no_check(&self, value: bool) -> Self::SetNoCheckResponseFut;
852    type GetNoCheckResponseFut: std::future::Future<
853            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error>,
854        > + Send;
855    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut;
856    type SetLingerResponseFut: std::future::Future<
857            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error>,
858        > + Send;
859    fn r#set_linger(&self, linger: bool, length_secs: u32) -> Self::SetLingerResponseFut;
860    type GetLingerResponseFut: std::future::Future<
861            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error>,
862        > + Send;
863    fn r#get_linger(&self) -> Self::GetLingerResponseFut;
864    type SetReusePortResponseFut: std::future::Future<
865            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error>,
866        > + Send;
867    fn r#set_reuse_port(
868        &self,
869        value: fidl_fuchsia_posix_socket::ReusePortOption,
870    ) -> Self::SetReusePortResponseFut;
871    type SetReusePortDeprecatedResponseFut: std::future::Future<
872            Output = Result<
873                fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
874                fidl::Error,
875            >,
876        > + Send;
877    fn r#set_reuse_port_deprecated(&self, value: bool) -> Self::SetReusePortDeprecatedResponseFut;
878    type GetReusePortResponseFut: std::future::Future<
879            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
880        > + Send;
881    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
882    type GetAcceptConnResponseFut: std::future::Future<
883            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
884        > + Send;
885    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
886    type SetBindToDeviceResponseFut: std::future::Future<
887            Output = Result<
888                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
889                fidl::Error,
890            >,
891        > + Send;
892    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
893    type GetBindToDeviceResponseFut: std::future::Future<
894            Output = Result<
895                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
896                fidl::Error,
897            >,
898        > + Send;
899    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
900    type SetBindToInterfaceIndexResponseFut: std::future::Future<
901            Output = Result<
902                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
903                fidl::Error,
904            >,
905        > + Send;
906    fn r#set_bind_to_interface_index(&self, value: u64)
907    -> Self::SetBindToInterfaceIndexResponseFut;
908    type GetBindToInterfaceIndexResponseFut: std::future::Future<
909            Output = Result<
910                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
911                fidl::Error,
912            >,
913        > + Send;
914    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
915    type SetTimestampResponseFut: std::future::Future<
916            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
917        > + Send;
918    fn r#set_timestamp(
919        &self,
920        value: fidl_fuchsia_posix_socket::TimestampOption,
921    ) -> Self::SetTimestampResponseFut;
922    type GetTimestampResponseFut: std::future::Future<
923            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
924        > + Send;
925    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
926    type SetMarkResponseFut: std::future::Future<
927            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
928        > + Send;
929    fn r#set_mark(
930        &self,
931        domain: fidl_fuchsia_net::MarkDomain,
932        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
933    ) -> Self::SetMarkResponseFut;
934    type GetMarkResponseFut: std::future::Future<
935            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
936        > + Send;
937    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
938    type GetCookieResponseFut: std::future::Future<
939            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error>,
940        > + Send;
941    fn r#get_cookie(&self) -> Self::GetCookieResponseFut;
942    type BindResponseFut: std::future::Future<
943            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
944        > + Send;
945    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
946    type ConnectResponseFut: std::future::Future<
947            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
948        > + Send;
949    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
950    type DisconnectResponseFut: std::future::Future<
951            Output = Result<
952                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
953                fidl::Error,
954            >,
955        > + Send;
956    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
957    type GetSockNameResponseFut: std::future::Future<
958            Output = Result<
959                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
960                fidl::Error,
961            >,
962        > + Send;
963    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
964    type GetPeerNameResponseFut: std::future::Future<
965            Output = Result<
966                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
967                fidl::Error,
968            >,
969        > + Send;
970    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
971    type ShutdownResponseFut: std::future::Future<
972            Output = Result<
973                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
974                fidl::Error,
975            >,
976        > + Send;
977    fn r#shutdown(
978        &self,
979        mode: fidl_fuchsia_posix_socket::ShutdownMode,
980    ) -> Self::ShutdownResponseFut;
981    type SetIpTypeOfServiceResponseFut: std::future::Future<
982            Output = Result<
983                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
984                fidl::Error,
985            >,
986        > + Send;
987    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
988    type GetIpTypeOfServiceResponseFut: std::future::Future<
989            Output = Result<
990                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
991                fidl::Error,
992            >,
993        > + Send;
994    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
995    type SetIpTtlResponseFut: std::future::Future<
996            Output = Result<
997                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
998                fidl::Error,
999            >,
1000        > + Send;
1001    fn r#set_ip_ttl(
1002        &self,
1003        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1004    ) -> Self::SetIpTtlResponseFut;
1005    type GetIpTtlResponseFut: std::future::Future<
1006            Output = Result<
1007                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
1008                fidl::Error,
1009            >,
1010        > + Send;
1011    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1012    type SetIpPacketInfoResponseFut: std::future::Future<
1013            Output = Result<
1014                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1015                fidl::Error,
1016            >,
1017        > + Send;
1018    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1019    type GetIpPacketInfoResponseFut: std::future::Future<
1020            Output = Result<
1021                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1022                fidl::Error,
1023            >,
1024        > + Send;
1025    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1026    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1027            Output = Result<
1028                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1029                fidl::Error,
1030            >,
1031        > + Send;
1032    fn r#set_ip_receive_type_of_service(
1033        &self,
1034        value: bool,
1035    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1036    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1037            Output = Result<
1038                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1039                fidl::Error,
1040            >,
1041        > + Send;
1042    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1043    type SetIpReceiveTtlResponseFut: std::future::Future<
1044            Output = Result<
1045                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1046                fidl::Error,
1047            >,
1048        > + Send;
1049    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1050    type GetIpReceiveTtlResponseFut: std::future::Future<
1051            Output = Result<
1052                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1053                fidl::Error,
1054            >,
1055        > + Send;
1056    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1057    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1058            Output = Result<
1059                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1060                fidl::Error,
1061            >,
1062        > + Send;
1063    fn r#set_ip_multicast_interface(
1064        &self,
1065        iface: u64,
1066        address: &fidl_fuchsia_net::Ipv4Address,
1067    ) -> Self::SetIpMulticastInterfaceResponseFut;
1068    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1069            Output = Result<
1070                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1071                fidl::Error,
1072            >,
1073        > + Send;
1074    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1075    type SetIpMulticastTtlResponseFut: std::future::Future<
1076            Output = Result<
1077                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1078                fidl::Error,
1079            >,
1080        > + Send;
1081    fn r#set_ip_multicast_ttl(
1082        &self,
1083        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1084    ) -> Self::SetIpMulticastTtlResponseFut;
1085    type GetIpMulticastTtlResponseFut: std::future::Future<
1086            Output = Result<
1087                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1088                fidl::Error,
1089            >,
1090        > + Send;
1091    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1092    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1093            Output = Result<
1094                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1095                fidl::Error,
1096            >,
1097        > + Send;
1098    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1099    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1100            Output = Result<
1101                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1102                fidl::Error,
1103            >,
1104        > + Send;
1105    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1106    type AddIpMembershipResponseFut: std::future::Future<
1107            Output = Result<
1108                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1109                fidl::Error,
1110            >,
1111        > + Send;
1112    fn r#add_ip_membership(
1113        &self,
1114        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1115    ) -> Self::AddIpMembershipResponseFut;
1116    type DropIpMembershipResponseFut: std::future::Future<
1117            Output = Result<
1118                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1119                fidl::Error,
1120            >,
1121        > + Send;
1122    fn r#drop_ip_membership(
1123        &self,
1124        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1125    ) -> Self::DropIpMembershipResponseFut;
1126    type SetIpTransparentResponseFut: std::future::Future<
1127            Output = Result<
1128                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1129                fidl::Error,
1130            >,
1131        > + Send;
1132    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1133    type GetIpTransparentResponseFut: std::future::Future<
1134            Output = Result<
1135                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1136                fidl::Error,
1137            >,
1138        > + Send;
1139    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1140    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1141    fn r#set_ip_receive_original_destination_address(
1142        &self,
1143        value: bool,
1144    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1145    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1146    fn r#get_ip_receive_original_destination_address(
1147        &self,
1148    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1149    type AddIpv6MembershipResponseFut: std::future::Future<
1150            Output = Result<
1151                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1152                fidl::Error,
1153            >,
1154        > + Send;
1155    fn r#add_ipv6_membership(
1156        &self,
1157        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1158    ) -> Self::AddIpv6MembershipResponseFut;
1159    type DropIpv6MembershipResponseFut: std::future::Future<
1160            Output = Result<
1161                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1162                fidl::Error,
1163            >,
1164        > + Send;
1165    fn r#drop_ipv6_membership(
1166        &self,
1167        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1168    ) -> Self::DropIpv6MembershipResponseFut;
1169    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1170            Output = Result<
1171                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1172                fidl::Error,
1173            >,
1174        > + Send;
1175    fn r#set_ipv6_multicast_interface(
1176        &self,
1177        value: u64,
1178    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1179    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1180            Output = Result<
1181                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1182                fidl::Error,
1183            >,
1184        > + Send;
1185    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1186    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1187            Output = Result<
1188                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1189                fidl::Error,
1190            >,
1191        > + Send;
1192    fn r#set_ipv6_unicast_hops(
1193        &self,
1194        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1195    ) -> Self::SetIpv6UnicastHopsResponseFut;
1196    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1197            Output = Result<
1198                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1199                fidl::Error,
1200            >,
1201        > + Send;
1202    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1203    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1204            Output = Result<
1205                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1206                fidl::Error,
1207            >,
1208        > + Send;
1209    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1210    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1211            Output = Result<
1212                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1213                fidl::Error,
1214            >,
1215        > + Send;
1216    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1217    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1218            Output = Result<
1219                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1220                fidl::Error,
1221            >,
1222        > + Send;
1223    fn r#set_ipv6_multicast_hops(
1224        &self,
1225        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1226    ) -> Self::SetIpv6MulticastHopsResponseFut;
1227    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1228            Output = Result<
1229                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1230                fidl::Error,
1231            >,
1232        > + Send;
1233    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1234    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1235            Output = Result<
1236                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1237                fidl::Error,
1238            >,
1239        > + Send;
1240    fn r#set_ipv6_multicast_loopback(
1241        &self,
1242        value: bool,
1243    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1244    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1245            Output = Result<
1246                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1247                fidl::Error,
1248            >,
1249        > + Send;
1250    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1251    type SetIpv6OnlyResponseFut: std::future::Future<
1252            Output = Result<
1253                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1254                fidl::Error,
1255            >,
1256        > + Send;
1257    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1258    type GetIpv6OnlyResponseFut: std::future::Future<
1259            Output = Result<
1260                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1261                fidl::Error,
1262            >,
1263        > + Send;
1264    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1265    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1266            Output = Result<
1267                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1268                fidl::Error,
1269            >,
1270        > + Send;
1271    fn r#set_ipv6_receive_traffic_class(
1272        &self,
1273        value: bool,
1274    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1275    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1276            Output = Result<
1277                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1278                fidl::Error,
1279            >,
1280        > + Send;
1281    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1282    type SetIpv6TrafficClassResponseFut: std::future::Future<
1283            Output = Result<
1284                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1285                fidl::Error,
1286            >,
1287        > + Send;
1288    fn r#set_ipv6_traffic_class(
1289        &self,
1290        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1291    ) -> Self::SetIpv6TrafficClassResponseFut;
1292    type GetIpv6TrafficClassResponseFut: std::future::Future<
1293            Output = Result<
1294                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1295                fidl::Error,
1296            >,
1297        > + Send;
1298    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1299    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1300            Output = Result<
1301                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1302                fidl::Error,
1303            >,
1304        > + Send;
1305    fn r#set_ipv6_receive_packet_info(
1306        &self,
1307        value: bool,
1308    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1309    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1310            Output = Result<
1311                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1312                fidl::Error,
1313            >,
1314        > + Send;
1315    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1316    type GetOriginalDestinationResponseFut: std::future::Future<
1317            Output = Result<
1318                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1319                fidl::Error,
1320            >,
1321        > + Send;
1322    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1323    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1324        + Send;
1325    fn r#describe(&self) -> Self::DescribeResponseFut;
1326    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1327        + Send;
1328    fn r#recv_msg(
1329        &self,
1330        want_addr: bool,
1331        data_len: u32,
1332        want_control: bool,
1333        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1334    ) -> Self::RecvMsgResponseFut;
1335    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1336        + Send;
1337    fn r#send_msg(
1338        &self,
1339        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1340        data: &[u8],
1341        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1342        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1343    ) -> Self::SendMsgResponseFut;
1344    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1345        + Send;
1346    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1347    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1348        + Send;
1349    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1350    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1351        + Send;
1352    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1353    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1354        + Send;
1355    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1356    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1357        + Send;
1358    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1359    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1360        + Send;
1361    fn r#set_ipv6_checksum(
1362        &self,
1363        config: &Ipv6ChecksumConfiguration,
1364    ) -> Self::SetIpv6ChecksumResponseFut;
1365    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1366        + Send;
1367    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1368}
1369#[derive(Debug)]
1370#[cfg(target_os = "fuchsia")]
1371pub struct SocketSynchronousProxy {
1372    client: fidl::client::sync::Client,
1373}
1374
1375#[cfg(target_os = "fuchsia")]
1376impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1377    type Proxy = SocketProxy;
1378    type Protocol = SocketMarker;
1379
1380    fn from_channel(inner: fidl::Channel) -> Self {
1381        Self::new(inner)
1382    }
1383
1384    fn into_channel(self) -> fidl::Channel {
1385        self.client.into_channel()
1386    }
1387
1388    fn as_channel(&self) -> &fidl::Channel {
1389        self.client.as_channel()
1390    }
1391}
1392
1393#[cfg(target_os = "fuchsia")]
1394impl SocketSynchronousProxy {
1395    pub fn new(channel: fidl::Channel) -> Self {
1396        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1397        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1398    }
1399
1400    pub fn into_channel(self) -> fidl::Channel {
1401        self.client.into_channel()
1402    }
1403
1404    /// Waits until an event arrives and returns it. It is safe for other
1405    /// threads to make concurrent requests while waiting for an event.
1406    pub fn wait_for_event(
1407        &self,
1408        deadline: zx::MonotonicInstant,
1409    ) -> Result<SocketEvent, fidl::Error> {
1410        SocketEvent::decode(self.client.wait_for_event(deadline)?)
1411    }
1412
1413    pub fn r#clone(
1414        &self,
1415        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1416    ) -> Result<(), fidl::Error> {
1417        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1418            (request,),
1419            0x20d8a7aba2168a79,
1420            fidl::encoding::DynamicFlags::empty(),
1421        )
1422    }
1423
1424    /// Terminates the connection.
1425    ///
1426    /// After calling `Close`, the client must not send any other requests.
1427    ///
1428    /// Servers, after sending the status response, should close the connection
1429    /// regardless of status and without sending an epitaph.
1430    ///
1431    /// Closing the client end of the channel should be semantically equivalent
1432    /// to calling `Close` without knowing when the close has completed or its
1433    /// status.
1434    pub fn r#close(
1435        &self,
1436        ___deadline: zx::MonotonicInstant,
1437    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1438        let _response = self.client.send_query::<
1439            fidl::encoding::EmptyPayload,
1440            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1441        >(
1442            (),
1443            0x5ac5d459ad7f657e,
1444            fidl::encoding::DynamicFlags::empty(),
1445            ___deadline,
1446        )?;
1447        Ok(_response.map(|x| x))
1448    }
1449
1450    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1451        let _response = self.client.send_query::<
1452            fidl::encoding::EmptyPayload,
1453            fidl_fuchsia_unknown::QueryableQueryResponse,
1454        >(
1455            (),
1456            0x2658edee9decfc06,
1457            fidl::encoding::DynamicFlags::empty(),
1458            ___deadline,
1459        )?;
1460        Ok(_response.protocol)
1461    }
1462
1463    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1464    pub fn r#set_reuse_address(
1465        &self,
1466        mut value: bool,
1467        ___deadline: zx::MonotonicInstant,
1468    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1469        let _response = self.client.send_query::<
1470            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1471            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1472        >(
1473            (value,),
1474            0x1fd74ee8b9a4a876,
1475            fidl::encoding::DynamicFlags::empty(),
1476            ___deadline,
1477        )?;
1478        Ok(_response.map(|x| x))
1479    }
1480
1481    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1482    pub fn r#get_reuse_address(
1483        &self,
1484        ___deadline: zx::MonotonicInstant,
1485    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1486        let _response = self
1487            .client
1488            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1489                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1490                fidl_fuchsia_posix::Errno,
1491            >>(
1492                (), 0x67b7206b8d1bc0a5, fidl::encoding::DynamicFlags::empty(), ___deadline
1493            )?;
1494        Ok(_response.map(|x| x.value))
1495    }
1496
1497    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1498    /// Returns the last error if there is an error set on the socket.
1499    pub fn r#get_error(
1500        &self,
1501        ___deadline: zx::MonotonicInstant,
1502    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1503        let _response =
1504            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1505                fidl::encoding::EmptyStruct,
1506                fidl_fuchsia_posix::Errno,
1507            >>(
1508                (),
1509                0x5aad39b33e5f6ebb,
1510                fidl::encoding::DynamicFlags::empty(),
1511                ___deadline,
1512            )?;
1513        Ok(_response.map(|x| x))
1514    }
1515
1516    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1517    pub fn r#set_broadcast(
1518        &self,
1519        mut value: bool,
1520        ___deadline: zx::MonotonicInstant,
1521    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1522        let _response = self.client.send_query::<
1523            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1524            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1525        >(
1526            (value,),
1527            0x6023e081ce3cd947,
1528            fidl::encoding::DynamicFlags::empty(),
1529            ___deadline,
1530        )?;
1531        Ok(_response.map(|x| x))
1532    }
1533
1534    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1535    pub fn r#get_broadcast(
1536        &self,
1537        ___deadline: zx::MonotonicInstant,
1538    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1539        let _response = self
1540            .client
1541            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1542                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1543                fidl_fuchsia_posix::Errno,
1544            >>(
1545                (), 0x68796fc556f9780d, fidl::encoding::DynamicFlags::empty(), ___deadline
1546            )?;
1547        Ok(_response.map(|x| x.value))
1548    }
1549
1550    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1551    pub fn r#set_send_buffer(
1552        &self,
1553        mut value_bytes: u64,
1554        ___deadline: zx::MonotonicInstant,
1555    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1556        let _response = self.client.send_query::<
1557            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1558            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1559        >(
1560            (value_bytes,),
1561            0x756eac32d73a7a70,
1562            fidl::encoding::DynamicFlags::empty(),
1563            ___deadline,
1564        )?;
1565        Ok(_response.map(|x| x))
1566    }
1567
1568    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1569    pub fn r#get_send_buffer(
1570        &self,
1571        ___deadline: zx::MonotonicInstant,
1572    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1573        let _response = self
1574            .client
1575            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1576                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1577                fidl_fuchsia_posix::Errno,
1578            >>(
1579                (), 0x78a52fd9c7b2410b, fidl::encoding::DynamicFlags::empty(), ___deadline
1580            )?;
1581        Ok(_response.map(|x| x.value_bytes))
1582    }
1583
1584    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1585    pub fn r#set_receive_buffer(
1586        &self,
1587        mut value_bytes: u64,
1588        ___deadline: zx::MonotonicInstant,
1589    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1590        let _response = self.client.send_query::<
1591            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1592            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1593        >(
1594            (value_bytes,),
1595            0x6b0cf2f1919c7001,
1596            fidl::encoding::DynamicFlags::empty(),
1597            ___deadline,
1598        )?;
1599        Ok(_response.map(|x| x))
1600    }
1601
1602    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1603    pub fn r#get_receive_buffer(
1604        &self,
1605        ___deadline: zx::MonotonicInstant,
1606    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1607        let _response = self
1608            .client
1609            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1610                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1611                fidl_fuchsia_posix::Errno,
1612            >>(
1613                (), 0x14c1a4b64f709e5c, fidl::encoding::DynamicFlags::empty(), ___deadline
1614            )?;
1615        Ok(_response.map(|x| x.value_bytes))
1616    }
1617
1618    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1619    pub fn r#set_keep_alive(
1620        &self,
1621        mut value: bool,
1622        ___deadline: zx::MonotonicInstant,
1623    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1624        let _response = self.client.send_query::<
1625            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1626            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1627        >(
1628            (value,),
1629            0x572df8f0b920d2c7,
1630            fidl::encoding::DynamicFlags::empty(),
1631            ___deadline,
1632        )?;
1633        Ok(_response.map(|x| x))
1634    }
1635
1636    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1637    pub fn r#get_keep_alive(
1638        &self,
1639        ___deadline: zx::MonotonicInstant,
1640    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1641        let _response = self
1642            .client
1643            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1644                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1645                fidl_fuchsia_posix::Errno,
1646            >>(
1647                (), 0x2dd29d3215f2c9d2, fidl::encoding::DynamicFlags::empty(), ___deadline
1648            )?;
1649        Ok(_response.map(|x| x.value))
1650    }
1651
1652    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1653    pub fn r#set_out_of_band_inline(
1654        &self,
1655        mut value: bool,
1656        ___deadline: zx::MonotonicInstant,
1657    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1658        let _response = self.client.send_query::<
1659            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1660            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1661        >(
1662            (value,),
1663            0x3ecb49968bee439,
1664            fidl::encoding::DynamicFlags::empty(),
1665            ___deadline,
1666        )?;
1667        Ok(_response.map(|x| x))
1668    }
1669
1670    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1671    pub fn r#get_out_of_band_inline(
1672        &self,
1673        ___deadline: zx::MonotonicInstant,
1674    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1675        let _response = self
1676            .client
1677            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1678                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1679                fidl_fuchsia_posix::Errno,
1680            >>(
1681                (), 0x348c1ab3aeca1745, fidl::encoding::DynamicFlags::empty(), ___deadline
1682            )?;
1683        Ok(_response.map(|x| x.value))
1684    }
1685
1686    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1687    pub fn r#set_no_check(
1688        &self,
1689        mut value: bool,
1690        ___deadline: zx::MonotonicInstant,
1691    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1692        let _response = self.client.send_query::<
1693            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1694            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1695        >(
1696            (value,),
1697            0x6bbf00c53a4c78c2,
1698            fidl::encoding::DynamicFlags::empty(),
1699            ___deadline,
1700        )?;
1701        Ok(_response.map(|x| x))
1702    }
1703
1704    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1705    pub fn r#get_no_check(
1706        &self,
1707        ___deadline: zx::MonotonicInstant,
1708    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1709        let _response = self
1710            .client
1711            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1712                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1713                fidl_fuchsia_posix::Errno,
1714            >>(
1715                (), 0x2cd4249286417694, fidl::encoding::DynamicFlags::empty(), ___deadline
1716            )?;
1717        Ok(_response.map(|x| x.value))
1718    }
1719
1720    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1721    pub fn r#set_linger(
1722        &self,
1723        mut linger: bool,
1724        mut length_secs: u32,
1725        ___deadline: zx::MonotonicInstant,
1726    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1727        let _response = self.client.send_query::<
1728            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1729            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1730        >(
1731            (linger, length_secs,),
1732            0x45386351246e998e,
1733            fidl::encoding::DynamicFlags::empty(),
1734            ___deadline,
1735        )?;
1736        Ok(_response.map(|x| x))
1737    }
1738
1739    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1740    pub fn r#get_linger(
1741        &self,
1742        ___deadline: zx::MonotonicInstant,
1743    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1744        let _response = self
1745            .client
1746            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1747                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1748                fidl_fuchsia_posix::Errno,
1749            >>(
1750                (), 0x48eb20fc5ccb0e45, fidl::encoding::DynamicFlags::empty(), ___deadline
1751            )?;
1752        Ok(_response.map(|x| (x.linger, x.length_secs)))
1753    }
1754
1755    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1756    pub fn r#set_reuse_port(
1757        &self,
1758        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
1759        ___deadline: zx::MonotonicInstant,
1760    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1761        let _response = self.client.send_query::<
1762            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1763            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1764        >(
1765            (&mut value,),
1766            0x547dc9cc0455189e,
1767            fidl::encoding::DynamicFlags::empty(),
1768            ___deadline,
1769        )?;
1770        Ok(_response.map(|x| x))
1771    }
1772
1773    pub fn r#set_reuse_port_deprecated(
1774        &self,
1775        mut value: bool,
1776        ___deadline: zx::MonotonicInstant,
1777    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
1778    {
1779        let _response = self.client.send_query::<
1780            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
1781            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1782        >(
1783            (value,),
1784            0x24dd3e5cb36d9ccb,
1785            fidl::encoding::DynamicFlags::empty(),
1786            ___deadline,
1787        )?;
1788        Ok(_response.map(|x| x))
1789    }
1790
1791    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1792    pub fn r#get_reuse_port(
1793        &self,
1794        ___deadline: zx::MonotonicInstant,
1795    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1796        let _response = self
1797            .client
1798            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1799                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1800                fidl_fuchsia_posix::Errno,
1801            >>(
1802                (), 0x7a112c1ab54ff828, fidl::encoding::DynamicFlags::empty(), ___deadline
1803            )?;
1804        Ok(_response.map(|x| x.value))
1805    }
1806
1807    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1808    pub fn r#get_accept_conn(
1809        &self,
1810        ___deadline: zx::MonotonicInstant,
1811    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1812        let _response = self
1813            .client
1814            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1815                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1816                fidl_fuchsia_posix::Errno,
1817            >>(
1818                (), 0x67ce6db6c2ec8966, fidl::encoding::DynamicFlags::empty(), ___deadline
1819            )?;
1820        Ok(_response.map(|x| x.value))
1821    }
1822
1823    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1824    pub fn r#set_bind_to_device(
1825        &self,
1826        mut value: &str,
1827        ___deadline: zx::MonotonicInstant,
1828    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1829        let _response = self.client.send_query::<
1830            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1831            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1832        >(
1833            (value,),
1834            0x2118b483f28aafc4,
1835            fidl::encoding::DynamicFlags::empty(),
1836            ___deadline,
1837        )?;
1838        Ok(_response.map(|x| x))
1839    }
1840
1841    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1842    pub fn r#get_bind_to_device(
1843        &self,
1844        ___deadline: zx::MonotonicInstant,
1845    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1846        let _response = self
1847            .client
1848            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1849                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1850                fidl_fuchsia_posix::Errno,
1851            >>(
1852                (), 0x1ab1fbf0ef7906c8, fidl::encoding::DynamicFlags::empty(), ___deadline
1853            )?;
1854        Ok(_response.map(|x| x.value))
1855    }
1856
1857    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1858    /// If `value` is 0, this clears the bound interface.
1859    pub fn r#set_bind_to_interface_index(
1860        &self,
1861        mut value: u64,
1862        ___deadline: zx::MonotonicInstant,
1863    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1864    {
1865        let _response = self.client.send_query::<
1866            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1867            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1868        >(
1869            (value,),
1870            0x6e387a0def00821,
1871            fidl::encoding::DynamicFlags::empty(),
1872            ___deadline,
1873        )?;
1874        Ok(_response.map(|x| x))
1875    }
1876
1877    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1878    pub fn r#get_bind_to_interface_index(
1879        &self,
1880        ___deadline: zx::MonotonicInstant,
1881    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
1882    {
1883        let _response = self
1884            .client
1885            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1886                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
1887                fidl_fuchsia_posix::Errno,
1888            >>(
1889                (), 0x59c31dd3e3078295, fidl::encoding::DynamicFlags::empty(), ___deadline
1890            )?;
1891        Ok(_response.map(|x| x.value))
1892    }
1893
1894    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1895    pub fn r#set_timestamp(
1896        &self,
1897        mut value: fidl_fuchsia_posix_socket::TimestampOption,
1898        ___deadline: zx::MonotonicInstant,
1899    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
1900        let _response = self.client.send_query::<
1901            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
1902            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1903        >(
1904            (value,),
1905            0x285d6516c263d839,
1906            fidl::encoding::DynamicFlags::empty(),
1907            ___deadline,
1908        )?;
1909        Ok(_response.map(|x| x))
1910    }
1911
1912    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1913    pub fn r#get_timestamp(
1914        &self,
1915        ___deadline: zx::MonotonicInstant,
1916    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
1917        let _response = self
1918            .client
1919            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1920                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
1921                fidl_fuchsia_posix::Errno,
1922            >>(
1923                (), 0x49f2fffbbcc2bd27, fidl::encoding::DynamicFlags::empty(), ___deadline
1924            )?;
1925        Ok(_response.map(|x| x.value))
1926    }
1927
1928    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1929    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1930    /// mark can be set independently in each domain.
1931    pub fn r#set_mark(
1932        &self,
1933        mut domain: fidl_fuchsia_net::MarkDomain,
1934        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1935        ___deadline: zx::MonotonicInstant,
1936    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
1937        let _response = self.client.send_query::<
1938            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
1939            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1940        >(
1941            (domain, mark,),
1942            0x6ead6de09f653236,
1943            fidl::encoding::DynamicFlags::empty(),
1944            ___deadline,
1945        )?;
1946        Ok(_response.map(|x| x))
1947    }
1948
1949    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1950    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1951    /// mark can be retrieved independently in each domain.
1952    pub fn r#get_mark(
1953        &self,
1954        mut domain: fidl_fuchsia_net::MarkDomain,
1955        ___deadline: zx::MonotonicInstant,
1956    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
1957        let _response = self.client.send_query::<
1958            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
1959            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
1960        >(
1961            (domain,),
1962            0x57a2752c61d93d47,
1963            fidl::encoding::DynamicFlags::empty(),
1964            ___deadline,
1965        )?;
1966        Ok(_response.map(|x| x.mark))
1967    }
1968
1969    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
1970    pub fn r#get_cookie(
1971        &self,
1972        ___deadline: zx::MonotonicInstant,
1973    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
1974        let _response = self
1975            .client
1976            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1977                fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
1978                fidl_fuchsia_posix::Errno,
1979            >>(
1980                (), 0x2c2f47fd8f924e52, fidl::encoding::DynamicFlags::empty(), ___deadline
1981            )?;
1982        Ok(_response.map(|x| x.value))
1983    }
1984
1985    /// Sets the local address used for the socket.
1986    pub fn r#bind(
1987        &self,
1988        mut addr: &fidl_fuchsia_net::SocketAddress,
1989        ___deadline: zx::MonotonicInstant,
1990    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
1991        let _response = self.client.send_query::<
1992            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
1993            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1994        >(
1995            (addr,),
1996            0x4bc6400ae92125d,
1997            fidl::encoding::DynamicFlags::empty(),
1998            ___deadline,
1999        )?;
2000        Ok(_response.map(|x| x))
2001    }
2002
2003    /// Initiates a connection to a remote address.
2004    pub fn r#connect(
2005        &self,
2006        mut addr: &fidl_fuchsia_net::SocketAddress,
2007        ___deadline: zx::MonotonicInstant,
2008    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
2009        let _response = self.client.send_query::<
2010            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
2011            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2012        >(
2013            (addr,),
2014            0x5f05f19bfdd38871,
2015            fidl::encoding::DynamicFlags::empty(),
2016            ___deadline,
2017        )?;
2018        Ok(_response.map(|x| x))
2019    }
2020
2021    /// Clears connection information from this socket.
2022    pub fn r#disconnect(
2023        &self,
2024        ___deadline: zx::MonotonicInstant,
2025    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
2026        let _response =
2027            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2028                fidl::encoding::EmptyStruct,
2029                fidl_fuchsia_posix::Errno,
2030            >>(
2031                (),
2032                0x74e63b91f7b29b2,
2033                fidl::encoding::DynamicFlags::empty(),
2034                ___deadline,
2035            )?;
2036        Ok(_response.map(|x| x))
2037    }
2038
2039    /// Retrieves the local socket address.
2040    pub fn r#get_sock_name(
2041        &self,
2042        ___deadline: zx::MonotonicInstant,
2043    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2044        let _response = self
2045            .client
2046            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2047                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2048                fidl_fuchsia_posix::Errno,
2049            >>(
2050                (), 0x475f23f84a1a4f85, fidl::encoding::DynamicFlags::empty(), ___deadline
2051            )?;
2052        Ok(_response.map(|x| x.addr))
2053    }
2054
2055    /// Retrieves the remote socket address.
2056    pub fn r#get_peer_name(
2057        &self,
2058        ___deadline: zx::MonotonicInstant,
2059    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2060        let _response = self
2061            .client
2062            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2063                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2064                fidl_fuchsia_posix::Errno,
2065            >>(
2066                (), 0x1ffecf4bd5b6432e, fidl::encoding::DynamicFlags::empty(), ___deadline
2067            )?;
2068        Ok(_response.map(|x| x.addr))
2069    }
2070
2071    /// Shuts down part of the socket.
2072    pub fn r#shutdown(
2073        &self,
2074        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2075        ___deadline: zx::MonotonicInstant,
2076    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2077        let _response = self.client.send_query::<
2078            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2079            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2080        >(
2081            (mode,),
2082            0x247f38b6db68c336,
2083            fidl::encoding::DynamicFlags::empty(),
2084            ___deadline,
2085        )?;
2086        Ok(_response.map(|x| x))
2087    }
2088
2089    /// Set `SOL_IP` -> `IP_TOS`.
2090    pub fn r#set_ip_type_of_service(
2091        &self,
2092        mut value: u8,
2093        ___deadline: zx::MonotonicInstant,
2094    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2095    {
2096        let _response = self.client.send_query::<
2097            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2098            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2099        >(
2100            (value,),
2101            0x995c600475b6d46,
2102            fidl::encoding::DynamicFlags::empty(),
2103            ___deadline,
2104        )?;
2105        Ok(_response.map(|x| x))
2106    }
2107
2108    /// Get `SOL_IP` -> `IP_TOS`.
2109    pub fn r#get_ip_type_of_service(
2110        &self,
2111        ___deadline: zx::MonotonicInstant,
2112    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2113    {
2114        let _response = self
2115            .client
2116            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2117                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2118                fidl_fuchsia_posix::Errno,
2119            >>(
2120                (), 0x3814a04259f75fcb, fidl::encoding::DynamicFlags::empty(), ___deadline
2121            )?;
2122        Ok(_response.map(|x| x.value))
2123    }
2124
2125    /// Set `SOL_IP` -> `IP_TTL`.
2126    pub fn r#set_ip_ttl(
2127        &self,
2128        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2129        ___deadline: zx::MonotonicInstant,
2130    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2131        let _response = self.client.send_query::<
2132            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2133            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2134        >(
2135            (value,),
2136            0x29e2424b433ae1ef,
2137            fidl::encoding::DynamicFlags::empty(),
2138            ___deadline,
2139        )?;
2140        Ok(_response.map(|x| x))
2141    }
2142
2143    /// Get `SOL_IP` -> `IP_TTL`.
2144    pub fn r#get_ip_ttl(
2145        &self,
2146        ___deadline: zx::MonotonicInstant,
2147    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2148        let _response = self
2149            .client
2150            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2151                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2152                fidl_fuchsia_posix::Errno,
2153            >>(
2154                (), 0x47e47fa1f24da471, fidl::encoding::DynamicFlags::empty(), ___deadline
2155            )?;
2156        Ok(_response.map(|x| x.value))
2157    }
2158
2159    /// Set `SOL_IP` -> `IP_PKTINFO`.
2160    pub fn r#set_ip_packet_info(
2161        &self,
2162        mut value: bool,
2163        ___deadline: zx::MonotonicInstant,
2164    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2165    {
2166        let _response = self.client.send_query::<
2167            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2168            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2169        >(
2170            (value,),
2171            0x392d16bee20c0e16,
2172            fidl::encoding::DynamicFlags::empty(),
2173            ___deadline,
2174        )?;
2175        Ok(_response.map(|x| x))
2176    }
2177
2178    /// Get `SOL_IP` -> `IP_PKTINFO`.
2179    pub fn r#get_ip_packet_info(
2180        &self,
2181        ___deadline: zx::MonotonicInstant,
2182    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2183    {
2184        let _response = self
2185            .client
2186            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2187                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2188                fidl_fuchsia_posix::Errno,
2189            >>(
2190                (), 0x54b505f242280740, fidl::encoding::DynamicFlags::empty(), ___deadline
2191            )?;
2192        Ok(_response.map(|x| x.value))
2193    }
2194
2195    /// Set `SOL_IP` -> `IP_RECVTOS`.
2196    pub fn r#set_ip_receive_type_of_service(
2197        &self,
2198        mut value: bool,
2199        ___deadline: zx::MonotonicInstant,
2200    ) -> Result<
2201        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2202        fidl::Error,
2203    > {
2204        let _response = self.client.send_query::<
2205            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2206            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2207        >(
2208            (value,),
2209            0x6c4f6714995f84ef,
2210            fidl::encoding::DynamicFlags::empty(),
2211            ___deadline,
2212        )?;
2213        Ok(_response.map(|x| x))
2214    }
2215
2216    /// Get `SOL_IP` -> `IP_RECVTOS`.
2217    pub fn r#get_ip_receive_type_of_service(
2218        &self,
2219        ___deadline: zx::MonotonicInstant,
2220    ) -> Result<
2221        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2222        fidl::Error,
2223    > {
2224        let _response = self
2225            .client
2226            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2227                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2228                fidl_fuchsia_posix::Errno,
2229            >>(
2230                (), 0x4158ba7dc2795960, fidl::encoding::DynamicFlags::empty(), ___deadline
2231            )?;
2232        Ok(_response.map(|x| x.value))
2233    }
2234
2235    /// Set `SOL_IP` -> `IP_RECVTTL`.
2236    pub fn r#set_ip_receive_ttl(
2237        &self,
2238        mut value: bool,
2239        ___deadline: zx::MonotonicInstant,
2240    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2241    {
2242        let _response = self.client.send_query::<
2243            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2244            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2245        >(
2246            (value,),
2247            0x46f15be0ce0ab82b,
2248            fidl::encoding::DynamicFlags::empty(),
2249            ___deadline,
2250        )?;
2251        Ok(_response.map(|x| x))
2252    }
2253
2254    /// Get `SOL_IP` -> `IP_RECVTTL`.
2255    pub fn r#get_ip_receive_ttl(
2256        &self,
2257        ___deadline: zx::MonotonicInstant,
2258    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2259    {
2260        let _response = self
2261            .client
2262            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2263                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2264                fidl_fuchsia_posix::Errno,
2265            >>(
2266                (), 0x678ddd5a5dfa2eb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2267            )?;
2268        Ok(_response.map(|x| x.value))
2269    }
2270
2271    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2272    pub fn r#set_ip_multicast_interface(
2273        &self,
2274        mut iface: u64,
2275        mut address: &fidl_fuchsia_net::Ipv4Address,
2276        ___deadline: zx::MonotonicInstant,
2277    ) -> Result<
2278        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2279        fidl::Error,
2280    > {
2281        let _response = self.client.send_query::<
2282            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2283            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2284        >(
2285            (iface, address,),
2286            0x752fbfa9b12befe,
2287            fidl::encoding::DynamicFlags::empty(),
2288            ___deadline,
2289        )?;
2290        Ok(_response.map(|x| x))
2291    }
2292
2293    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2294    pub fn r#get_ip_multicast_interface(
2295        &self,
2296        ___deadline: zx::MonotonicInstant,
2297    ) -> Result<
2298        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2299        fidl::Error,
2300    > {
2301        let _response = self
2302            .client
2303            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2304                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2305                fidl_fuchsia_posix::Errno,
2306            >>(
2307                (), 0x320bd14c4df046c4, fidl::encoding::DynamicFlags::empty(), ___deadline
2308            )?;
2309        Ok(_response.map(|x| x.value))
2310    }
2311
2312    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2313    pub fn r#set_ip_multicast_ttl(
2314        &self,
2315        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2316        ___deadline: zx::MonotonicInstant,
2317    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2318    {
2319        let _response = self.client.send_query::<
2320            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2321            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2322        >(
2323            (value,),
2324            0x63134d53772916a1,
2325            fidl::encoding::DynamicFlags::empty(),
2326            ___deadline,
2327        )?;
2328        Ok(_response.map(|x| x))
2329    }
2330
2331    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2332    pub fn r#get_ip_multicast_ttl(
2333        &self,
2334        ___deadline: zx::MonotonicInstant,
2335    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2336    {
2337        let _response = self
2338            .client
2339            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2340                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2341                fidl_fuchsia_posix::Errno,
2342            >>(
2343                (), 0x4665cd378f39e1a, fidl::encoding::DynamicFlags::empty(), ___deadline
2344            )?;
2345        Ok(_response.map(|x| x.value))
2346    }
2347
2348    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2349    pub fn r#set_ip_multicast_loopback(
2350        &self,
2351        mut value: bool,
2352        ___deadline: zx::MonotonicInstant,
2353    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2354    {
2355        let _response = self.client.send_query::<
2356            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2357            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2358        >(
2359            (value,),
2360            0x20c55c11f00943ea,
2361            fidl::encoding::DynamicFlags::empty(),
2362            ___deadline,
2363        )?;
2364        Ok(_response.map(|x| x))
2365    }
2366
2367    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2368    pub fn r#get_ip_multicast_loopback(
2369        &self,
2370        ___deadline: zx::MonotonicInstant,
2371    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2372    {
2373        let _response = self
2374            .client
2375            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2376                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2377                fidl_fuchsia_posix::Errno,
2378            >>(
2379                (), 0x3b6b26ff558298f2, fidl::encoding::DynamicFlags::empty(), ___deadline
2380            )?;
2381        Ok(_response.map(|x| x.value))
2382    }
2383
2384    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2385    pub fn r#add_ip_membership(
2386        &self,
2387        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2388        ___deadline: zx::MonotonicInstant,
2389    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2390    {
2391        let _response = self.client.send_query::<
2392            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2393            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2394        >(
2395            (membership,),
2396            0x76bc7df115a3b4d0,
2397            fidl::encoding::DynamicFlags::empty(),
2398            ___deadline,
2399        )?;
2400        Ok(_response.map(|x| x))
2401    }
2402
2403    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2404    pub fn r#drop_ip_membership(
2405        &self,
2406        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2407        ___deadline: zx::MonotonicInstant,
2408    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2409    {
2410        let _response = self.client.send_query::<
2411            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2412            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2413        >(
2414            (membership,),
2415            0x2888f3099188d03,
2416            fidl::encoding::DynamicFlags::empty(),
2417            ___deadline,
2418        )?;
2419        Ok(_response.map(|x| x))
2420    }
2421
2422    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2423    pub fn r#set_ip_transparent(
2424        &self,
2425        mut value: bool,
2426        ___deadline: zx::MonotonicInstant,
2427    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2428    {
2429        let _response = self.client.send_query::<
2430            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2431            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2432        >(
2433            (value,),
2434            0x1ae532b0c066e3a0,
2435            fidl::encoding::DynamicFlags::empty(),
2436            ___deadline,
2437        )?;
2438        Ok(_response.map(|x| x))
2439    }
2440
2441    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2442    pub fn r#get_ip_transparent(
2443        &self,
2444        ___deadline: zx::MonotonicInstant,
2445    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2446    {
2447        let _response = self
2448            .client
2449            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2450                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2451                fidl_fuchsia_posix::Errno,
2452            >>(
2453                (), 0x51d43695962ebfb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2454            )?;
2455        Ok(_response.map(|x| x.value))
2456    }
2457
2458    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2459    pub fn r#set_ip_receive_original_destination_address(
2460        &self,
2461        mut value: bool,
2462        ___deadline: zx::MonotonicInstant,
2463    ) -> Result<
2464        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2465        fidl::Error,
2466    > {
2467        let _response = self.client.send_query::<
2468            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2469            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2470        >(
2471            (value,),
2472            0x4722b4ce52f7840,
2473            fidl::encoding::DynamicFlags::empty(),
2474            ___deadline,
2475        )?;
2476        Ok(_response.map(|x| x))
2477    }
2478
2479    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2480    pub fn r#get_ip_receive_original_destination_address(
2481        &self,
2482        ___deadline: zx::MonotonicInstant,
2483    ) -> Result<
2484        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2485        fidl::Error,
2486    > {
2487        let _response = self.client.send_query::<
2488            fidl::encoding::EmptyPayload,
2489            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2490        >(
2491            (),
2492            0x2a0e7dc5d6bfdfe9,
2493            fidl::encoding::DynamicFlags::empty(),
2494            ___deadline,
2495        )?;
2496        Ok(_response.map(|x| x.value))
2497    }
2498
2499    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2500    pub fn r#add_ipv6_membership(
2501        &self,
2502        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2503        ___deadline: zx::MonotonicInstant,
2504    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2505    {
2506        let _response = self.client.send_query::<
2507            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2508            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2509        >(
2510            (membership,),
2511            0x7c94727acb4ea4b3,
2512            fidl::encoding::DynamicFlags::empty(),
2513            ___deadline,
2514        )?;
2515        Ok(_response.map(|x| x))
2516    }
2517
2518    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2519    pub fn r#drop_ipv6_membership(
2520        &self,
2521        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2522        ___deadline: zx::MonotonicInstant,
2523    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2524    {
2525        let _response = self.client.send_query::<
2526            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2527            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2528        >(
2529            (membership,),
2530            0x42104c70ccaba304,
2531            fidl::encoding::DynamicFlags::empty(),
2532            ___deadline,
2533        )?;
2534        Ok(_response.map(|x| x))
2535    }
2536
2537    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2538    pub fn r#set_ipv6_multicast_interface(
2539        &self,
2540        mut value: u64,
2541        ___deadline: zx::MonotonicInstant,
2542    ) -> Result<
2543        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2544        fidl::Error,
2545    > {
2546        let _response = self.client.send_query::<
2547            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2548            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2549        >(
2550            (value,),
2551            0x135f76db3774ab3b,
2552            fidl::encoding::DynamicFlags::empty(),
2553            ___deadline,
2554        )?;
2555        Ok(_response.map(|x| x))
2556    }
2557
2558    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2559    pub fn r#get_ipv6_multicast_interface(
2560        &self,
2561        ___deadline: zx::MonotonicInstant,
2562    ) -> Result<
2563        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2564        fidl::Error,
2565    > {
2566        let _response = self
2567            .client
2568            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2569                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2570                fidl_fuchsia_posix::Errno,
2571            >>(
2572                (), 0x1f26fcdd348f1882, fidl::encoding::DynamicFlags::empty(), ___deadline
2573            )?;
2574        Ok(_response.map(|x| x.value))
2575    }
2576
2577    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2578    pub fn r#set_ipv6_unicast_hops(
2579        &self,
2580        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2581        ___deadline: zx::MonotonicInstant,
2582    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2583    {
2584        let _response = self.client.send_query::<
2585            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2586            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2587        >(
2588            (value,),
2589            0x157d51e98f462859,
2590            fidl::encoding::DynamicFlags::empty(),
2591            ___deadline,
2592        )?;
2593        Ok(_response.map(|x| x))
2594    }
2595
2596    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2597    pub fn r#get_ipv6_unicast_hops(
2598        &self,
2599        ___deadline: zx::MonotonicInstant,
2600    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2601    {
2602        let _response = self
2603            .client
2604            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2605                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2606                fidl_fuchsia_posix::Errno,
2607            >>(
2608                (), 0x21f4641cad8bd8d2, fidl::encoding::DynamicFlags::empty(), ___deadline
2609            )?;
2610        Ok(_response.map(|x| x.value))
2611    }
2612
2613    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2614    pub fn r#set_ipv6_receive_hop_limit(
2615        &self,
2616        mut value: bool,
2617        ___deadline: zx::MonotonicInstant,
2618    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2619    {
2620        let _response = self.client.send_query::<
2621            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2622            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2623        >(
2624            (value,),
2625            0x5c24808ed2e84a1e,
2626            fidl::encoding::DynamicFlags::empty(),
2627            ___deadline,
2628        )?;
2629        Ok(_response.map(|x| x))
2630    }
2631
2632    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2633    pub fn r#get_ipv6_receive_hop_limit(
2634        &self,
2635        ___deadline: zx::MonotonicInstant,
2636    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2637    {
2638        let _response = self
2639            .client
2640            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2641                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2642                fidl_fuchsia_posix::Errno,
2643            >>(
2644                (), 0x341e06689885b4c0, fidl::encoding::DynamicFlags::empty(), ___deadline
2645            )?;
2646        Ok(_response.map(|x| x.value))
2647    }
2648
2649    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2650    pub fn r#set_ipv6_multicast_hops(
2651        &self,
2652        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2653        ___deadline: zx::MonotonicInstant,
2654    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2655    {
2656        let _response = self.client.send_query::<
2657            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2658            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2659        >(
2660            (value,),
2661            0x25b9cd4d181f82c1,
2662            fidl::encoding::DynamicFlags::empty(),
2663            ___deadline,
2664        )?;
2665        Ok(_response.map(|x| x))
2666    }
2667
2668    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2669    pub fn r#get_ipv6_multicast_hops(
2670        &self,
2671        ___deadline: zx::MonotonicInstant,
2672    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2673    {
2674        let _response = self
2675            .client
2676            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2677                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2678                fidl_fuchsia_posix::Errno,
2679            >>(
2680                (), 0x52916948a365012a, fidl::encoding::DynamicFlags::empty(), ___deadline
2681            )?;
2682        Ok(_response.map(|x| x.value))
2683    }
2684
2685    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2686    pub fn r#set_ipv6_multicast_loopback(
2687        &self,
2688        mut value: bool,
2689        ___deadline: zx::MonotonicInstant,
2690    ) -> Result<
2691        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2692        fidl::Error,
2693    > {
2694        let _response = self.client.send_query::<
2695            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2696            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2697        >(
2698            (value,),
2699            0x55701c409ff41b40,
2700            fidl::encoding::DynamicFlags::empty(),
2701            ___deadline,
2702        )?;
2703        Ok(_response.map(|x| x))
2704    }
2705
2706    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2707    pub fn r#get_ipv6_multicast_loopback(
2708        &self,
2709        ___deadline: zx::MonotonicInstant,
2710    ) -> Result<
2711        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2712        fidl::Error,
2713    > {
2714        let _response = self
2715            .client
2716            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2717                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2718                fidl_fuchsia_posix::Errno,
2719            >>(
2720                (), 0x4415b701fde319c3, fidl::encoding::DynamicFlags::empty(), ___deadline
2721            )?;
2722        Ok(_response.map(|x| x.value))
2723    }
2724
2725    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2726    pub fn r#set_ipv6_only(
2727        &self,
2728        mut value: bool,
2729        ___deadline: zx::MonotonicInstant,
2730    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2731        let _response = self.client.send_query::<
2732            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2733            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2734        >(
2735            (value,),
2736            0x4873f1364758cbba,
2737            fidl::encoding::DynamicFlags::empty(),
2738            ___deadline,
2739        )?;
2740        Ok(_response.map(|x| x))
2741    }
2742
2743    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2744    pub fn r#get_ipv6_only(
2745        &self,
2746        ___deadline: zx::MonotonicInstant,
2747    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2748        let _response = self
2749            .client
2750            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2751                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2752                fidl_fuchsia_posix::Errno,
2753            >>(
2754                (), 0x4aa3340a1a26b89c, fidl::encoding::DynamicFlags::empty(), ___deadline
2755            )?;
2756        Ok(_response.map(|x| x.value))
2757    }
2758
2759    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2760    pub fn r#set_ipv6_receive_traffic_class(
2761        &self,
2762        mut value: bool,
2763        ___deadline: zx::MonotonicInstant,
2764    ) -> Result<
2765        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2766        fidl::Error,
2767    > {
2768        let _response = self.client.send_query::<
2769            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2770            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2771        >(
2772            (value,),
2773            0x58f07c8788d099a0,
2774            fidl::encoding::DynamicFlags::empty(),
2775            ___deadline,
2776        )?;
2777        Ok(_response.map(|x| x))
2778    }
2779
2780    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2781    pub fn r#get_ipv6_receive_traffic_class(
2782        &self,
2783        ___deadline: zx::MonotonicInstant,
2784    ) -> Result<
2785        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2786        fidl::Error,
2787    > {
2788        let _response = self
2789            .client
2790            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2791                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2792                fidl_fuchsia_posix::Errno,
2793            >>(
2794                (), 0x2e334df1da553ffa, fidl::encoding::DynamicFlags::empty(), ___deadline
2795            )?;
2796        Ok(_response.map(|x| x.value))
2797    }
2798
2799    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2800    pub fn r#set_ipv6_traffic_class(
2801        &self,
2802        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2803        ___deadline: zx::MonotonicInstant,
2804    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2805    {
2806        let _response = self.client.send_query::<
2807            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2808            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2809        >(
2810            (value,),
2811            0x6af077800c5a0b4f,
2812            fidl::encoding::DynamicFlags::empty(),
2813            ___deadline,
2814        )?;
2815        Ok(_response.map(|x| x))
2816    }
2817
2818    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2819    pub fn r#get_ipv6_traffic_class(
2820        &self,
2821        ___deadline: zx::MonotonicInstant,
2822    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2823    {
2824        let _response = self
2825            .client
2826            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2827                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2828                fidl_fuchsia_posix::Errno,
2829            >>(
2830                (), 0x6baf6eed8fc2f04, fidl::encoding::DynamicFlags::empty(), ___deadline
2831            )?;
2832        Ok(_response.map(|x| x.value))
2833    }
2834
2835    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2836    pub fn r#set_ipv6_receive_packet_info(
2837        &self,
2838        mut value: bool,
2839        ___deadline: zx::MonotonicInstant,
2840    ) -> Result<
2841        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2842        fidl::Error,
2843    > {
2844        let _response = self.client.send_query::<
2845            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2846            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2847        >(
2848            (value,),
2849            0x19259775b1a92768,
2850            fidl::encoding::DynamicFlags::empty(),
2851            ___deadline,
2852        )?;
2853        Ok(_response.map(|x| x))
2854    }
2855
2856    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2857    pub fn r#get_ipv6_receive_packet_info(
2858        &self,
2859        ___deadline: zx::MonotonicInstant,
2860    ) -> Result<
2861        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2862        fidl::Error,
2863    > {
2864        let _response = self
2865            .client
2866            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2867                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2868                fidl_fuchsia_posix::Errno,
2869            >>(
2870                (), 0x7acd4a2775baec75, fidl::encoding::DynamicFlags::empty(), ___deadline
2871            )?;
2872        Ok(_response.map(|x| x.value))
2873    }
2874
2875    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2876    pub fn r#get_original_destination(
2877        &self,
2878        ___deadline: zx::MonotonicInstant,
2879    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2880    {
2881        let _response = self
2882            .client
2883            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2884                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
2885                fidl_fuchsia_posix::Errno,
2886            >>(
2887                (), 0x38bf28f0dafdbac0, fidl::encoding::DynamicFlags::empty(), ___deadline
2888            )?;
2889        Ok(_response.map(|x| x.value))
2890    }
2891
2892    pub fn r#describe(
2893        &self,
2894        ___deadline: zx::MonotonicInstant,
2895    ) -> Result<SocketDescribeResponse, fidl::Error> {
2896        let _response =
2897            self.client.send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
2898                (),
2899                0x335706eccf54a135,
2900                fidl::encoding::DynamicFlags::empty(),
2901                ___deadline,
2902            )?;
2903        Ok(_response)
2904    }
2905
2906    /// Receives a message from the socket.
2907    ///
2908    /// + request `want_addr` request message's source address information to
2909    ///   be returned.
2910    /// + request `data_len` the maximum allowed length of the response data
2911    ///   buffer.
2912    /// + request `want_control` request ancillary data to be returned.
2913    /// + request `flags` flags for the receive request.
2914    /// - response `addr` the message's source address information, if
2915    ///   requested.
2916    /// - response `data` the message.
2917    /// - response `control` control messages, if requested.
2918    /// - response `truncated` indicates whether or not the returned message
2919    ///   was truncated.
2920    pub fn r#recv_msg(
2921        &self,
2922        mut want_addr: bool,
2923        mut data_len: u32,
2924        mut want_control: bool,
2925        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
2926        ___deadline: zx::MonotonicInstant,
2927    ) -> Result<SocketRecvMsgResult, fidl::Error> {
2928        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
2929            SocketRecvMsgResponse,
2930            fidl_fuchsia_posix::Errno,
2931        >>(
2932            (want_addr, data_len, want_control, flags),
2933            0x1dfb695351d3aa1d,
2934            fidl::encoding::DynamicFlags::empty(),
2935            ___deadline,
2936        )?;
2937        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
2938    }
2939
2940    /// Sends a message on the socket.
2941    ///
2942    /// + request `addr` the address to send the message to. If unset, will
2943    ///   send to the connected peer.
2944    /// + request `data` the message.
2945    /// + request `control` ancillary data.
2946    /// + request `flags` flags for the send request.
2947    pub fn r#send_msg(
2948        &self,
2949        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
2950        mut data: &[u8],
2951        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
2952        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
2953        ___deadline: zx::MonotonicInstant,
2954    ) -> Result<SocketSendMsgResult, fidl::Error> {
2955        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
2956            fidl::encoding::EmptyStruct,
2957            fidl_fuchsia_posix::Errno,
2958        >>(
2959            (addr, data, control, flags),
2960            0x2cf1eac9a7fc8958,
2961            fidl::encoding::DynamicFlags::empty(),
2962            ___deadline,
2963        )?;
2964        Ok(_response.map(|x| x))
2965    }
2966
2967    /// Retrieves creation information from the socket.
2968    ///
2969    /// - response `domain` the socket's associated domain.
2970    /// - response `proto` the socket's associated protocol.
2971    pub fn r#get_info(
2972        &self,
2973        ___deadline: zx::MonotonicInstant,
2974    ) -> Result<SocketGetInfoResult, fidl::Error> {
2975        let _response =
2976            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2977                SocketGetInfoResponse,
2978                fidl_fuchsia_posix::Errno,
2979            >>(
2980                (),
2981                0x39676f75aec339ba,
2982                fidl::encoding::DynamicFlags::empty(),
2983                ___deadline,
2984            )?;
2985        Ok(_response.map(|x| (x.domain, x.proto)))
2986    }
2987
2988    /// Set `SOL_IP` -> `IP_HDRINCL`.
2989    pub fn r#set_ip_header_included(
2990        &self,
2991        mut value: bool,
2992        ___deadline: zx::MonotonicInstant,
2993    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
2994        let _response =
2995            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
2996                fidl::encoding::EmptyStruct,
2997                fidl_fuchsia_posix::Errno,
2998            >>(
2999                (value,),
3000                0x5d06a606d95e8f3,
3001                fidl::encoding::DynamicFlags::empty(),
3002                ___deadline,
3003            )?;
3004        Ok(_response.map(|x| x))
3005    }
3006
3007    /// Get `SOL_IP` -> `IP_HDRINCL`.
3008    pub fn r#get_ip_header_included(
3009        &self,
3010        ___deadline: zx::MonotonicInstant,
3011    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
3012        let _response = self
3013            .client
3014            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3015                SocketGetIpHeaderIncludedResponse,
3016                fidl_fuchsia_posix::Errno,
3017            >>(
3018                (), 0x76125ad1f4d175f6, fidl::encoding::DynamicFlags::empty(), ___deadline
3019            )?;
3020        Ok(_response.map(|x| x.value))
3021    }
3022
3023    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
3024    pub fn r#set_icmpv6_filter(
3025        &self,
3026        mut filter: &Icmpv6Filter,
3027        ___deadline: zx::MonotonicInstant,
3028    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3029        let _response =
3030            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3031                fidl::encoding::EmptyStruct,
3032                fidl_fuchsia_posix::Errno,
3033            >>(
3034                (filter,),
3035                0x4ebea92a43ae68a9,
3036                fidl::encoding::DynamicFlags::empty(),
3037                ___deadline,
3038            )?;
3039        Ok(_response.map(|x| x))
3040    }
3041
3042    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3043    pub fn r#get_icmpv6_filter(
3044        &self,
3045        ___deadline: zx::MonotonicInstant,
3046    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3047        let _response =
3048            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3049                SocketGetIcmpv6FilterResponse,
3050                fidl_fuchsia_posix::Errno,
3051            >>(
3052                (),
3053                0x43bd4f3bc0970ace,
3054                fidl::encoding::DynamicFlags::empty(),
3055                ___deadline,
3056            )?;
3057        Ok(_response.map(|x| x.filter))
3058    }
3059
3060    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3061    pub fn r#set_ipv6_checksum(
3062        &self,
3063        mut config: &Ipv6ChecksumConfiguration,
3064        ___deadline: zx::MonotonicInstant,
3065    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3066        let _response =
3067            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3068                fidl::encoding::EmptyStruct,
3069                fidl_fuchsia_posix::Errno,
3070            >>(
3071                (config,),
3072                0x18b7809577199cb4,
3073                fidl::encoding::DynamicFlags::empty(),
3074                ___deadline,
3075            )?;
3076        Ok(_response.map(|x| x))
3077    }
3078
3079    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3080    pub fn r#get_ipv6_checksum(
3081        &self,
3082        ___deadline: zx::MonotonicInstant,
3083    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3084        let _response =
3085            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3086                SocketGetIpv6ChecksumResponse,
3087                fidl_fuchsia_posix::Errno,
3088            >>(
3089                (),
3090                0x1847bf5b2d263dd,
3091                fidl::encoding::DynamicFlags::empty(),
3092                ___deadline,
3093            )?;
3094        Ok(_response.map(|x| x.config))
3095    }
3096}
3097
3098#[cfg(target_os = "fuchsia")]
3099impl From<SocketSynchronousProxy> for zx::NullableHandle {
3100    fn from(value: SocketSynchronousProxy) -> Self {
3101        value.into_channel().into()
3102    }
3103}
3104
3105#[cfg(target_os = "fuchsia")]
3106impl From<fidl::Channel> for SocketSynchronousProxy {
3107    fn from(value: fidl::Channel) -> Self {
3108        Self::new(value)
3109    }
3110}
3111
3112#[cfg(target_os = "fuchsia")]
3113impl fidl::endpoints::FromClient for SocketSynchronousProxy {
3114    type Protocol = SocketMarker;
3115
3116    fn from_client(value: fidl::endpoints::ClientEnd<SocketMarker>) -> Self {
3117        Self::new(value.into_channel())
3118    }
3119}
3120
3121#[derive(Debug, Clone)]
3122pub struct SocketProxy {
3123    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3124}
3125
3126impl fidl::endpoints::Proxy for SocketProxy {
3127    type Protocol = SocketMarker;
3128
3129    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3130        Self::new(inner)
3131    }
3132
3133    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3134        self.client.into_channel().map_err(|client| Self { client })
3135    }
3136
3137    fn as_channel(&self) -> &::fidl::AsyncChannel {
3138        self.client.as_channel()
3139    }
3140}
3141
3142impl SocketProxy {
3143    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3144    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3145        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3146        Self { client: fidl::client::Client::new(channel, protocol_name) }
3147    }
3148
3149    /// Get a Stream of events from the remote end of the protocol.
3150    ///
3151    /// # Panics
3152    ///
3153    /// Panics if the event stream was already taken.
3154    pub fn take_event_stream(&self) -> SocketEventStream {
3155        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3156    }
3157
3158    pub fn r#clone(
3159        &self,
3160        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3161    ) -> Result<(), fidl::Error> {
3162        SocketProxyInterface::r#clone(self, request)
3163    }
3164
3165    /// Terminates the connection.
3166    ///
3167    /// After calling `Close`, the client must not send any other requests.
3168    ///
3169    /// Servers, after sending the status response, should close the connection
3170    /// regardless of status and without sending an epitaph.
3171    ///
3172    /// Closing the client end of the channel should be semantically equivalent
3173    /// to calling `Close` without knowing when the close has completed or its
3174    /// status.
3175    pub fn r#close(
3176        &self,
3177    ) -> fidl::client::QueryResponseFut<
3178        fidl_fuchsia_unknown::CloseableCloseResult,
3179        fidl::encoding::DefaultFuchsiaResourceDialect,
3180    > {
3181        SocketProxyInterface::r#close(self)
3182    }
3183
3184    pub fn r#query(
3185        &self,
3186    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3187    {
3188        SocketProxyInterface::r#query(self)
3189    }
3190
3191    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3192    pub fn r#set_reuse_address(
3193        &self,
3194        mut value: bool,
3195    ) -> fidl::client::QueryResponseFut<
3196        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3197        fidl::encoding::DefaultFuchsiaResourceDialect,
3198    > {
3199        SocketProxyInterface::r#set_reuse_address(self, value)
3200    }
3201
3202    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3203    pub fn r#get_reuse_address(
3204        &self,
3205    ) -> fidl::client::QueryResponseFut<
3206        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3207        fidl::encoding::DefaultFuchsiaResourceDialect,
3208    > {
3209        SocketProxyInterface::r#get_reuse_address(self)
3210    }
3211
3212    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3213    /// Returns the last error if there is an error set on the socket.
3214    pub fn r#get_error(
3215        &self,
3216    ) -> fidl::client::QueryResponseFut<
3217        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3218        fidl::encoding::DefaultFuchsiaResourceDialect,
3219    > {
3220        SocketProxyInterface::r#get_error(self)
3221    }
3222
3223    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3224    pub fn r#set_broadcast(
3225        &self,
3226        mut value: bool,
3227    ) -> fidl::client::QueryResponseFut<
3228        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3229        fidl::encoding::DefaultFuchsiaResourceDialect,
3230    > {
3231        SocketProxyInterface::r#set_broadcast(self, value)
3232    }
3233
3234    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3235    pub fn r#get_broadcast(
3236        &self,
3237    ) -> fidl::client::QueryResponseFut<
3238        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3239        fidl::encoding::DefaultFuchsiaResourceDialect,
3240    > {
3241        SocketProxyInterface::r#get_broadcast(self)
3242    }
3243
3244    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3245    pub fn r#set_send_buffer(
3246        &self,
3247        mut value_bytes: u64,
3248    ) -> fidl::client::QueryResponseFut<
3249        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3250        fidl::encoding::DefaultFuchsiaResourceDialect,
3251    > {
3252        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3253    }
3254
3255    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3256    pub fn r#get_send_buffer(
3257        &self,
3258    ) -> fidl::client::QueryResponseFut<
3259        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3260        fidl::encoding::DefaultFuchsiaResourceDialect,
3261    > {
3262        SocketProxyInterface::r#get_send_buffer(self)
3263    }
3264
3265    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3266    pub fn r#set_receive_buffer(
3267        &self,
3268        mut value_bytes: u64,
3269    ) -> fidl::client::QueryResponseFut<
3270        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3271        fidl::encoding::DefaultFuchsiaResourceDialect,
3272    > {
3273        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3274    }
3275
3276    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3277    pub fn r#get_receive_buffer(
3278        &self,
3279    ) -> fidl::client::QueryResponseFut<
3280        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3281        fidl::encoding::DefaultFuchsiaResourceDialect,
3282    > {
3283        SocketProxyInterface::r#get_receive_buffer(self)
3284    }
3285
3286    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3287    pub fn r#set_keep_alive(
3288        &self,
3289        mut value: bool,
3290    ) -> fidl::client::QueryResponseFut<
3291        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3292        fidl::encoding::DefaultFuchsiaResourceDialect,
3293    > {
3294        SocketProxyInterface::r#set_keep_alive(self, value)
3295    }
3296
3297    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3298    pub fn r#get_keep_alive(
3299        &self,
3300    ) -> fidl::client::QueryResponseFut<
3301        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3302        fidl::encoding::DefaultFuchsiaResourceDialect,
3303    > {
3304        SocketProxyInterface::r#get_keep_alive(self)
3305    }
3306
3307    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3308    pub fn r#set_out_of_band_inline(
3309        &self,
3310        mut value: bool,
3311    ) -> fidl::client::QueryResponseFut<
3312        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3313        fidl::encoding::DefaultFuchsiaResourceDialect,
3314    > {
3315        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3316    }
3317
3318    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3319    pub fn r#get_out_of_band_inline(
3320        &self,
3321    ) -> fidl::client::QueryResponseFut<
3322        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3323        fidl::encoding::DefaultFuchsiaResourceDialect,
3324    > {
3325        SocketProxyInterface::r#get_out_of_band_inline(self)
3326    }
3327
3328    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3329    pub fn r#set_no_check(
3330        &self,
3331        mut value: bool,
3332    ) -> fidl::client::QueryResponseFut<
3333        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3334        fidl::encoding::DefaultFuchsiaResourceDialect,
3335    > {
3336        SocketProxyInterface::r#set_no_check(self, value)
3337    }
3338
3339    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3340    pub fn r#get_no_check(
3341        &self,
3342    ) -> fidl::client::QueryResponseFut<
3343        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3344        fidl::encoding::DefaultFuchsiaResourceDialect,
3345    > {
3346        SocketProxyInterface::r#get_no_check(self)
3347    }
3348
3349    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3350    pub fn r#set_linger(
3351        &self,
3352        mut linger: bool,
3353        mut length_secs: u32,
3354    ) -> fidl::client::QueryResponseFut<
3355        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3356        fidl::encoding::DefaultFuchsiaResourceDialect,
3357    > {
3358        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3359    }
3360
3361    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3362    pub fn r#get_linger(
3363        &self,
3364    ) -> fidl::client::QueryResponseFut<
3365        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3366        fidl::encoding::DefaultFuchsiaResourceDialect,
3367    > {
3368        SocketProxyInterface::r#get_linger(self)
3369    }
3370
3371    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3372    pub fn r#set_reuse_port(
3373        &self,
3374        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
3375    ) -> fidl::client::QueryResponseFut<
3376        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3377        fidl::encoding::DefaultFuchsiaResourceDialect,
3378    > {
3379        SocketProxyInterface::r#set_reuse_port(self, value)
3380    }
3381
3382    pub fn r#set_reuse_port_deprecated(
3383        &self,
3384        mut value: bool,
3385    ) -> fidl::client::QueryResponseFut<
3386        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
3387        fidl::encoding::DefaultFuchsiaResourceDialect,
3388    > {
3389        SocketProxyInterface::r#set_reuse_port_deprecated(self, value)
3390    }
3391
3392    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
3393    pub fn r#get_reuse_port(
3394        &self,
3395    ) -> fidl::client::QueryResponseFut<
3396        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
3397        fidl::encoding::DefaultFuchsiaResourceDialect,
3398    > {
3399        SocketProxyInterface::r#get_reuse_port(self)
3400    }
3401
3402    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
3403    pub fn r#get_accept_conn(
3404        &self,
3405    ) -> fidl::client::QueryResponseFut<
3406        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
3407        fidl::encoding::DefaultFuchsiaResourceDialect,
3408    > {
3409        SocketProxyInterface::r#get_accept_conn(self)
3410    }
3411
3412    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3413    pub fn r#set_bind_to_device(
3414        &self,
3415        mut value: &str,
3416    ) -> fidl::client::QueryResponseFut<
3417        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
3418        fidl::encoding::DefaultFuchsiaResourceDialect,
3419    > {
3420        SocketProxyInterface::r#set_bind_to_device(self, value)
3421    }
3422
3423    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3424    pub fn r#get_bind_to_device(
3425        &self,
3426    ) -> fidl::client::QueryResponseFut<
3427        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
3428        fidl::encoding::DefaultFuchsiaResourceDialect,
3429    > {
3430        SocketProxyInterface::r#get_bind_to_device(self)
3431    }
3432
3433    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3434    /// If `value` is 0, this clears the bound interface.
3435    pub fn r#set_bind_to_interface_index(
3436        &self,
3437        mut value: u64,
3438    ) -> fidl::client::QueryResponseFut<
3439        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
3440        fidl::encoding::DefaultFuchsiaResourceDialect,
3441    > {
3442        SocketProxyInterface::r#set_bind_to_interface_index(self, value)
3443    }
3444
3445    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3446    pub fn r#get_bind_to_interface_index(
3447        &self,
3448    ) -> fidl::client::QueryResponseFut<
3449        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
3450        fidl::encoding::DefaultFuchsiaResourceDialect,
3451    > {
3452        SocketProxyInterface::r#get_bind_to_interface_index(self)
3453    }
3454
3455    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3456    pub fn r#set_timestamp(
3457        &self,
3458        mut value: fidl_fuchsia_posix_socket::TimestampOption,
3459    ) -> fidl::client::QueryResponseFut<
3460        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
3461        fidl::encoding::DefaultFuchsiaResourceDialect,
3462    > {
3463        SocketProxyInterface::r#set_timestamp(self, value)
3464    }
3465
3466    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3467    pub fn r#get_timestamp(
3468        &self,
3469    ) -> fidl::client::QueryResponseFut<
3470        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
3471        fidl::encoding::DefaultFuchsiaResourceDialect,
3472    > {
3473        SocketProxyInterface::r#get_timestamp(self)
3474    }
3475
3476    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3477    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3478    /// mark can be set independently in each domain.
3479    pub fn r#set_mark(
3480        &self,
3481        mut domain: fidl_fuchsia_net::MarkDomain,
3482        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
3483    ) -> fidl::client::QueryResponseFut<
3484        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
3485        fidl::encoding::DefaultFuchsiaResourceDialect,
3486    > {
3487        SocketProxyInterface::r#set_mark(self, domain, mark)
3488    }
3489
3490    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3491    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3492    /// mark can be retrieved independently in each domain.
3493    pub fn r#get_mark(
3494        &self,
3495        mut domain: fidl_fuchsia_net::MarkDomain,
3496    ) -> fidl::client::QueryResponseFut<
3497        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
3498        fidl::encoding::DefaultFuchsiaResourceDialect,
3499    > {
3500        SocketProxyInterface::r#get_mark(self, domain)
3501    }
3502
3503    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
3504    pub fn r#get_cookie(
3505        &self,
3506    ) -> fidl::client::QueryResponseFut<
3507        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
3508        fidl::encoding::DefaultFuchsiaResourceDialect,
3509    > {
3510        SocketProxyInterface::r#get_cookie(self)
3511    }
3512
3513    /// Sets the local address used for the socket.
3514    pub fn r#bind(
3515        &self,
3516        mut addr: &fidl_fuchsia_net::SocketAddress,
3517    ) -> fidl::client::QueryResponseFut<
3518        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
3519        fidl::encoding::DefaultFuchsiaResourceDialect,
3520    > {
3521        SocketProxyInterface::r#bind(self, addr)
3522    }
3523
3524    /// Initiates a connection to a remote address.
3525    pub fn r#connect(
3526        &self,
3527        mut addr: &fidl_fuchsia_net::SocketAddress,
3528    ) -> fidl::client::QueryResponseFut<
3529        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
3530        fidl::encoding::DefaultFuchsiaResourceDialect,
3531    > {
3532        SocketProxyInterface::r#connect(self, addr)
3533    }
3534
3535    /// Clears connection information from this socket.
3536    pub fn r#disconnect(
3537        &self,
3538    ) -> fidl::client::QueryResponseFut<
3539        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
3540        fidl::encoding::DefaultFuchsiaResourceDialect,
3541    > {
3542        SocketProxyInterface::r#disconnect(self)
3543    }
3544
3545    /// Retrieves the local socket address.
3546    pub fn r#get_sock_name(
3547        &self,
3548    ) -> fidl::client::QueryResponseFut<
3549        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
3550        fidl::encoding::DefaultFuchsiaResourceDialect,
3551    > {
3552        SocketProxyInterface::r#get_sock_name(self)
3553    }
3554
3555    /// Retrieves the remote socket address.
3556    pub fn r#get_peer_name(
3557        &self,
3558    ) -> fidl::client::QueryResponseFut<
3559        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
3560        fidl::encoding::DefaultFuchsiaResourceDialect,
3561    > {
3562        SocketProxyInterface::r#get_peer_name(self)
3563    }
3564
3565    /// Shuts down part of the socket.
3566    pub fn r#shutdown(
3567        &self,
3568        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
3569    ) -> fidl::client::QueryResponseFut<
3570        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
3571        fidl::encoding::DefaultFuchsiaResourceDialect,
3572    > {
3573        SocketProxyInterface::r#shutdown(self, mode)
3574    }
3575
3576    /// Set `SOL_IP` -> `IP_TOS`.
3577    pub fn r#set_ip_type_of_service(
3578        &self,
3579        mut value: u8,
3580    ) -> fidl::client::QueryResponseFut<
3581        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
3582        fidl::encoding::DefaultFuchsiaResourceDialect,
3583    > {
3584        SocketProxyInterface::r#set_ip_type_of_service(self, value)
3585    }
3586
3587    /// Get `SOL_IP` -> `IP_TOS`.
3588    pub fn r#get_ip_type_of_service(
3589        &self,
3590    ) -> fidl::client::QueryResponseFut<
3591        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
3592        fidl::encoding::DefaultFuchsiaResourceDialect,
3593    > {
3594        SocketProxyInterface::r#get_ip_type_of_service(self)
3595    }
3596
3597    /// Set `SOL_IP` -> `IP_TTL`.
3598    pub fn r#set_ip_ttl(
3599        &self,
3600        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3601    ) -> fidl::client::QueryResponseFut<
3602        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
3603        fidl::encoding::DefaultFuchsiaResourceDialect,
3604    > {
3605        SocketProxyInterface::r#set_ip_ttl(self, value)
3606    }
3607
3608    /// Get `SOL_IP` -> `IP_TTL`.
3609    pub fn r#get_ip_ttl(
3610        &self,
3611    ) -> fidl::client::QueryResponseFut<
3612        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
3613        fidl::encoding::DefaultFuchsiaResourceDialect,
3614    > {
3615        SocketProxyInterface::r#get_ip_ttl(self)
3616    }
3617
3618    /// Set `SOL_IP` -> `IP_PKTINFO`.
3619    pub fn r#set_ip_packet_info(
3620        &self,
3621        mut value: bool,
3622    ) -> fidl::client::QueryResponseFut<
3623        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
3624        fidl::encoding::DefaultFuchsiaResourceDialect,
3625    > {
3626        SocketProxyInterface::r#set_ip_packet_info(self, value)
3627    }
3628
3629    /// Get `SOL_IP` -> `IP_PKTINFO`.
3630    pub fn r#get_ip_packet_info(
3631        &self,
3632    ) -> fidl::client::QueryResponseFut<
3633        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
3634        fidl::encoding::DefaultFuchsiaResourceDialect,
3635    > {
3636        SocketProxyInterface::r#get_ip_packet_info(self)
3637    }
3638
3639    /// Set `SOL_IP` -> `IP_RECVTOS`.
3640    pub fn r#set_ip_receive_type_of_service(
3641        &self,
3642        mut value: bool,
3643    ) -> fidl::client::QueryResponseFut<
3644        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
3645        fidl::encoding::DefaultFuchsiaResourceDialect,
3646    > {
3647        SocketProxyInterface::r#set_ip_receive_type_of_service(self, value)
3648    }
3649
3650    /// Get `SOL_IP` -> `IP_RECVTOS`.
3651    pub fn r#get_ip_receive_type_of_service(
3652        &self,
3653    ) -> fidl::client::QueryResponseFut<
3654        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
3655        fidl::encoding::DefaultFuchsiaResourceDialect,
3656    > {
3657        SocketProxyInterface::r#get_ip_receive_type_of_service(self)
3658    }
3659
3660    /// Set `SOL_IP` -> `IP_RECVTTL`.
3661    pub fn r#set_ip_receive_ttl(
3662        &self,
3663        mut value: bool,
3664    ) -> fidl::client::QueryResponseFut<
3665        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
3666        fidl::encoding::DefaultFuchsiaResourceDialect,
3667    > {
3668        SocketProxyInterface::r#set_ip_receive_ttl(self, value)
3669    }
3670
3671    /// Get `SOL_IP` -> `IP_RECVTTL`.
3672    pub fn r#get_ip_receive_ttl(
3673        &self,
3674    ) -> fidl::client::QueryResponseFut<
3675        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
3676        fidl::encoding::DefaultFuchsiaResourceDialect,
3677    > {
3678        SocketProxyInterface::r#get_ip_receive_ttl(self)
3679    }
3680
3681    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
3682    pub fn r#set_ip_multicast_interface(
3683        &self,
3684        mut iface: u64,
3685        mut address: &fidl_fuchsia_net::Ipv4Address,
3686    ) -> fidl::client::QueryResponseFut<
3687        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
3688        fidl::encoding::DefaultFuchsiaResourceDialect,
3689    > {
3690        SocketProxyInterface::r#set_ip_multicast_interface(self, iface, address)
3691    }
3692
3693    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
3694    pub fn r#get_ip_multicast_interface(
3695        &self,
3696    ) -> fidl::client::QueryResponseFut<
3697        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
3698        fidl::encoding::DefaultFuchsiaResourceDialect,
3699    > {
3700        SocketProxyInterface::r#get_ip_multicast_interface(self)
3701    }
3702
3703    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
3704    pub fn r#set_ip_multicast_ttl(
3705        &self,
3706        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3707    ) -> fidl::client::QueryResponseFut<
3708        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
3709        fidl::encoding::DefaultFuchsiaResourceDialect,
3710    > {
3711        SocketProxyInterface::r#set_ip_multicast_ttl(self, value)
3712    }
3713
3714    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
3715    pub fn r#get_ip_multicast_ttl(
3716        &self,
3717    ) -> fidl::client::QueryResponseFut<
3718        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
3719        fidl::encoding::DefaultFuchsiaResourceDialect,
3720    > {
3721        SocketProxyInterface::r#get_ip_multicast_ttl(self)
3722    }
3723
3724    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
3725    pub fn r#set_ip_multicast_loopback(
3726        &self,
3727        mut value: bool,
3728    ) -> fidl::client::QueryResponseFut<
3729        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
3730        fidl::encoding::DefaultFuchsiaResourceDialect,
3731    > {
3732        SocketProxyInterface::r#set_ip_multicast_loopback(self, value)
3733    }
3734
3735    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
3736    pub fn r#get_ip_multicast_loopback(
3737        &self,
3738    ) -> fidl::client::QueryResponseFut<
3739        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
3740        fidl::encoding::DefaultFuchsiaResourceDialect,
3741    > {
3742        SocketProxyInterface::r#get_ip_multicast_loopback(self)
3743    }
3744
3745    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
3746    pub fn r#add_ip_membership(
3747        &self,
3748        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3749    ) -> fidl::client::QueryResponseFut<
3750        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
3751        fidl::encoding::DefaultFuchsiaResourceDialect,
3752    > {
3753        SocketProxyInterface::r#add_ip_membership(self, membership)
3754    }
3755
3756    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
3757    pub fn r#drop_ip_membership(
3758        &self,
3759        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3760    ) -> fidl::client::QueryResponseFut<
3761        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
3762        fidl::encoding::DefaultFuchsiaResourceDialect,
3763    > {
3764        SocketProxyInterface::r#drop_ip_membership(self, membership)
3765    }
3766
3767    /// Set `SOL_IP` -> `IP_TRANSPARENT`
3768    pub fn r#set_ip_transparent(
3769        &self,
3770        mut value: bool,
3771    ) -> fidl::client::QueryResponseFut<
3772        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
3773        fidl::encoding::DefaultFuchsiaResourceDialect,
3774    > {
3775        SocketProxyInterface::r#set_ip_transparent(self, value)
3776    }
3777
3778    /// Get `SOL_IP` -> `IP_TRANSPARENT`
3779    pub fn r#get_ip_transparent(
3780        &self,
3781    ) -> fidl::client::QueryResponseFut<
3782        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
3783        fidl::encoding::DefaultFuchsiaResourceDialect,
3784    > {
3785        SocketProxyInterface::r#get_ip_transparent(self)
3786    }
3787
3788    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
3789    pub fn r#set_ip_receive_original_destination_address(
3790        &self,
3791        mut value: bool,
3792    ) -> fidl::client::QueryResponseFut<
3793        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
3794        fidl::encoding::DefaultFuchsiaResourceDialect,
3795    > {
3796        SocketProxyInterface::r#set_ip_receive_original_destination_address(self, value)
3797    }
3798
3799    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
3800    pub fn r#get_ip_receive_original_destination_address(
3801        &self,
3802    ) -> fidl::client::QueryResponseFut<
3803        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
3804        fidl::encoding::DefaultFuchsiaResourceDialect,
3805    > {
3806        SocketProxyInterface::r#get_ip_receive_original_destination_address(self)
3807    }
3808
3809    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
3810    pub fn r#add_ipv6_membership(
3811        &self,
3812        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3813    ) -> fidl::client::QueryResponseFut<
3814        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
3815        fidl::encoding::DefaultFuchsiaResourceDialect,
3816    > {
3817        SocketProxyInterface::r#add_ipv6_membership(self, membership)
3818    }
3819
3820    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
3821    pub fn r#drop_ipv6_membership(
3822        &self,
3823        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3824    ) -> fidl::client::QueryResponseFut<
3825        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
3826        fidl::encoding::DefaultFuchsiaResourceDialect,
3827    > {
3828        SocketProxyInterface::r#drop_ipv6_membership(self, membership)
3829    }
3830
3831    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3832    pub fn r#set_ipv6_multicast_interface(
3833        &self,
3834        mut value: u64,
3835    ) -> fidl::client::QueryResponseFut<
3836        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
3837        fidl::encoding::DefaultFuchsiaResourceDialect,
3838    > {
3839        SocketProxyInterface::r#set_ipv6_multicast_interface(self, value)
3840    }
3841
3842    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3843    pub fn r#get_ipv6_multicast_interface(
3844        &self,
3845    ) -> fidl::client::QueryResponseFut<
3846        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
3847        fidl::encoding::DefaultFuchsiaResourceDialect,
3848    > {
3849        SocketProxyInterface::r#get_ipv6_multicast_interface(self)
3850    }
3851
3852    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3853    pub fn r#set_ipv6_unicast_hops(
3854        &self,
3855        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3856    ) -> fidl::client::QueryResponseFut<
3857        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
3858        fidl::encoding::DefaultFuchsiaResourceDialect,
3859    > {
3860        SocketProxyInterface::r#set_ipv6_unicast_hops(self, value)
3861    }
3862
3863    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3864    pub fn r#get_ipv6_unicast_hops(
3865        &self,
3866    ) -> fidl::client::QueryResponseFut<
3867        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
3868        fidl::encoding::DefaultFuchsiaResourceDialect,
3869    > {
3870        SocketProxyInterface::r#get_ipv6_unicast_hops(self)
3871    }
3872
3873    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3874    pub fn r#set_ipv6_receive_hop_limit(
3875        &self,
3876        mut value: bool,
3877    ) -> fidl::client::QueryResponseFut<
3878        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
3879        fidl::encoding::DefaultFuchsiaResourceDialect,
3880    > {
3881        SocketProxyInterface::r#set_ipv6_receive_hop_limit(self, value)
3882    }
3883
3884    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3885    pub fn r#get_ipv6_receive_hop_limit(
3886        &self,
3887    ) -> fidl::client::QueryResponseFut<
3888        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
3889        fidl::encoding::DefaultFuchsiaResourceDialect,
3890    > {
3891        SocketProxyInterface::r#get_ipv6_receive_hop_limit(self)
3892    }
3893
3894    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3895    pub fn r#set_ipv6_multicast_hops(
3896        &self,
3897        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3898    ) -> fidl::client::QueryResponseFut<
3899        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
3900        fidl::encoding::DefaultFuchsiaResourceDialect,
3901    > {
3902        SocketProxyInterface::r#set_ipv6_multicast_hops(self, value)
3903    }
3904
3905    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3906    pub fn r#get_ipv6_multicast_hops(
3907        &self,
3908    ) -> fidl::client::QueryResponseFut<
3909        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
3910        fidl::encoding::DefaultFuchsiaResourceDialect,
3911    > {
3912        SocketProxyInterface::r#get_ipv6_multicast_hops(self)
3913    }
3914
3915    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3916    pub fn r#set_ipv6_multicast_loopback(
3917        &self,
3918        mut value: bool,
3919    ) -> fidl::client::QueryResponseFut<
3920        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
3921        fidl::encoding::DefaultFuchsiaResourceDialect,
3922    > {
3923        SocketProxyInterface::r#set_ipv6_multicast_loopback(self, value)
3924    }
3925
3926    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3927    pub fn r#get_ipv6_multicast_loopback(
3928        &self,
3929    ) -> fidl::client::QueryResponseFut<
3930        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
3931        fidl::encoding::DefaultFuchsiaResourceDialect,
3932    > {
3933        SocketProxyInterface::r#get_ipv6_multicast_loopback(self)
3934    }
3935
3936    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
3937    pub fn r#set_ipv6_only(
3938        &self,
3939        mut value: bool,
3940    ) -> fidl::client::QueryResponseFut<
3941        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
3942        fidl::encoding::DefaultFuchsiaResourceDialect,
3943    > {
3944        SocketProxyInterface::r#set_ipv6_only(self, value)
3945    }
3946
3947    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
3948    pub fn r#get_ipv6_only(
3949        &self,
3950    ) -> fidl::client::QueryResponseFut<
3951        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
3952        fidl::encoding::DefaultFuchsiaResourceDialect,
3953    > {
3954        SocketProxyInterface::r#get_ipv6_only(self)
3955    }
3956
3957    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
3958    pub fn r#set_ipv6_receive_traffic_class(
3959        &self,
3960        mut value: bool,
3961    ) -> fidl::client::QueryResponseFut<
3962        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
3963        fidl::encoding::DefaultFuchsiaResourceDialect,
3964    > {
3965        SocketProxyInterface::r#set_ipv6_receive_traffic_class(self, value)
3966    }
3967
3968    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
3969    pub fn r#get_ipv6_receive_traffic_class(
3970        &self,
3971    ) -> fidl::client::QueryResponseFut<
3972        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
3973        fidl::encoding::DefaultFuchsiaResourceDialect,
3974    > {
3975        SocketProxyInterface::r#get_ipv6_receive_traffic_class(self)
3976    }
3977
3978    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
3979    pub fn r#set_ipv6_traffic_class(
3980        &self,
3981        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3982    ) -> fidl::client::QueryResponseFut<
3983        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
3984        fidl::encoding::DefaultFuchsiaResourceDialect,
3985    > {
3986        SocketProxyInterface::r#set_ipv6_traffic_class(self, value)
3987    }
3988
3989    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
3990    pub fn r#get_ipv6_traffic_class(
3991        &self,
3992    ) -> fidl::client::QueryResponseFut<
3993        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
3994        fidl::encoding::DefaultFuchsiaResourceDialect,
3995    > {
3996        SocketProxyInterface::r#get_ipv6_traffic_class(self)
3997    }
3998
3999    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4000    pub fn r#set_ipv6_receive_packet_info(
4001        &self,
4002        mut value: bool,
4003    ) -> fidl::client::QueryResponseFut<
4004        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
4005        fidl::encoding::DefaultFuchsiaResourceDialect,
4006    > {
4007        SocketProxyInterface::r#set_ipv6_receive_packet_info(self, value)
4008    }
4009
4010    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4011    pub fn r#get_ipv6_receive_packet_info(
4012        &self,
4013    ) -> fidl::client::QueryResponseFut<
4014        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
4015        fidl::encoding::DefaultFuchsiaResourceDialect,
4016    > {
4017        SocketProxyInterface::r#get_ipv6_receive_packet_info(self)
4018    }
4019
4020    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
4021    pub fn r#get_original_destination(
4022        &self,
4023    ) -> fidl::client::QueryResponseFut<
4024        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
4025        fidl::encoding::DefaultFuchsiaResourceDialect,
4026    > {
4027        SocketProxyInterface::r#get_original_destination(self)
4028    }
4029
4030    pub fn r#describe(
4031        &self,
4032    ) -> fidl::client::QueryResponseFut<
4033        SocketDescribeResponse,
4034        fidl::encoding::DefaultFuchsiaResourceDialect,
4035    > {
4036        SocketProxyInterface::r#describe(self)
4037    }
4038
4039    /// Receives a message from the socket.
4040    ///
4041    /// + request `want_addr` request message's source address information to
4042    ///   be returned.
4043    /// + request `data_len` the maximum allowed length of the response data
4044    ///   buffer.
4045    /// + request `want_control` request ancillary data to be returned.
4046    /// + request `flags` flags for the receive request.
4047    /// - response `addr` the message's source address information, if
4048    ///   requested.
4049    /// - response `data` the message.
4050    /// - response `control` control messages, if requested.
4051    /// - response `truncated` indicates whether or not the returned message
4052    ///   was truncated.
4053    pub fn r#recv_msg(
4054        &self,
4055        mut want_addr: bool,
4056        mut data_len: u32,
4057        mut want_control: bool,
4058        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
4059    ) -> fidl::client::QueryResponseFut<
4060        SocketRecvMsgResult,
4061        fidl::encoding::DefaultFuchsiaResourceDialect,
4062    > {
4063        SocketProxyInterface::r#recv_msg(self, want_addr, data_len, want_control, flags)
4064    }
4065
4066    /// Sends a message on the socket.
4067    ///
4068    /// + request `addr` the address to send the message to. If unset, will
4069    ///   send to the connected peer.
4070    /// + request `data` the message.
4071    /// + request `control` ancillary data.
4072    /// + request `flags` flags for the send request.
4073    pub fn r#send_msg(
4074        &self,
4075        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
4076        mut data: &[u8],
4077        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
4078        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
4079    ) -> fidl::client::QueryResponseFut<
4080        SocketSendMsgResult,
4081        fidl::encoding::DefaultFuchsiaResourceDialect,
4082    > {
4083        SocketProxyInterface::r#send_msg(self, addr, data, control, flags)
4084    }
4085
4086    /// Retrieves creation information from the socket.
4087    ///
4088    /// - response `domain` the socket's associated domain.
4089    /// - response `proto` the socket's associated protocol.
4090    pub fn r#get_info(
4091        &self,
4092    ) -> fidl::client::QueryResponseFut<
4093        SocketGetInfoResult,
4094        fidl::encoding::DefaultFuchsiaResourceDialect,
4095    > {
4096        SocketProxyInterface::r#get_info(self)
4097    }
4098
4099    /// Set `SOL_IP` -> `IP_HDRINCL`.
4100    pub fn r#set_ip_header_included(
4101        &self,
4102        mut value: bool,
4103    ) -> fidl::client::QueryResponseFut<
4104        SocketSetIpHeaderIncludedResult,
4105        fidl::encoding::DefaultFuchsiaResourceDialect,
4106    > {
4107        SocketProxyInterface::r#set_ip_header_included(self, value)
4108    }
4109
4110    /// Get `SOL_IP` -> `IP_HDRINCL`.
4111    pub fn r#get_ip_header_included(
4112        &self,
4113    ) -> fidl::client::QueryResponseFut<
4114        SocketGetIpHeaderIncludedResult,
4115        fidl::encoding::DefaultFuchsiaResourceDialect,
4116    > {
4117        SocketProxyInterface::r#get_ip_header_included(self)
4118    }
4119
4120    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
4121    pub fn r#set_icmpv6_filter(
4122        &self,
4123        mut filter: &Icmpv6Filter,
4124    ) -> fidl::client::QueryResponseFut<
4125        SocketSetIcmpv6FilterResult,
4126        fidl::encoding::DefaultFuchsiaResourceDialect,
4127    > {
4128        SocketProxyInterface::r#set_icmpv6_filter(self, filter)
4129    }
4130
4131    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
4132    pub fn r#get_icmpv6_filter(
4133        &self,
4134    ) -> fidl::client::QueryResponseFut<
4135        SocketGetIcmpv6FilterResult,
4136        fidl::encoding::DefaultFuchsiaResourceDialect,
4137    > {
4138        SocketProxyInterface::r#get_icmpv6_filter(self)
4139    }
4140
4141    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
4142    pub fn r#set_ipv6_checksum(
4143        &self,
4144        mut config: &Ipv6ChecksumConfiguration,
4145    ) -> fidl::client::QueryResponseFut<
4146        SocketSetIpv6ChecksumResult,
4147        fidl::encoding::DefaultFuchsiaResourceDialect,
4148    > {
4149        SocketProxyInterface::r#set_ipv6_checksum(self, config)
4150    }
4151
4152    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
4153    pub fn r#get_ipv6_checksum(
4154        &self,
4155    ) -> fidl::client::QueryResponseFut<
4156        SocketGetIpv6ChecksumResult,
4157        fidl::encoding::DefaultFuchsiaResourceDialect,
4158    > {
4159        SocketProxyInterface::r#get_ipv6_checksum(self)
4160    }
4161}
4162
4163impl SocketProxyInterface for SocketProxy {
4164    fn r#clone(
4165        &self,
4166        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
4167    ) -> Result<(), fidl::Error> {
4168        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
4169            (request,),
4170            0x20d8a7aba2168a79,
4171            fidl::encoding::DynamicFlags::empty(),
4172        )
4173    }
4174
4175    type CloseResponseFut = fidl::client::QueryResponseFut<
4176        fidl_fuchsia_unknown::CloseableCloseResult,
4177        fidl::encoding::DefaultFuchsiaResourceDialect,
4178    >;
4179    fn r#close(&self) -> Self::CloseResponseFut {
4180        fn _decode(
4181            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4182        ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
4183            let _response = fidl::client::decode_transaction_body::<
4184                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
4185                fidl::encoding::DefaultFuchsiaResourceDialect,
4186                0x5ac5d459ad7f657e,
4187            >(_buf?)?;
4188            Ok(_response.map(|x| x))
4189        }
4190        self.client.send_query_and_decode::<
4191            fidl::encoding::EmptyPayload,
4192            fidl_fuchsia_unknown::CloseableCloseResult,
4193        >(
4194            (),
4195            0x5ac5d459ad7f657e,
4196            fidl::encoding::DynamicFlags::empty(),
4197            _decode,
4198        )
4199    }
4200
4201    type QueryResponseFut =
4202        fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
4203    fn r#query(&self) -> Self::QueryResponseFut {
4204        fn _decode(
4205            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4206        ) -> Result<Vec<u8>, fidl::Error> {
4207            let _response = fidl::client::decode_transaction_body::<
4208                fidl_fuchsia_unknown::QueryableQueryResponse,
4209                fidl::encoding::DefaultFuchsiaResourceDialect,
4210                0x2658edee9decfc06,
4211            >(_buf?)?;
4212            Ok(_response.protocol)
4213        }
4214        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<u8>>(
4215            (),
4216            0x2658edee9decfc06,
4217            fidl::encoding::DynamicFlags::empty(),
4218            _decode,
4219        )
4220    }
4221
4222    type SetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4223        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4224        fidl::encoding::DefaultFuchsiaResourceDialect,
4225    >;
4226    fn r#set_reuse_address(&self, mut value: bool) -> Self::SetReuseAddressResponseFut {
4227        fn _decode(
4228            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4229        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error>
4230        {
4231            let _response = fidl::client::decode_transaction_body::<
4232                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4233                fidl::encoding::DefaultFuchsiaResourceDialect,
4234                0x1fd74ee8b9a4a876,
4235            >(_buf?)?;
4236            Ok(_response.map(|x| x))
4237        }
4238        self.client.send_query_and_decode::<
4239            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
4240            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4241        >(
4242            (value,),
4243            0x1fd74ee8b9a4a876,
4244            fidl::encoding::DynamicFlags::empty(),
4245            _decode,
4246        )
4247    }
4248
4249    type GetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4250        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4251        fidl::encoding::DefaultFuchsiaResourceDialect,
4252    >;
4253    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut {
4254        fn _decode(
4255            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4256        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error>
4257        {
4258            let _response = fidl::client::decode_transaction_body::<
4259                fidl::encoding::ResultType<
4260                    fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
4261                    fidl_fuchsia_posix::Errno,
4262                >,
4263                fidl::encoding::DefaultFuchsiaResourceDialect,
4264                0x67b7206b8d1bc0a5,
4265            >(_buf?)?;
4266            Ok(_response.map(|x| x.value))
4267        }
4268        self.client.send_query_and_decode::<
4269            fidl::encoding::EmptyPayload,
4270            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4271        >(
4272            (),
4273            0x67b7206b8d1bc0a5,
4274            fidl::encoding::DynamicFlags::empty(),
4275            _decode,
4276        )
4277    }
4278
4279    type GetErrorResponseFut = fidl::client::QueryResponseFut<
4280        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4281        fidl::encoding::DefaultFuchsiaResourceDialect,
4282    >;
4283    fn r#get_error(&self) -> Self::GetErrorResponseFut {
4284        fn _decode(
4285            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4286        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
4287            let _response = fidl::client::decode_transaction_body::<
4288                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4289                fidl::encoding::DefaultFuchsiaResourceDialect,
4290                0x5aad39b33e5f6ebb,
4291            >(_buf?)?;
4292            Ok(_response.map(|x| x))
4293        }
4294        self.client.send_query_and_decode::<
4295            fidl::encoding::EmptyPayload,
4296            fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4297        >(
4298            (),
4299            0x5aad39b33e5f6ebb,
4300            fidl::encoding::DynamicFlags::empty(),
4301            _decode,
4302        )
4303    }
4304
4305    type SetBroadcastResponseFut = fidl::client::QueryResponseFut<
4306        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4307        fidl::encoding::DefaultFuchsiaResourceDialect,
4308    >;
4309    fn r#set_broadcast(&self, mut value: bool) -> Self::SetBroadcastResponseFut {
4310        fn _decode(
4311            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4312        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
4313            let _response = fidl::client::decode_transaction_body::<
4314                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4315                fidl::encoding::DefaultFuchsiaResourceDialect,
4316                0x6023e081ce3cd947,
4317            >(_buf?)?;
4318            Ok(_response.map(|x| x))
4319        }
4320        self.client.send_query_and_decode::<
4321            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
4322            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4323        >(
4324            (value,),
4325            0x6023e081ce3cd947,
4326            fidl::encoding::DynamicFlags::empty(),
4327            _decode,
4328        )
4329    }
4330
4331    type GetBroadcastResponseFut = fidl::client::QueryResponseFut<
4332        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4333        fidl::encoding::DefaultFuchsiaResourceDialect,
4334    >;
4335    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut {
4336        fn _decode(
4337            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4338        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
4339            let _response = fidl::client::decode_transaction_body::<
4340                fidl::encoding::ResultType<
4341                    fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
4342                    fidl_fuchsia_posix::Errno,
4343                >,
4344                fidl::encoding::DefaultFuchsiaResourceDialect,
4345                0x68796fc556f9780d,
4346            >(_buf?)?;
4347            Ok(_response.map(|x| x.value))
4348        }
4349        self.client.send_query_and_decode::<
4350            fidl::encoding::EmptyPayload,
4351            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4352        >(
4353            (),
4354            0x68796fc556f9780d,
4355            fidl::encoding::DynamicFlags::empty(),
4356            _decode,
4357        )
4358    }
4359
4360    type SetSendBufferResponseFut = fidl::client::QueryResponseFut<
4361        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4362        fidl::encoding::DefaultFuchsiaResourceDialect,
4363    >;
4364    fn r#set_send_buffer(&self, mut value_bytes: u64) -> Self::SetSendBufferResponseFut {
4365        fn _decode(
4366            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4367        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
4368            let _response = fidl::client::decode_transaction_body::<
4369                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4370                fidl::encoding::DefaultFuchsiaResourceDialect,
4371                0x756eac32d73a7a70,
4372            >(_buf?)?;
4373            Ok(_response.map(|x| x))
4374        }
4375        self.client.send_query_and_decode::<
4376            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
4377            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4378        >(
4379            (value_bytes,),
4380            0x756eac32d73a7a70,
4381            fidl::encoding::DynamicFlags::empty(),
4382            _decode,
4383        )
4384    }
4385
4386    type GetSendBufferResponseFut = fidl::client::QueryResponseFut<
4387        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4388        fidl::encoding::DefaultFuchsiaResourceDialect,
4389    >;
4390    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut {
4391        fn _decode(
4392            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4393        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
4394            let _response = fidl::client::decode_transaction_body::<
4395                fidl::encoding::ResultType<
4396                    fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
4397                    fidl_fuchsia_posix::Errno,
4398                >,
4399                fidl::encoding::DefaultFuchsiaResourceDialect,
4400                0x78a52fd9c7b2410b,
4401            >(_buf?)?;
4402            Ok(_response.map(|x| x.value_bytes))
4403        }
4404        self.client.send_query_and_decode::<
4405            fidl::encoding::EmptyPayload,
4406            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4407        >(
4408            (),
4409            0x78a52fd9c7b2410b,
4410            fidl::encoding::DynamicFlags::empty(),
4411            _decode,
4412        )
4413    }
4414
4415    type SetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4416        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4417        fidl::encoding::DefaultFuchsiaResourceDialect,
4418    >;
4419    fn r#set_receive_buffer(&self, mut value_bytes: u64) -> Self::SetReceiveBufferResponseFut {
4420        fn _decode(
4421            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4422        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error>
4423        {
4424            let _response = fidl::client::decode_transaction_body::<
4425                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4426                fidl::encoding::DefaultFuchsiaResourceDialect,
4427                0x6b0cf2f1919c7001,
4428            >(_buf?)?;
4429            Ok(_response.map(|x| x))
4430        }
4431        self.client.send_query_and_decode::<
4432            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
4433            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4434        >(
4435            (value_bytes,),
4436            0x6b0cf2f1919c7001,
4437            fidl::encoding::DynamicFlags::empty(),
4438            _decode,
4439        )
4440    }
4441
4442    type GetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4443        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4444        fidl::encoding::DefaultFuchsiaResourceDialect,
4445    >;
4446    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut {
4447        fn _decode(
4448            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4449        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error>
4450        {
4451            let _response = fidl::client::decode_transaction_body::<
4452                fidl::encoding::ResultType<
4453                    fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
4454                    fidl_fuchsia_posix::Errno,
4455                >,
4456                fidl::encoding::DefaultFuchsiaResourceDialect,
4457                0x14c1a4b64f709e5c,
4458            >(_buf?)?;
4459            Ok(_response.map(|x| x.value_bytes))
4460        }
4461        self.client.send_query_and_decode::<
4462            fidl::encoding::EmptyPayload,
4463            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4464        >(
4465            (),
4466            0x14c1a4b64f709e5c,
4467            fidl::encoding::DynamicFlags::empty(),
4468            _decode,
4469        )
4470    }
4471
4472    type SetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4473        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4474        fidl::encoding::DefaultFuchsiaResourceDialect,
4475    >;
4476    fn r#set_keep_alive(&self, mut value: bool) -> Self::SetKeepAliveResponseFut {
4477        fn _decode(
4478            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4479        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
4480            let _response = fidl::client::decode_transaction_body::<
4481                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4482                fidl::encoding::DefaultFuchsiaResourceDialect,
4483                0x572df8f0b920d2c7,
4484            >(_buf?)?;
4485            Ok(_response.map(|x| x))
4486        }
4487        self.client.send_query_and_decode::<
4488            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
4489            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4490        >(
4491            (value,),
4492            0x572df8f0b920d2c7,
4493            fidl::encoding::DynamicFlags::empty(),
4494            _decode,
4495        )
4496    }
4497
4498    type GetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4499        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4500        fidl::encoding::DefaultFuchsiaResourceDialect,
4501    >;
4502    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut {
4503        fn _decode(
4504            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4505        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
4506            let _response = fidl::client::decode_transaction_body::<
4507                fidl::encoding::ResultType<
4508                    fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
4509                    fidl_fuchsia_posix::Errno,
4510                >,
4511                fidl::encoding::DefaultFuchsiaResourceDialect,
4512                0x2dd29d3215f2c9d2,
4513            >(_buf?)?;
4514            Ok(_response.map(|x| x.value))
4515        }
4516        self.client.send_query_and_decode::<
4517            fidl::encoding::EmptyPayload,
4518            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4519        >(
4520            (),
4521            0x2dd29d3215f2c9d2,
4522            fidl::encoding::DynamicFlags::empty(),
4523            _decode,
4524        )
4525    }
4526
4527    type SetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4528        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4529        fidl::encoding::DefaultFuchsiaResourceDialect,
4530    >;
4531    fn r#set_out_of_band_inline(&self, mut value: bool) -> Self::SetOutOfBandInlineResponseFut {
4532        fn _decode(
4533            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4534        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error>
4535        {
4536            let _response = fidl::client::decode_transaction_body::<
4537                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4538                fidl::encoding::DefaultFuchsiaResourceDialect,
4539                0x3ecb49968bee439,
4540            >(_buf?)?;
4541            Ok(_response.map(|x| x))
4542        }
4543        self.client.send_query_and_decode::<
4544            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
4545            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4546        >(
4547            (value,),
4548            0x3ecb49968bee439,
4549            fidl::encoding::DynamicFlags::empty(),
4550            _decode,
4551        )
4552    }
4553
4554    type GetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4555        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4556        fidl::encoding::DefaultFuchsiaResourceDialect,
4557    >;
4558    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut {
4559        fn _decode(
4560            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4561        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error>
4562        {
4563            let _response = fidl::client::decode_transaction_body::<
4564                fidl::encoding::ResultType<
4565                    fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
4566                    fidl_fuchsia_posix::Errno,
4567                >,
4568                fidl::encoding::DefaultFuchsiaResourceDialect,
4569                0x348c1ab3aeca1745,
4570            >(_buf?)?;
4571            Ok(_response.map(|x| x.value))
4572        }
4573        self.client.send_query_and_decode::<
4574            fidl::encoding::EmptyPayload,
4575            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4576        >(
4577            (),
4578            0x348c1ab3aeca1745,
4579            fidl::encoding::DynamicFlags::empty(),
4580            _decode,
4581        )
4582    }
4583
4584    type SetNoCheckResponseFut = fidl::client::QueryResponseFut<
4585        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4586        fidl::encoding::DefaultFuchsiaResourceDialect,
4587    >;
4588    fn r#set_no_check(&self, mut value: bool) -> Self::SetNoCheckResponseFut {
4589        fn _decode(
4590            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4591        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
4592            let _response = fidl::client::decode_transaction_body::<
4593                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4594                fidl::encoding::DefaultFuchsiaResourceDialect,
4595                0x6bbf00c53a4c78c2,
4596            >(_buf?)?;
4597            Ok(_response.map(|x| x))
4598        }
4599        self.client.send_query_and_decode::<
4600            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
4601            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4602        >(
4603            (value,),
4604            0x6bbf00c53a4c78c2,
4605            fidl::encoding::DynamicFlags::empty(),
4606            _decode,
4607        )
4608    }
4609
4610    type GetNoCheckResponseFut = fidl::client::QueryResponseFut<
4611        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4612        fidl::encoding::DefaultFuchsiaResourceDialect,
4613    >;
4614    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut {
4615        fn _decode(
4616            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4617        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
4618            let _response = fidl::client::decode_transaction_body::<
4619                fidl::encoding::ResultType<
4620                    fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
4621                    fidl_fuchsia_posix::Errno,
4622                >,
4623                fidl::encoding::DefaultFuchsiaResourceDialect,
4624                0x2cd4249286417694,
4625            >(_buf?)?;
4626            Ok(_response.map(|x| x.value))
4627        }
4628        self.client.send_query_and_decode::<
4629            fidl::encoding::EmptyPayload,
4630            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4631        >(
4632            (),
4633            0x2cd4249286417694,
4634            fidl::encoding::DynamicFlags::empty(),
4635            _decode,
4636        )
4637    }
4638
4639    type SetLingerResponseFut = fidl::client::QueryResponseFut<
4640        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4641        fidl::encoding::DefaultFuchsiaResourceDialect,
4642    >;
4643    fn r#set_linger(&self, mut linger: bool, mut length_secs: u32) -> Self::SetLingerResponseFut {
4644        fn _decode(
4645            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4646        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
4647            let _response = fidl::client::decode_transaction_body::<
4648                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4649                fidl::encoding::DefaultFuchsiaResourceDialect,
4650                0x45386351246e998e,
4651            >(_buf?)?;
4652            Ok(_response.map(|x| x))
4653        }
4654        self.client.send_query_and_decode::<
4655            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
4656            fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4657        >(
4658            (linger, length_secs,),
4659            0x45386351246e998e,
4660            fidl::encoding::DynamicFlags::empty(),
4661            _decode,
4662        )
4663    }
4664
4665    type GetLingerResponseFut = fidl::client::QueryResponseFut<
4666        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4667        fidl::encoding::DefaultFuchsiaResourceDialect,
4668    >;
4669    fn r#get_linger(&self) -> Self::GetLingerResponseFut {
4670        fn _decode(
4671            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4672        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
4673            let _response = fidl::client::decode_transaction_body::<
4674                fidl::encoding::ResultType<
4675                    fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
4676                    fidl_fuchsia_posix::Errno,
4677                >,
4678                fidl::encoding::DefaultFuchsiaResourceDialect,
4679                0x48eb20fc5ccb0e45,
4680            >(_buf?)?;
4681            Ok(_response.map(|x| (x.linger, x.length_secs)))
4682        }
4683        self.client.send_query_and_decode::<
4684            fidl::encoding::EmptyPayload,
4685            fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4686        >(
4687            (),
4688            0x48eb20fc5ccb0e45,
4689            fidl::encoding::DynamicFlags::empty(),
4690            _decode,
4691        )
4692    }
4693
4694    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4695        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4696        fidl::encoding::DefaultFuchsiaResourceDialect,
4697    >;
4698    fn r#set_reuse_port(
4699        &self,
4700        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
4701    ) -> Self::SetReusePortResponseFut {
4702        fn _decode(
4703            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4704        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4705            let _response = fidl::client::decode_transaction_body::<
4706                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4707                fidl::encoding::DefaultFuchsiaResourceDialect,
4708                0x547dc9cc0455189e,
4709            >(_buf?)?;
4710            Ok(_response.map(|x| x))
4711        }
4712        self.client.send_query_and_decode::<
4713            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4714            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4715        >(
4716            (&mut value,),
4717            0x547dc9cc0455189e,
4718            fidl::encoding::DynamicFlags::empty(),
4719            _decode,
4720        )
4721    }
4722
4723    type SetReusePortDeprecatedResponseFut = fidl::client::QueryResponseFut<
4724        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4725        fidl::encoding::DefaultFuchsiaResourceDialect,
4726    >;
4727    fn r#set_reuse_port_deprecated(
4728        &self,
4729        mut value: bool,
4730    ) -> Self::SetReusePortDeprecatedResponseFut {
4731        fn _decode(
4732            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4733        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
4734        {
4735            let _response = fidl::client::decode_transaction_body::<
4736                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4737                fidl::encoding::DefaultFuchsiaResourceDialect,
4738                0x24dd3e5cb36d9ccb,
4739            >(_buf?)?;
4740            Ok(_response.map(|x| x))
4741        }
4742        self.client.send_query_and_decode::<
4743            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
4744            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4745        >(
4746            (value,),
4747            0x24dd3e5cb36d9ccb,
4748            fidl::encoding::DynamicFlags::empty(),
4749            _decode,
4750        )
4751    }
4752
4753    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4754        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4755        fidl::encoding::DefaultFuchsiaResourceDialect,
4756    >;
4757    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4758        fn _decode(
4759            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4760        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4761            let _response = fidl::client::decode_transaction_body::<
4762                fidl::encoding::ResultType<
4763                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4764                    fidl_fuchsia_posix::Errno,
4765                >,
4766                fidl::encoding::DefaultFuchsiaResourceDialect,
4767                0x7a112c1ab54ff828,
4768            >(_buf?)?;
4769            Ok(_response.map(|x| x.value))
4770        }
4771        self.client.send_query_and_decode::<
4772            fidl::encoding::EmptyPayload,
4773            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4774        >(
4775            (),
4776            0x7a112c1ab54ff828,
4777            fidl::encoding::DynamicFlags::empty(),
4778            _decode,
4779        )
4780    }
4781
4782    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4783        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4784        fidl::encoding::DefaultFuchsiaResourceDialect,
4785    >;
4786    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4787        fn _decode(
4788            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4789        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4790            let _response = fidl::client::decode_transaction_body::<
4791                fidl::encoding::ResultType<
4792                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4793                    fidl_fuchsia_posix::Errno,
4794                >,
4795                fidl::encoding::DefaultFuchsiaResourceDialect,
4796                0x67ce6db6c2ec8966,
4797            >(_buf?)?;
4798            Ok(_response.map(|x| x.value))
4799        }
4800        self.client.send_query_and_decode::<
4801            fidl::encoding::EmptyPayload,
4802            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4803        >(
4804            (),
4805            0x67ce6db6c2ec8966,
4806            fidl::encoding::DynamicFlags::empty(),
4807            _decode,
4808        )
4809    }
4810
4811    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4812        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4813        fidl::encoding::DefaultFuchsiaResourceDialect,
4814    >;
4815    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4816        fn _decode(
4817            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4818        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4819        {
4820            let _response = fidl::client::decode_transaction_body::<
4821                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4822                fidl::encoding::DefaultFuchsiaResourceDialect,
4823                0x2118b483f28aafc4,
4824            >(_buf?)?;
4825            Ok(_response.map(|x| x))
4826        }
4827        self.client.send_query_and_decode::<
4828            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4829            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4830        >(
4831            (value,),
4832            0x2118b483f28aafc4,
4833            fidl::encoding::DynamicFlags::empty(),
4834            _decode,
4835        )
4836    }
4837
4838    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4839        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4840        fidl::encoding::DefaultFuchsiaResourceDialect,
4841    >;
4842    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4843        fn _decode(
4844            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4845        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4846        {
4847            let _response = fidl::client::decode_transaction_body::<
4848                fidl::encoding::ResultType<
4849                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4850                    fidl_fuchsia_posix::Errno,
4851                >,
4852                fidl::encoding::DefaultFuchsiaResourceDialect,
4853                0x1ab1fbf0ef7906c8,
4854            >(_buf?)?;
4855            Ok(_response.map(|x| x.value))
4856        }
4857        self.client.send_query_and_decode::<
4858            fidl::encoding::EmptyPayload,
4859            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4860        >(
4861            (),
4862            0x1ab1fbf0ef7906c8,
4863            fidl::encoding::DynamicFlags::empty(),
4864            _decode,
4865        )
4866    }
4867
4868    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4869        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4870        fidl::encoding::DefaultFuchsiaResourceDialect,
4871    >;
4872    fn r#set_bind_to_interface_index(
4873        &self,
4874        mut value: u64,
4875    ) -> Self::SetBindToInterfaceIndexResponseFut {
4876        fn _decode(
4877            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4878        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
4879        {
4880            let _response = fidl::client::decode_transaction_body::<
4881                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4882                fidl::encoding::DefaultFuchsiaResourceDialect,
4883                0x6e387a0def00821,
4884            >(_buf?)?;
4885            Ok(_response.map(|x| x))
4886        }
4887        self.client.send_query_and_decode::<
4888            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
4889            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4890        >(
4891            (value,),
4892            0x6e387a0def00821,
4893            fidl::encoding::DynamicFlags::empty(),
4894            _decode,
4895        )
4896    }
4897
4898    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4899        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4900        fidl::encoding::DefaultFuchsiaResourceDialect,
4901    >;
4902    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
4903        fn _decode(
4904            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4905        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
4906        {
4907            let _response = fidl::client::decode_transaction_body::<
4908                fidl::encoding::ResultType<
4909                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
4910                    fidl_fuchsia_posix::Errno,
4911                >,
4912                fidl::encoding::DefaultFuchsiaResourceDialect,
4913                0x59c31dd3e3078295,
4914            >(_buf?)?;
4915            Ok(_response.map(|x| x.value))
4916        }
4917        self.client.send_query_and_decode::<
4918            fidl::encoding::EmptyPayload,
4919            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4920        >(
4921            (),
4922            0x59c31dd3e3078295,
4923            fidl::encoding::DynamicFlags::empty(),
4924            _decode,
4925        )
4926    }
4927
4928    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
4929        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4930        fidl::encoding::DefaultFuchsiaResourceDialect,
4931    >;
4932    fn r#set_timestamp(
4933        &self,
4934        mut value: fidl_fuchsia_posix_socket::TimestampOption,
4935    ) -> Self::SetTimestampResponseFut {
4936        fn _decode(
4937            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4938        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
4939            let _response = fidl::client::decode_transaction_body::<
4940                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4941                fidl::encoding::DefaultFuchsiaResourceDialect,
4942                0x285d6516c263d839,
4943            >(_buf?)?;
4944            Ok(_response.map(|x| x))
4945        }
4946        self.client.send_query_and_decode::<
4947            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
4948            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4949        >(
4950            (value,),
4951            0x285d6516c263d839,
4952            fidl::encoding::DynamicFlags::empty(),
4953            _decode,
4954        )
4955    }
4956
4957    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
4958        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4959        fidl::encoding::DefaultFuchsiaResourceDialect,
4960    >;
4961    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
4962        fn _decode(
4963            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4964        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
4965            let _response = fidl::client::decode_transaction_body::<
4966                fidl::encoding::ResultType<
4967                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
4968                    fidl_fuchsia_posix::Errno,
4969                >,
4970                fidl::encoding::DefaultFuchsiaResourceDialect,
4971                0x49f2fffbbcc2bd27,
4972            >(_buf?)?;
4973            Ok(_response.map(|x| x.value))
4974        }
4975        self.client.send_query_and_decode::<
4976            fidl::encoding::EmptyPayload,
4977            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4978        >(
4979            (),
4980            0x49f2fffbbcc2bd27,
4981            fidl::encoding::DynamicFlags::empty(),
4982            _decode,
4983        )
4984    }
4985
4986    type SetMarkResponseFut = fidl::client::QueryResponseFut<
4987        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
4988        fidl::encoding::DefaultFuchsiaResourceDialect,
4989    >;
4990    fn r#set_mark(
4991        &self,
4992        mut domain: fidl_fuchsia_net::MarkDomain,
4993        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
4994    ) -> Self::SetMarkResponseFut {
4995        fn _decode(
4996            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4997        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
4998            let _response = fidl::client::decode_transaction_body::<
4999                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5000                fidl::encoding::DefaultFuchsiaResourceDialect,
5001                0x6ead6de09f653236,
5002            >(_buf?)?;
5003            Ok(_response.map(|x| x))
5004        }
5005        self.client.send_query_and_decode::<
5006            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
5007            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5008        >(
5009            (domain, mark,),
5010            0x6ead6de09f653236,
5011            fidl::encoding::DynamicFlags::empty(),
5012            _decode,
5013        )
5014    }
5015
5016    type GetMarkResponseFut = fidl::client::QueryResponseFut<
5017        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5018        fidl::encoding::DefaultFuchsiaResourceDialect,
5019    >;
5020    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
5021        fn _decode(
5022            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5023        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
5024            let _response = fidl::client::decode_transaction_body::<
5025                fidl::encoding::ResultType<
5026                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
5027                    fidl_fuchsia_posix::Errno,
5028                >,
5029                fidl::encoding::DefaultFuchsiaResourceDialect,
5030                0x57a2752c61d93d47,
5031            >(_buf?)?;
5032            Ok(_response.map(|x| x.mark))
5033        }
5034        self.client.send_query_and_decode::<
5035            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
5036            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5037        >(
5038            (domain,),
5039            0x57a2752c61d93d47,
5040            fidl::encoding::DynamicFlags::empty(),
5041            _decode,
5042        )
5043    }
5044
5045    type GetCookieResponseFut = fidl::client::QueryResponseFut<
5046        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5047        fidl::encoding::DefaultFuchsiaResourceDialect,
5048    >;
5049    fn r#get_cookie(&self) -> Self::GetCookieResponseFut {
5050        fn _decode(
5051            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5052        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
5053            let _response = fidl::client::decode_transaction_body::<
5054                fidl::encoding::ResultType<
5055                    fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
5056                    fidl_fuchsia_posix::Errno,
5057                >,
5058                fidl::encoding::DefaultFuchsiaResourceDialect,
5059                0x2c2f47fd8f924e52,
5060            >(_buf?)?;
5061            Ok(_response.map(|x| x.value))
5062        }
5063        self.client.send_query_and_decode::<
5064            fidl::encoding::EmptyPayload,
5065            fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5066        >(
5067            (),
5068            0x2c2f47fd8f924e52,
5069            fidl::encoding::DynamicFlags::empty(),
5070            _decode,
5071        )
5072    }
5073
5074    type BindResponseFut = fidl::client::QueryResponseFut<
5075        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5076        fidl::encoding::DefaultFuchsiaResourceDialect,
5077    >;
5078    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5079        fn _decode(
5080            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5081        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5082            let _response = fidl::client::decode_transaction_body::<
5083                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5084                fidl::encoding::DefaultFuchsiaResourceDialect,
5085                0x4bc6400ae92125d,
5086            >(_buf?)?;
5087            Ok(_response.map(|x| x))
5088        }
5089        self.client.send_query_and_decode::<
5090            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5091            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5092        >(
5093            (addr,),
5094            0x4bc6400ae92125d,
5095            fidl::encoding::DynamicFlags::empty(),
5096            _decode,
5097        )
5098    }
5099
5100    type ConnectResponseFut = fidl::client::QueryResponseFut<
5101        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5102        fidl::encoding::DefaultFuchsiaResourceDialect,
5103    >;
5104    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5105        fn _decode(
5106            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5107        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5108        {
5109            let _response = fidl::client::decode_transaction_body::<
5110                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5111                fidl::encoding::DefaultFuchsiaResourceDialect,
5112                0x5f05f19bfdd38871,
5113            >(_buf?)?;
5114            Ok(_response.map(|x| x))
5115        }
5116        self.client.send_query_and_decode::<
5117            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5118            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5119        >(
5120            (addr,),
5121            0x5f05f19bfdd38871,
5122            fidl::encoding::DynamicFlags::empty(),
5123            _decode,
5124        )
5125    }
5126
5127    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5128        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5129        fidl::encoding::DefaultFuchsiaResourceDialect,
5130    >;
5131    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5132        fn _decode(
5133            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5134        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5135        {
5136            let _response = fidl::client::decode_transaction_body::<
5137                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5138                fidl::encoding::DefaultFuchsiaResourceDialect,
5139                0x74e63b91f7b29b2,
5140            >(_buf?)?;
5141            Ok(_response.map(|x| x))
5142        }
5143        self.client.send_query_and_decode::<
5144            fidl::encoding::EmptyPayload,
5145            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5146        >(
5147            (),
5148            0x74e63b91f7b29b2,
5149            fidl::encoding::DynamicFlags::empty(),
5150            _decode,
5151        )
5152    }
5153
5154    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5155        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5156        fidl::encoding::DefaultFuchsiaResourceDialect,
5157    >;
5158    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5159        fn _decode(
5160            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5161        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5162        {
5163            let _response = fidl::client::decode_transaction_body::<
5164                fidl::encoding::ResultType<
5165                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5166                    fidl_fuchsia_posix::Errno,
5167                >,
5168                fidl::encoding::DefaultFuchsiaResourceDialect,
5169                0x475f23f84a1a4f85,
5170            >(_buf?)?;
5171            Ok(_response.map(|x| x.addr))
5172        }
5173        self.client.send_query_and_decode::<
5174            fidl::encoding::EmptyPayload,
5175            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5176        >(
5177            (),
5178            0x475f23f84a1a4f85,
5179            fidl::encoding::DynamicFlags::empty(),
5180            _decode,
5181        )
5182    }
5183
5184    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5185        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5186        fidl::encoding::DefaultFuchsiaResourceDialect,
5187    >;
5188    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5189        fn _decode(
5190            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5191        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5192        {
5193            let _response = fidl::client::decode_transaction_body::<
5194                fidl::encoding::ResultType<
5195                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5196                    fidl_fuchsia_posix::Errno,
5197                >,
5198                fidl::encoding::DefaultFuchsiaResourceDialect,
5199                0x1ffecf4bd5b6432e,
5200            >(_buf?)?;
5201            Ok(_response.map(|x| x.addr))
5202        }
5203        self.client.send_query_and_decode::<
5204            fidl::encoding::EmptyPayload,
5205            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5206        >(
5207            (),
5208            0x1ffecf4bd5b6432e,
5209            fidl::encoding::DynamicFlags::empty(),
5210            _decode,
5211        )
5212    }
5213
5214    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5215        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5216        fidl::encoding::DefaultFuchsiaResourceDialect,
5217    >;
5218    fn r#shutdown(
5219        &self,
5220        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5221    ) -> Self::ShutdownResponseFut {
5222        fn _decode(
5223            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5224        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5225        {
5226            let _response = fidl::client::decode_transaction_body::<
5227                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5228                fidl::encoding::DefaultFuchsiaResourceDialect,
5229                0x247f38b6db68c336,
5230            >(_buf?)?;
5231            Ok(_response.map(|x| x))
5232        }
5233        self.client.send_query_and_decode::<
5234            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5235            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5236        >(
5237            (mode,),
5238            0x247f38b6db68c336,
5239            fidl::encoding::DynamicFlags::empty(),
5240            _decode,
5241        )
5242    }
5243
5244    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5245        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5246        fidl::encoding::DefaultFuchsiaResourceDialect,
5247    >;
5248    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5249        fn _decode(
5250            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5251        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5252        {
5253            let _response = fidl::client::decode_transaction_body::<
5254                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5255                fidl::encoding::DefaultFuchsiaResourceDialect,
5256                0x995c600475b6d46,
5257            >(_buf?)?;
5258            Ok(_response.map(|x| x))
5259        }
5260        self.client.send_query_and_decode::<
5261            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5262            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5263        >(
5264            (value,),
5265            0x995c600475b6d46,
5266            fidl::encoding::DynamicFlags::empty(),
5267            _decode,
5268        )
5269    }
5270
5271    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5272        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5273        fidl::encoding::DefaultFuchsiaResourceDialect,
5274    >;
5275    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5276        fn _decode(
5277            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5278        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5279        {
5280            let _response = fidl::client::decode_transaction_body::<
5281                fidl::encoding::ResultType<
5282                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5283                    fidl_fuchsia_posix::Errno,
5284                >,
5285                fidl::encoding::DefaultFuchsiaResourceDialect,
5286                0x3814a04259f75fcb,
5287            >(_buf?)?;
5288            Ok(_response.map(|x| x.value))
5289        }
5290        self.client.send_query_and_decode::<
5291            fidl::encoding::EmptyPayload,
5292            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5293        >(
5294            (),
5295            0x3814a04259f75fcb,
5296            fidl::encoding::DynamicFlags::empty(),
5297            _decode,
5298        )
5299    }
5300
5301    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5302        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5303        fidl::encoding::DefaultFuchsiaResourceDialect,
5304    >;
5305    fn r#set_ip_ttl(
5306        &self,
5307        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5308    ) -> Self::SetIpTtlResponseFut {
5309        fn _decode(
5310            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5311        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5312        {
5313            let _response = fidl::client::decode_transaction_body::<
5314                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5315                fidl::encoding::DefaultFuchsiaResourceDialect,
5316                0x29e2424b433ae1ef,
5317            >(_buf?)?;
5318            Ok(_response.map(|x| x))
5319        }
5320        self.client.send_query_and_decode::<
5321            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5322            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5323        >(
5324            (value,),
5325            0x29e2424b433ae1ef,
5326            fidl::encoding::DynamicFlags::empty(),
5327            _decode,
5328        )
5329    }
5330
5331    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5332        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5333        fidl::encoding::DefaultFuchsiaResourceDialect,
5334    >;
5335    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5336        fn _decode(
5337            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5338        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5339        {
5340            let _response = fidl::client::decode_transaction_body::<
5341                fidl::encoding::ResultType<
5342                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5343                    fidl_fuchsia_posix::Errno,
5344                >,
5345                fidl::encoding::DefaultFuchsiaResourceDialect,
5346                0x47e47fa1f24da471,
5347            >(_buf?)?;
5348            Ok(_response.map(|x| x.value))
5349        }
5350        self.client.send_query_and_decode::<
5351            fidl::encoding::EmptyPayload,
5352            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5353        >(
5354            (),
5355            0x47e47fa1f24da471,
5356            fidl::encoding::DynamicFlags::empty(),
5357            _decode,
5358        )
5359    }
5360
5361    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5362        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5363        fidl::encoding::DefaultFuchsiaResourceDialect,
5364    >;
5365    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5366        fn _decode(
5367            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5368        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5369        {
5370            let _response = fidl::client::decode_transaction_body::<
5371                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5372                fidl::encoding::DefaultFuchsiaResourceDialect,
5373                0x392d16bee20c0e16,
5374            >(_buf?)?;
5375            Ok(_response.map(|x| x))
5376        }
5377        self.client.send_query_and_decode::<
5378            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5379            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5380        >(
5381            (value,),
5382            0x392d16bee20c0e16,
5383            fidl::encoding::DynamicFlags::empty(),
5384            _decode,
5385        )
5386    }
5387
5388    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5389        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5390        fidl::encoding::DefaultFuchsiaResourceDialect,
5391    >;
5392    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5393        fn _decode(
5394            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5395        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5396        {
5397            let _response = fidl::client::decode_transaction_body::<
5398                fidl::encoding::ResultType<
5399                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5400                    fidl_fuchsia_posix::Errno,
5401                >,
5402                fidl::encoding::DefaultFuchsiaResourceDialect,
5403                0x54b505f242280740,
5404            >(_buf?)?;
5405            Ok(_response.map(|x| x.value))
5406        }
5407        self.client.send_query_and_decode::<
5408            fidl::encoding::EmptyPayload,
5409            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5410        >(
5411            (),
5412            0x54b505f242280740,
5413            fidl::encoding::DynamicFlags::empty(),
5414            _decode,
5415        )
5416    }
5417
5418    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5419        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5420        fidl::encoding::DefaultFuchsiaResourceDialect,
5421    >;
5422    fn r#set_ip_receive_type_of_service(
5423        &self,
5424        mut value: bool,
5425    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5426        fn _decode(
5427            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5428        ) -> Result<
5429            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5430            fidl::Error,
5431        > {
5432            let _response = fidl::client::decode_transaction_body::<
5433                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5434                fidl::encoding::DefaultFuchsiaResourceDialect,
5435                0x6c4f6714995f84ef,
5436            >(_buf?)?;
5437            Ok(_response.map(|x| x))
5438        }
5439        self.client.send_query_and_decode::<
5440            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5441            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5442        >(
5443            (value,),
5444            0x6c4f6714995f84ef,
5445            fidl::encoding::DynamicFlags::empty(),
5446            _decode,
5447        )
5448    }
5449
5450    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5451        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5452        fidl::encoding::DefaultFuchsiaResourceDialect,
5453    >;
5454    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5455        fn _decode(
5456            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5457        ) -> Result<
5458            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5459            fidl::Error,
5460        > {
5461            let _response = fidl::client::decode_transaction_body::<
5462                fidl::encoding::ResultType<
5463                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5464                    fidl_fuchsia_posix::Errno,
5465                >,
5466                fidl::encoding::DefaultFuchsiaResourceDialect,
5467                0x4158ba7dc2795960,
5468            >(_buf?)?;
5469            Ok(_response.map(|x| x.value))
5470        }
5471        self.client.send_query_and_decode::<
5472            fidl::encoding::EmptyPayload,
5473            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5474        >(
5475            (),
5476            0x4158ba7dc2795960,
5477            fidl::encoding::DynamicFlags::empty(),
5478            _decode,
5479        )
5480    }
5481
5482    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5483        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5484        fidl::encoding::DefaultFuchsiaResourceDialect,
5485    >;
5486    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5487        fn _decode(
5488            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5489        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5490        {
5491            let _response = fidl::client::decode_transaction_body::<
5492                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5493                fidl::encoding::DefaultFuchsiaResourceDialect,
5494                0x46f15be0ce0ab82b,
5495            >(_buf?)?;
5496            Ok(_response.map(|x| x))
5497        }
5498        self.client.send_query_and_decode::<
5499            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5500            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5501        >(
5502            (value,),
5503            0x46f15be0ce0ab82b,
5504            fidl::encoding::DynamicFlags::empty(),
5505            _decode,
5506        )
5507    }
5508
5509    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5510        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5511        fidl::encoding::DefaultFuchsiaResourceDialect,
5512    >;
5513    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5514        fn _decode(
5515            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5516        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5517        {
5518            let _response = fidl::client::decode_transaction_body::<
5519                fidl::encoding::ResultType<
5520                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5521                    fidl_fuchsia_posix::Errno,
5522                >,
5523                fidl::encoding::DefaultFuchsiaResourceDialect,
5524                0x678ddd5a5dfa2eb5,
5525            >(_buf?)?;
5526            Ok(_response.map(|x| x.value))
5527        }
5528        self.client.send_query_and_decode::<
5529            fidl::encoding::EmptyPayload,
5530            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5531        >(
5532            (),
5533            0x678ddd5a5dfa2eb5,
5534            fidl::encoding::DynamicFlags::empty(),
5535            _decode,
5536        )
5537    }
5538
5539    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5540        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5541        fidl::encoding::DefaultFuchsiaResourceDialect,
5542    >;
5543    fn r#set_ip_multicast_interface(
5544        &self,
5545        mut iface: u64,
5546        mut address: &fidl_fuchsia_net::Ipv4Address,
5547    ) -> Self::SetIpMulticastInterfaceResponseFut {
5548        fn _decode(
5549            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5550        ) -> Result<
5551            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5552            fidl::Error,
5553        > {
5554            let _response = fidl::client::decode_transaction_body::<
5555                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5556                fidl::encoding::DefaultFuchsiaResourceDialect,
5557                0x752fbfa9b12befe,
5558            >(_buf?)?;
5559            Ok(_response.map(|x| x))
5560        }
5561        self.client.send_query_and_decode::<
5562            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5563            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5564        >(
5565            (iface, address,),
5566            0x752fbfa9b12befe,
5567            fidl::encoding::DynamicFlags::empty(),
5568            _decode,
5569        )
5570    }
5571
5572    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5573        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5574        fidl::encoding::DefaultFuchsiaResourceDialect,
5575    >;
5576    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5577        fn _decode(
5578            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5579        ) -> Result<
5580            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5581            fidl::Error,
5582        > {
5583            let _response = fidl::client::decode_transaction_body::<
5584                fidl::encoding::ResultType<
5585                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5586                    fidl_fuchsia_posix::Errno,
5587                >,
5588                fidl::encoding::DefaultFuchsiaResourceDialect,
5589                0x320bd14c4df046c4,
5590            >(_buf?)?;
5591            Ok(_response.map(|x| x.value))
5592        }
5593        self.client.send_query_and_decode::<
5594            fidl::encoding::EmptyPayload,
5595            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5596        >(
5597            (),
5598            0x320bd14c4df046c4,
5599            fidl::encoding::DynamicFlags::empty(),
5600            _decode,
5601        )
5602    }
5603
5604    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5605        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5606        fidl::encoding::DefaultFuchsiaResourceDialect,
5607    >;
5608    fn r#set_ip_multicast_ttl(
5609        &self,
5610        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5611    ) -> Self::SetIpMulticastTtlResponseFut {
5612        fn _decode(
5613            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5614        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5615        {
5616            let _response = fidl::client::decode_transaction_body::<
5617                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5618                fidl::encoding::DefaultFuchsiaResourceDialect,
5619                0x63134d53772916a1,
5620            >(_buf?)?;
5621            Ok(_response.map(|x| x))
5622        }
5623        self.client.send_query_and_decode::<
5624            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5625            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5626        >(
5627            (value,),
5628            0x63134d53772916a1,
5629            fidl::encoding::DynamicFlags::empty(),
5630            _decode,
5631        )
5632    }
5633
5634    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5635        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5636        fidl::encoding::DefaultFuchsiaResourceDialect,
5637    >;
5638    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5639        fn _decode(
5640            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5641        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5642        {
5643            let _response = fidl::client::decode_transaction_body::<
5644                fidl::encoding::ResultType<
5645                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5646                    fidl_fuchsia_posix::Errno,
5647                >,
5648                fidl::encoding::DefaultFuchsiaResourceDialect,
5649                0x4665cd378f39e1a,
5650            >(_buf?)?;
5651            Ok(_response.map(|x| x.value))
5652        }
5653        self.client.send_query_and_decode::<
5654            fidl::encoding::EmptyPayload,
5655            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5656        >(
5657            (),
5658            0x4665cd378f39e1a,
5659            fidl::encoding::DynamicFlags::empty(),
5660            _decode,
5661        )
5662    }
5663
5664    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5665        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5666        fidl::encoding::DefaultFuchsiaResourceDialect,
5667    >;
5668    fn r#set_ip_multicast_loopback(
5669        &self,
5670        mut value: bool,
5671    ) -> Self::SetIpMulticastLoopbackResponseFut {
5672        fn _decode(
5673            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5674        ) -> Result<
5675            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5676            fidl::Error,
5677        > {
5678            let _response = fidl::client::decode_transaction_body::<
5679                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5680                fidl::encoding::DefaultFuchsiaResourceDialect,
5681                0x20c55c11f00943ea,
5682            >(_buf?)?;
5683            Ok(_response.map(|x| x))
5684        }
5685        self.client.send_query_and_decode::<
5686            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5687            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5688        >(
5689            (value,),
5690            0x20c55c11f00943ea,
5691            fidl::encoding::DynamicFlags::empty(),
5692            _decode,
5693        )
5694    }
5695
5696    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5697        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5698        fidl::encoding::DefaultFuchsiaResourceDialect,
5699    >;
5700    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5701        fn _decode(
5702            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5703        ) -> Result<
5704            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5705            fidl::Error,
5706        > {
5707            let _response = fidl::client::decode_transaction_body::<
5708                fidl::encoding::ResultType<
5709                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5710                    fidl_fuchsia_posix::Errno,
5711                >,
5712                fidl::encoding::DefaultFuchsiaResourceDialect,
5713                0x3b6b26ff558298f2,
5714            >(_buf?)?;
5715            Ok(_response.map(|x| x.value))
5716        }
5717        self.client.send_query_and_decode::<
5718            fidl::encoding::EmptyPayload,
5719            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5720        >(
5721            (),
5722            0x3b6b26ff558298f2,
5723            fidl::encoding::DynamicFlags::empty(),
5724            _decode,
5725        )
5726    }
5727
5728    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5729        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5730        fidl::encoding::DefaultFuchsiaResourceDialect,
5731    >;
5732    fn r#add_ip_membership(
5733        &self,
5734        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5735    ) -> Self::AddIpMembershipResponseFut {
5736        fn _decode(
5737            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5738        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5739        {
5740            let _response = fidl::client::decode_transaction_body::<
5741                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5742                fidl::encoding::DefaultFuchsiaResourceDialect,
5743                0x76bc7df115a3b4d0,
5744            >(_buf?)?;
5745            Ok(_response.map(|x| x))
5746        }
5747        self.client.send_query_and_decode::<
5748            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5749            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5750        >(
5751            (membership,),
5752            0x76bc7df115a3b4d0,
5753            fidl::encoding::DynamicFlags::empty(),
5754            _decode,
5755        )
5756    }
5757
5758    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5759        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5760        fidl::encoding::DefaultFuchsiaResourceDialect,
5761    >;
5762    fn r#drop_ip_membership(
5763        &self,
5764        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5765    ) -> Self::DropIpMembershipResponseFut {
5766        fn _decode(
5767            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5768        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5769        {
5770            let _response = fidl::client::decode_transaction_body::<
5771                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5772                fidl::encoding::DefaultFuchsiaResourceDialect,
5773                0x2888f3099188d03,
5774            >(_buf?)?;
5775            Ok(_response.map(|x| x))
5776        }
5777        self.client.send_query_and_decode::<
5778            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5779            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5780        >(
5781            (membership,),
5782            0x2888f3099188d03,
5783            fidl::encoding::DynamicFlags::empty(),
5784            _decode,
5785        )
5786    }
5787
5788    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5789        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5790        fidl::encoding::DefaultFuchsiaResourceDialect,
5791    >;
5792    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5793        fn _decode(
5794            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5795        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5796        {
5797            let _response = fidl::client::decode_transaction_body::<
5798                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5799                fidl::encoding::DefaultFuchsiaResourceDialect,
5800                0x1ae532b0c066e3a0,
5801            >(_buf?)?;
5802            Ok(_response.map(|x| x))
5803        }
5804        self.client.send_query_and_decode::<
5805            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5806            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5807        >(
5808            (value,),
5809            0x1ae532b0c066e3a0,
5810            fidl::encoding::DynamicFlags::empty(),
5811            _decode,
5812        )
5813    }
5814
5815    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5816        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5817        fidl::encoding::DefaultFuchsiaResourceDialect,
5818    >;
5819    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5820        fn _decode(
5821            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5822        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5823        {
5824            let _response = fidl::client::decode_transaction_body::<
5825                fidl::encoding::ResultType<
5826                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5827                    fidl_fuchsia_posix::Errno,
5828                >,
5829                fidl::encoding::DefaultFuchsiaResourceDialect,
5830                0x51d43695962ebfb5,
5831            >(_buf?)?;
5832            Ok(_response.map(|x| x.value))
5833        }
5834        self.client.send_query_and_decode::<
5835            fidl::encoding::EmptyPayload,
5836            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5837        >(
5838            (),
5839            0x51d43695962ebfb5,
5840            fidl::encoding::DynamicFlags::empty(),
5841            _decode,
5842        )
5843    }
5844
5845    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5846        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5847        fidl::encoding::DefaultFuchsiaResourceDialect,
5848    >;
5849    fn r#set_ip_receive_original_destination_address(
5850        &self,
5851        mut value: bool,
5852    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5853        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5854            let _response = fidl::client::decode_transaction_body::<
5855                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5856                fidl::encoding::DefaultFuchsiaResourceDialect,
5857                0x4722b4ce52f7840,
5858            >(_buf?)?;
5859            Ok(_response.map(|x| x))
5860        }
5861        self.client.send_query_and_decode::<
5862            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5863            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5864        >(
5865            (value,),
5866            0x4722b4ce52f7840,
5867            fidl::encoding::DynamicFlags::empty(),
5868            _decode,
5869        )
5870    }
5871
5872    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5873        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5874        fidl::encoding::DefaultFuchsiaResourceDialect,
5875    >;
5876    fn r#get_ip_receive_original_destination_address(
5877        &self,
5878    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
5879        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5880            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
5881            Ok(_response.map(|x| x.value))
5882        }
5883        self.client.send_query_and_decode::<
5884            fidl::encoding::EmptyPayload,
5885            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5886        >(
5887            (),
5888            0x2a0e7dc5d6bfdfe9,
5889            fidl::encoding::DynamicFlags::empty(),
5890            _decode,
5891        )
5892    }
5893
5894    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5895        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5896        fidl::encoding::DefaultFuchsiaResourceDialect,
5897    >;
5898    fn r#add_ipv6_membership(
5899        &self,
5900        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5901    ) -> Self::AddIpv6MembershipResponseFut {
5902        fn _decode(
5903            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5904        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
5905        {
5906            let _response = fidl::client::decode_transaction_body::<
5907                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5908                fidl::encoding::DefaultFuchsiaResourceDialect,
5909                0x7c94727acb4ea4b3,
5910            >(_buf?)?;
5911            Ok(_response.map(|x| x))
5912        }
5913        self.client.send_query_and_decode::<
5914            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
5915            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5916        >(
5917            (membership,),
5918            0x7c94727acb4ea4b3,
5919            fidl::encoding::DynamicFlags::empty(),
5920            _decode,
5921        )
5922    }
5923
5924    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5925        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5926        fidl::encoding::DefaultFuchsiaResourceDialect,
5927    >;
5928    fn r#drop_ipv6_membership(
5929        &self,
5930        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5931    ) -> Self::DropIpv6MembershipResponseFut {
5932        fn _decode(
5933            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5934        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
5935        {
5936            let _response = fidl::client::decode_transaction_body::<
5937                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5938                fidl::encoding::DefaultFuchsiaResourceDialect,
5939                0x42104c70ccaba304,
5940            >(_buf?)?;
5941            Ok(_response.map(|x| x))
5942        }
5943        self.client.send_query_and_decode::<
5944            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
5945            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5946        >(
5947            (membership,),
5948            0x42104c70ccaba304,
5949            fidl::encoding::DynamicFlags::empty(),
5950            _decode,
5951        )
5952    }
5953
5954    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5955        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5956        fidl::encoding::DefaultFuchsiaResourceDialect,
5957    >;
5958    fn r#set_ipv6_multicast_interface(
5959        &self,
5960        mut value: u64,
5961    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
5962        fn _decode(
5963            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5964        ) -> Result<
5965            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5966            fidl::Error,
5967        > {
5968            let _response = fidl::client::decode_transaction_body::<
5969                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5970                fidl::encoding::DefaultFuchsiaResourceDialect,
5971                0x135f76db3774ab3b,
5972            >(_buf?)?;
5973            Ok(_response.map(|x| x))
5974        }
5975        self.client.send_query_and_decode::<
5976            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
5977            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5978        >(
5979            (value,),
5980            0x135f76db3774ab3b,
5981            fidl::encoding::DynamicFlags::empty(),
5982            _decode,
5983        )
5984    }
5985
5986    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5987        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5988        fidl::encoding::DefaultFuchsiaResourceDialect,
5989    >;
5990    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
5991        fn _decode(
5992            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5993        ) -> Result<
5994            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5995            fidl::Error,
5996        > {
5997            let _response = fidl::client::decode_transaction_body::<
5998                fidl::encoding::ResultType<
5999                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
6000                    fidl_fuchsia_posix::Errno,
6001                >,
6002                fidl::encoding::DefaultFuchsiaResourceDialect,
6003                0x1f26fcdd348f1882,
6004            >(_buf?)?;
6005            Ok(_response.map(|x| x.value))
6006        }
6007        self.client.send_query_and_decode::<
6008            fidl::encoding::EmptyPayload,
6009            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6010        >(
6011            (),
6012            0x1f26fcdd348f1882,
6013            fidl::encoding::DynamicFlags::empty(),
6014            _decode,
6015        )
6016    }
6017
6018    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6019        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6020        fidl::encoding::DefaultFuchsiaResourceDialect,
6021    >;
6022    fn r#set_ipv6_unicast_hops(
6023        &self,
6024        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6025    ) -> Self::SetIpv6UnicastHopsResponseFut {
6026        fn _decode(
6027            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6028        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
6029        {
6030            let _response = fidl::client::decode_transaction_body::<
6031                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6032                fidl::encoding::DefaultFuchsiaResourceDialect,
6033                0x157d51e98f462859,
6034            >(_buf?)?;
6035            Ok(_response.map(|x| x))
6036        }
6037        self.client.send_query_and_decode::<
6038            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
6039            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6040        >(
6041            (value,),
6042            0x157d51e98f462859,
6043            fidl::encoding::DynamicFlags::empty(),
6044            _decode,
6045        )
6046    }
6047
6048    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6049        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6050        fidl::encoding::DefaultFuchsiaResourceDialect,
6051    >;
6052    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
6053        fn _decode(
6054            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6055        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
6056        {
6057            let _response = fidl::client::decode_transaction_body::<
6058                fidl::encoding::ResultType<
6059                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
6060                    fidl_fuchsia_posix::Errno,
6061                >,
6062                fidl::encoding::DefaultFuchsiaResourceDialect,
6063                0x21f4641cad8bd8d2,
6064            >(_buf?)?;
6065            Ok(_response.map(|x| x.value))
6066        }
6067        self.client.send_query_and_decode::<
6068            fidl::encoding::EmptyPayload,
6069            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6070        >(
6071            (),
6072            0x21f4641cad8bd8d2,
6073            fidl::encoding::DynamicFlags::empty(),
6074            _decode,
6075        )
6076    }
6077
6078    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6079        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6080        fidl::encoding::DefaultFuchsiaResourceDialect,
6081    >;
6082    fn r#set_ipv6_receive_hop_limit(
6083        &self,
6084        mut value: bool,
6085    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6086        fn _decode(
6087            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6088        ) -> Result<
6089            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6090            fidl::Error,
6091        > {
6092            let _response = fidl::client::decode_transaction_body::<
6093                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6094                fidl::encoding::DefaultFuchsiaResourceDialect,
6095                0x5c24808ed2e84a1e,
6096            >(_buf?)?;
6097            Ok(_response.map(|x| x))
6098        }
6099        self.client.send_query_and_decode::<
6100            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6101            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6102        >(
6103            (value,),
6104            0x5c24808ed2e84a1e,
6105            fidl::encoding::DynamicFlags::empty(),
6106            _decode,
6107        )
6108    }
6109
6110    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6111        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6112        fidl::encoding::DefaultFuchsiaResourceDialect,
6113    >;
6114    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6115        fn _decode(
6116            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6117        ) -> Result<
6118            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6119            fidl::Error,
6120        > {
6121            let _response = fidl::client::decode_transaction_body::<
6122                fidl::encoding::ResultType<
6123                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6124                    fidl_fuchsia_posix::Errno,
6125                >,
6126                fidl::encoding::DefaultFuchsiaResourceDialect,
6127                0x341e06689885b4c0,
6128            >(_buf?)?;
6129            Ok(_response.map(|x| x.value))
6130        }
6131        self.client.send_query_and_decode::<
6132            fidl::encoding::EmptyPayload,
6133            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6134        >(
6135            (),
6136            0x341e06689885b4c0,
6137            fidl::encoding::DynamicFlags::empty(),
6138            _decode,
6139        )
6140    }
6141
6142    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6143        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6144        fidl::encoding::DefaultFuchsiaResourceDialect,
6145    >;
6146    fn r#set_ipv6_multicast_hops(
6147        &self,
6148        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6149    ) -> Self::SetIpv6MulticastHopsResponseFut {
6150        fn _decode(
6151            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6152        ) -> Result<
6153            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6154            fidl::Error,
6155        > {
6156            let _response = fidl::client::decode_transaction_body::<
6157                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6158                fidl::encoding::DefaultFuchsiaResourceDialect,
6159                0x25b9cd4d181f82c1,
6160            >(_buf?)?;
6161            Ok(_response.map(|x| x))
6162        }
6163        self.client.send_query_and_decode::<
6164            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6165            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6166        >(
6167            (value,),
6168            0x25b9cd4d181f82c1,
6169            fidl::encoding::DynamicFlags::empty(),
6170            _decode,
6171        )
6172    }
6173
6174    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6175        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6176        fidl::encoding::DefaultFuchsiaResourceDialect,
6177    >;
6178    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6179        fn _decode(
6180            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6181        ) -> Result<
6182            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6183            fidl::Error,
6184        > {
6185            let _response = fidl::client::decode_transaction_body::<
6186                fidl::encoding::ResultType<
6187                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6188                    fidl_fuchsia_posix::Errno,
6189                >,
6190                fidl::encoding::DefaultFuchsiaResourceDialect,
6191                0x52916948a365012a,
6192            >(_buf?)?;
6193            Ok(_response.map(|x| x.value))
6194        }
6195        self.client.send_query_and_decode::<
6196            fidl::encoding::EmptyPayload,
6197            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6198        >(
6199            (),
6200            0x52916948a365012a,
6201            fidl::encoding::DynamicFlags::empty(),
6202            _decode,
6203        )
6204    }
6205
6206    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6207        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6208        fidl::encoding::DefaultFuchsiaResourceDialect,
6209    >;
6210    fn r#set_ipv6_multicast_loopback(
6211        &self,
6212        mut value: bool,
6213    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6214        fn _decode(
6215            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6216        ) -> Result<
6217            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6218            fidl::Error,
6219        > {
6220            let _response = fidl::client::decode_transaction_body::<
6221                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6222                fidl::encoding::DefaultFuchsiaResourceDialect,
6223                0x55701c409ff41b40,
6224            >(_buf?)?;
6225            Ok(_response.map(|x| x))
6226        }
6227        self.client.send_query_and_decode::<
6228            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6229            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6230        >(
6231            (value,),
6232            0x55701c409ff41b40,
6233            fidl::encoding::DynamicFlags::empty(),
6234            _decode,
6235        )
6236    }
6237
6238    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6239        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6240        fidl::encoding::DefaultFuchsiaResourceDialect,
6241    >;
6242    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6243        fn _decode(
6244            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6245        ) -> Result<
6246            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6247            fidl::Error,
6248        > {
6249            let _response = fidl::client::decode_transaction_body::<
6250                fidl::encoding::ResultType<
6251                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6252                    fidl_fuchsia_posix::Errno,
6253                >,
6254                fidl::encoding::DefaultFuchsiaResourceDialect,
6255                0x4415b701fde319c3,
6256            >(_buf?)?;
6257            Ok(_response.map(|x| x.value))
6258        }
6259        self.client.send_query_and_decode::<
6260            fidl::encoding::EmptyPayload,
6261            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6262        >(
6263            (),
6264            0x4415b701fde319c3,
6265            fidl::encoding::DynamicFlags::empty(),
6266            _decode,
6267        )
6268    }
6269
6270    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6271        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6272        fidl::encoding::DefaultFuchsiaResourceDialect,
6273    >;
6274    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6275        fn _decode(
6276            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6277        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error>
6278        {
6279            let _response = fidl::client::decode_transaction_body::<
6280                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6281                fidl::encoding::DefaultFuchsiaResourceDialect,
6282                0x4873f1364758cbba,
6283            >(_buf?)?;
6284            Ok(_response.map(|x| x))
6285        }
6286        self.client.send_query_and_decode::<
6287            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6288            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6289        >(
6290            (value,),
6291            0x4873f1364758cbba,
6292            fidl::encoding::DynamicFlags::empty(),
6293            _decode,
6294        )
6295    }
6296
6297    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6298        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6299        fidl::encoding::DefaultFuchsiaResourceDialect,
6300    >;
6301    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6302        fn _decode(
6303            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6304        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6305        {
6306            let _response = fidl::client::decode_transaction_body::<
6307                fidl::encoding::ResultType<
6308                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6309                    fidl_fuchsia_posix::Errno,
6310                >,
6311                fidl::encoding::DefaultFuchsiaResourceDialect,
6312                0x4aa3340a1a26b89c,
6313            >(_buf?)?;
6314            Ok(_response.map(|x| x.value))
6315        }
6316        self.client.send_query_and_decode::<
6317            fidl::encoding::EmptyPayload,
6318            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6319        >(
6320            (),
6321            0x4aa3340a1a26b89c,
6322            fidl::encoding::DynamicFlags::empty(),
6323            _decode,
6324        )
6325    }
6326
6327    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6328        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6329        fidl::encoding::DefaultFuchsiaResourceDialect,
6330    >;
6331    fn r#set_ipv6_receive_traffic_class(
6332        &self,
6333        mut value: bool,
6334    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6335        fn _decode(
6336            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6337        ) -> Result<
6338            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6339            fidl::Error,
6340        > {
6341            let _response = fidl::client::decode_transaction_body::<
6342                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6343                fidl::encoding::DefaultFuchsiaResourceDialect,
6344                0x58f07c8788d099a0,
6345            >(_buf?)?;
6346            Ok(_response.map(|x| x))
6347        }
6348        self.client.send_query_and_decode::<
6349            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6350            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6351        >(
6352            (value,),
6353            0x58f07c8788d099a0,
6354            fidl::encoding::DynamicFlags::empty(),
6355            _decode,
6356        )
6357    }
6358
6359    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6360        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6361        fidl::encoding::DefaultFuchsiaResourceDialect,
6362    >;
6363    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6364        fn _decode(
6365            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6366        ) -> Result<
6367            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6368            fidl::Error,
6369        > {
6370            let _response = fidl::client::decode_transaction_body::<
6371                fidl::encoding::ResultType<
6372                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6373                    fidl_fuchsia_posix::Errno,
6374                >,
6375                fidl::encoding::DefaultFuchsiaResourceDialect,
6376                0x2e334df1da553ffa,
6377            >(_buf?)?;
6378            Ok(_response.map(|x| x.value))
6379        }
6380        self.client.send_query_and_decode::<
6381            fidl::encoding::EmptyPayload,
6382            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6383        >(
6384            (),
6385            0x2e334df1da553ffa,
6386            fidl::encoding::DynamicFlags::empty(),
6387            _decode,
6388        )
6389    }
6390
6391    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6392        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6393        fidl::encoding::DefaultFuchsiaResourceDialect,
6394    >;
6395    fn r#set_ipv6_traffic_class(
6396        &self,
6397        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6398    ) -> Self::SetIpv6TrafficClassResponseFut {
6399        fn _decode(
6400            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6401        ) -> Result<
6402            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6403            fidl::Error,
6404        > {
6405            let _response = fidl::client::decode_transaction_body::<
6406                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6407                fidl::encoding::DefaultFuchsiaResourceDialect,
6408                0x6af077800c5a0b4f,
6409            >(_buf?)?;
6410            Ok(_response.map(|x| x))
6411        }
6412        self.client.send_query_and_decode::<
6413            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6414            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6415        >(
6416            (value,),
6417            0x6af077800c5a0b4f,
6418            fidl::encoding::DynamicFlags::empty(),
6419            _decode,
6420        )
6421    }
6422
6423    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6424        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6425        fidl::encoding::DefaultFuchsiaResourceDialect,
6426    >;
6427    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6428        fn _decode(
6429            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6430        ) -> Result<
6431            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6432            fidl::Error,
6433        > {
6434            let _response = fidl::client::decode_transaction_body::<
6435                fidl::encoding::ResultType<
6436                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6437                    fidl_fuchsia_posix::Errno,
6438                >,
6439                fidl::encoding::DefaultFuchsiaResourceDialect,
6440                0x6baf6eed8fc2f04,
6441            >(_buf?)?;
6442            Ok(_response.map(|x| x.value))
6443        }
6444        self.client.send_query_and_decode::<
6445            fidl::encoding::EmptyPayload,
6446            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6447        >(
6448            (),
6449            0x6baf6eed8fc2f04,
6450            fidl::encoding::DynamicFlags::empty(),
6451            _decode,
6452        )
6453    }
6454
6455    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6456        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6457        fidl::encoding::DefaultFuchsiaResourceDialect,
6458    >;
6459    fn r#set_ipv6_receive_packet_info(
6460        &self,
6461        mut value: bool,
6462    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6463        fn _decode(
6464            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6465        ) -> Result<
6466            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6467            fidl::Error,
6468        > {
6469            let _response = fidl::client::decode_transaction_body::<
6470                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6471                fidl::encoding::DefaultFuchsiaResourceDialect,
6472                0x19259775b1a92768,
6473            >(_buf?)?;
6474            Ok(_response.map(|x| x))
6475        }
6476        self.client.send_query_and_decode::<
6477            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6478            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6479        >(
6480            (value,),
6481            0x19259775b1a92768,
6482            fidl::encoding::DynamicFlags::empty(),
6483            _decode,
6484        )
6485    }
6486
6487    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6488        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6489        fidl::encoding::DefaultFuchsiaResourceDialect,
6490    >;
6491    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6492        fn _decode(
6493            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6494        ) -> Result<
6495            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6496            fidl::Error,
6497        > {
6498            let _response = fidl::client::decode_transaction_body::<
6499                fidl::encoding::ResultType<
6500                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6501                    fidl_fuchsia_posix::Errno,
6502                >,
6503                fidl::encoding::DefaultFuchsiaResourceDialect,
6504                0x7acd4a2775baec75,
6505            >(_buf?)?;
6506            Ok(_response.map(|x| x.value))
6507        }
6508        self.client.send_query_and_decode::<
6509            fidl::encoding::EmptyPayload,
6510            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6511        >(
6512            (),
6513            0x7acd4a2775baec75,
6514            fidl::encoding::DynamicFlags::empty(),
6515            _decode,
6516        )
6517    }
6518
6519    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6520        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6521        fidl::encoding::DefaultFuchsiaResourceDialect,
6522    >;
6523    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6524        fn _decode(
6525            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6526        ) -> Result<
6527            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6528            fidl::Error,
6529        > {
6530            let _response = fidl::client::decode_transaction_body::<
6531                fidl::encoding::ResultType<
6532                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6533                    fidl_fuchsia_posix::Errno,
6534                >,
6535                fidl::encoding::DefaultFuchsiaResourceDialect,
6536                0x38bf28f0dafdbac0,
6537            >(_buf?)?;
6538            Ok(_response.map(|x| x.value))
6539        }
6540        self.client.send_query_and_decode::<
6541            fidl::encoding::EmptyPayload,
6542            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6543        >(
6544            (),
6545            0x38bf28f0dafdbac0,
6546            fidl::encoding::DynamicFlags::empty(),
6547            _decode,
6548        )
6549    }
6550
6551    type DescribeResponseFut = fidl::client::QueryResponseFut<
6552        SocketDescribeResponse,
6553        fidl::encoding::DefaultFuchsiaResourceDialect,
6554    >;
6555    fn r#describe(&self) -> Self::DescribeResponseFut {
6556        fn _decode(
6557            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6558        ) -> Result<SocketDescribeResponse, fidl::Error> {
6559            let _response = fidl::client::decode_transaction_body::<
6560                SocketDescribeResponse,
6561                fidl::encoding::DefaultFuchsiaResourceDialect,
6562                0x335706eccf54a135,
6563            >(_buf?)?;
6564            Ok(_response)
6565        }
6566        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6567            (),
6568            0x335706eccf54a135,
6569            fidl::encoding::DynamicFlags::empty(),
6570            _decode,
6571        )
6572    }
6573
6574    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6575        SocketRecvMsgResult,
6576        fidl::encoding::DefaultFuchsiaResourceDialect,
6577    >;
6578    fn r#recv_msg(
6579        &self,
6580        mut want_addr: bool,
6581        mut data_len: u32,
6582        mut want_control: bool,
6583        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6584    ) -> Self::RecvMsgResponseFut {
6585        fn _decode(
6586            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6587        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6588            let _response = fidl::client::decode_transaction_body::<
6589                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6590                fidl::encoding::DefaultFuchsiaResourceDialect,
6591                0x1dfb695351d3aa1d,
6592            >(_buf?)?;
6593            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6594        }
6595        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6596            (want_addr, data_len, want_control, flags),
6597            0x1dfb695351d3aa1d,
6598            fidl::encoding::DynamicFlags::empty(),
6599            _decode,
6600        )
6601    }
6602
6603    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6604        SocketSendMsgResult,
6605        fidl::encoding::DefaultFuchsiaResourceDialect,
6606    >;
6607    fn r#send_msg(
6608        &self,
6609        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6610        mut data: &[u8],
6611        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6612        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6613    ) -> Self::SendMsgResponseFut {
6614        fn _decode(
6615            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6616        ) -> Result<SocketSendMsgResult, fidl::Error> {
6617            let _response = fidl::client::decode_transaction_body::<
6618                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6619                fidl::encoding::DefaultFuchsiaResourceDialect,
6620                0x2cf1eac9a7fc8958,
6621            >(_buf?)?;
6622            Ok(_response.map(|x| x))
6623        }
6624        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6625            (addr, data, control, flags),
6626            0x2cf1eac9a7fc8958,
6627            fidl::encoding::DynamicFlags::empty(),
6628            _decode,
6629        )
6630    }
6631
6632    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6633        SocketGetInfoResult,
6634        fidl::encoding::DefaultFuchsiaResourceDialect,
6635    >;
6636    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6637        fn _decode(
6638            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6639        ) -> Result<SocketGetInfoResult, fidl::Error> {
6640            let _response = fidl::client::decode_transaction_body::<
6641                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6642                fidl::encoding::DefaultFuchsiaResourceDialect,
6643                0x39676f75aec339ba,
6644            >(_buf?)?;
6645            Ok(_response.map(|x| (x.domain, x.proto)))
6646        }
6647        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6648            (),
6649            0x39676f75aec339ba,
6650            fidl::encoding::DynamicFlags::empty(),
6651            _decode,
6652        )
6653    }
6654
6655    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6656        SocketSetIpHeaderIncludedResult,
6657        fidl::encoding::DefaultFuchsiaResourceDialect,
6658    >;
6659    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6660        fn _decode(
6661            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6662        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6663            let _response = fidl::client::decode_transaction_body::<
6664                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6665                fidl::encoding::DefaultFuchsiaResourceDialect,
6666                0x5d06a606d95e8f3,
6667            >(_buf?)?;
6668            Ok(_response.map(|x| x))
6669        }
6670        self.client.send_query_and_decode::<
6671            SocketSetIpHeaderIncludedRequest,
6672            SocketSetIpHeaderIncludedResult,
6673        >(
6674            (value,),
6675            0x5d06a606d95e8f3,
6676            fidl::encoding::DynamicFlags::empty(),
6677            _decode,
6678        )
6679    }
6680
6681    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6682        SocketGetIpHeaderIncludedResult,
6683        fidl::encoding::DefaultFuchsiaResourceDialect,
6684    >;
6685    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6686        fn _decode(
6687            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6688        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6689            let _response = fidl::client::decode_transaction_body::<
6690                fidl::encoding::ResultType<
6691                    SocketGetIpHeaderIncludedResponse,
6692                    fidl_fuchsia_posix::Errno,
6693                >,
6694                fidl::encoding::DefaultFuchsiaResourceDialect,
6695                0x76125ad1f4d175f6,
6696            >(_buf?)?;
6697            Ok(_response.map(|x| x.value))
6698        }
6699        self.client
6700            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6701                (),
6702                0x76125ad1f4d175f6,
6703                fidl::encoding::DynamicFlags::empty(),
6704                _decode,
6705            )
6706    }
6707
6708    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6709        SocketSetIcmpv6FilterResult,
6710        fidl::encoding::DefaultFuchsiaResourceDialect,
6711    >;
6712    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6713        fn _decode(
6714            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6715        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6716            let _response = fidl::client::decode_transaction_body::<
6717                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6718                fidl::encoding::DefaultFuchsiaResourceDialect,
6719                0x4ebea92a43ae68a9,
6720            >(_buf?)?;
6721            Ok(_response.map(|x| x))
6722        }
6723        self.client
6724            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6725                (filter,),
6726                0x4ebea92a43ae68a9,
6727                fidl::encoding::DynamicFlags::empty(),
6728                _decode,
6729            )
6730    }
6731
6732    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6733        SocketGetIcmpv6FilterResult,
6734        fidl::encoding::DefaultFuchsiaResourceDialect,
6735    >;
6736    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6737        fn _decode(
6738            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6739        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6740            let _response = fidl::client::decode_transaction_body::<
6741                fidl::encoding::ResultType<
6742                    SocketGetIcmpv6FilterResponse,
6743                    fidl_fuchsia_posix::Errno,
6744                >,
6745                fidl::encoding::DefaultFuchsiaResourceDialect,
6746                0x43bd4f3bc0970ace,
6747            >(_buf?)?;
6748            Ok(_response.map(|x| x.filter))
6749        }
6750        self.client
6751            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6752                (),
6753                0x43bd4f3bc0970ace,
6754                fidl::encoding::DynamicFlags::empty(),
6755                _decode,
6756            )
6757    }
6758
6759    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6760        SocketSetIpv6ChecksumResult,
6761        fidl::encoding::DefaultFuchsiaResourceDialect,
6762    >;
6763    fn r#set_ipv6_checksum(
6764        &self,
6765        mut config: &Ipv6ChecksumConfiguration,
6766    ) -> Self::SetIpv6ChecksumResponseFut {
6767        fn _decode(
6768            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6769        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6770            let _response = fidl::client::decode_transaction_body::<
6771                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6772                fidl::encoding::DefaultFuchsiaResourceDialect,
6773                0x18b7809577199cb4,
6774            >(_buf?)?;
6775            Ok(_response.map(|x| x))
6776        }
6777        self.client
6778            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6779                (config,),
6780                0x18b7809577199cb4,
6781                fidl::encoding::DynamicFlags::empty(),
6782                _decode,
6783            )
6784    }
6785
6786    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6787        SocketGetIpv6ChecksumResult,
6788        fidl::encoding::DefaultFuchsiaResourceDialect,
6789    >;
6790    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6791        fn _decode(
6792            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6793        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6794            let _response = fidl::client::decode_transaction_body::<
6795                fidl::encoding::ResultType<
6796                    SocketGetIpv6ChecksumResponse,
6797                    fidl_fuchsia_posix::Errno,
6798                >,
6799                fidl::encoding::DefaultFuchsiaResourceDialect,
6800                0x1847bf5b2d263dd,
6801            >(_buf?)?;
6802            Ok(_response.map(|x| x.config))
6803        }
6804        self.client
6805            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6806                (),
6807                0x1847bf5b2d263dd,
6808                fidl::encoding::DynamicFlags::empty(),
6809                _decode,
6810            )
6811    }
6812}
6813
6814pub struct SocketEventStream {
6815    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6816}
6817
6818impl std::marker::Unpin for SocketEventStream {}
6819
6820impl futures::stream::FusedStream for SocketEventStream {
6821    fn is_terminated(&self) -> bool {
6822        self.event_receiver.is_terminated()
6823    }
6824}
6825
6826impl futures::Stream for SocketEventStream {
6827    type Item = Result<SocketEvent, fidl::Error>;
6828
6829    fn poll_next(
6830        mut self: std::pin::Pin<&mut Self>,
6831        cx: &mut std::task::Context<'_>,
6832    ) -> std::task::Poll<Option<Self::Item>> {
6833        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6834            &mut self.event_receiver,
6835            cx
6836        )?) {
6837            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6838            None => std::task::Poll::Ready(None),
6839        }
6840    }
6841}
6842
6843#[derive(Debug)]
6844pub enum SocketEvent {}
6845
6846impl SocketEvent {
6847    /// Decodes a message buffer as a [`SocketEvent`].
6848    fn decode(
6849        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6850    ) -> Result<SocketEvent, fidl::Error> {
6851        let (bytes, _handles) = buf.split_mut();
6852        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6853        debug_assert_eq!(tx_header.tx_id, 0);
6854        match tx_header.ordinal {
6855            _ => Err(fidl::Error::UnknownOrdinal {
6856                ordinal: tx_header.ordinal,
6857                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6858            }),
6859        }
6860    }
6861}
6862
6863/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6864pub struct SocketRequestStream {
6865    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6866    is_terminated: bool,
6867}
6868
6869impl std::marker::Unpin for SocketRequestStream {}
6870
6871impl futures::stream::FusedStream for SocketRequestStream {
6872    fn is_terminated(&self) -> bool {
6873        self.is_terminated
6874    }
6875}
6876
6877impl fidl::endpoints::RequestStream for SocketRequestStream {
6878    type Protocol = SocketMarker;
6879    type ControlHandle = SocketControlHandle;
6880
6881    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6882        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6883    }
6884
6885    fn control_handle(&self) -> Self::ControlHandle {
6886        SocketControlHandle { inner: self.inner.clone() }
6887    }
6888
6889    fn into_inner(
6890        self,
6891    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
6892    {
6893        (self.inner, self.is_terminated)
6894    }
6895
6896    fn from_inner(
6897        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6898        is_terminated: bool,
6899    ) -> Self {
6900        Self { inner, is_terminated }
6901    }
6902}
6903
6904impl futures::Stream for SocketRequestStream {
6905    type Item = Result<SocketRequest, fidl::Error>;
6906
6907    fn poll_next(
6908        mut self: std::pin::Pin<&mut Self>,
6909        cx: &mut std::task::Context<'_>,
6910    ) -> std::task::Poll<Option<Self::Item>> {
6911        let this = &mut *self;
6912        if this.inner.check_shutdown(cx) {
6913            this.is_terminated = true;
6914            return std::task::Poll::Ready(None);
6915        }
6916        if this.is_terminated {
6917            panic!("polled SocketRequestStream after completion");
6918        }
6919        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
6920            |bytes, handles| {
6921                match this.inner.channel().read_etc(cx, bytes, handles) {
6922                    std::task::Poll::Ready(Ok(())) => {}
6923                    std::task::Poll::Pending => return std::task::Poll::Pending,
6924                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
6925                        this.is_terminated = true;
6926                        return std::task::Poll::Ready(None);
6927                    }
6928                    std::task::Poll::Ready(Err(e)) => {
6929                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
6930                            e.into(),
6931                        ))));
6932                    }
6933                }
6934
6935                // A message has been received from the channel
6936                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6937
6938                std::task::Poll::Ready(Some(match header.ordinal {
6939                    0x20d8a7aba2168a79 => {
6940                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6941                        let mut req = fidl::new_empty!(
6942                            fidl_fuchsia_unknown::CloneableCloneRequest,
6943                            fidl::encoding::DefaultFuchsiaResourceDialect
6944                        );
6945                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
6946                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6947                        Ok(SocketRequest::Clone { request: req.request, control_handle })
6948                    }
6949                    0x5ac5d459ad7f657e => {
6950                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6951                        let mut req = fidl::new_empty!(
6952                            fidl::encoding::EmptyPayload,
6953                            fidl::encoding::DefaultFuchsiaResourceDialect
6954                        );
6955                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6956                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6957                        Ok(SocketRequest::Close {
6958                            responder: SocketCloseResponder {
6959                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6960                                tx_id: header.tx_id,
6961                            },
6962                        })
6963                    }
6964                    0x2658edee9decfc06 => {
6965                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6966                        let mut req = fidl::new_empty!(
6967                            fidl::encoding::EmptyPayload,
6968                            fidl::encoding::DefaultFuchsiaResourceDialect
6969                        );
6970                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6971                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6972                        Ok(SocketRequest::Query {
6973                            responder: SocketQueryResponder {
6974                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6975                                tx_id: header.tx_id,
6976                            },
6977                        })
6978                    }
6979                    0x1fd74ee8b9a4a876 => {
6980                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6981                        let mut req = fidl::new_empty!(
6982                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
6983                            fidl::encoding::DefaultFuchsiaResourceDialect
6984                        );
6985                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
6986                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6987                        Ok(SocketRequest::SetReuseAddress {
6988                            value: req.value,
6989
6990                            responder: SocketSetReuseAddressResponder {
6991                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6992                                tx_id: header.tx_id,
6993                            },
6994                        })
6995                    }
6996                    0x67b7206b8d1bc0a5 => {
6997                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6998                        let mut req = fidl::new_empty!(
6999                            fidl::encoding::EmptyPayload,
7000                            fidl::encoding::DefaultFuchsiaResourceDialect
7001                        );
7002                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7003                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7004                        Ok(SocketRequest::GetReuseAddress {
7005                            responder: SocketGetReuseAddressResponder {
7006                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7007                                tx_id: header.tx_id,
7008                            },
7009                        })
7010                    }
7011                    0x5aad39b33e5f6ebb => {
7012                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7013                        let mut req = fidl::new_empty!(
7014                            fidl::encoding::EmptyPayload,
7015                            fidl::encoding::DefaultFuchsiaResourceDialect
7016                        );
7017                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7018                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7019                        Ok(SocketRequest::GetError {
7020                            responder: SocketGetErrorResponder {
7021                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7022                                tx_id: header.tx_id,
7023                            },
7024                        })
7025                    }
7026                    0x6023e081ce3cd947 => {
7027                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7028                        let mut req = fidl::new_empty!(
7029                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
7030                            fidl::encoding::DefaultFuchsiaResourceDialect
7031                        );
7032                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
7033                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7034                        Ok(SocketRequest::SetBroadcast {
7035                            value: req.value,
7036
7037                            responder: SocketSetBroadcastResponder {
7038                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7039                                tx_id: header.tx_id,
7040                            },
7041                        })
7042                    }
7043                    0x68796fc556f9780d => {
7044                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7045                        let mut req = fidl::new_empty!(
7046                            fidl::encoding::EmptyPayload,
7047                            fidl::encoding::DefaultFuchsiaResourceDialect
7048                        );
7049                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7050                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7051                        Ok(SocketRequest::GetBroadcast {
7052                            responder: SocketGetBroadcastResponder {
7053                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7054                                tx_id: header.tx_id,
7055                            },
7056                        })
7057                    }
7058                    0x756eac32d73a7a70 => {
7059                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7060                        let mut req = fidl::new_empty!(
7061                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
7062                            fidl::encoding::DefaultFuchsiaResourceDialect
7063                        );
7064                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7065                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7066                        Ok(SocketRequest::SetSendBuffer {
7067                            value_bytes: req.value_bytes,
7068
7069                            responder: SocketSetSendBufferResponder {
7070                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7071                                tx_id: header.tx_id,
7072                            },
7073                        })
7074                    }
7075                    0x78a52fd9c7b2410b => {
7076                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7077                        let mut req = fidl::new_empty!(
7078                            fidl::encoding::EmptyPayload,
7079                            fidl::encoding::DefaultFuchsiaResourceDialect
7080                        );
7081                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7082                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7083                        Ok(SocketRequest::GetSendBuffer {
7084                            responder: SocketGetSendBufferResponder {
7085                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7086                                tx_id: header.tx_id,
7087                            },
7088                        })
7089                    }
7090                    0x6b0cf2f1919c7001 => {
7091                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7092                        let mut req = fidl::new_empty!(
7093                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7094                            fidl::encoding::DefaultFuchsiaResourceDialect
7095                        );
7096                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7097                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7098                        Ok(SocketRequest::SetReceiveBuffer {
7099                            value_bytes: req.value_bytes,
7100
7101                            responder: SocketSetReceiveBufferResponder {
7102                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7103                                tx_id: header.tx_id,
7104                            },
7105                        })
7106                    }
7107                    0x14c1a4b64f709e5c => {
7108                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7109                        let mut req = fidl::new_empty!(
7110                            fidl::encoding::EmptyPayload,
7111                            fidl::encoding::DefaultFuchsiaResourceDialect
7112                        );
7113                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7114                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7115                        Ok(SocketRequest::GetReceiveBuffer {
7116                            responder: SocketGetReceiveBufferResponder {
7117                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7118                                tx_id: header.tx_id,
7119                            },
7120                        })
7121                    }
7122                    0x572df8f0b920d2c7 => {
7123                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7124                        let mut req = fidl::new_empty!(
7125                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7126                            fidl::encoding::DefaultFuchsiaResourceDialect
7127                        );
7128                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7129                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7130                        Ok(SocketRequest::SetKeepAlive {
7131                            value: req.value,
7132
7133                            responder: SocketSetKeepAliveResponder {
7134                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7135                                tx_id: header.tx_id,
7136                            },
7137                        })
7138                    }
7139                    0x2dd29d3215f2c9d2 => {
7140                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7141                        let mut req = fidl::new_empty!(
7142                            fidl::encoding::EmptyPayload,
7143                            fidl::encoding::DefaultFuchsiaResourceDialect
7144                        );
7145                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7146                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7147                        Ok(SocketRequest::GetKeepAlive {
7148                            responder: SocketGetKeepAliveResponder {
7149                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7150                                tx_id: header.tx_id,
7151                            },
7152                        })
7153                    }
7154                    0x3ecb49968bee439 => {
7155                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7156                        let mut req = fidl::new_empty!(
7157                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7158                            fidl::encoding::DefaultFuchsiaResourceDialect
7159                        );
7160                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7161                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7162                        Ok(SocketRequest::SetOutOfBandInline {
7163                            value: req.value,
7164
7165                            responder: SocketSetOutOfBandInlineResponder {
7166                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7167                                tx_id: header.tx_id,
7168                            },
7169                        })
7170                    }
7171                    0x348c1ab3aeca1745 => {
7172                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7173                        let mut req = fidl::new_empty!(
7174                            fidl::encoding::EmptyPayload,
7175                            fidl::encoding::DefaultFuchsiaResourceDialect
7176                        );
7177                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7178                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7179                        Ok(SocketRequest::GetOutOfBandInline {
7180                            responder: SocketGetOutOfBandInlineResponder {
7181                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7182                                tx_id: header.tx_id,
7183                            },
7184                        })
7185                    }
7186                    0x6bbf00c53a4c78c2 => {
7187                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7188                        let mut req = fidl::new_empty!(
7189                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7190                            fidl::encoding::DefaultFuchsiaResourceDialect
7191                        );
7192                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7193                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7194                        Ok(SocketRequest::SetNoCheck {
7195                            value: req.value,
7196
7197                            responder: SocketSetNoCheckResponder {
7198                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7199                                tx_id: header.tx_id,
7200                            },
7201                        })
7202                    }
7203                    0x2cd4249286417694 => {
7204                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7205                        let mut req = fidl::new_empty!(
7206                            fidl::encoding::EmptyPayload,
7207                            fidl::encoding::DefaultFuchsiaResourceDialect
7208                        );
7209                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7210                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7211                        Ok(SocketRequest::GetNoCheck {
7212                            responder: SocketGetNoCheckResponder {
7213                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7214                                tx_id: header.tx_id,
7215                            },
7216                        })
7217                    }
7218                    0x45386351246e998e => {
7219                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7220                        let mut req = fidl::new_empty!(
7221                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7222                            fidl::encoding::DefaultFuchsiaResourceDialect
7223                        );
7224                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7225                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7226                        Ok(SocketRequest::SetLinger {
7227                            linger: req.linger,
7228                            length_secs: req.length_secs,
7229
7230                            responder: SocketSetLingerResponder {
7231                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7232                                tx_id: header.tx_id,
7233                            },
7234                        })
7235                    }
7236                    0x48eb20fc5ccb0e45 => {
7237                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7238                        let mut req = fidl::new_empty!(
7239                            fidl::encoding::EmptyPayload,
7240                            fidl::encoding::DefaultFuchsiaResourceDialect
7241                        );
7242                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7243                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7244                        Ok(SocketRequest::GetLinger {
7245                            responder: SocketGetLingerResponder {
7246                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7247                                tx_id: header.tx_id,
7248                            },
7249                        })
7250                    }
7251                    0x547dc9cc0455189e => {
7252                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7253                        let mut req = fidl::new_empty!(
7254                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7255                            fidl::encoding::DefaultFuchsiaResourceDialect
7256                        );
7257                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7258                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7259                        Ok(SocketRequest::SetReusePort {
7260                            value: req.value,
7261
7262                            responder: SocketSetReusePortResponder {
7263                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7264                                tx_id: header.tx_id,
7265                            },
7266                        })
7267                    }
7268                    0x24dd3e5cb36d9ccb => {
7269                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7270                        let mut req = fidl::new_empty!(
7271                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
7272                            fidl::encoding::DefaultFuchsiaResourceDialect
7273                        );
7274                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest>(&header, _body_bytes, handles, &mut req)?;
7275                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7276                        Ok(SocketRequest::SetReusePortDeprecated {
7277                            value: req.value,
7278
7279                            responder: SocketSetReusePortDeprecatedResponder {
7280                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7281                                tx_id: header.tx_id,
7282                            },
7283                        })
7284                    }
7285                    0x7a112c1ab54ff828 => {
7286                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7287                        let mut req = fidl::new_empty!(
7288                            fidl::encoding::EmptyPayload,
7289                            fidl::encoding::DefaultFuchsiaResourceDialect
7290                        );
7291                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7292                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7293                        Ok(SocketRequest::GetReusePort {
7294                            responder: SocketGetReusePortResponder {
7295                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7296                                tx_id: header.tx_id,
7297                            },
7298                        })
7299                    }
7300                    0x67ce6db6c2ec8966 => {
7301                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7302                        let mut req = fidl::new_empty!(
7303                            fidl::encoding::EmptyPayload,
7304                            fidl::encoding::DefaultFuchsiaResourceDialect
7305                        );
7306                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7307                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7308                        Ok(SocketRequest::GetAcceptConn {
7309                            responder: SocketGetAcceptConnResponder {
7310                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7311                                tx_id: header.tx_id,
7312                            },
7313                        })
7314                    }
7315                    0x2118b483f28aafc4 => {
7316                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7317                        let mut req = fidl::new_empty!(
7318                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7319                            fidl::encoding::DefaultFuchsiaResourceDialect
7320                        );
7321                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7322                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7323                        Ok(SocketRequest::SetBindToDevice {
7324                            value: req.value,
7325
7326                            responder: SocketSetBindToDeviceResponder {
7327                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7328                                tx_id: header.tx_id,
7329                            },
7330                        })
7331                    }
7332                    0x1ab1fbf0ef7906c8 => {
7333                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7334                        let mut req = fidl::new_empty!(
7335                            fidl::encoding::EmptyPayload,
7336                            fidl::encoding::DefaultFuchsiaResourceDialect
7337                        );
7338                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7339                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7340                        Ok(SocketRequest::GetBindToDevice {
7341                            responder: SocketGetBindToDeviceResponder {
7342                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7343                                tx_id: header.tx_id,
7344                            },
7345                        })
7346                    }
7347                    0x6e387a0def00821 => {
7348                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7349                        let mut req = fidl::new_empty!(
7350                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7351                            fidl::encoding::DefaultFuchsiaResourceDialect
7352                        );
7353                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7354                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7355                        Ok(SocketRequest::SetBindToInterfaceIndex {
7356                            value: req.value,
7357
7358                            responder: SocketSetBindToInterfaceIndexResponder {
7359                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7360                                tx_id: header.tx_id,
7361                            },
7362                        })
7363                    }
7364                    0x59c31dd3e3078295 => {
7365                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7366                        let mut req = fidl::new_empty!(
7367                            fidl::encoding::EmptyPayload,
7368                            fidl::encoding::DefaultFuchsiaResourceDialect
7369                        );
7370                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7371                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7372                        Ok(SocketRequest::GetBindToInterfaceIndex {
7373                            responder: SocketGetBindToInterfaceIndexResponder {
7374                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7375                                tx_id: header.tx_id,
7376                            },
7377                        })
7378                    }
7379                    0x285d6516c263d839 => {
7380                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7381                        let mut req = fidl::new_empty!(
7382                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7383                            fidl::encoding::DefaultFuchsiaResourceDialect
7384                        );
7385                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7386                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7387                        Ok(SocketRequest::SetTimestamp {
7388                            value: req.value,
7389
7390                            responder: SocketSetTimestampResponder {
7391                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7392                                tx_id: header.tx_id,
7393                            },
7394                        })
7395                    }
7396                    0x49f2fffbbcc2bd27 => {
7397                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7398                        let mut req = fidl::new_empty!(
7399                            fidl::encoding::EmptyPayload,
7400                            fidl::encoding::DefaultFuchsiaResourceDialect
7401                        );
7402                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7403                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7404                        Ok(SocketRequest::GetTimestamp {
7405                            responder: SocketGetTimestampResponder {
7406                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7407                                tx_id: header.tx_id,
7408                            },
7409                        })
7410                    }
7411                    0x6ead6de09f653236 => {
7412                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7413                        let mut req = fidl::new_empty!(
7414                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7415                            fidl::encoding::DefaultFuchsiaResourceDialect
7416                        );
7417                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7418                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7419                        Ok(SocketRequest::SetMark {
7420                            domain: req.domain,
7421                            mark: req.mark,
7422
7423                            responder: SocketSetMarkResponder {
7424                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7425                                tx_id: header.tx_id,
7426                            },
7427                        })
7428                    }
7429                    0x57a2752c61d93d47 => {
7430                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7431                        let mut req = fidl::new_empty!(
7432                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7433                            fidl::encoding::DefaultFuchsiaResourceDialect
7434                        );
7435                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7436                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7437                        Ok(SocketRequest::GetMark {
7438                            domain: req.domain,
7439
7440                            responder: SocketGetMarkResponder {
7441                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7442                                tx_id: header.tx_id,
7443                            },
7444                        })
7445                    }
7446                    0x2c2f47fd8f924e52 => {
7447                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7448                        let mut req = fidl::new_empty!(
7449                            fidl::encoding::EmptyPayload,
7450                            fidl::encoding::DefaultFuchsiaResourceDialect
7451                        );
7452                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7453                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7454                        Ok(SocketRequest::GetCookie {
7455                            responder: SocketGetCookieResponder {
7456                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7457                                tx_id: header.tx_id,
7458                            },
7459                        })
7460                    }
7461                    0x4bc6400ae92125d => {
7462                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7463                        let mut req = fidl::new_empty!(
7464                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7465                            fidl::encoding::DefaultFuchsiaResourceDialect
7466                        );
7467                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7468                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7469                        Ok(SocketRequest::Bind {
7470                            addr: req.addr,
7471
7472                            responder: SocketBindResponder {
7473                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7474                                tx_id: header.tx_id,
7475                            },
7476                        })
7477                    }
7478                    0x5f05f19bfdd38871 => {
7479                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7480                        let mut req = fidl::new_empty!(
7481                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7482                            fidl::encoding::DefaultFuchsiaResourceDialect
7483                        );
7484                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7485                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7486                        Ok(SocketRequest::Connect {
7487                            addr: req.addr,
7488
7489                            responder: SocketConnectResponder {
7490                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7491                                tx_id: header.tx_id,
7492                            },
7493                        })
7494                    }
7495                    0x74e63b91f7b29b2 => {
7496                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7497                        let mut req = fidl::new_empty!(
7498                            fidl::encoding::EmptyPayload,
7499                            fidl::encoding::DefaultFuchsiaResourceDialect
7500                        );
7501                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7502                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7503                        Ok(SocketRequest::Disconnect {
7504                            responder: SocketDisconnectResponder {
7505                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7506                                tx_id: header.tx_id,
7507                            },
7508                        })
7509                    }
7510                    0x475f23f84a1a4f85 => {
7511                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7512                        let mut req = fidl::new_empty!(
7513                            fidl::encoding::EmptyPayload,
7514                            fidl::encoding::DefaultFuchsiaResourceDialect
7515                        );
7516                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7517                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7518                        Ok(SocketRequest::GetSockName {
7519                            responder: SocketGetSockNameResponder {
7520                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7521                                tx_id: header.tx_id,
7522                            },
7523                        })
7524                    }
7525                    0x1ffecf4bd5b6432e => {
7526                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7527                        let mut req = fidl::new_empty!(
7528                            fidl::encoding::EmptyPayload,
7529                            fidl::encoding::DefaultFuchsiaResourceDialect
7530                        );
7531                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7532                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7533                        Ok(SocketRequest::GetPeerName {
7534                            responder: SocketGetPeerNameResponder {
7535                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7536                                tx_id: header.tx_id,
7537                            },
7538                        })
7539                    }
7540                    0x247f38b6db68c336 => {
7541                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7542                        let mut req = fidl::new_empty!(
7543                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7544                            fidl::encoding::DefaultFuchsiaResourceDialect
7545                        );
7546                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7547                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7548                        Ok(SocketRequest::Shutdown {
7549                            mode: req.mode,
7550
7551                            responder: SocketShutdownResponder {
7552                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7553                                tx_id: header.tx_id,
7554                            },
7555                        })
7556                    }
7557                    0x995c600475b6d46 => {
7558                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7559                        let mut req = fidl::new_empty!(
7560                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7561                            fidl::encoding::DefaultFuchsiaResourceDialect
7562                        );
7563                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7564                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7565                        Ok(SocketRequest::SetIpTypeOfService {
7566                            value: req.value,
7567
7568                            responder: SocketSetIpTypeOfServiceResponder {
7569                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7570                                tx_id: header.tx_id,
7571                            },
7572                        })
7573                    }
7574                    0x3814a04259f75fcb => {
7575                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7576                        let mut req = fidl::new_empty!(
7577                            fidl::encoding::EmptyPayload,
7578                            fidl::encoding::DefaultFuchsiaResourceDialect
7579                        );
7580                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7581                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7582                        Ok(SocketRequest::GetIpTypeOfService {
7583                            responder: SocketGetIpTypeOfServiceResponder {
7584                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7585                                tx_id: header.tx_id,
7586                            },
7587                        })
7588                    }
7589                    0x29e2424b433ae1ef => {
7590                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7591                        let mut req = fidl::new_empty!(
7592                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7593                            fidl::encoding::DefaultFuchsiaResourceDialect
7594                        );
7595                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7596                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7597                        Ok(SocketRequest::SetIpTtl {
7598                            value: req.value,
7599
7600                            responder: SocketSetIpTtlResponder {
7601                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7602                                tx_id: header.tx_id,
7603                            },
7604                        })
7605                    }
7606                    0x47e47fa1f24da471 => {
7607                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7608                        let mut req = fidl::new_empty!(
7609                            fidl::encoding::EmptyPayload,
7610                            fidl::encoding::DefaultFuchsiaResourceDialect
7611                        );
7612                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7613                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7614                        Ok(SocketRequest::GetIpTtl {
7615                            responder: SocketGetIpTtlResponder {
7616                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7617                                tx_id: header.tx_id,
7618                            },
7619                        })
7620                    }
7621                    0x392d16bee20c0e16 => {
7622                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7623                        let mut req = fidl::new_empty!(
7624                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7625                            fidl::encoding::DefaultFuchsiaResourceDialect
7626                        );
7627                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7628                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7629                        Ok(SocketRequest::SetIpPacketInfo {
7630                            value: req.value,
7631
7632                            responder: SocketSetIpPacketInfoResponder {
7633                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7634                                tx_id: header.tx_id,
7635                            },
7636                        })
7637                    }
7638                    0x54b505f242280740 => {
7639                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7640                        let mut req = fidl::new_empty!(
7641                            fidl::encoding::EmptyPayload,
7642                            fidl::encoding::DefaultFuchsiaResourceDialect
7643                        );
7644                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7645                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7646                        Ok(SocketRequest::GetIpPacketInfo {
7647                            responder: SocketGetIpPacketInfoResponder {
7648                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7649                                tx_id: header.tx_id,
7650                            },
7651                        })
7652                    }
7653                    0x6c4f6714995f84ef => {
7654                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7655                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7656                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7657                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7658                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7659                            value: req.value,
7660
7661                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7662                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7663                                tx_id: header.tx_id,
7664                            },
7665                        })
7666                    }
7667                    0x4158ba7dc2795960 => {
7668                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7669                        let mut req = fidl::new_empty!(
7670                            fidl::encoding::EmptyPayload,
7671                            fidl::encoding::DefaultFuchsiaResourceDialect
7672                        );
7673                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7674                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7675                        Ok(SocketRequest::GetIpReceiveTypeOfService {
7676                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7677                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7678                                tx_id: header.tx_id,
7679                            },
7680                        })
7681                    }
7682                    0x46f15be0ce0ab82b => {
7683                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7684                        let mut req = fidl::new_empty!(
7685                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7686                            fidl::encoding::DefaultFuchsiaResourceDialect
7687                        );
7688                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7689                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7690                        Ok(SocketRequest::SetIpReceiveTtl {
7691                            value: req.value,
7692
7693                            responder: SocketSetIpReceiveTtlResponder {
7694                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7695                                tx_id: header.tx_id,
7696                            },
7697                        })
7698                    }
7699                    0x678ddd5a5dfa2eb5 => {
7700                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7701                        let mut req = fidl::new_empty!(
7702                            fidl::encoding::EmptyPayload,
7703                            fidl::encoding::DefaultFuchsiaResourceDialect
7704                        );
7705                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7706                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7707                        Ok(SocketRequest::GetIpReceiveTtl {
7708                            responder: SocketGetIpReceiveTtlResponder {
7709                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7710                                tx_id: header.tx_id,
7711                            },
7712                        })
7713                    }
7714                    0x752fbfa9b12befe => {
7715                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7716                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7717                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7718                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7719                        Ok(SocketRequest::SetIpMulticastInterface {
7720                            iface: req.iface,
7721                            address: req.address,
7722
7723                            responder: SocketSetIpMulticastInterfaceResponder {
7724                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7725                                tx_id: header.tx_id,
7726                            },
7727                        })
7728                    }
7729                    0x320bd14c4df046c4 => {
7730                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7731                        let mut req = fidl::new_empty!(
7732                            fidl::encoding::EmptyPayload,
7733                            fidl::encoding::DefaultFuchsiaResourceDialect
7734                        );
7735                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7736                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7737                        Ok(SocketRequest::GetIpMulticastInterface {
7738                            responder: SocketGetIpMulticastInterfaceResponder {
7739                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7740                                tx_id: header.tx_id,
7741                            },
7742                        })
7743                    }
7744                    0x63134d53772916a1 => {
7745                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7746                        let mut req = fidl::new_empty!(
7747                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7748                            fidl::encoding::DefaultFuchsiaResourceDialect
7749                        );
7750                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7751                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7752                        Ok(SocketRequest::SetIpMulticastTtl {
7753                            value: req.value,
7754
7755                            responder: SocketSetIpMulticastTtlResponder {
7756                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7757                                tx_id: header.tx_id,
7758                            },
7759                        })
7760                    }
7761                    0x4665cd378f39e1a => {
7762                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7763                        let mut req = fidl::new_empty!(
7764                            fidl::encoding::EmptyPayload,
7765                            fidl::encoding::DefaultFuchsiaResourceDialect
7766                        );
7767                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7768                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7769                        Ok(SocketRequest::GetIpMulticastTtl {
7770                            responder: SocketGetIpMulticastTtlResponder {
7771                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7772                                tx_id: header.tx_id,
7773                            },
7774                        })
7775                    }
7776                    0x20c55c11f00943ea => {
7777                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7778                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7779                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7780                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7781                        Ok(SocketRequest::SetIpMulticastLoopback {
7782                            value: req.value,
7783
7784                            responder: SocketSetIpMulticastLoopbackResponder {
7785                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7786                                tx_id: header.tx_id,
7787                            },
7788                        })
7789                    }
7790                    0x3b6b26ff558298f2 => {
7791                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7792                        let mut req = fidl::new_empty!(
7793                            fidl::encoding::EmptyPayload,
7794                            fidl::encoding::DefaultFuchsiaResourceDialect
7795                        );
7796                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7797                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7798                        Ok(SocketRequest::GetIpMulticastLoopback {
7799                            responder: SocketGetIpMulticastLoopbackResponder {
7800                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7801                                tx_id: header.tx_id,
7802                            },
7803                        })
7804                    }
7805                    0x76bc7df115a3b4d0 => {
7806                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7807                        let mut req = fidl::new_empty!(
7808                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7809                            fidl::encoding::DefaultFuchsiaResourceDialect
7810                        );
7811                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7812                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7813                        Ok(SocketRequest::AddIpMembership {
7814                            membership: req.membership,
7815
7816                            responder: SocketAddIpMembershipResponder {
7817                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7818                                tx_id: header.tx_id,
7819                            },
7820                        })
7821                    }
7822                    0x2888f3099188d03 => {
7823                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7824                        let mut req = fidl::new_empty!(
7825                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7826                            fidl::encoding::DefaultFuchsiaResourceDialect
7827                        );
7828                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7829                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7830                        Ok(SocketRequest::DropIpMembership {
7831                            membership: req.membership,
7832
7833                            responder: SocketDropIpMembershipResponder {
7834                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7835                                tx_id: header.tx_id,
7836                            },
7837                        })
7838                    }
7839                    0x1ae532b0c066e3a0 => {
7840                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7841                        let mut req = fidl::new_empty!(
7842                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7843                            fidl::encoding::DefaultFuchsiaResourceDialect
7844                        );
7845                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7846                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7847                        Ok(SocketRequest::SetIpTransparent {
7848                            value: req.value,
7849
7850                            responder: SocketSetIpTransparentResponder {
7851                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7852                                tx_id: header.tx_id,
7853                            },
7854                        })
7855                    }
7856                    0x51d43695962ebfb5 => {
7857                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7858                        let mut req = fidl::new_empty!(
7859                            fidl::encoding::EmptyPayload,
7860                            fidl::encoding::DefaultFuchsiaResourceDialect
7861                        );
7862                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7863                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7864                        Ok(SocketRequest::GetIpTransparent {
7865                            responder: SocketGetIpTransparentResponder {
7866                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7867                                tx_id: header.tx_id,
7868                            },
7869                        })
7870                    }
7871                    0x4722b4ce52f7840 => {
7872                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7873                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7874                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7875                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7876                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7877                            value: req.value,
7878
7879                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
7880                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7881                                tx_id: header.tx_id,
7882                            },
7883                        })
7884                    }
7885                    0x2a0e7dc5d6bfdfe9 => {
7886                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7887                        let mut req = fidl::new_empty!(
7888                            fidl::encoding::EmptyPayload,
7889                            fidl::encoding::DefaultFuchsiaResourceDialect
7890                        );
7891                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7892                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7893                        Ok(SocketRequest::GetIpReceiveOriginalDestinationAddress {
7894                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
7895                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7896                                tx_id: header.tx_id,
7897                            },
7898                        })
7899                    }
7900                    0x7c94727acb4ea4b3 => {
7901                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7902                        let mut req = fidl::new_empty!(
7903                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
7904                            fidl::encoding::DefaultFuchsiaResourceDialect
7905                        );
7906                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7907                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7908                        Ok(SocketRequest::AddIpv6Membership {
7909                            membership: req.membership,
7910
7911                            responder: SocketAddIpv6MembershipResponder {
7912                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7913                                tx_id: header.tx_id,
7914                            },
7915                        })
7916                    }
7917                    0x42104c70ccaba304 => {
7918                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7919                        let mut req = fidl::new_empty!(
7920                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
7921                            fidl::encoding::DefaultFuchsiaResourceDialect
7922                        );
7923                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7924                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7925                        Ok(SocketRequest::DropIpv6Membership {
7926                            membership: req.membership,
7927
7928                            responder: SocketDropIpv6MembershipResponder {
7929                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7930                                tx_id: header.tx_id,
7931                            },
7932                        })
7933                    }
7934                    0x135f76db3774ab3b => {
7935                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7936                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7937                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7938                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7939                        Ok(SocketRequest::SetIpv6MulticastInterface {
7940                            value: req.value,
7941
7942                            responder: SocketSetIpv6MulticastInterfaceResponder {
7943                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7944                                tx_id: header.tx_id,
7945                            },
7946                        })
7947                    }
7948                    0x1f26fcdd348f1882 => {
7949                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7950                        let mut req = fidl::new_empty!(
7951                            fidl::encoding::EmptyPayload,
7952                            fidl::encoding::DefaultFuchsiaResourceDialect
7953                        );
7954                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7955                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7956                        Ok(SocketRequest::GetIpv6MulticastInterface {
7957                            responder: SocketGetIpv6MulticastInterfaceResponder {
7958                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7959                                tx_id: header.tx_id,
7960                            },
7961                        })
7962                    }
7963                    0x157d51e98f462859 => {
7964                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7965                        let mut req = fidl::new_empty!(
7966                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
7967                            fidl::encoding::DefaultFuchsiaResourceDialect
7968                        );
7969                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
7970                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7971                        Ok(SocketRequest::SetIpv6UnicastHops {
7972                            value: req.value,
7973
7974                            responder: SocketSetIpv6UnicastHopsResponder {
7975                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7976                                tx_id: header.tx_id,
7977                            },
7978                        })
7979                    }
7980                    0x21f4641cad8bd8d2 => {
7981                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7982                        let mut req = fidl::new_empty!(
7983                            fidl::encoding::EmptyPayload,
7984                            fidl::encoding::DefaultFuchsiaResourceDialect
7985                        );
7986                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7987                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7988                        Ok(SocketRequest::GetIpv6UnicastHops {
7989                            responder: SocketGetIpv6UnicastHopsResponder {
7990                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7991                                tx_id: header.tx_id,
7992                            },
7993                        })
7994                    }
7995                    0x5c24808ed2e84a1e => {
7996                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7997                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7998                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
7999                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8000                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
8001                            value: req.value,
8002
8003                            responder: SocketSetIpv6ReceiveHopLimitResponder {
8004                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8005                                tx_id: header.tx_id,
8006                            },
8007                        })
8008                    }
8009                    0x341e06689885b4c0 => {
8010                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8011                        let mut req = fidl::new_empty!(
8012                            fidl::encoding::EmptyPayload,
8013                            fidl::encoding::DefaultFuchsiaResourceDialect
8014                        );
8015                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8016                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8017                        Ok(SocketRequest::GetIpv6ReceiveHopLimit {
8018                            responder: SocketGetIpv6ReceiveHopLimitResponder {
8019                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8020                                tx_id: header.tx_id,
8021                            },
8022                        })
8023                    }
8024                    0x25b9cd4d181f82c1 => {
8025                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8026                        let mut req = fidl::new_empty!(
8027                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
8028                            fidl::encoding::DefaultFuchsiaResourceDialect
8029                        );
8030                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8031                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8032                        Ok(SocketRequest::SetIpv6MulticastHops {
8033                            value: req.value,
8034
8035                            responder: SocketSetIpv6MulticastHopsResponder {
8036                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8037                                tx_id: header.tx_id,
8038                            },
8039                        })
8040                    }
8041                    0x52916948a365012a => {
8042                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8043                        let mut req = fidl::new_empty!(
8044                            fidl::encoding::EmptyPayload,
8045                            fidl::encoding::DefaultFuchsiaResourceDialect
8046                        );
8047                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8048                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8049                        Ok(SocketRequest::GetIpv6MulticastHops {
8050                            responder: SocketGetIpv6MulticastHopsResponder {
8051                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8052                                tx_id: header.tx_id,
8053                            },
8054                        })
8055                    }
8056                    0x55701c409ff41b40 => {
8057                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8058                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8059                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
8060                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8061                        Ok(SocketRequest::SetIpv6MulticastLoopback {
8062                            value: req.value,
8063
8064                            responder: SocketSetIpv6MulticastLoopbackResponder {
8065                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8066                                tx_id: header.tx_id,
8067                            },
8068                        })
8069                    }
8070                    0x4415b701fde319c3 => {
8071                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8072                        let mut req = fidl::new_empty!(
8073                            fidl::encoding::EmptyPayload,
8074                            fidl::encoding::DefaultFuchsiaResourceDialect
8075                        );
8076                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8077                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8078                        Ok(SocketRequest::GetIpv6MulticastLoopback {
8079                            responder: SocketGetIpv6MulticastLoopbackResponder {
8080                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8081                                tx_id: header.tx_id,
8082                            },
8083                        })
8084                    }
8085                    0x4873f1364758cbba => {
8086                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8087                        let mut req = fidl::new_empty!(
8088                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8089                            fidl::encoding::DefaultFuchsiaResourceDialect
8090                        );
8091                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8092                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8093                        Ok(SocketRequest::SetIpv6Only {
8094                            value: req.value,
8095
8096                            responder: SocketSetIpv6OnlyResponder {
8097                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8098                                tx_id: header.tx_id,
8099                            },
8100                        })
8101                    }
8102                    0x4aa3340a1a26b89c => {
8103                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8104                        let mut req = fidl::new_empty!(
8105                            fidl::encoding::EmptyPayload,
8106                            fidl::encoding::DefaultFuchsiaResourceDialect
8107                        );
8108                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8109                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8110                        Ok(SocketRequest::GetIpv6Only {
8111                            responder: SocketGetIpv6OnlyResponder {
8112                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8113                                tx_id: header.tx_id,
8114                            },
8115                        })
8116                    }
8117                    0x58f07c8788d099a0 => {
8118                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8119                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8120                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8121                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8122                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8123                            value: req.value,
8124
8125                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8126                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8127                                tx_id: header.tx_id,
8128                            },
8129                        })
8130                    }
8131                    0x2e334df1da553ffa => {
8132                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8133                        let mut req = fidl::new_empty!(
8134                            fidl::encoding::EmptyPayload,
8135                            fidl::encoding::DefaultFuchsiaResourceDialect
8136                        );
8137                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8138                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8139                        Ok(SocketRequest::GetIpv6ReceiveTrafficClass {
8140                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8141                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8142                                tx_id: header.tx_id,
8143                            },
8144                        })
8145                    }
8146                    0x6af077800c5a0b4f => {
8147                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8148                        let mut req = fidl::new_empty!(
8149                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8150                            fidl::encoding::DefaultFuchsiaResourceDialect
8151                        );
8152                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8153                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8154                        Ok(SocketRequest::SetIpv6TrafficClass {
8155                            value: req.value,
8156
8157                            responder: SocketSetIpv6TrafficClassResponder {
8158                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8159                                tx_id: header.tx_id,
8160                            },
8161                        })
8162                    }
8163                    0x6baf6eed8fc2f04 => {
8164                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8165                        let mut req = fidl::new_empty!(
8166                            fidl::encoding::EmptyPayload,
8167                            fidl::encoding::DefaultFuchsiaResourceDialect
8168                        );
8169                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8170                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8171                        Ok(SocketRequest::GetIpv6TrafficClass {
8172                            responder: SocketGetIpv6TrafficClassResponder {
8173                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8174                                tx_id: header.tx_id,
8175                            },
8176                        })
8177                    }
8178                    0x19259775b1a92768 => {
8179                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8180                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8181                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8182                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8183                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8184                            value: req.value,
8185
8186                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8187                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8188                                tx_id: header.tx_id,
8189                            },
8190                        })
8191                    }
8192                    0x7acd4a2775baec75 => {
8193                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8194                        let mut req = fidl::new_empty!(
8195                            fidl::encoding::EmptyPayload,
8196                            fidl::encoding::DefaultFuchsiaResourceDialect
8197                        );
8198                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8199                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8200                        Ok(SocketRequest::GetIpv6ReceivePacketInfo {
8201                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8202                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8203                                tx_id: header.tx_id,
8204                            },
8205                        })
8206                    }
8207                    0x38bf28f0dafdbac0 => {
8208                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8209                        let mut req = fidl::new_empty!(
8210                            fidl::encoding::EmptyPayload,
8211                            fidl::encoding::DefaultFuchsiaResourceDialect
8212                        );
8213                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8214                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8215                        Ok(SocketRequest::GetOriginalDestination {
8216                            responder: SocketGetOriginalDestinationResponder {
8217                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8218                                tx_id: header.tx_id,
8219                            },
8220                        })
8221                    }
8222                    0x335706eccf54a135 => {
8223                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8224                        let mut req = fidl::new_empty!(
8225                            fidl::encoding::EmptyPayload,
8226                            fidl::encoding::DefaultFuchsiaResourceDialect
8227                        );
8228                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8229                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8230                        Ok(SocketRequest::Describe {
8231                            responder: SocketDescribeResponder {
8232                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8233                                tx_id: header.tx_id,
8234                            },
8235                        })
8236                    }
8237                    0x1dfb695351d3aa1d => {
8238                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8239                        let mut req = fidl::new_empty!(
8240                            SocketRecvMsgRequest,
8241                            fidl::encoding::DefaultFuchsiaResourceDialect
8242                        );
8243                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8244                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8245                        Ok(SocketRequest::RecvMsg {
8246                            want_addr: req.want_addr,
8247                            data_len: req.data_len,
8248                            want_control: req.want_control,
8249                            flags: req.flags,
8250
8251                            responder: SocketRecvMsgResponder {
8252                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8253                                tx_id: header.tx_id,
8254                            },
8255                        })
8256                    }
8257                    0x2cf1eac9a7fc8958 => {
8258                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8259                        let mut req = fidl::new_empty!(
8260                            SocketSendMsgRequest,
8261                            fidl::encoding::DefaultFuchsiaResourceDialect
8262                        );
8263                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8264                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8265                        Ok(SocketRequest::SendMsg {
8266                            addr: req.addr,
8267                            data: req.data,
8268                            control: req.control,
8269                            flags: req.flags,
8270
8271                            responder: SocketSendMsgResponder {
8272                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8273                                tx_id: header.tx_id,
8274                            },
8275                        })
8276                    }
8277                    0x39676f75aec339ba => {
8278                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8279                        let mut req = fidl::new_empty!(
8280                            fidl::encoding::EmptyPayload,
8281                            fidl::encoding::DefaultFuchsiaResourceDialect
8282                        );
8283                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8284                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8285                        Ok(SocketRequest::GetInfo {
8286                            responder: SocketGetInfoResponder {
8287                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8288                                tx_id: header.tx_id,
8289                            },
8290                        })
8291                    }
8292                    0x5d06a606d95e8f3 => {
8293                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8294                        let mut req = fidl::new_empty!(
8295                            SocketSetIpHeaderIncludedRequest,
8296                            fidl::encoding::DefaultFuchsiaResourceDialect
8297                        );
8298                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8299                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8300                        Ok(SocketRequest::SetIpHeaderIncluded {
8301                            value: req.value,
8302
8303                            responder: SocketSetIpHeaderIncludedResponder {
8304                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8305                                tx_id: header.tx_id,
8306                            },
8307                        })
8308                    }
8309                    0x76125ad1f4d175f6 => {
8310                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8311                        let mut req = fidl::new_empty!(
8312                            fidl::encoding::EmptyPayload,
8313                            fidl::encoding::DefaultFuchsiaResourceDialect
8314                        );
8315                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8316                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8317                        Ok(SocketRequest::GetIpHeaderIncluded {
8318                            responder: SocketGetIpHeaderIncludedResponder {
8319                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8320                                tx_id: header.tx_id,
8321                            },
8322                        })
8323                    }
8324                    0x4ebea92a43ae68a9 => {
8325                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8326                        let mut req = fidl::new_empty!(
8327                            SocketSetIcmpv6FilterRequest,
8328                            fidl::encoding::DefaultFuchsiaResourceDialect
8329                        );
8330                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8331                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8332                        Ok(SocketRequest::SetIcmpv6Filter {
8333                            filter: req.filter,
8334
8335                            responder: SocketSetIcmpv6FilterResponder {
8336                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8337                                tx_id: header.tx_id,
8338                            },
8339                        })
8340                    }
8341                    0x43bd4f3bc0970ace => {
8342                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8343                        let mut req = fidl::new_empty!(
8344                            fidl::encoding::EmptyPayload,
8345                            fidl::encoding::DefaultFuchsiaResourceDialect
8346                        );
8347                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8348                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8349                        Ok(SocketRequest::GetIcmpv6Filter {
8350                            responder: SocketGetIcmpv6FilterResponder {
8351                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8352                                tx_id: header.tx_id,
8353                            },
8354                        })
8355                    }
8356                    0x18b7809577199cb4 => {
8357                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8358                        let mut req = fidl::new_empty!(
8359                            SocketSetIpv6ChecksumRequest,
8360                            fidl::encoding::DefaultFuchsiaResourceDialect
8361                        );
8362                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8363                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8364                        Ok(SocketRequest::SetIpv6Checksum {
8365                            config: req.config,
8366
8367                            responder: SocketSetIpv6ChecksumResponder {
8368                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8369                                tx_id: header.tx_id,
8370                            },
8371                        })
8372                    }
8373                    0x1847bf5b2d263dd => {
8374                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8375                        let mut req = fidl::new_empty!(
8376                            fidl::encoding::EmptyPayload,
8377                            fidl::encoding::DefaultFuchsiaResourceDialect
8378                        );
8379                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8380                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8381                        Ok(SocketRequest::GetIpv6Checksum {
8382                            responder: SocketGetIpv6ChecksumResponder {
8383                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8384                                tx_id: header.tx_id,
8385                            },
8386                        })
8387                    }
8388                    _ => Err(fidl::Error::UnknownOrdinal {
8389                        ordinal: header.ordinal,
8390                        protocol_name:
8391                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8392                    }),
8393                }))
8394            },
8395        )
8396    }
8397}
8398
8399/// A raw network socket.
8400///
8401/// Once a socket has been retrieved from a provider, this interface is then
8402/// used to further configure and use the socket. This interface is essentially
8403/// POSIX.
8404///
8405/// All methods on this type are nonblocking; their exact behaviors match their
8406/// Linux counterparts.
8407///
8408/// *Warning:* This protocol is not yet ready for direct use by clients.
8409/// Instead, clients should use the BSD sockets API to interact with sockets.
8410/// We plan to change this protocol substantially and clients that couple
8411/// directly to this protocol will make those changes more difficult.
8412#[derive(Debug)]
8413pub enum SocketRequest {
8414    Clone {
8415        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8416        control_handle: SocketControlHandle,
8417    },
8418    /// Terminates the connection.
8419    ///
8420    /// After calling `Close`, the client must not send any other requests.
8421    ///
8422    /// Servers, after sending the status response, should close the connection
8423    /// regardless of status and without sending an epitaph.
8424    ///
8425    /// Closing the client end of the channel should be semantically equivalent
8426    /// to calling `Close` without knowing when the close has completed or its
8427    /// status.
8428    Close {
8429        responder: SocketCloseResponder,
8430    },
8431    Query {
8432        responder: SocketQueryResponder,
8433    },
8434    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8435    SetReuseAddress {
8436        value: bool,
8437        responder: SocketSetReuseAddressResponder,
8438    },
8439    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8440    GetReuseAddress {
8441        responder: SocketGetReuseAddressResponder,
8442    },
8443    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8444    /// Returns the last error if there is an error set on the socket.
8445    GetError {
8446        responder: SocketGetErrorResponder,
8447    },
8448    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8449    SetBroadcast {
8450        value: bool,
8451        responder: SocketSetBroadcastResponder,
8452    },
8453    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8454    GetBroadcast {
8455        responder: SocketGetBroadcastResponder,
8456    },
8457    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8458    SetSendBuffer {
8459        value_bytes: u64,
8460        responder: SocketSetSendBufferResponder,
8461    },
8462    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8463    GetSendBuffer {
8464        responder: SocketGetSendBufferResponder,
8465    },
8466    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8467    SetReceiveBuffer {
8468        value_bytes: u64,
8469        responder: SocketSetReceiveBufferResponder,
8470    },
8471    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8472    GetReceiveBuffer {
8473        responder: SocketGetReceiveBufferResponder,
8474    },
8475    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8476    SetKeepAlive {
8477        value: bool,
8478        responder: SocketSetKeepAliveResponder,
8479    },
8480    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8481    GetKeepAlive {
8482        responder: SocketGetKeepAliveResponder,
8483    },
8484    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8485    SetOutOfBandInline {
8486        value: bool,
8487        responder: SocketSetOutOfBandInlineResponder,
8488    },
8489    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8490    GetOutOfBandInline {
8491        responder: SocketGetOutOfBandInlineResponder,
8492    },
8493    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8494    SetNoCheck {
8495        value: bool,
8496        responder: SocketSetNoCheckResponder,
8497    },
8498    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8499    GetNoCheck {
8500        responder: SocketGetNoCheckResponder,
8501    },
8502    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8503    SetLinger {
8504        linger: bool,
8505        length_secs: u32,
8506        responder: SocketSetLingerResponder,
8507    },
8508    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8509    GetLinger {
8510        responder: SocketGetLingerResponder,
8511    },
8512    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8513    SetReusePort {
8514        value: fidl_fuchsia_posix_socket::ReusePortOption,
8515        responder: SocketSetReusePortResponder,
8516    },
8517    SetReusePortDeprecated {
8518        value: bool,
8519        responder: SocketSetReusePortDeprecatedResponder,
8520    },
8521    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8522    GetReusePort {
8523        responder: SocketGetReusePortResponder,
8524    },
8525    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8526    GetAcceptConn {
8527        responder: SocketGetAcceptConnResponder,
8528    },
8529    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8530    SetBindToDevice {
8531        value: String,
8532        responder: SocketSetBindToDeviceResponder,
8533    },
8534    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8535    GetBindToDevice {
8536        responder: SocketGetBindToDeviceResponder,
8537    },
8538    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8539    /// If `value` is 0, this clears the bound interface.
8540    SetBindToInterfaceIndex {
8541        value: u64,
8542        responder: SocketSetBindToInterfaceIndexResponder,
8543    },
8544    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8545    GetBindToInterfaceIndex {
8546        responder: SocketGetBindToInterfaceIndexResponder,
8547    },
8548    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8549    SetTimestamp {
8550        value: fidl_fuchsia_posix_socket::TimestampOption,
8551        responder: SocketSetTimestampResponder,
8552    },
8553    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8554    GetTimestamp {
8555        responder: SocketGetTimestampResponder,
8556    },
8557    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8558    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8559    /// mark can be set independently in each domain.
8560    SetMark {
8561        domain: fidl_fuchsia_net::MarkDomain,
8562        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8563        responder: SocketSetMarkResponder,
8564    },
8565    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8566    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8567    /// mark can be retrieved independently in each domain.
8568    GetMark {
8569        domain: fidl_fuchsia_net::MarkDomain,
8570        responder: SocketGetMarkResponder,
8571    },
8572    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
8573    GetCookie {
8574        responder: SocketGetCookieResponder,
8575    },
8576    /// Sets the local address used for the socket.
8577    Bind {
8578        addr: fidl_fuchsia_net::SocketAddress,
8579        responder: SocketBindResponder,
8580    },
8581    /// Initiates a connection to a remote address.
8582    Connect {
8583        addr: fidl_fuchsia_net::SocketAddress,
8584        responder: SocketConnectResponder,
8585    },
8586    /// Clears connection information from this socket.
8587    Disconnect {
8588        responder: SocketDisconnectResponder,
8589    },
8590    /// Retrieves the local socket address.
8591    GetSockName {
8592        responder: SocketGetSockNameResponder,
8593    },
8594    /// Retrieves the remote socket address.
8595    GetPeerName {
8596        responder: SocketGetPeerNameResponder,
8597    },
8598    /// Shuts down part of the socket.
8599    Shutdown {
8600        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8601        responder: SocketShutdownResponder,
8602    },
8603    /// Set `SOL_IP` -> `IP_TOS`.
8604    SetIpTypeOfService {
8605        value: u8,
8606        responder: SocketSetIpTypeOfServiceResponder,
8607    },
8608    /// Get `SOL_IP` -> `IP_TOS`.
8609    GetIpTypeOfService {
8610        responder: SocketGetIpTypeOfServiceResponder,
8611    },
8612    /// Set `SOL_IP` -> `IP_TTL`.
8613    SetIpTtl {
8614        value: fidl_fuchsia_posix_socket::OptionalUint8,
8615        responder: SocketSetIpTtlResponder,
8616    },
8617    /// Get `SOL_IP` -> `IP_TTL`.
8618    GetIpTtl {
8619        responder: SocketGetIpTtlResponder,
8620    },
8621    /// Set `SOL_IP` -> `IP_PKTINFO`.
8622    SetIpPacketInfo {
8623        value: bool,
8624        responder: SocketSetIpPacketInfoResponder,
8625    },
8626    /// Get `SOL_IP` -> `IP_PKTINFO`.
8627    GetIpPacketInfo {
8628        responder: SocketGetIpPacketInfoResponder,
8629    },
8630    /// Set `SOL_IP` -> `IP_RECVTOS`.
8631    SetIpReceiveTypeOfService {
8632        value: bool,
8633        responder: SocketSetIpReceiveTypeOfServiceResponder,
8634    },
8635    /// Get `SOL_IP` -> `IP_RECVTOS`.
8636    GetIpReceiveTypeOfService {
8637        responder: SocketGetIpReceiveTypeOfServiceResponder,
8638    },
8639    /// Set `SOL_IP` -> `IP_RECVTTL`.
8640    SetIpReceiveTtl {
8641        value: bool,
8642        responder: SocketSetIpReceiveTtlResponder,
8643    },
8644    /// Get `SOL_IP` -> `IP_RECVTTL`.
8645    GetIpReceiveTtl {
8646        responder: SocketGetIpReceiveTtlResponder,
8647    },
8648    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8649    SetIpMulticastInterface {
8650        iface: u64,
8651        address: fidl_fuchsia_net::Ipv4Address,
8652        responder: SocketSetIpMulticastInterfaceResponder,
8653    },
8654    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8655    GetIpMulticastInterface {
8656        responder: SocketGetIpMulticastInterfaceResponder,
8657    },
8658    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8659    SetIpMulticastTtl {
8660        value: fidl_fuchsia_posix_socket::OptionalUint8,
8661        responder: SocketSetIpMulticastTtlResponder,
8662    },
8663    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8664    GetIpMulticastTtl {
8665        responder: SocketGetIpMulticastTtlResponder,
8666    },
8667    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8668    SetIpMulticastLoopback {
8669        value: bool,
8670        responder: SocketSetIpMulticastLoopbackResponder,
8671    },
8672    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8673    GetIpMulticastLoopback {
8674        responder: SocketGetIpMulticastLoopbackResponder,
8675    },
8676    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8677    AddIpMembership {
8678        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8679        responder: SocketAddIpMembershipResponder,
8680    },
8681    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8682    DropIpMembership {
8683        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8684        responder: SocketDropIpMembershipResponder,
8685    },
8686    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8687    SetIpTransparent {
8688        value: bool,
8689        responder: SocketSetIpTransparentResponder,
8690    },
8691    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8692    GetIpTransparent {
8693        responder: SocketGetIpTransparentResponder,
8694    },
8695    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8696    SetIpReceiveOriginalDestinationAddress {
8697        value: bool,
8698        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8699    },
8700    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8701    GetIpReceiveOriginalDestinationAddress {
8702        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8703    },
8704    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8705    AddIpv6Membership {
8706        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8707        responder: SocketAddIpv6MembershipResponder,
8708    },
8709    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8710    DropIpv6Membership {
8711        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8712        responder: SocketDropIpv6MembershipResponder,
8713    },
8714    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8715    SetIpv6MulticastInterface {
8716        value: u64,
8717        responder: SocketSetIpv6MulticastInterfaceResponder,
8718    },
8719    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8720    GetIpv6MulticastInterface {
8721        responder: SocketGetIpv6MulticastInterfaceResponder,
8722    },
8723    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8724    SetIpv6UnicastHops {
8725        value: fidl_fuchsia_posix_socket::OptionalUint8,
8726        responder: SocketSetIpv6UnicastHopsResponder,
8727    },
8728    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8729    GetIpv6UnicastHops {
8730        responder: SocketGetIpv6UnicastHopsResponder,
8731    },
8732    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8733    SetIpv6ReceiveHopLimit {
8734        value: bool,
8735        responder: SocketSetIpv6ReceiveHopLimitResponder,
8736    },
8737    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8738    GetIpv6ReceiveHopLimit {
8739        responder: SocketGetIpv6ReceiveHopLimitResponder,
8740    },
8741    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8742    SetIpv6MulticastHops {
8743        value: fidl_fuchsia_posix_socket::OptionalUint8,
8744        responder: SocketSetIpv6MulticastHopsResponder,
8745    },
8746    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8747    GetIpv6MulticastHops {
8748        responder: SocketGetIpv6MulticastHopsResponder,
8749    },
8750    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8751    SetIpv6MulticastLoopback {
8752        value: bool,
8753        responder: SocketSetIpv6MulticastLoopbackResponder,
8754    },
8755    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8756    GetIpv6MulticastLoopback {
8757        responder: SocketGetIpv6MulticastLoopbackResponder,
8758    },
8759    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8760    SetIpv6Only {
8761        value: bool,
8762        responder: SocketSetIpv6OnlyResponder,
8763    },
8764    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8765    GetIpv6Only {
8766        responder: SocketGetIpv6OnlyResponder,
8767    },
8768    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8769    SetIpv6ReceiveTrafficClass {
8770        value: bool,
8771        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8772    },
8773    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8774    GetIpv6ReceiveTrafficClass {
8775        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8776    },
8777    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8778    SetIpv6TrafficClass {
8779        value: fidl_fuchsia_posix_socket::OptionalUint8,
8780        responder: SocketSetIpv6TrafficClassResponder,
8781    },
8782    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8783    GetIpv6TrafficClass {
8784        responder: SocketGetIpv6TrafficClassResponder,
8785    },
8786    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8787    SetIpv6ReceivePacketInfo {
8788        value: bool,
8789        responder: SocketSetIpv6ReceivePacketInfoResponder,
8790    },
8791    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8792    GetIpv6ReceivePacketInfo {
8793        responder: SocketGetIpv6ReceivePacketInfoResponder,
8794    },
8795    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8796    GetOriginalDestination {
8797        responder: SocketGetOriginalDestinationResponder,
8798    },
8799    Describe {
8800        responder: SocketDescribeResponder,
8801    },
8802    /// Receives a message from the socket.
8803    ///
8804    /// + request `want_addr` request message's source address information to
8805    ///   be returned.
8806    /// + request `data_len` the maximum allowed length of the response data
8807    ///   buffer.
8808    /// + request `want_control` request ancillary data to be returned.
8809    /// + request `flags` flags for the receive request.
8810    /// - response `addr` the message's source address information, if
8811    ///   requested.
8812    /// - response `data` the message.
8813    /// - response `control` control messages, if requested.
8814    /// - response `truncated` indicates whether or not the returned message
8815    ///   was truncated.
8816    RecvMsg {
8817        want_addr: bool,
8818        data_len: u32,
8819        want_control: bool,
8820        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8821        responder: SocketRecvMsgResponder,
8822    },
8823    /// Sends a message on the socket.
8824    ///
8825    /// + request `addr` the address to send the message to. If unset, will
8826    ///   send to the connected peer.
8827    /// + request `data` the message.
8828    /// + request `control` ancillary data.
8829    /// + request `flags` flags for the send request.
8830    SendMsg {
8831        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8832        data: Vec<u8>,
8833        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8834        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8835        responder: SocketSendMsgResponder,
8836    },
8837    /// Retrieves creation information from the socket.
8838    ///
8839    /// - response `domain` the socket's associated domain.
8840    /// - response `proto` the socket's associated protocol.
8841    GetInfo {
8842        responder: SocketGetInfoResponder,
8843    },
8844    /// Set `SOL_IP` -> `IP_HDRINCL`.
8845    SetIpHeaderIncluded {
8846        value: bool,
8847        responder: SocketSetIpHeaderIncludedResponder,
8848    },
8849    /// Get `SOL_IP` -> `IP_HDRINCL`.
8850    GetIpHeaderIncluded {
8851        responder: SocketGetIpHeaderIncludedResponder,
8852    },
8853    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8854    SetIcmpv6Filter {
8855        filter: Icmpv6Filter,
8856        responder: SocketSetIcmpv6FilterResponder,
8857    },
8858    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8859    GetIcmpv6Filter {
8860        responder: SocketGetIcmpv6FilterResponder,
8861    },
8862    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8863    SetIpv6Checksum {
8864        config: Ipv6ChecksumConfiguration,
8865        responder: SocketSetIpv6ChecksumResponder,
8866    },
8867    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8868    GetIpv6Checksum {
8869        responder: SocketGetIpv6ChecksumResponder,
8870    },
8871}
8872
8873impl SocketRequest {
8874    #[allow(irrefutable_let_patterns)]
8875    pub fn into_clone(
8876        self,
8877    ) -> Option<(
8878        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8879        SocketControlHandle,
8880    )> {
8881        if let SocketRequest::Clone { request, control_handle } = self {
8882            Some((request, control_handle))
8883        } else {
8884            None
8885        }
8886    }
8887
8888    #[allow(irrefutable_let_patterns)]
8889    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
8890        if let SocketRequest::Close { responder } = self { Some((responder)) } else { None }
8891    }
8892
8893    #[allow(irrefutable_let_patterns)]
8894    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
8895        if let SocketRequest::Query { responder } = self { Some((responder)) } else { None }
8896    }
8897
8898    #[allow(irrefutable_let_patterns)]
8899    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
8900        if let SocketRequest::SetReuseAddress { value, responder } = self {
8901            Some((value, responder))
8902        } else {
8903            None
8904        }
8905    }
8906
8907    #[allow(irrefutable_let_patterns)]
8908    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
8909        if let SocketRequest::GetReuseAddress { responder } = self {
8910            Some((responder))
8911        } else {
8912            None
8913        }
8914    }
8915
8916    #[allow(irrefutable_let_patterns)]
8917    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
8918        if let SocketRequest::GetError { responder } = self { Some((responder)) } else { None }
8919    }
8920
8921    #[allow(irrefutable_let_patterns)]
8922    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
8923        if let SocketRequest::SetBroadcast { value, responder } = self {
8924            Some((value, responder))
8925        } else {
8926            None
8927        }
8928    }
8929
8930    #[allow(irrefutable_let_patterns)]
8931    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
8932        if let SocketRequest::GetBroadcast { responder } = self { Some((responder)) } else { None }
8933    }
8934
8935    #[allow(irrefutable_let_patterns)]
8936    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
8937        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
8938            Some((value_bytes, responder))
8939        } else {
8940            None
8941        }
8942    }
8943
8944    #[allow(irrefutable_let_patterns)]
8945    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
8946        if let SocketRequest::GetSendBuffer { responder } = self { Some((responder)) } else { None }
8947    }
8948
8949    #[allow(irrefutable_let_patterns)]
8950    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
8951        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
8952            Some((value_bytes, responder))
8953        } else {
8954            None
8955        }
8956    }
8957
8958    #[allow(irrefutable_let_patterns)]
8959    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
8960        if let SocketRequest::GetReceiveBuffer { responder } = self {
8961            Some((responder))
8962        } else {
8963            None
8964        }
8965    }
8966
8967    #[allow(irrefutable_let_patterns)]
8968    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
8969        if let SocketRequest::SetKeepAlive { value, responder } = self {
8970            Some((value, responder))
8971        } else {
8972            None
8973        }
8974    }
8975
8976    #[allow(irrefutable_let_patterns)]
8977    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
8978        if let SocketRequest::GetKeepAlive { responder } = self { Some((responder)) } else { None }
8979    }
8980
8981    #[allow(irrefutable_let_patterns)]
8982    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
8983        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
8984            Some((value, responder))
8985        } else {
8986            None
8987        }
8988    }
8989
8990    #[allow(irrefutable_let_patterns)]
8991    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
8992        if let SocketRequest::GetOutOfBandInline { responder } = self {
8993            Some((responder))
8994        } else {
8995            None
8996        }
8997    }
8998
8999    #[allow(irrefutable_let_patterns)]
9000    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
9001        if let SocketRequest::SetNoCheck { value, responder } = self {
9002            Some((value, responder))
9003        } else {
9004            None
9005        }
9006    }
9007
9008    #[allow(irrefutable_let_patterns)]
9009    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
9010        if let SocketRequest::GetNoCheck { responder } = self { Some((responder)) } else { None }
9011    }
9012
9013    #[allow(irrefutable_let_patterns)]
9014    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
9015        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
9016            Some((linger, length_secs, responder))
9017        } else {
9018            None
9019        }
9020    }
9021
9022    #[allow(irrefutable_let_patterns)]
9023    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
9024        if let SocketRequest::GetLinger { responder } = self { Some((responder)) } else { None }
9025    }
9026
9027    #[allow(irrefutable_let_patterns)]
9028    pub fn into_set_reuse_port(
9029        self,
9030    ) -> Option<(fidl_fuchsia_posix_socket::ReusePortOption, SocketSetReusePortResponder)> {
9031        if let SocketRequest::SetReusePort { value, responder } = self {
9032            Some((value, responder))
9033        } else {
9034            None
9035        }
9036    }
9037
9038    #[allow(irrefutable_let_patterns)]
9039    pub fn into_set_reuse_port_deprecated(
9040        self,
9041    ) -> Option<(bool, SocketSetReusePortDeprecatedResponder)> {
9042        if let SocketRequest::SetReusePortDeprecated { value, responder } = self {
9043            Some((value, responder))
9044        } else {
9045            None
9046        }
9047    }
9048
9049    #[allow(irrefutable_let_patterns)]
9050    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
9051        if let SocketRequest::GetReusePort { responder } = self { Some((responder)) } else { None }
9052    }
9053
9054    #[allow(irrefutable_let_patterns)]
9055    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
9056        if let SocketRequest::GetAcceptConn { responder } = self { Some((responder)) } else { None }
9057    }
9058
9059    #[allow(irrefutable_let_patterns)]
9060    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
9061        if let SocketRequest::SetBindToDevice { value, responder } = self {
9062            Some((value, responder))
9063        } else {
9064            None
9065        }
9066    }
9067
9068    #[allow(irrefutable_let_patterns)]
9069    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
9070        if let SocketRequest::GetBindToDevice { responder } = self {
9071            Some((responder))
9072        } else {
9073            None
9074        }
9075    }
9076
9077    #[allow(irrefutable_let_patterns)]
9078    pub fn into_set_bind_to_interface_index(
9079        self,
9080    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
9081        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
9082            Some((value, responder))
9083        } else {
9084            None
9085        }
9086    }
9087
9088    #[allow(irrefutable_let_patterns)]
9089    pub fn into_get_bind_to_interface_index(
9090        self,
9091    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
9092        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
9093            Some((responder))
9094        } else {
9095            None
9096        }
9097    }
9098
9099    #[allow(irrefutable_let_patterns)]
9100    pub fn into_set_timestamp(
9101        self,
9102    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
9103        if let SocketRequest::SetTimestamp { value, responder } = self {
9104            Some((value, responder))
9105        } else {
9106            None
9107        }
9108    }
9109
9110    #[allow(irrefutable_let_patterns)]
9111    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9112        if let SocketRequest::GetTimestamp { responder } = self { Some((responder)) } else { None }
9113    }
9114
9115    #[allow(irrefutable_let_patterns)]
9116    pub fn into_set_mark(
9117        self,
9118    ) -> Option<(
9119        fidl_fuchsia_net::MarkDomain,
9120        fidl_fuchsia_posix_socket::OptionalUint32,
9121        SocketSetMarkResponder,
9122    )> {
9123        if let SocketRequest::SetMark { domain, mark, responder } = self {
9124            Some((domain, mark, responder))
9125        } else {
9126            None
9127        }
9128    }
9129
9130    #[allow(irrefutable_let_patterns)]
9131    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9132        if let SocketRequest::GetMark { domain, responder } = self {
9133            Some((domain, responder))
9134        } else {
9135            None
9136        }
9137    }
9138
9139    #[allow(irrefutable_let_patterns)]
9140    pub fn into_get_cookie(self) -> Option<(SocketGetCookieResponder)> {
9141        if let SocketRequest::GetCookie { responder } = self { Some((responder)) } else { None }
9142    }
9143
9144    #[allow(irrefutable_let_patterns)]
9145    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9146        if let SocketRequest::Bind { addr, responder } = self {
9147            Some((addr, responder))
9148        } else {
9149            None
9150        }
9151    }
9152
9153    #[allow(irrefutable_let_patterns)]
9154    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9155        if let SocketRequest::Connect { addr, responder } = self {
9156            Some((addr, responder))
9157        } else {
9158            None
9159        }
9160    }
9161
9162    #[allow(irrefutable_let_patterns)]
9163    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9164        if let SocketRequest::Disconnect { responder } = self { Some((responder)) } else { None }
9165    }
9166
9167    #[allow(irrefutable_let_patterns)]
9168    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9169        if let SocketRequest::GetSockName { responder } = self { Some((responder)) } else { None }
9170    }
9171
9172    #[allow(irrefutable_let_patterns)]
9173    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9174        if let SocketRequest::GetPeerName { responder } = self { Some((responder)) } else { None }
9175    }
9176
9177    #[allow(irrefutable_let_patterns)]
9178    pub fn into_shutdown(
9179        self,
9180    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9181        if let SocketRequest::Shutdown { mode, responder } = self {
9182            Some((mode, responder))
9183        } else {
9184            None
9185        }
9186    }
9187
9188    #[allow(irrefutable_let_patterns)]
9189    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9190        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9191            Some((value, responder))
9192        } else {
9193            None
9194        }
9195    }
9196
9197    #[allow(irrefutable_let_patterns)]
9198    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9199        if let SocketRequest::GetIpTypeOfService { responder } = self {
9200            Some((responder))
9201        } else {
9202            None
9203        }
9204    }
9205
9206    #[allow(irrefutable_let_patterns)]
9207    pub fn into_set_ip_ttl(
9208        self,
9209    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9210        if let SocketRequest::SetIpTtl { value, responder } = self {
9211            Some((value, responder))
9212        } else {
9213            None
9214        }
9215    }
9216
9217    #[allow(irrefutable_let_patterns)]
9218    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9219        if let SocketRequest::GetIpTtl { responder } = self { Some((responder)) } else { None }
9220    }
9221
9222    #[allow(irrefutable_let_patterns)]
9223    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9224        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9225            Some((value, responder))
9226        } else {
9227            None
9228        }
9229    }
9230
9231    #[allow(irrefutable_let_patterns)]
9232    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9233        if let SocketRequest::GetIpPacketInfo { responder } = self {
9234            Some((responder))
9235        } else {
9236            None
9237        }
9238    }
9239
9240    #[allow(irrefutable_let_patterns)]
9241    pub fn into_set_ip_receive_type_of_service(
9242        self,
9243    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9244        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9245            Some((value, responder))
9246        } else {
9247            None
9248        }
9249    }
9250
9251    #[allow(irrefutable_let_patterns)]
9252    pub fn into_get_ip_receive_type_of_service(
9253        self,
9254    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9255        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9256            Some((responder))
9257        } else {
9258            None
9259        }
9260    }
9261
9262    #[allow(irrefutable_let_patterns)]
9263    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9264        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9265            Some((value, responder))
9266        } else {
9267            None
9268        }
9269    }
9270
9271    #[allow(irrefutable_let_patterns)]
9272    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9273        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9274            Some((responder))
9275        } else {
9276            None
9277        }
9278    }
9279
9280    #[allow(irrefutable_let_patterns)]
9281    pub fn into_set_ip_multicast_interface(
9282        self,
9283    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9284        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9285            Some((iface, address, responder))
9286        } else {
9287            None
9288        }
9289    }
9290
9291    #[allow(irrefutable_let_patterns)]
9292    pub fn into_get_ip_multicast_interface(
9293        self,
9294    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9295        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9296            Some((responder))
9297        } else {
9298            None
9299        }
9300    }
9301
9302    #[allow(irrefutable_let_patterns)]
9303    pub fn into_set_ip_multicast_ttl(
9304        self,
9305    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9306        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9307            Some((value, responder))
9308        } else {
9309            None
9310        }
9311    }
9312
9313    #[allow(irrefutable_let_patterns)]
9314    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9315        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9316            Some((responder))
9317        } else {
9318            None
9319        }
9320    }
9321
9322    #[allow(irrefutable_let_patterns)]
9323    pub fn into_set_ip_multicast_loopback(
9324        self,
9325    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9326        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9327            Some((value, responder))
9328        } else {
9329            None
9330        }
9331    }
9332
9333    #[allow(irrefutable_let_patterns)]
9334    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9335        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9336            Some((responder))
9337        } else {
9338            None
9339        }
9340    }
9341
9342    #[allow(irrefutable_let_patterns)]
9343    pub fn into_add_ip_membership(
9344        self,
9345    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9346    {
9347        if let SocketRequest::AddIpMembership { membership, responder } = self {
9348            Some((membership, responder))
9349        } else {
9350            None
9351        }
9352    }
9353
9354    #[allow(irrefutable_let_patterns)]
9355    pub fn into_drop_ip_membership(
9356        self,
9357    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9358    {
9359        if let SocketRequest::DropIpMembership { membership, responder } = self {
9360            Some((membership, responder))
9361        } else {
9362            None
9363        }
9364    }
9365
9366    #[allow(irrefutable_let_patterns)]
9367    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9368        if let SocketRequest::SetIpTransparent { value, responder } = self {
9369            Some((value, responder))
9370        } else {
9371            None
9372        }
9373    }
9374
9375    #[allow(irrefutable_let_patterns)]
9376    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9377        if let SocketRequest::GetIpTransparent { responder } = self {
9378            Some((responder))
9379        } else {
9380            None
9381        }
9382    }
9383
9384    #[allow(irrefutable_let_patterns)]
9385    pub fn into_set_ip_receive_original_destination_address(
9386        self,
9387    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9388        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9389            Some((value, responder))
9390        } else {
9391            None
9392        }
9393    }
9394
9395    #[allow(irrefutable_let_patterns)]
9396    pub fn into_get_ip_receive_original_destination_address(
9397        self,
9398    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9399        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9400            Some((responder))
9401        } else {
9402            None
9403        }
9404    }
9405
9406    #[allow(irrefutable_let_patterns)]
9407    pub fn into_add_ipv6_membership(
9408        self,
9409    ) -> Option<(
9410        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9411        SocketAddIpv6MembershipResponder,
9412    )> {
9413        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9414            Some((membership, responder))
9415        } else {
9416            None
9417        }
9418    }
9419
9420    #[allow(irrefutable_let_patterns)]
9421    pub fn into_drop_ipv6_membership(
9422        self,
9423    ) -> Option<(
9424        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9425        SocketDropIpv6MembershipResponder,
9426    )> {
9427        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9428            Some((membership, responder))
9429        } else {
9430            None
9431        }
9432    }
9433
9434    #[allow(irrefutable_let_patterns)]
9435    pub fn into_set_ipv6_multicast_interface(
9436        self,
9437    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9438        if let SocketRequest::SetIpv6MulticastInterface { value, responder } = self {
9439            Some((value, responder))
9440        } else {
9441            None
9442        }
9443    }
9444
9445    #[allow(irrefutable_let_patterns)]
9446    pub fn into_get_ipv6_multicast_interface(
9447        self,
9448    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9449        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9450            Some((responder))
9451        } else {
9452            None
9453        }
9454    }
9455
9456    #[allow(irrefutable_let_patterns)]
9457    pub fn into_set_ipv6_unicast_hops(
9458        self,
9459    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9460        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9461            Some((value, responder))
9462        } else {
9463            None
9464        }
9465    }
9466
9467    #[allow(irrefutable_let_patterns)]
9468    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9469        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9470            Some((responder))
9471        } else {
9472            None
9473        }
9474    }
9475
9476    #[allow(irrefutable_let_patterns)]
9477    pub fn into_set_ipv6_receive_hop_limit(
9478        self,
9479    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9480        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9481            Some((value, responder))
9482        } else {
9483            None
9484        }
9485    }
9486
9487    #[allow(irrefutable_let_patterns)]
9488    pub fn into_get_ipv6_receive_hop_limit(
9489        self,
9490    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9491        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9492            Some((responder))
9493        } else {
9494            None
9495        }
9496    }
9497
9498    #[allow(irrefutable_let_patterns)]
9499    pub fn into_set_ipv6_multicast_hops(
9500        self,
9501    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9502    {
9503        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9504            Some((value, responder))
9505        } else {
9506            None
9507        }
9508    }
9509
9510    #[allow(irrefutable_let_patterns)]
9511    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9512        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9513            Some((responder))
9514        } else {
9515            None
9516        }
9517    }
9518
9519    #[allow(irrefutable_let_patterns)]
9520    pub fn into_set_ipv6_multicast_loopback(
9521        self,
9522    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9523        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9524            Some((value, responder))
9525        } else {
9526            None
9527        }
9528    }
9529
9530    #[allow(irrefutable_let_patterns)]
9531    pub fn into_get_ipv6_multicast_loopback(
9532        self,
9533    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9534        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9535            Some((responder))
9536        } else {
9537            None
9538        }
9539    }
9540
9541    #[allow(irrefutable_let_patterns)]
9542    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9543        if let SocketRequest::SetIpv6Only { value, responder } = self {
9544            Some((value, responder))
9545        } else {
9546            None
9547        }
9548    }
9549
9550    #[allow(irrefutable_let_patterns)]
9551    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9552        if let SocketRequest::GetIpv6Only { responder } = self { Some((responder)) } else { None }
9553    }
9554
9555    #[allow(irrefutable_let_patterns)]
9556    pub fn into_set_ipv6_receive_traffic_class(
9557        self,
9558    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9559        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9560            Some((value, responder))
9561        } else {
9562            None
9563        }
9564    }
9565
9566    #[allow(irrefutable_let_patterns)]
9567    pub fn into_get_ipv6_receive_traffic_class(
9568        self,
9569    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9570        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9571            Some((responder))
9572        } else {
9573            None
9574        }
9575    }
9576
9577    #[allow(irrefutable_let_patterns)]
9578    pub fn into_set_ipv6_traffic_class(
9579        self,
9580    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9581    {
9582        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9583            Some((value, responder))
9584        } else {
9585            None
9586        }
9587    }
9588
9589    #[allow(irrefutable_let_patterns)]
9590    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9591        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9592            Some((responder))
9593        } else {
9594            None
9595        }
9596    }
9597
9598    #[allow(irrefutable_let_patterns)]
9599    pub fn into_set_ipv6_receive_packet_info(
9600        self,
9601    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9602        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9603            Some((value, responder))
9604        } else {
9605            None
9606        }
9607    }
9608
9609    #[allow(irrefutable_let_patterns)]
9610    pub fn into_get_ipv6_receive_packet_info(
9611        self,
9612    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9613        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9614            Some((responder))
9615        } else {
9616            None
9617        }
9618    }
9619
9620    #[allow(irrefutable_let_patterns)]
9621    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9622        if let SocketRequest::GetOriginalDestination { responder } = self {
9623            Some((responder))
9624        } else {
9625            None
9626        }
9627    }
9628
9629    #[allow(irrefutable_let_patterns)]
9630    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9631        if let SocketRequest::Describe { responder } = self { Some((responder)) } else { None }
9632    }
9633
9634    #[allow(irrefutable_let_patterns)]
9635    pub fn into_recv_msg(
9636        self,
9637    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9638    {
9639        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9640        {
9641            Some((want_addr, data_len, want_control, flags, responder))
9642        } else {
9643            None
9644        }
9645    }
9646
9647    #[allow(irrefutable_let_patterns)]
9648    pub fn into_send_msg(
9649        self,
9650    ) -> Option<(
9651        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9652        Vec<u8>,
9653        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9654        fidl_fuchsia_posix_socket::SendMsgFlags,
9655        SocketSendMsgResponder,
9656    )> {
9657        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9658            Some((addr, data, control, flags, responder))
9659        } else {
9660            None
9661        }
9662    }
9663
9664    #[allow(irrefutable_let_patterns)]
9665    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9666        if let SocketRequest::GetInfo { responder } = self { Some((responder)) } else { None }
9667    }
9668
9669    #[allow(irrefutable_let_patterns)]
9670    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9671        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9672            Some((value, responder))
9673        } else {
9674            None
9675        }
9676    }
9677
9678    #[allow(irrefutable_let_patterns)]
9679    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9680        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9681            Some((responder))
9682        } else {
9683            None
9684        }
9685    }
9686
9687    #[allow(irrefutable_let_patterns)]
9688    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9689        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9690            Some((filter, responder))
9691        } else {
9692            None
9693        }
9694    }
9695
9696    #[allow(irrefutable_let_patterns)]
9697    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9698        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9699            Some((responder))
9700        } else {
9701            None
9702        }
9703    }
9704
9705    #[allow(irrefutable_let_patterns)]
9706    pub fn into_set_ipv6_checksum(
9707        self,
9708    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9709        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9710            Some((config, responder))
9711        } else {
9712            None
9713        }
9714    }
9715
9716    #[allow(irrefutable_let_patterns)]
9717    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9718        if let SocketRequest::GetIpv6Checksum { responder } = self {
9719            Some((responder))
9720        } else {
9721            None
9722        }
9723    }
9724
9725    /// Name of the method defined in FIDL
9726    pub fn method_name(&self) -> &'static str {
9727        match *self {
9728            SocketRequest::Clone { .. } => "clone",
9729            SocketRequest::Close { .. } => "close",
9730            SocketRequest::Query { .. } => "query",
9731            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9732            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9733            SocketRequest::GetError { .. } => "get_error",
9734            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9735            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9736            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9737            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9738            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9739            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9740            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9741            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9742            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9743            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9744            SocketRequest::SetNoCheck { .. } => "set_no_check",
9745            SocketRequest::GetNoCheck { .. } => "get_no_check",
9746            SocketRequest::SetLinger { .. } => "set_linger",
9747            SocketRequest::GetLinger { .. } => "get_linger",
9748            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9749            SocketRequest::SetReusePortDeprecated { .. } => "set_reuse_port_deprecated",
9750            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9751            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9752            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9753            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9754            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9755            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9756            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9757            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9758            SocketRequest::SetMark { .. } => "set_mark",
9759            SocketRequest::GetMark { .. } => "get_mark",
9760            SocketRequest::GetCookie { .. } => "get_cookie",
9761            SocketRequest::Bind { .. } => "bind",
9762            SocketRequest::Connect { .. } => "connect",
9763            SocketRequest::Disconnect { .. } => "disconnect",
9764            SocketRequest::GetSockName { .. } => "get_sock_name",
9765            SocketRequest::GetPeerName { .. } => "get_peer_name",
9766            SocketRequest::Shutdown { .. } => "shutdown",
9767            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9768            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9769            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9770            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9771            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9772            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9773            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9774            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9775            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9776            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9777            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9778            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9779            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9780            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9781            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9782            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9783            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9784            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9785            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9786            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9787            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9788                "set_ip_receive_original_destination_address"
9789            }
9790            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9791                "get_ip_receive_original_destination_address"
9792            }
9793            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9794            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9795            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9796            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9797            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9798            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9799            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9800            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9801            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9802            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9803            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9804            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9805            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9806            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9807            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9808            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9809            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9810            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9811            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9812            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9813            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9814            SocketRequest::Describe { .. } => "describe",
9815            SocketRequest::RecvMsg { .. } => "recv_msg",
9816            SocketRequest::SendMsg { .. } => "send_msg",
9817            SocketRequest::GetInfo { .. } => "get_info",
9818            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9819            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9820            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9821            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9822            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9823            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9824        }
9825    }
9826}
9827
9828#[derive(Debug, Clone)]
9829pub struct SocketControlHandle {
9830    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9831}
9832
9833impl fidl::endpoints::ControlHandle for SocketControlHandle {
9834    fn shutdown(&self) {
9835        self.inner.shutdown()
9836    }
9837
9838    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9839        self.inner.shutdown_with_epitaph(status)
9840    }
9841
9842    fn is_closed(&self) -> bool {
9843        self.inner.channel().is_closed()
9844    }
9845    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9846        self.inner.channel().on_closed()
9847    }
9848
9849    #[cfg(target_os = "fuchsia")]
9850    fn signal_peer(
9851        &self,
9852        clear_mask: zx::Signals,
9853        set_mask: zx::Signals,
9854    ) -> Result<(), zx_status::Status> {
9855        use fidl::Peered;
9856        self.inner.channel().signal_peer(clear_mask, set_mask)
9857    }
9858}
9859
9860impl SocketControlHandle {}
9861
9862#[must_use = "FIDL methods require a response to be sent"]
9863#[derive(Debug)]
9864pub struct SocketCloseResponder {
9865    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9866    tx_id: u32,
9867}
9868
9869/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9870/// if the responder is dropped without sending a response, so that the client
9871/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9872impl std::ops::Drop for SocketCloseResponder {
9873    fn drop(&mut self) {
9874        self.control_handle.shutdown();
9875        // Safety: drops once, never accessed again
9876        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9877    }
9878}
9879
9880impl fidl::endpoints::Responder for SocketCloseResponder {
9881    type ControlHandle = SocketControlHandle;
9882
9883    fn control_handle(&self) -> &SocketControlHandle {
9884        &self.control_handle
9885    }
9886
9887    fn drop_without_shutdown(mut self) {
9888        // Safety: drops once, never accessed again due to mem::forget
9889        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9890        // Prevent Drop from running (which would shut down the channel)
9891        std::mem::forget(self);
9892    }
9893}
9894
9895impl SocketCloseResponder {
9896    /// Sends a response to the FIDL transaction.
9897    ///
9898    /// Sets the channel to shutdown if an error occurs.
9899    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9900        let _result = self.send_raw(result);
9901        if _result.is_err() {
9902            self.control_handle.shutdown();
9903        }
9904        self.drop_without_shutdown();
9905        _result
9906    }
9907
9908    /// Similar to "send" but does not shutdown the channel if an error occurs.
9909    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9910        let _result = self.send_raw(result);
9911        self.drop_without_shutdown();
9912        _result
9913    }
9914
9915    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9916        self.control_handle
9917            .inner
9918            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
9919                result,
9920                self.tx_id,
9921                0x5ac5d459ad7f657e,
9922                fidl::encoding::DynamicFlags::empty(),
9923            )
9924    }
9925}
9926
9927#[must_use = "FIDL methods require a response to be sent"]
9928#[derive(Debug)]
9929pub struct SocketQueryResponder {
9930    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9931    tx_id: u32,
9932}
9933
9934/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9935/// if the responder is dropped without sending a response, so that the client
9936/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9937impl std::ops::Drop for SocketQueryResponder {
9938    fn drop(&mut self) {
9939        self.control_handle.shutdown();
9940        // Safety: drops once, never accessed again
9941        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9942    }
9943}
9944
9945impl fidl::endpoints::Responder for SocketQueryResponder {
9946    type ControlHandle = SocketControlHandle;
9947
9948    fn control_handle(&self) -> &SocketControlHandle {
9949        &self.control_handle
9950    }
9951
9952    fn drop_without_shutdown(mut self) {
9953        // Safety: drops once, never accessed again due to mem::forget
9954        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9955        // Prevent Drop from running (which would shut down the channel)
9956        std::mem::forget(self);
9957    }
9958}
9959
9960impl SocketQueryResponder {
9961    /// Sends a response to the FIDL transaction.
9962    ///
9963    /// Sets the channel to shutdown if an error occurs.
9964    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9965        let _result = self.send_raw(protocol);
9966        if _result.is_err() {
9967            self.control_handle.shutdown();
9968        }
9969        self.drop_without_shutdown();
9970        _result
9971    }
9972
9973    /// Similar to "send" but does not shutdown the channel if an error occurs.
9974    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9975        let _result = self.send_raw(protocol);
9976        self.drop_without_shutdown();
9977        _result
9978    }
9979
9980    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9981        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
9982            (protocol,),
9983            self.tx_id,
9984            0x2658edee9decfc06,
9985            fidl::encoding::DynamicFlags::empty(),
9986        )
9987    }
9988}
9989
9990#[must_use = "FIDL methods require a response to be sent"]
9991#[derive(Debug)]
9992pub struct SocketSetReuseAddressResponder {
9993    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9994    tx_id: u32,
9995}
9996
9997/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9998/// if the responder is dropped without sending a response, so that the client
9999/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10000impl std::ops::Drop for SocketSetReuseAddressResponder {
10001    fn drop(&mut self) {
10002        self.control_handle.shutdown();
10003        // Safety: drops once, never accessed again
10004        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10005    }
10006}
10007
10008impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
10009    type ControlHandle = SocketControlHandle;
10010
10011    fn control_handle(&self) -> &SocketControlHandle {
10012        &self.control_handle
10013    }
10014
10015    fn drop_without_shutdown(mut self) {
10016        // Safety: drops once, never accessed again due to mem::forget
10017        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10018        // Prevent Drop from running (which would shut down the channel)
10019        std::mem::forget(self);
10020    }
10021}
10022
10023impl SocketSetReuseAddressResponder {
10024    /// Sends a response to the FIDL transaction.
10025    ///
10026    /// Sets the channel to shutdown if an error occurs.
10027    pub fn send(
10028        self,
10029        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10030    ) -> Result<(), fidl::Error> {
10031        let _result = self.send_raw(result);
10032        if _result.is_err() {
10033            self.control_handle.shutdown();
10034        }
10035        self.drop_without_shutdown();
10036        _result
10037    }
10038
10039    /// Similar to "send" but does not shutdown the channel if an error occurs.
10040    pub fn send_no_shutdown_on_err(
10041        self,
10042        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10043    ) -> Result<(), fidl::Error> {
10044        let _result = self.send_raw(result);
10045        self.drop_without_shutdown();
10046        _result
10047    }
10048
10049    fn send_raw(
10050        &self,
10051        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10052    ) -> Result<(), fidl::Error> {
10053        self.control_handle.inner.send::<fidl::encoding::ResultType<
10054            fidl::encoding::EmptyStruct,
10055            fidl_fuchsia_posix::Errno,
10056        >>(
10057            result,
10058            self.tx_id,
10059            0x1fd74ee8b9a4a876,
10060            fidl::encoding::DynamicFlags::empty(),
10061        )
10062    }
10063}
10064
10065#[must_use = "FIDL methods require a response to be sent"]
10066#[derive(Debug)]
10067pub struct SocketGetReuseAddressResponder {
10068    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10069    tx_id: u32,
10070}
10071
10072/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10073/// if the responder is dropped without sending a response, so that the client
10074/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10075impl std::ops::Drop for SocketGetReuseAddressResponder {
10076    fn drop(&mut self) {
10077        self.control_handle.shutdown();
10078        // Safety: drops once, never accessed again
10079        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10080    }
10081}
10082
10083impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
10084    type ControlHandle = SocketControlHandle;
10085
10086    fn control_handle(&self) -> &SocketControlHandle {
10087        &self.control_handle
10088    }
10089
10090    fn drop_without_shutdown(mut self) {
10091        // Safety: drops once, never accessed again due to mem::forget
10092        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10093        // Prevent Drop from running (which would shut down the channel)
10094        std::mem::forget(self);
10095    }
10096}
10097
10098impl SocketGetReuseAddressResponder {
10099    /// Sends a response to the FIDL transaction.
10100    ///
10101    /// Sets the channel to shutdown if an error occurs.
10102    pub fn send(
10103        self,
10104        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10105    ) -> Result<(), fidl::Error> {
10106        let _result = self.send_raw(result);
10107        if _result.is_err() {
10108            self.control_handle.shutdown();
10109        }
10110        self.drop_without_shutdown();
10111        _result
10112    }
10113
10114    /// Similar to "send" but does not shutdown the channel if an error occurs.
10115    pub fn send_no_shutdown_on_err(
10116        self,
10117        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10118    ) -> Result<(), fidl::Error> {
10119        let _result = self.send_raw(result);
10120        self.drop_without_shutdown();
10121        _result
10122    }
10123
10124    fn send_raw(
10125        &self,
10126        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10127    ) -> Result<(), fidl::Error> {
10128        self.control_handle.inner.send::<fidl::encoding::ResultType<
10129            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10130            fidl_fuchsia_posix::Errno,
10131        >>(
10132            result.map(|value| (value,)),
10133            self.tx_id,
10134            0x67b7206b8d1bc0a5,
10135            fidl::encoding::DynamicFlags::empty(),
10136        )
10137    }
10138}
10139
10140#[must_use = "FIDL methods require a response to be sent"]
10141#[derive(Debug)]
10142pub struct SocketGetErrorResponder {
10143    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10144    tx_id: u32,
10145}
10146
10147/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10148/// if the responder is dropped without sending a response, so that the client
10149/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10150impl std::ops::Drop for SocketGetErrorResponder {
10151    fn drop(&mut self) {
10152        self.control_handle.shutdown();
10153        // Safety: drops once, never accessed again
10154        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10155    }
10156}
10157
10158impl fidl::endpoints::Responder for SocketGetErrorResponder {
10159    type ControlHandle = SocketControlHandle;
10160
10161    fn control_handle(&self) -> &SocketControlHandle {
10162        &self.control_handle
10163    }
10164
10165    fn drop_without_shutdown(mut self) {
10166        // Safety: drops once, never accessed again due to mem::forget
10167        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10168        // Prevent Drop from running (which would shut down the channel)
10169        std::mem::forget(self);
10170    }
10171}
10172
10173impl SocketGetErrorResponder {
10174    /// Sends a response to the FIDL transaction.
10175    ///
10176    /// Sets the channel to shutdown if an error occurs.
10177    pub fn send(
10178        self,
10179        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10180    ) -> Result<(), fidl::Error> {
10181        let _result = self.send_raw(result);
10182        if _result.is_err() {
10183            self.control_handle.shutdown();
10184        }
10185        self.drop_without_shutdown();
10186        _result
10187    }
10188
10189    /// Similar to "send" but does not shutdown the channel if an error occurs.
10190    pub fn send_no_shutdown_on_err(
10191        self,
10192        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10193    ) -> Result<(), fidl::Error> {
10194        let _result = self.send_raw(result);
10195        self.drop_without_shutdown();
10196        _result
10197    }
10198
10199    fn send_raw(
10200        &self,
10201        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10202    ) -> Result<(), fidl::Error> {
10203        self.control_handle.inner.send::<fidl::encoding::ResultType<
10204            fidl::encoding::EmptyStruct,
10205            fidl_fuchsia_posix::Errno,
10206        >>(
10207            result,
10208            self.tx_id,
10209            0x5aad39b33e5f6ebb,
10210            fidl::encoding::DynamicFlags::empty(),
10211        )
10212    }
10213}
10214
10215#[must_use = "FIDL methods require a response to be sent"]
10216#[derive(Debug)]
10217pub struct SocketSetBroadcastResponder {
10218    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10219    tx_id: u32,
10220}
10221
10222/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10223/// if the responder is dropped without sending a response, so that the client
10224/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10225impl std::ops::Drop for SocketSetBroadcastResponder {
10226    fn drop(&mut self) {
10227        self.control_handle.shutdown();
10228        // Safety: drops once, never accessed again
10229        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10230    }
10231}
10232
10233impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10234    type ControlHandle = SocketControlHandle;
10235
10236    fn control_handle(&self) -> &SocketControlHandle {
10237        &self.control_handle
10238    }
10239
10240    fn drop_without_shutdown(mut self) {
10241        // Safety: drops once, never accessed again due to mem::forget
10242        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10243        // Prevent Drop from running (which would shut down the channel)
10244        std::mem::forget(self);
10245    }
10246}
10247
10248impl SocketSetBroadcastResponder {
10249    /// Sends a response to the FIDL transaction.
10250    ///
10251    /// Sets the channel to shutdown if an error occurs.
10252    pub fn send(
10253        self,
10254        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10255    ) -> Result<(), fidl::Error> {
10256        let _result = self.send_raw(result);
10257        if _result.is_err() {
10258            self.control_handle.shutdown();
10259        }
10260        self.drop_without_shutdown();
10261        _result
10262    }
10263
10264    /// Similar to "send" but does not shutdown the channel if an error occurs.
10265    pub fn send_no_shutdown_on_err(
10266        self,
10267        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10268    ) -> Result<(), fidl::Error> {
10269        let _result = self.send_raw(result);
10270        self.drop_without_shutdown();
10271        _result
10272    }
10273
10274    fn send_raw(
10275        &self,
10276        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10277    ) -> Result<(), fidl::Error> {
10278        self.control_handle.inner.send::<fidl::encoding::ResultType<
10279            fidl::encoding::EmptyStruct,
10280            fidl_fuchsia_posix::Errno,
10281        >>(
10282            result,
10283            self.tx_id,
10284            0x6023e081ce3cd947,
10285            fidl::encoding::DynamicFlags::empty(),
10286        )
10287    }
10288}
10289
10290#[must_use = "FIDL methods require a response to be sent"]
10291#[derive(Debug)]
10292pub struct SocketGetBroadcastResponder {
10293    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10294    tx_id: u32,
10295}
10296
10297/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10298/// if the responder is dropped without sending a response, so that the client
10299/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10300impl std::ops::Drop for SocketGetBroadcastResponder {
10301    fn drop(&mut self) {
10302        self.control_handle.shutdown();
10303        // Safety: drops once, never accessed again
10304        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10305    }
10306}
10307
10308impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10309    type ControlHandle = SocketControlHandle;
10310
10311    fn control_handle(&self) -> &SocketControlHandle {
10312        &self.control_handle
10313    }
10314
10315    fn drop_without_shutdown(mut self) {
10316        // Safety: drops once, never accessed again due to mem::forget
10317        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10318        // Prevent Drop from running (which would shut down the channel)
10319        std::mem::forget(self);
10320    }
10321}
10322
10323impl SocketGetBroadcastResponder {
10324    /// Sends a response to the FIDL transaction.
10325    ///
10326    /// Sets the channel to shutdown if an error occurs.
10327    pub fn send(
10328        self,
10329        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10330    ) -> Result<(), fidl::Error> {
10331        let _result = self.send_raw(result);
10332        if _result.is_err() {
10333            self.control_handle.shutdown();
10334        }
10335        self.drop_without_shutdown();
10336        _result
10337    }
10338
10339    /// Similar to "send" but does not shutdown the channel if an error occurs.
10340    pub fn send_no_shutdown_on_err(
10341        self,
10342        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10343    ) -> Result<(), fidl::Error> {
10344        let _result = self.send_raw(result);
10345        self.drop_without_shutdown();
10346        _result
10347    }
10348
10349    fn send_raw(
10350        &self,
10351        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10352    ) -> Result<(), fidl::Error> {
10353        self.control_handle.inner.send::<fidl::encoding::ResultType<
10354            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10355            fidl_fuchsia_posix::Errno,
10356        >>(
10357            result.map(|value| (value,)),
10358            self.tx_id,
10359            0x68796fc556f9780d,
10360            fidl::encoding::DynamicFlags::empty(),
10361        )
10362    }
10363}
10364
10365#[must_use = "FIDL methods require a response to be sent"]
10366#[derive(Debug)]
10367pub struct SocketSetSendBufferResponder {
10368    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10369    tx_id: u32,
10370}
10371
10372/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10373/// if the responder is dropped without sending a response, so that the client
10374/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10375impl std::ops::Drop for SocketSetSendBufferResponder {
10376    fn drop(&mut self) {
10377        self.control_handle.shutdown();
10378        // Safety: drops once, never accessed again
10379        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10380    }
10381}
10382
10383impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10384    type ControlHandle = SocketControlHandle;
10385
10386    fn control_handle(&self) -> &SocketControlHandle {
10387        &self.control_handle
10388    }
10389
10390    fn drop_without_shutdown(mut self) {
10391        // Safety: drops once, never accessed again due to mem::forget
10392        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10393        // Prevent Drop from running (which would shut down the channel)
10394        std::mem::forget(self);
10395    }
10396}
10397
10398impl SocketSetSendBufferResponder {
10399    /// Sends a response to the FIDL transaction.
10400    ///
10401    /// Sets the channel to shutdown if an error occurs.
10402    pub fn send(
10403        self,
10404        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10405    ) -> Result<(), fidl::Error> {
10406        let _result = self.send_raw(result);
10407        if _result.is_err() {
10408            self.control_handle.shutdown();
10409        }
10410        self.drop_without_shutdown();
10411        _result
10412    }
10413
10414    /// Similar to "send" but does not shutdown the channel if an error occurs.
10415    pub fn send_no_shutdown_on_err(
10416        self,
10417        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10418    ) -> Result<(), fidl::Error> {
10419        let _result = self.send_raw(result);
10420        self.drop_without_shutdown();
10421        _result
10422    }
10423
10424    fn send_raw(
10425        &self,
10426        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10427    ) -> Result<(), fidl::Error> {
10428        self.control_handle.inner.send::<fidl::encoding::ResultType<
10429            fidl::encoding::EmptyStruct,
10430            fidl_fuchsia_posix::Errno,
10431        >>(
10432            result,
10433            self.tx_id,
10434            0x756eac32d73a7a70,
10435            fidl::encoding::DynamicFlags::empty(),
10436        )
10437    }
10438}
10439
10440#[must_use = "FIDL methods require a response to be sent"]
10441#[derive(Debug)]
10442pub struct SocketGetSendBufferResponder {
10443    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10444    tx_id: u32,
10445}
10446
10447/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10448/// if the responder is dropped without sending a response, so that the client
10449/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10450impl std::ops::Drop for SocketGetSendBufferResponder {
10451    fn drop(&mut self) {
10452        self.control_handle.shutdown();
10453        // Safety: drops once, never accessed again
10454        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10455    }
10456}
10457
10458impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10459    type ControlHandle = SocketControlHandle;
10460
10461    fn control_handle(&self) -> &SocketControlHandle {
10462        &self.control_handle
10463    }
10464
10465    fn drop_without_shutdown(mut self) {
10466        // Safety: drops once, never accessed again due to mem::forget
10467        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10468        // Prevent Drop from running (which would shut down the channel)
10469        std::mem::forget(self);
10470    }
10471}
10472
10473impl SocketGetSendBufferResponder {
10474    /// Sends a response to the FIDL transaction.
10475    ///
10476    /// Sets the channel to shutdown if an error occurs.
10477    pub fn send(
10478        self,
10479        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10480    ) -> Result<(), fidl::Error> {
10481        let _result = self.send_raw(result);
10482        if _result.is_err() {
10483            self.control_handle.shutdown();
10484        }
10485        self.drop_without_shutdown();
10486        _result
10487    }
10488
10489    /// Similar to "send" but does not shutdown the channel if an error occurs.
10490    pub fn send_no_shutdown_on_err(
10491        self,
10492        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10493    ) -> Result<(), fidl::Error> {
10494        let _result = self.send_raw(result);
10495        self.drop_without_shutdown();
10496        _result
10497    }
10498
10499    fn send_raw(
10500        &self,
10501        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10502    ) -> Result<(), fidl::Error> {
10503        self.control_handle.inner.send::<fidl::encoding::ResultType<
10504            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10505            fidl_fuchsia_posix::Errno,
10506        >>(
10507            result.map(|value_bytes| (value_bytes,)),
10508            self.tx_id,
10509            0x78a52fd9c7b2410b,
10510            fidl::encoding::DynamicFlags::empty(),
10511        )
10512    }
10513}
10514
10515#[must_use = "FIDL methods require a response to be sent"]
10516#[derive(Debug)]
10517pub struct SocketSetReceiveBufferResponder {
10518    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10519    tx_id: u32,
10520}
10521
10522/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10523/// if the responder is dropped without sending a response, so that the client
10524/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10525impl std::ops::Drop for SocketSetReceiveBufferResponder {
10526    fn drop(&mut self) {
10527        self.control_handle.shutdown();
10528        // Safety: drops once, never accessed again
10529        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10530    }
10531}
10532
10533impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10534    type ControlHandle = SocketControlHandle;
10535
10536    fn control_handle(&self) -> &SocketControlHandle {
10537        &self.control_handle
10538    }
10539
10540    fn drop_without_shutdown(mut self) {
10541        // Safety: drops once, never accessed again due to mem::forget
10542        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10543        // Prevent Drop from running (which would shut down the channel)
10544        std::mem::forget(self);
10545    }
10546}
10547
10548impl SocketSetReceiveBufferResponder {
10549    /// Sends a response to the FIDL transaction.
10550    ///
10551    /// Sets the channel to shutdown if an error occurs.
10552    pub fn send(
10553        self,
10554        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10555    ) -> Result<(), fidl::Error> {
10556        let _result = self.send_raw(result);
10557        if _result.is_err() {
10558            self.control_handle.shutdown();
10559        }
10560        self.drop_without_shutdown();
10561        _result
10562    }
10563
10564    /// Similar to "send" but does not shutdown the channel if an error occurs.
10565    pub fn send_no_shutdown_on_err(
10566        self,
10567        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10568    ) -> Result<(), fidl::Error> {
10569        let _result = self.send_raw(result);
10570        self.drop_without_shutdown();
10571        _result
10572    }
10573
10574    fn send_raw(
10575        &self,
10576        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10577    ) -> Result<(), fidl::Error> {
10578        self.control_handle.inner.send::<fidl::encoding::ResultType<
10579            fidl::encoding::EmptyStruct,
10580            fidl_fuchsia_posix::Errno,
10581        >>(
10582            result,
10583            self.tx_id,
10584            0x6b0cf2f1919c7001,
10585            fidl::encoding::DynamicFlags::empty(),
10586        )
10587    }
10588}
10589
10590#[must_use = "FIDL methods require a response to be sent"]
10591#[derive(Debug)]
10592pub struct SocketGetReceiveBufferResponder {
10593    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10594    tx_id: u32,
10595}
10596
10597/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10598/// if the responder is dropped without sending a response, so that the client
10599/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10600impl std::ops::Drop for SocketGetReceiveBufferResponder {
10601    fn drop(&mut self) {
10602        self.control_handle.shutdown();
10603        // Safety: drops once, never accessed again
10604        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10605    }
10606}
10607
10608impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10609    type ControlHandle = SocketControlHandle;
10610
10611    fn control_handle(&self) -> &SocketControlHandle {
10612        &self.control_handle
10613    }
10614
10615    fn drop_without_shutdown(mut self) {
10616        // Safety: drops once, never accessed again due to mem::forget
10617        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10618        // Prevent Drop from running (which would shut down the channel)
10619        std::mem::forget(self);
10620    }
10621}
10622
10623impl SocketGetReceiveBufferResponder {
10624    /// Sends a response to the FIDL transaction.
10625    ///
10626    /// Sets the channel to shutdown if an error occurs.
10627    pub fn send(
10628        self,
10629        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10630    ) -> Result<(), fidl::Error> {
10631        let _result = self.send_raw(result);
10632        if _result.is_err() {
10633            self.control_handle.shutdown();
10634        }
10635        self.drop_without_shutdown();
10636        _result
10637    }
10638
10639    /// Similar to "send" but does not shutdown the channel if an error occurs.
10640    pub fn send_no_shutdown_on_err(
10641        self,
10642        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10643    ) -> Result<(), fidl::Error> {
10644        let _result = self.send_raw(result);
10645        self.drop_without_shutdown();
10646        _result
10647    }
10648
10649    fn send_raw(
10650        &self,
10651        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10652    ) -> Result<(), fidl::Error> {
10653        self.control_handle.inner.send::<fidl::encoding::ResultType<
10654            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10655            fidl_fuchsia_posix::Errno,
10656        >>(
10657            result.map(|value_bytes| (value_bytes,)),
10658            self.tx_id,
10659            0x14c1a4b64f709e5c,
10660            fidl::encoding::DynamicFlags::empty(),
10661        )
10662    }
10663}
10664
10665#[must_use = "FIDL methods require a response to be sent"]
10666#[derive(Debug)]
10667pub struct SocketSetKeepAliveResponder {
10668    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10669    tx_id: u32,
10670}
10671
10672/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10673/// if the responder is dropped without sending a response, so that the client
10674/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10675impl std::ops::Drop for SocketSetKeepAliveResponder {
10676    fn drop(&mut self) {
10677        self.control_handle.shutdown();
10678        // Safety: drops once, never accessed again
10679        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10680    }
10681}
10682
10683impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10684    type ControlHandle = SocketControlHandle;
10685
10686    fn control_handle(&self) -> &SocketControlHandle {
10687        &self.control_handle
10688    }
10689
10690    fn drop_without_shutdown(mut self) {
10691        // Safety: drops once, never accessed again due to mem::forget
10692        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10693        // Prevent Drop from running (which would shut down the channel)
10694        std::mem::forget(self);
10695    }
10696}
10697
10698impl SocketSetKeepAliveResponder {
10699    /// Sends a response to the FIDL transaction.
10700    ///
10701    /// Sets the channel to shutdown if an error occurs.
10702    pub fn send(
10703        self,
10704        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10705    ) -> Result<(), fidl::Error> {
10706        let _result = self.send_raw(result);
10707        if _result.is_err() {
10708            self.control_handle.shutdown();
10709        }
10710        self.drop_without_shutdown();
10711        _result
10712    }
10713
10714    /// Similar to "send" but does not shutdown the channel if an error occurs.
10715    pub fn send_no_shutdown_on_err(
10716        self,
10717        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10718    ) -> Result<(), fidl::Error> {
10719        let _result = self.send_raw(result);
10720        self.drop_without_shutdown();
10721        _result
10722    }
10723
10724    fn send_raw(
10725        &self,
10726        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10727    ) -> Result<(), fidl::Error> {
10728        self.control_handle.inner.send::<fidl::encoding::ResultType<
10729            fidl::encoding::EmptyStruct,
10730            fidl_fuchsia_posix::Errno,
10731        >>(
10732            result,
10733            self.tx_id,
10734            0x572df8f0b920d2c7,
10735            fidl::encoding::DynamicFlags::empty(),
10736        )
10737    }
10738}
10739
10740#[must_use = "FIDL methods require a response to be sent"]
10741#[derive(Debug)]
10742pub struct SocketGetKeepAliveResponder {
10743    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10744    tx_id: u32,
10745}
10746
10747/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10748/// if the responder is dropped without sending a response, so that the client
10749/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10750impl std::ops::Drop for SocketGetKeepAliveResponder {
10751    fn drop(&mut self) {
10752        self.control_handle.shutdown();
10753        // Safety: drops once, never accessed again
10754        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10755    }
10756}
10757
10758impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10759    type ControlHandle = SocketControlHandle;
10760
10761    fn control_handle(&self) -> &SocketControlHandle {
10762        &self.control_handle
10763    }
10764
10765    fn drop_without_shutdown(mut self) {
10766        // Safety: drops once, never accessed again due to mem::forget
10767        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10768        // Prevent Drop from running (which would shut down the channel)
10769        std::mem::forget(self);
10770    }
10771}
10772
10773impl SocketGetKeepAliveResponder {
10774    /// Sends a response to the FIDL transaction.
10775    ///
10776    /// Sets the channel to shutdown if an error occurs.
10777    pub fn send(
10778        self,
10779        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10780    ) -> Result<(), fidl::Error> {
10781        let _result = self.send_raw(result);
10782        if _result.is_err() {
10783            self.control_handle.shutdown();
10784        }
10785        self.drop_without_shutdown();
10786        _result
10787    }
10788
10789    /// Similar to "send" but does not shutdown the channel if an error occurs.
10790    pub fn send_no_shutdown_on_err(
10791        self,
10792        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10793    ) -> Result<(), fidl::Error> {
10794        let _result = self.send_raw(result);
10795        self.drop_without_shutdown();
10796        _result
10797    }
10798
10799    fn send_raw(
10800        &self,
10801        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10802    ) -> Result<(), fidl::Error> {
10803        self.control_handle.inner.send::<fidl::encoding::ResultType<
10804            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10805            fidl_fuchsia_posix::Errno,
10806        >>(
10807            result.map(|value| (value,)),
10808            self.tx_id,
10809            0x2dd29d3215f2c9d2,
10810            fidl::encoding::DynamicFlags::empty(),
10811        )
10812    }
10813}
10814
10815#[must_use = "FIDL methods require a response to be sent"]
10816#[derive(Debug)]
10817pub struct SocketSetOutOfBandInlineResponder {
10818    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10819    tx_id: u32,
10820}
10821
10822/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10823/// if the responder is dropped without sending a response, so that the client
10824/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10825impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10826    fn drop(&mut self) {
10827        self.control_handle.shutdown();
10828        // Safety: drops once, never accessed again
10829        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10830    }
10831}
10832
10833impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10834    type ControlHandle = SocketControlHandle;
10835
10836    fn control_handle(&self) -> &SocketControlHandle {
10837        &self.control_handle
10838    }
10839
10840    fn drop_without_shutdown(mut self) {
10841        // Safety: drops once, never accessed again due to mem::forget
10842        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10843        // Prevent Drop from running (which would shut down the channel)
10844        std::mem::forget(self);
10845    }
10846}
10847
10848impl SocketSetOutOfBandInlineResponder {
10849    /// Sends a response to the FIDL transaction.
10850    ///
10851    /// Sets the channel to shutdown if an error occurs.
10852    pub fn send(
10853        self,
10854        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10855    ) -> Result<(), fidl::Error> {
10856        let _result = self.send_raw(result);
10857        if _result.is_err() {
10858            self.control_handle.shutdown();
10859        }
10860        self.drop_without_shutdown();
10861        _result
10862    }
10863
10864    /// Similar to "send" but does not shutdown the channel if an error occurs.
10865    pub fn send_no_shutdown_on_err(
10866        self,
10867        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10868    ) -> Result<(), fidl::Error> {
10869        let _result = self.send_raw(result);
10870        self.drop_without_shutdown();
10871        _result
10872    }
10873
10874    fn send_raw(
10875        &self,
10876        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10877    ) -> Result<(), fidl::Error> {
10878        self.control_handle.inner.send::<fidl::encoding::ResultType<
10879            fidl::encoding::EmptyStruct,
10880            fidl_fuchsia_posix::Errno,
10881        >>(
10882            result,
10883            self.tx_id,
10884            0x3ecb49968bee439,
10885            fidl::encoding::DynamicFlags::empty(),
10886        )
10887    }
10888}
10889
10890#[must_use = "FIDL methods require a response to be sent"]
10891#[derive(Debug)]
10892pub struct SocketGetOutOfBandInlineResponder {
10893    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10894    tx_id: u32,
10895}
10896
10897/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10898/// if the responder is dropped without sending a response, so that the client
10899/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10900impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
10901    fn drop(&mut self) {
10902        self.control_handle.shutdown();
10903        // Safety: drops once, never accessed again
10904        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10905    }
10906}
10907
10908impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
10909    type ControlHandle = SocketControlHandle;
10910
10911    fn control_handle(&self) -> &SocketControlHandle {
10912        &self.control_handle
10913    }
10914
10915    fn drop_without_shutdown(mut self) {
10916        // Safety: drops once, never accessed again due to mem::forget
10917        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10918        // Prevent Drop from running (which would shut down the channel)
10919        std::mem::forget(self);
10920    }
10921}
10922
10923impl SocketGetOutOfBandInlineResponder {
10924    /// Sends a response to the FIDL transaction.
10925    ///
10926    /// Sets the channel to shutdown if an error occurs.
10927    pub fn send(
10928        self,
10929        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10930    ) -> Result<(), fidl::Error> {
10931        let _result = self.send_raw(result);
10932        if _result.is_err() {
10933            self.control_handle.shutdown();
10934        }
10935        self.drop_without_shutdown();
10936        _result
10937    }
10938
10939    /// Similar to "send" but does not shutdown the channel if an error occurs.
10940    pub fn send_no_shutdown_on_err(
10941        self,
10942        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10943    ) -> Result<(), fidl::Error> {
10944        let _result = self.send_raw(result);
10945        self.drop_without_shutdown();
10946        _result
10947    }
10948
10949    fn send_raw(
10950        &self,
10951        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10952    ) -> Result<(), fidl::Error> {
10953        self.control_handle.inner.send::<fidl::encoding::ResultType<
10954            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
10955            fidl_fuchsia_posix::Errno,
10956        >>(
10957            result.map(|value| (value,)),
10958            self.tx_id,
10959            0x348c1ab3aeca1745,
10960            fidl::encoding::DynamicFlags::empty(),
10961        )
10962    }
10963}
10964
10965#[must_use = "FIDL methods require a response to be sent"]
10966#[derive(Debug)]
10967pub struct SocketSetNoCheckResponder {
10968    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10969    tx_id: u32,
10970}
10971
10972/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10973/// if the responder is dropped without sending a response, so that the client
10974/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10975impl std::ops::Drop for SocketSetNoCheckResponder {
10976    fn drop(&mut self) {
10977        self.control_handle.shutdown();
10978        // Safety: drops once, never accessed again
10979        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10980    }
10981}
10982
10983impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
10984    type ControlHandle = SocketControlHandle;
10985
10986    fn control_handle(&self) -> &SocketControlHandle {
10987        &self.control_handle
10988    }
10989
10990    fn drop_without_shutdown(mut self) {
10991        // Safety: drops once, never accessed again due to mem::forget
10992        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10993        // Prevent Drop from running (which would shut down the channel)
10994        std::mem::forget(self);
10995    }
10996}
10997
10998impl SocketSetNoCheckResponder {
10999    /// Sends a response to the FIDL transaction.
11000    ///
11001    /// Sets the channel to shutdown if an error occurs.
11002    pub fn send(
11003        self,
11004        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11005    ) -> Result<(), fidl::Error> {
11006        let _result = self.send_raw(result);
11007        if _result.is_err() {
11008            self.control_handle.shutdown();
11009        }
11010        self.drop_without_shutdown();
11011        _result
11012    }
11013
11014    /// Similar to "send" but does not shutdown the channel if an error occurs.
11015    pub fn send_no_shutdown_on_err(
11016        self,
11017        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11018    ) -> Result<(), fidl::Error> {
11019        let _result = self.send_raw(result);
11020        self.drop_without_shutdown();
11021        _result
11022    }
11023
11024    fn send_raw(
11025        &self,
11026        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11027    ) -> Result<(), fidl::Error> {
11028        self.control_handle.inner.send::<fidl::encoding::ResultType<
11029            fidl::encoding::EmptyStruct,
11030            fidl_fuchsia_posix::Errno,
11031        >>(
11032            result,
11033            self.tx_id,
11034            0x6bbf00c53a4c78c2,
11035            fidl::encoding::DynamicFlags::empty(),
11036        )
11037    }
11038}
11039
11040#[must_use = "FIDL methods require a response to be sent"]
11041#[derive(Debug)]
11042pub struct SocketGetNoCheckResponder {
11043    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11044    tx_id: u32,
11045}
11046
11047/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11048/// if the responder is dropped without sending a response, so that the client
11049/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11050impl std::ops::Drop for SocketGetNoCheckResponder {
11051    fn drop(&mut self) {
11052        self.control_handle.shutdown();
11053        // Safety: drops once, never accessed again
11054        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11055    }
11056}
11057
11058impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
11059    type ControlHandle = SocketControlHandle;
11060
11061    fn control_handle(&self) -> &SocketControlHandle {
11062        &self.control_handle
11063    }
11064
11065    fn drop_without_shutdown(mut self) {
11066        // Safety: drops once, never accessed again due to mem::forget
11067        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11068        // Prevent Drop from running (which would shut down the channel)
11069        std::mem::forget(self);
11070    }
11071}
11072
11073impl SocketGetNoCheckResponder {
11074    /// Sends a response to the FIDL transaction.
11075    ///
11076    /// Sets the channel to shutdown if an error occurs.
11077    pub fn send(
11078        self,
11079        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11080    ) -> Result<(), fidl::Error> {
11081        let _result = self.send_raw(result);
11082        if _result.is_err() {
11083            self.control_handle.shutdown();
11084        }
11085        self.drop_without_shutdown();
11086        _result
11087    }
11088
11089    /// Similar to "send" but does not shutdown the channel if an error occurs.
11090    pub fn send_no_shutdown_on_err(
11091        self,
11092        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11093    ) -> Result<(), fidl::Error> {
11094        let _result = self.send_raw(result);
11095        self.drop_without_shutdown();
11096        _result
11097    }
11098
11099    fn send_raw(
11100        &self,
11101        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11102    ) -> Result<(), fidl::Error> {
11103        self.control_handle.inner.send::<fidl::encoding::ResultType<
11104            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
11105            fidl_fuchsia_posix::Errno,
11106        >>(
11107            result.map(|value| (value,)),
11108            self.tx_id,
11109            0x2cd4249286417694,
11110            fidl::encoding::DynamicFlags::empty(),
11111        )
11112    }
11113}
11114
11115#[must_use = "FIDL methods require a response to be sent"]
11116#[derive(Debug)]
11117pub struct SocketSetLingerResponder {
11118    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11119    tx_id: u32,
11120}
11121
11122/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11123/// if the responder is dropped without sending a response, so that the client
11124/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11125impl std::ops::Drop for SocketSetLingerResponder {
11126    fn drop(&mut self) {
11127        self.control_handle.shutdown();
11128        // Safety: drops once, never accessed again
11129        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11130    }
11131}
11132
11133impl fidl::endpoints::Responder for SocketSetLingerResponder {
11134    type ControlHandle = SocketControlHandle;
11135
11136    fn control_handle(&self) -> &SocketControlHandle {
11137        &self.control_handle
11138    }
11139
11140    fn drop_without_shutdown(mut self) {
11141        // Safety: drops once, never accessed again due to mem::forget
11142        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11143        // Prevent Drop from running (which would shut down the channel)
11144        std::mem::forget(self);
11145    }
11146}
11147
11148impl SocketSetLingerResponder {
11149    /// Sends a response to the FIDL transaction.
11150    ///
11151    /// Sets the channel to shutdown if an error occurs.
11152    pub fn send(
11153        self,
11154        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11155    ) -> Result<(), fidl::Error> {
11156        let _result = self.send_raw(result);
11157        if _result.is_err() {
11158            self.control_handle.shutdown();
11159        }
11160        self.drop_without_shutdown();
11161        _result
11162    }
11163
11164    /// Similar to "send" but does not shutdown the channel if an error occurs.
11165    pub fn send_no_shutdown_on_err(
11166        self,
11167        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11168    ) -> Result<(), fidl::Error> {
11169        let _result = self.send_raw(result);
11170        self.drop_without_shutdown();
11171        _result
11172    }
11173
11174    fn send_raw(
11175        &self,
11176        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11177    ) -> Result<(), fidl::Error> {
11178        self.control_handle.inner.send::<fidl::encoding::ResultType<
11179            fidl::encoding::EmptyStruct,
11180            fidl_fuchsia_posix::Errno,
11181        >>(
11182            result,
11183            self.tx_id,
11184            0x45386351246e998e,
11185            fidl::encoding::DynamicFlags::empty(),
11186        )
11187    }
11188}
11189
11190#[must_use = "FIDL methods require a response to be sent"]
11191#[derive(Debug)]
11192pub struct SocketGetLingerResponder {
11193    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11194    tx_id: u32,
11195}
11196
11197/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11198/// if the responder is dropped without sending a response, so that the client
11199/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11200impl std::ops::Drop for SocketGetLingerResponder {
11201    fn drop(&mut self) {
11202        self.control_handle.shutdown();
11203        // Safety: drops once, never accessed again
11204        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11205    }
11206}
11207
11208impl fidl::endpoints::Responder for SocketGetLingerResponder {
11209    type ControlHandle = SocketControlHandle;
11210
11211    fn control_handle(&self) -> &SocketControlHandle {
11212        &self.control_handle
11213    }
11214
11215    fn drop_without_shutdown(mut self) {
11216        // Safety: drops once, never accessed again due to mem::forget
11217        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11218        // Prevent Drop from running (which would shut down the channel)
11219        std::mem::forget(self);
11220    }
11221}
11222
11223impl SocketGetLingerResponder {
11224    /// Sends a response to the FIDL transaction.
11225    ///
11226    /// Sets the channel to shutdown if an error occurs.
11227    pub fn send(
11228        self,
11229        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11230    ) -> Result<(), fidl::Error> {
11231        let _result = self.send_raw(result);
11232        if _result.is_err() {
11233            self.control_handle.shutdown();
11234        }
11235        self.drop_without_shutdown();
11236        _result
11237    }
11238
11239    /// Similar to "send" but does not shutdown the channel if an error occurs.
11240    pub fn send_no_shutdown_on_err(
11241        self,
11242        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11243    ) -> Result<(), fidl::Error> {
11244        let _result = self.send_raw(result);
11245        self.drop_without_shutdown();
11246        _result
11247    }
11248
11249    fn send_raw(
11250        &self,
11251        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11252    ) -> Result<(), fidl::Error> {
11253        self.control_handle.inner.send::<fidl::encoding::ResultType<
11254            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11255            fidl_fuchsia_posix::Errno,
11256        >>(
11257            result,
11258            self.tx_id,
11259            0x48eb20fc5ccb0e45,
11260            fidl::encoding::DynamicFlags::empty(),
11261        )
11262    }
11263}
11264
11265#[must_use = "FIDL methods require a response to be sent"]
11266#[derive(Debug)]
11267pub struct SocketSetReusePortResponder {
11268    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11269    tx_id: u32,
11270}
11271
11272/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11273/// if the responder is dropped without sending a response, so that the client
11274/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11275impl std::ops::Drop for SocketSetReusePortResponder {
11276    fn drop(&mut self) {
11277        self.control_handle.shutdown();
11278        // Safety: drops once, never accessed again
11279        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11280    }
11281}
11282
11283impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11284    type ControlHandle = SocketControlHandle;
11285
11286    fn control_handle(&self) -> &SocketControlHandle {
11287        &self.control_handle
11288    }
11289
11290    fn drop_without_shutdown(mut self) {
11291        // Safety: drops once, never accessed again due to mem::forget
11292        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11293        // Prevent Drop from running (which would shut down the channel)
11294        std::mem::forget(self);
11295    }
11296}
11297
11298impl SocketSetReusePortResponder {
11299    /// Sends a response to the FIDL transaction.
11300    ///
11301    /// Sets the channel to shutdown if an error occurs.
11302    pub fn send(
11303        self,
11304        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11305    ) -> Result<(), fidl::Error> {
11306        let _result = self.send_raw(result);
11307        if _result.is_err() {
11308            self.control_handle.shutdown();
11309        }
11310        self.drop_without_shutdown();
11311        _result
11312    }
11313
11314    /// Similar to "send" but does not shutdown the channel if an error occurs.
11315    pub fn send_no_shutdown_on_err(
11316        self,
11317        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11318    ) -> Result<(), fidl::Error> {
11319        let _result = self.send_raw(result);
11320        self.drop_without_shutdown();
11321        _result
11322    }
11323
11324    fn send_raw(
11325        &self,
11326        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11327    ) -> Result<(), fidl::Error> {
11328        self.control_handle.inner.send::<fidl::encoding::ResultType<
11329            fidl::encoding::EmptyStruct,
11330            fidl_fuchsia_posix::Errno,
11331        >>(
11332            result,
11333            self.tx_id,
11334            0x547dc9cc0455189e,
11335            fidl::encoding::DynamicFlags::empty(),
11336        )
11337    }
11338}
11339
11340#[must_use = "FIDL methods require a response to be sent"]
11341#[derive(Debug)]
11342pub struct SocketSetReusePortDeprecatedResponder {
11343    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11344    tx_id: u32,
11345}
11346
11347/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11348/// if the responder is dropped without sending a response, so that the client
11349/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11350impl std::ops::Drop for SocketSetReusePortDeprecatedResponder {
11351    fn drop(&mut self) {
11352        self.control_handle.shutdown();
11353        // Safety: drops once, never accessed again
11354        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11355    }
11356}
11357
11358impl fidl::endpoints::Responder for SocketSetReusePortDeprecatedResponder {
11359    type ControlHandle = SocketControlHandle;
11360
11361    fn control_handle(&self) -> &SocketControlHandle {
11362        &self.control_handle
11363    }
11364
11365    fn drop_without_shutdown(mut self) {
11366        // Safety: drops once, never accessed again due to mem::forget
11367        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11368        // Prevent Drop from running (which would shut down the channel)
11369        std::mem::forget(self);
11370    }
11371}
11372
11373impl SocketSetReusePortDeprecatedResponder {
11374    /// Sends a response to the FIDL transaction.
11375    ///
11376    /// Sets the channel to shutdown if an error occurs.
11377    pub fn send(
11378        self,
11379        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11380    ) -> Result<(), fidl::Error> {
11381        let _result = self.send_raw(result);
11382        if _result.is_err() {
11383            self.control_handle.shutdown();
11384        }
11385        self.drop_without_shutdown();
11386        _result
11387    }
11388
11389    /// Similar to "send" but does not shutdown the channel if an error occurs.
11390    pub fn send_no_shutdown_on_err(
11391        self,
11392        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11393    ) -> Result<(), fidl::Error> {
11394        let _result = self.send_raw(result);
11395        self.drop_without_shutdown();
11396        _result
11397    }
11398
11399    fn send_raw(
11400        &self,
11401        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11402    ) -> Result<(), fidl::Error> {
11403        self.control_handle.inner.send::<fidl::encoding::ResultType<
11404            fidl::encoding::EmptyStruct,
11405            fidl_fuchsia_posix::Errno,
11406        >>(
11407            result,
11408            self.tx_id,
11409            0x24dd3e5cb36d9ccb,
11410            fidl::encoding::DynamicFlags::empty(),
11411        )
11412    }
11413}
11414
11415#[must_use = "FIDL methods require a response to be sent"]
11416#[derive(Debug)]
11417pub struct SocketGetReusePortResponder {
11418    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11419    tx_id: u32,
11420}
11421
11422/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11423/// if the responder is dropped without sending a response, so that the client
11424/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11425impl std::ops::Drop for SocketGetReusePortResponder {
11426    fn drop(&mut self) {
11427        self.control_handle.shutdown();
11428        // Safety: drops once, never accessed again
11429        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11430    }
11431}
11432
11433impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11434    type ControlHandle = SocketControlHandle;
11435
11436    fn control_handle(&self) -> &SocketControlHandle {
11437        &self.control_handle
11438    }
11439
11440    fn drop_without_shutdown(mut self) {
11441        // Safety: drops once, never accessed again due to mem::forget
11442        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11443        // Prevent Drop from running (which would shut down the channel)
11444        std::mem::forget(self);
11445    }
11446}
11447
11448impl SocketGetReusePortResponder {
11449    /// Sends a response to the FIDL transaction.
11450    ///
11451    /// Sets the channel to shutdown if an error occurs.
11452    pub fn send(
11453        self,
11454        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11455    ) -> Result<(), fidl::Error> {
11456        let _result = self.send_raw(result);
11457        if _result.is_err() {
11458            self.control_handle.shutdown();
11459        }
11460        self.drop_without_shutdown();
11461        _result
11462    }
11463
11464    /// Similar to "send" but does not shutdown the channel if an error occurs.
11465    pub fn send_no_shutdown_on_err(
11466        self,
11467        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11468    ) -> Result<(), fidl::Error> {
11469        let _result = self.send_raw(result);
11470        self.drop_without_shutdown();
11471        _result
11472    }
11473
11474    fn send_raw(
11475        &self,
11476        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11477    ) -> Result<(), fidl::Error> {
11478        self.control_handle.inner.send::<fidl::encoding::ResultType<
11479            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11480            fidl_fuchsia_posix::Errno,
11481        >>(
11482            result.map(|value| (value,)),
11483            self.tx_id,
11484            0x7a112c1ab54ff828,
11485            fidl::encoding::DynamicFlags::empty(),
11486        )
11487    }
11488}
11489
11490#[must_use = "FIDL methods require a response to be sent"]
11491#[derive(Debug)]
11492pub struct SocketGetAcceptConnResponder {
11493    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11494    tx_id: u32,
11495}
11496
11497/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11498/// if the responder is dropped without sending a response, so that the client
11499/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11500impl std::ops::Drop for SocketGetAcceptConnResponder {
11501    fn drop(&mut self) {
11502        self.control_handle.shutdown();
11503        // Safety: drops once, never accessed again
11504        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11505    }
11506}
11507
11508impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11509    type ControlHandle = SocketControlHandle;
11510
11511    fn control_handle(&self) -> &SocketControlHandle {
11512        &self.control_handle
11513    }
11514
11515    fn drop_without_shutdown(mut self) {
11516        // Safety: drops once, never accessed again due to mem::forget
11517        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11518        // Prevent Drop from running (which would shut down the channel)
11519        std::mem::forget(self);
11520    }
11521}
11522
11523impl SocketGetAcceptConnResponder {
11524    /// Sends a response to the FIDL transaction.
11525    ///
11526    /// Sets the channel to shutdown if an error occurs.
11527    pub fn send(
11528        self,
11529        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11530    ) -> Result<(), fidl::Error> {
11531        let _result = self.send_raw(result);
11532        if _result.is_err() {
11533            self.control_handle.shutdown();
11534        }
11535        self.drop_without_shutdown();
11536        _result
11537    }
11538
11539    /// Similar to "send" but does not shutdown the channel if an error occurs.
11540    pub fn send_no_shutdown_on_err(
11541        self,
11542        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11543    ) -> Result<(), fidl::Error> {
11544        let _result = self.send_raw(result);
11545        self.drop_without_shutdown();
11546        _result
11547    }
11548
11549    fn send_raw(
11550        &self,
11551        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11552    ) -> Result<(), fidl::Error> {
11553        self.control_handle.inner.send::<fidl::encoding::ResultType<
11554            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11555            fidl_fuchsia_posix::Errno,
11556        >>(
11557            result.map(|value| (value,)),
11558            self.tx_id,
11559            0x67ce6db6c2ec8966,
11560            fidl::encoding::DynamicFlags::empty(),
11561        )
11562    }
11563}
11564
11565#[must_use = "FIDL methods require a response to be sent"]
11566#[derive(Debug)]
11567pub struct SocketSetBindToDeviceResponder {
11568    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11569    tx_id: u32,
11570}
11571
11572/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11573/// if the responder is dropped without sending a response, so that the client
11574/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11575impl std::ops::Drop for SocketSetBindToDeviceResponder {
11576    fn drop(&mut self) {
11577        self.control_handle.shutdown();
11578        // Safety: drops once, never accessed again
11579        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11580    }
11581}
11582
11583impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11584    type ControlHandle = SocketControlHandle;
11585
11586    fn control_handle(&self) -> &SocketControlHandle {
11587        &self.control_handle
11588    }
11589
11590    fn drop_without_shutdown(mut self) {
11591        // Safety: drops once, never accessed again due to mem::forget
11592        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11593        // Prevent Drop from running (which would shut down the channel)
11594        std::mem::forget(self);
11595    }
11596}
11597
11598impl SocketSetBindToDeviceResponder {
11599    /// Sends a response to the FIDL transaction.
11600    ///
11601    /// Sets the channel to shutdown if an error occurs.
11602    pub fn send(
11603        self,
11604        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11605    ) -> Result<(), fidl::Error> {
11606        let _result = self.send_raw(result);
11607        if _result.is_err() {
11608            self.control_handle.shutdown();
11609        }
11610        self.drop_without_shutdown();
11611        _result
11612    }
11613
11614    /// Similar to "send" but does not shutdown the channel if an error occurs.
11615    pub fn send_no_shutdown_on_err(
11616        self,
11617        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11618    ) -> Result<(), fidl::Error> {
11619        let _result = self.send_raw(result);
11620        self.drop_without_shutdown();
11621        _result
11622    }
11623
11624    fn send_raw(
11625        &self,
11626        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11627    ) -> Result<(), fidl::Error> {
11628        self.control_handle.inner.send::<fidl::encoding::ResultType<
11629            fidl::encoding::EmptyStruct,
11630            fidl_fuchsia_posix::Errno,
11631        >>(
11632            result,
11633            self.tx_id,
11634            0x2118b483f28aafc4,
11635            fidl::encoding::DynamicFlags::empty(),
11636        )
11637    }
11638}
11639
11640#[must_use = "FIDL methods require a response to be sent"]
11641#[derive(Debug)]
11642pub struct SocketGetBindToDeviceResponder {
11643    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11644    tx_id: u32,
11645}
11646
11647/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11648/// if the responder is dropped without sending a response, so that the client
11649/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11650impl std::ops::Drop for SocketGetBindToDeviceResponder {
11651    fn drop(&mut self) {
11652        self.control_handle.shutdown();
11653        // Safety: drops once, never accessed again
11654        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11655    }
11656}
11657
11658impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11659    type ControlHandle = SocketControlHandle;
11660
11661    fn control_handle(&self) -> &SocketControlHandle {
11662        &self.control_handle
11663    }
11664
11665    fn drop_without_shutdown(mut self) {
11666        // Safety: drops once, never accessed again due to mem::forget
11667        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11668        // Prevent Drop from running (which would shut down the channel)
11669        std::mem::forget(self);
11670    }
11671}
11672
11673impl SocketGetBindToDeviceResponder {
11674    /// Sends a response to the FIDL transaction.
11675    ///
11676    /// Sets the channel to shutdown if an error occurs.
11677    pub fn send(
11678        self,
11679        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11680    ) -> Result<(), fidl::Error> {
11681        let _result = self.send_raw(result);
11682        if _result.is_err() {
11683            self.control_handle.shutdown();
11684        }
11685        self.drop_without_shutdown();
11686        _result
11687    }
11688
11689    /// Similar to "send" but does not shutdown the channel if an error occurs.
11690    pub fn send_no_shutdown_on_err(
11691        self,
11692        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11693    ) -> Result<(), fidl::Error> {
11694        let _result = self.send_raw(result);
11695        self.drop_without_shutdown();
11696        _result
11697    }
11698
11699    fn send_raw(
11700        &self,
11701        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11702    ) -> Result<(), fidl::Error> {
11703        self.control_handle.inner.send::<fidl::encoding::ResultType<
11704            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11705            fidl_fuchsia_posix::Errno,
11706        >>(
11707            result.map(|value| (value,)),
11708            self.tx_id,
11709            0x1ab1fbf0ef7906c8,
11710            fidl::encoding::DynamicFlags::empty(),
11711        )
11712    }
11713}
11714
11715#[must_use = "FIDL methods require a response to be sent"]
11716#[derive(Debug)]
11717pub struct SocketSetBindToInterfaceIndexResponder {
11718    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11719    tx_id: u32,
11720}
11721
11722/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11723/// if the responder is dropped without sending a response, so that the client
11724/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11725impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11726    fn drop(&mut self) {
11727        self.control_handle.shutdown();
11728        // Safety: drops once, never accessed again
11729        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11730    }
11731}
11732
11733impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11734    type ControlHandle = SocketControlHandle;
11735
11736    fn control_handle(&self) -> &SocketControlHandle {
11737        &self.control_handle
11738    }
11739
11740    fn drop_without_shutdown(mut self) {
11741        // Safety: drops once, never accessed again due to mem::forget
11742        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11743        // Prevent Drop from running (which would shut down the channel)
11744        std::mem::forget(self);
11745    }
11746}
11747
11748impl SocketSetBindToInterfaceIndexResponder {
11749    /// Sends a response to the FIDL transaction.
11750    ///
11751    /// Sets the channel to shutdown if an error occurs.
11752    pub fn send(
11753        self,
11754        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11755    ) -> Result<(), fidl::Error> {
11756        let _result = self.send_raw(result);
11757        if _result.is_err() {
11758            self.control_handle.shutdown();
11759        }
11760        self.drop_without_shutdown();
11761        _result
11762    }
11763
11764    /// Similar to "send" but does not shutdown the channel if an error occurs.
11765    pub fn send_no_shutdown_on_err(
11766        self,
11767        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11768    ) -> Result<(), fidl::Error> {
11769        let _result = self.send_raw(result);
11770        self.drop_without_shutdown();
11771        _result
11772    }
11773
11774    fn send_raw(
11775        &self,
11776        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11777    ) -> Result<(), fidl::Error> {
11778        self.control_handle.inner.send::<fidl::encoding::ResultType<
11779            fidl::encoding::EmptyStruct,
11780            fidl_fuchsia_posix::Errno,
11781        >>(
11782            result,
11783            self.tx_id,
11784            0x6e387a0def00821,
11785            fidl::encoding::DynamicFlags::empty(),
11786        )
11787    }
11788}
11789
11790#[must_use = "FIDL methods require a response to be sent"]
11791#[derive(Debug)]
11792pub struct SocketGetBindToInterfaceIndexResponder {
11793    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11794    tx_id: u32,
11795}
11796
11797/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11798/// if the responder is dropped without sending a response, so that the client
11799/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11800impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11801    fn drop(&mut self) {
11802        self.control_handle.shutdown();
11803        // Safety: drops once, never accessed again
11804        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11805    }
11806}
11807
11808impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11809    type ControlHandle = SocketControlHandle;
11810
11811    fn control_handle(&self) -> &SocketControlHandle {
11812        &self.control_handle
11813    }
11814
11815    fn drop_without_shutdown(mut self) {
11816        // Safety: drops once, never accessed again due to mem::forget
11817        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11818        // Prevent Drop from running (which would shut down the channel)
11819        std::mem::forget(self);
11820    }
11821}
11822
11823impl SocketGetBindToInterfaceIndexResponder {
11824    /// Sends a response to the FIDL transaction.
11825    ///
11826    /// Sets the channel to shutdown if an error occurs.
11827    pub fn send(
11828        self,
11829        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11830    ) -> Result<(), fidl::Error> {
11831        let _result = self.send_raw(result);
11832        if _result.is_err() {
11833            self.control_handle.shutdown();
11834        }
11835        self.drop_without_shutdown();
11836        _result
11837    }
11838
11839    /// Similar to "send" but does not shutdown the channel if an error occurs.
11840    pub fn send_no_shutdown_on_err(
11841        self,
11842        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11843    ) -> Result<(), fidl::Error> {
11844        let _result = self.send_raw(result);
11845        self.drop_without_shutdown();
11846        _result
11847    }
11848
11849    fn send_raw(
11850        &self,
11851        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11852    ) -> Result<(), fidl::Error> {
11853        self.control_handle.inner.send::<fidl::encoding::ResultType<
11854            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11855            fidl_fuchsia_posix::Errno,
11856        >>(
11857            result.map(|value| (value,)),
11858            self.tx_id,
11859            0x59c31dd3e3078295,
11860            fidl::encoding::DynamicFlags::empty(),
11861        )
11862    }
11863}
11864
11865#[must_use = "FIDL methods require a response to be sent"]
11866#[derive(Debug)]
11867pub struct SocketSetTimestampResponder {
11868    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11869    tx_id: u32,
11870}
11871
11872/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11873/// if the responder is dropped without sending a response, so that the client
11874/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11875impl std::ops::Drop for SocketSetTimestampResponder {
11876    fn drop(&mut self) {
11877        self.control_handle.shutdown();
11878        // Safety: drops once, never accessed again
11879        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11880    }
11881}
11882
11883impl fidl::endpoints::Responder for SocketSetTimestampResponder {
11884    type ControlHandle = SocketControlHandle;
11885
11886    fn control_handle(&self) -> &SocketControlHandle {
11887        &self.control_handle
11888    }
11889
11890    fn drop_without_shutdown(mut self) {
11891        // Safety: drops once, never accessed again due to mem::forget
11892        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11893        // Prevent Drop from running (which would shut down the channel)
11894        std::mem::forget(self);
11895    }
11896}
11897
11898impl SocketSetTimestampResponder {
11899    /// Sends a response to the FIDL transaction.
11900    ///
11901    /// Sets the channel to shutdown if an error occurs.
11902    pub fn send(
11903        self,
11904        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11905    ) -> Result<(), fidl::Error> {
11906        let _result = self.send_raw(result);
11907        if _result.is_err() {
11908            self.control_handle.shutdown();
11909        }
11910        self.drop_without_shutdown();
11911        _result
11912    }
11913
11914    /// Similar to "send" but does not shutdown the channel if an error occurs.
11915    pub fn send_no_shutdown_on_err(
11916        self,
11917        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11918    ) -> Result<(), fidl::Error> {
11919        let _result = self.send_raw(result);
11920        self.drop_without_shutdown();
11921        _result
11922    }
11923
11924    fn send_raw(
11925        &self,
11926        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11927    ) -> Result<(), fidl::Error> {
11928        self.control_handle.inner.send::<fidl::encoding::ResultType<
11929            fidl::encoding::EmptyStruct,
11930            fidl_fuchsia_posix::Errno,
11931        >>(
11932            result,
11933            self.tx_id,
11934            0x285d6516c263d839,
11935            fidl::encoding::DynamicFlags::empty(),
11936        )
11937    }
11938}
11939
11940#[must_use = "FIDL methods require a response to be sent"]
11941#[derive(Debug)]
11942pub struct SocketGetTimestampResponder {
11943    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11944    tx_id: u32,
11945}
11946
11947/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11948/// if the responder is dropped without sending a response, so that the client
11949/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11950impl std::ops::Drop for SocketGetTimestampResponder {
11951    fn drop(&mut self) {
11952        self.control_handle.shutdown();
11953        // Safety: drops once, never accessed again
11954        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11955    }
11956}
11957
11958impl fidl::endpoints::Responder for SocketGetTimestampResponder {
11959    type ControlHandle = SocketControlHandle;
11960
11961    fn control_handle(&self) -> &SocketControlHandle {
11962        &self.control_handle
11963    }
11964
11965    fn drop_without_shutdown(mut self) {
11966        // Safety: drops once, never accessed again due to mem::forget
11967        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11968        // Prevent Drop from running (which would shut down the channel)
11969        std::mem::forget(self);
11970    }
11971}
11972
11973impl SocketGetTimestampResponder {
11974    /// Sends a response to the FIDL transaction.
11975    ///
11976    /// Sets the channel to shutdown if an error occurs.
11977    pub fn send(
11978        self,
11979        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11980    ) -> Result<(), fidl::Error> {
11981        let _result = self.send_raw(result);
11982        if _result.is_err() {
11983            self.control_handle.shutdown();
11984        }
11985        self.drop_without_shutdown();
11986        _result
11987    }
11988
11989    /// Similar to "send" but does not shutdown the channel if an error occurs.
11990    pub fn send_no_shutdown_on_err(
11991        self,
11992        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11993    ) -> Result<(), fidl::Error> {
11994        let _result = self.send_raw(result);
11995        self.drop_without_shutdown();
11996        _result
11997    }
11998
11999    fn send_raw(
12000        &self,
12001        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12002    ) -> Result<(), fidl::Error> {
12003        self.control_handle.inner.send::<fidl::encoding::ResultType<
12004            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
12005            fidl_fuchsia_posix::Errno,
12006        >>(
12007            result.map(|value| (value,)),
12008            self.tx_id,
12009            0x49f2fffbbcc2bd27,
12010            fidl::encoding::DynamicFlags::empty(),
12011        )
12012    }
12013}
12014
12015#[must_use = "FIDL methods require a response to be sent"]
12016#[derive(Debug)]
12017pub struct SocketSetMarkResponder {
12018    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12019    tx_id: u32,
12020}
12021
12022/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12023/// if the responder is dropped without sending a response, so that the client
12024/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12025impl std::ops::Drop for SocketSetMarkResponder {
12026    fn drop(&mut self) {
12027        self.control_handle.shutdown();
12028        // Safety: drops once, never accessed again
12029        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12030    }
12031}
12032
12033impl fidl::endpoints::Responder for SocketSetMarkResponder {
12034    type ControlHandle = SocketControlHandle;
12035
12036    fn control_handle(&self) -> &SocketControlHandle {
12037        &self.control_handle
12038    }
12039
12040    fn drop_without_shutdown(mut self) {
12041        // Safety: drops once, never accessed again due to mem::forget
12042        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12043        // Prevent Drop from running (which would shut down the channel)
12044        std::mem::forget(self);
12045    }
12046}
12047
12048impl SocketSetMarkResponder {
12049    /// Sends a response to the FIDL transaction.
12050    ///
12051    /// Sets the channel to shutdown if an error occurs.
12052    pub fn send(
12053        self,
12054        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12055    ) -> Result<(), fidl::Error> {
12056        let _result = self.send_raw(result);
12057        if _result.is_err() {
12058            self.control_handle.shutdown();
12059        }
12060        self.drop_without_shutdown();
12061        _result
12062    }
12063
12064    /// Similar to "send" but does not shutdown the channel if an error occurs.
12065    pub fn send_no_shutdown_on_err(
12066        self,
12067        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12068    ) -> Result<(), fidl::Error> {
12069        let _result = self.send_raw(result);
12070        self.drop_without_shutdown();
12071        _result
12072    }
12073
12074    fn send_raw(
12075        &self,
12076        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12077    ) -> Result<(), fidl::Error> {
12078        self.control_handle.inner.send::<fidl::encoding::ResultType<
12079            fidl::encoding::EmptyStruct,
12080            fidl_fuchsia_posix::Errno,
12081        >>(
12082            result,
12083            self.tx_id,
12084            0x6ead6de09f653236,
12085            fidl::encoding::DynamicFlags::empty(),
12086        )
12087    }
12088}
12089
12090#[must_use = "FIDL methods require a response to be sent"]
12091#[derive(Debug)]
12092pub struct SocketGetMarkResponder {
12093    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12094    tx_id: u32,
12095}
12096
12097/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12098/// if the responder is dropped without sending a response, so that the client
12099/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12100impl std::ops::Drop for SocketGetMarkResponder {
12101    fn drop(&mut self) {
12102        self.control_handle.shutdown();
12103        // Safety: drops once, never accessed again
12104        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12105    }
12106}
12107
12108impl fidl::endpoints::Responder for SocketGetMarkResponder {
12109    type ControlHandle = SocketControlHandle;
12110
12111    fn control_handle(&self) -> &SocketControlHandle {
12112        &self.control_handle
12113    }
12114
12115    fn drop_without_shutdown(mut self) {
12116        // Safety: drops once, never accessed again due to mem::forget
12117        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12118        // Prevent Drop from running (which would shut down the channel)
12119        std::mem::forget(self);
12120    }
12121}
12122
12123impl SocketGetMarkResponder {
12124    /// Sends a response to the FIDL transaction.
12125    ///
12126    /// Sets the channel to shutdown if an error occurs.
12127    pub fn send(
12128        self,
12129        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12130    ) -> Result<(), fidl::Error> {
12131        let _result = self.send_raw(result);
12132        if _result.is_err() {
12133            self.control_handle.shutdown();
12134        }
12135        self.drop_without_shutdown();
12136        _result
12137    }
12138
12139    /// Similar to "send" but does not shutdown the channel if an error occurs.
12140    pub fn send_no_shutdown_on_err(
12141        self,
12142        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12143    ) -> Result<(), fidl::Error> {
12144        let _result = self.send_raw(result);
12145        self.drop_without_shutdown();
12146        _result
12147    }
12148
12149    fn send_raw(
12150        &self,
12151        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12152    ) -> Result<(), fidl::Error> {
12153        self.control_handle.inner.send::<fidl::encoding::ResultType<
12154            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
12155            fidl_fuchsia_posix::Errno,
12156        >>(
12157            result.map(|mark| (mark,)),
12158            self.tx_id,
12159            0x57a2752c61d93d47,
12160            fidl::encoding::DynamicFlags::empty(),
12161        )
12162    }
12163}
12164
12165#[must_use = "FIDL methods require a response to be sent"]
12166#[derive(Debug)]
12167pub struct SocketGetCookieResponder {
12168    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12169    tx_id: u32,
12170}
12171
12172/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12173/// if the responder is dropped without sending a response, so that the client
12174/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12175impl std::ops::Drop for SocketGetCookieResponder {
12176    fn drop(&mut self) {
12177        self.control_handle.shutdown();
12178        // Safety: drops once, never accessed again
12179        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12180    }
12181}
12182
12183impl fidl::endpoints::Responder for SocketGetCookieResponder {
12184    type ControlHandle = SocketControlHandle;
12185
12186    fn control_handle(&self) -> &SocketControlHandle {
12187        &self.control_handle
12188    }
12189
12190    fn drop_without_shutdown(mut self) {
12191        // Safety: drops once, never accessed again due to mem::forget
12192        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12193        // Prevent Drop from running (which would shut down the channel)
12194        std::mem::forget(self);
12195    }
12196}
12197
12198impl SocketGetCookieResponder {
12199    /// Sends a response to the FIDL transaction.
12200    ///
12201    /// Sets the channel to shutdown if an error occurs.
12202    pub fn send(
12203        self,
12204        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12205    ) -> Result<(), fidl::Error> {
12206        let _result = self.send_raw(result);
12207        if _result.is_err() {
12208            self.control_handle.shutdown();
12209        }
12210        self.drop_without_shutdown();
12211        _result
12212    }
12213
12214    /// Similar to "send" but does not shutdown the channel if an error occurs.
12215    pub fn send_no_shutdown_on_err(
12216        self,
12217        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12218    ) -> Result<(), fidl::Error> {
12219        let _result = self.send_raw(result);
12220        self.drop_without_shutdown();
12221        _result
12222    }
12223
12224    fn send_raw(
12225        &self,
12226        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12227    ) -> Result<(), fidl::Error> {
12228        self.control_handle.inner.send::<fidl::encoding::ResultType<
12229            fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
12230            fidl_fuchsia_posix::Errno,
12231        >>(
12232            result.map(|value| (value,)),
12233            self.tx_id,
12234            0x2c2f47fd8f924e52,
12235            fidl::encoding::DynamicFlags::empty(),
12236        )
12237    }
12238}
12239
12240#[must_use = "FIDL methods require a response to be sent"]
12241#[derive(Debug)]
12242pub struct SocketBindResponder {
12243    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12244    tx_id: u32,
12245}
12246
12247/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12248/// if the responder is dropped without sending a response, so that the client
12249/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12250impl std::ops::Drop for SocketBindResponder {
12251    fn drop(&mut self) {
12252        self.control_handle.shutdown();
12253        // Safety: drops once, never accessed again
12254        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12255    }
12256}
12257
12258impl fidl::endpoints::Responder for SocketBindResponder {
12259    type ControlHandle = SocketControlHandle;
12260
12261    fn control_handle(&self) -> &SocketControlHandle {
12262        &self.control_handle
12263    }
12264
12265    fn drop_without_shutdown(mut self) {
12266        // Safety: drops once, never accessed again due to mem::forget
12267        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12268        // Prevent Drop from running (which would shut down the channel)
12269        std::mem::forget(self);
12270    }
12271}
12272
12273impl SocketBindResponder {
12274    /// Sends a response to the FIDL transaction.
12275    ///
12276    /// Sets the channel to shutdown if an error occurs.
12277    pub fn send(
12278        self,
12279        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12280    ) -> Result<(), fidl::Error> {
12281        let _result = self.send_raw(result);
12282        if _result.is_err() {
12283            self.control_handle.shutdown();
12284        }
12285        self.drop_without_shutdown();
12286        _result
12287    }
12288
12289    /// Similar to "send" but does not shutdown the channel if an error occurs.
12290    pub fn send_no_shutdown_on_err(
12291        self,
12292        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12293    ) -> Result<(), fidl::Error> {
12294        let _result = self.send_raw(result);
12295        self.drop_without_shutdown();
12296        _result
12297    }
12298
12299    fn send_raw(
12300        &self,
12301        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12302    ) -> Result<(), fidl::Error> {
12303        self.control_handle.inner.send::<fidl::encoding::ResultType<
12304            fidl::encoding::EmptyStruct,
12305            fidl_fuchsia_posix::Errno,
12306        >>(
12307            result,
12308            self.tx_id,
12309            0x4bc6400ae92125d,
12310            fidl::encoding::DynamicFlags::empty(),
12311        )
12312    }
12313}
12314
12315#[must_use = "FIDL methods require a response to be sent"]
12316#[derive(Debug)]
12317pub struct SocketConnectResponder {
12318    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12319    tx_id: u32,
12320}
12321
12322/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12323/// if the responder is dropped without sending a response, so that the client
12324/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12325impl std::ops::Drop for SocketConnectResponder {
12326    fn drop(&mut self) {
12327        self.control_handle.shutdown();
12328        // Safety: drops once, never accessed again
12329        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12330    }
12331}
12332
12333impl fidl::endpoints::Responder for SocketConnectResponder {
12334    type ControlHandle = SocketControlHandle;
12335
12336    fn control_handle(&self) -> &SocketControlHandle {
12337        &self.control_handle
12338    }
12339
12340    fn drop_without_shutdown(mut self) {
12341        // Safety: drops once, never accessed again due to mem::forget
12342        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12343        // Prevent Drop from running (which would shut down the channel)
12344        std::mem::forget(self);
12345    }
12346}
12347
12348impl SocketConnectResponder {
12349    /// Sends a response to the FIDL transaction.
12350    ///
12351    /// Sets the channel to shutdown if an error occurs.
12352    pub fn send(
12353        self,
12354        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12355    ) -> Result<(), fidl::Error> {
12356        let _result = self.send_raw(result);
12357        if _result.is_err() {
12358            self.control_handle.shutdown();
12359        }
12360        self.drop_without_shutdown();
12361        _result
12362    }
12363
12364    /// Similar to "send" but does not shutdown the channel if an error occurs.
12365    pub fn send_no_shutdown_on_err(
12366        self,
12367        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12368    ) -> Result<(), fidl::Error> {
12369        let _result = self.send_raw(result);
12370        self.drop_without_shutdown();
12371        _result
12372    }
12373
12374    fn send_raw(
12375        &self,
12376        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12377    ) -> Result<(), fidl::Error> {
12378        self.control_handle.inner.send::<fidl::encoding::ResultType<
12379            fidl::encoding::EmptyStruct,
12380            fidl_fuchsia_posix::Errno,
12381        >>(
12382            result,
12383            self.tx_id,
12384            0x5f05f19bfdd38871,
12385            fidl::encoding::DynamicFlags::empty(),
12386        )
12387    }
12388}
12389
12390#[must_use = "FIDL methods require a response to be sent"]
12391#[derive(Debug)]
12392pub struct SocketDisconnectResponder {
12393    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12394    tx_id: u32,
12395}
12396
12397/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12398/// if the responder is dropped without sending a response, so that the client
12399/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12400impl std::ops::Drop for SocketDisconnectResponder {
12401    fn drop(&mut self) {
12402        self.control_handle.shutdown();
12403        // Safety: drops once, never accessed again
12404        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12405    }
12406}
12407
12408impl fidl::endpoints::Responder for SocketDisconnectResponder {
12409    type ControlHandle = SocketControlHandle;
12410
12411    fn control_handle(&self) -> &SocketControlHandle {
12412        &self.control_handle
12413    }
12414
12415    fn drop_without_shutdown(mut self) {
12416        // Safety: drops once, never accessed again due to mem::forget
12417        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12418        // Prevent Drop from running (which would shut down the channel)
12419        std::mem::forget(self);
12420    }
12421}
12422
12423impl SocketDisconnectResponder {
12424    /// Sends a response to the FIDL transaction.
12425    ///
12426    /// Sets the channel to shutdown if an error occurs.
12427    pub fn send(
12428        self,
12429        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12430    ) -> Result<(), fidl::Error> {
12431        let _result = self.send_raw(result);
12432        if _result.is_err() {
12433            self.control_handle.shutdown();
12434        }
12435        self.drop_without_shutdown();
12436        _result
12437    }
12438
12439    /// Similar to "send" but does not shutdown the channel if an error occurs.
12440    pub fn send_no_shutdown_on_err(
12441        self,
12442        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12443    ) -> Result<(), fidl::Error> {
12444        let _result = self.send_raw(result);
12445        self.drop_without_shutdown();
12446        _result
12447    }
12448
12449    fn send_raw(
12450        &self,
12451        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12452    ) -> Result<(), fidl::Error> {
12453        self.control_handle.inner.send::<fidl::encoding::ResultType<
12454            fidl::encoding::EmptyStruct,
12455            fidl_fuchsia_posix::Errno,
12456        >>(
12457            result,
12458            self.tx_id,
12459            0x74e63b91f7b29b2,
12460            fidl::encoding::DynamicFlags::empty(),
12461        )
12462    }
12463}
12464
12465#[must_use = "FIDL methods require a response to be sent"]
12466#[derive(Debug)]
12467pub struct SocketGetSockNameResponder {
12468    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12469    tx_id: u32,
12470}
12471
12472/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12473/// if the responder is dropped without sending a response, so that the client
12474/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12475impl std::ops::Drop for SocketGetSockNameResponder {
12476    fn drop(&mut self) {
12477        self.control_handle.shutdown();
12478        // Safety: drops once, never accessed again
12479        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12480    }
12481}
12482
12483impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12484    type ControlHandle = SocketControlHandle;
12485
12486    fn control_handle(&self) -> &SocketControlHandle {
12487        &self.control_handle
12488    }
12489
12490    fn drop_without_shutdown(mut self) {
12491        // Safety: drops once, never accessed again due to mem::forget
12492        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12493        // Prevent Drop from running (which would shut down the channel)
12494        std::mem::forget(self);
12495    }
12496}
12497
12498impl SocketGetSockNameResponder {
12499    /// Sends a response to the FIDL transaction.
12500    ///
12501    /// Sets the channel to shutdown if an error occurs.
12502    pub fn send(
12503        self,
12504        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12505    ) -> Result<(), fidl::Error> {
12506        let _result = self.send_raw(result);
12507        if _result.is_err() {
12508            self.control_handle.shutdown();
12509        }
12510        self.drop_without_shutdown();
12511        _result
12512    }
12513
12514    /// Similar to "send" but does not shutdown the channel if an error occurs.
12515    pub fn send_no_shutdown_on_err(
12516        self,
12517        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12518    ) -> Result<(), fidl::Error> {
12519        let _result = self.send_raw(result);
12520        self.drop_without_shutdown();
12521        _result
12522    }
12523
12524    fn send_raw(
12525        &self,
12526        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12527    ) -> Result<(), fidl::Error> {
12528        self.control_handle.inner.send::<fidl::encoding::ResultType<
12529            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12530            fidl_fuchsia_posix::Errno,
12531        >>(
12532            result.map(|addr| (addr,)),
12533            self.tx_id,
12534            0x475f23f84a1a4f85,
12535            fidl::encoding::DynamicFlags::empty(),
12536        )
12537    }
12538}
12539
12540#[must_use = "FIDL methods require a response to be sent"]
12541#[derive(Debug)]
12542pub struct SocketGetPeerNameResponder {
12543    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12544    tx_id: u32,
12545}
12546
12547/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12548/// if the responder is dropped without sending a response, so that the client
12549/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12550impl std::ops::Drop for SocketGetPeerNameResponder {
12551    fn drop(&mut self) {
12552        self.control_handle.shutdown();
12553        // Safety: drops once, never accessed again
12554        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12555    }
12556}
12557
12558impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12559    type ControlHandle = SocketControlHandle;
12560
12561    fn control_handle(&self) -> &SocketControlHandle {
12562        &self.control_handle
12563    }
12564
12565    fn drop_without_shutdown(mut self) {
12566        // Safety: drops once, never accessed again due to mem::forget
12567        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12568        // Prevent Drop from running (which would shut down the channel)
12569        std::mem::forget(self);
12570    }
12571}
12572
12573impl SocketGetPeerNameResponder {
12574    /// Sends a response to the FIDL transaction.
12575    ///
12576    /// Sets the channel to shutdown if an error occurs.
12577    pub fn send(
12578        self,
12579        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12580    ) -> Result<(), fidl::Error> {
12581        let _result = self.send_raw(result);
12582        if _result.is_err() {
12583            self.control_handle.shutdown();
12584        }
12585        self.drop_without_shutdown();
12586        _result
12587    }
12588
12589    /// Similar to "send" but does not shutdown the channel if an error occurs.
12590    pub fn send_no_shutdown_on_err(
12591        self,
12592        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12593    ) -> Result<(), fidl::Error> {
12594        let _result = self.send_raw(result);
12595        self.drop_without_shutdown();
12596        _result
12597    }
12598
12599    fn send_raw(
12600        &self,
12601        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12602    ) -> Result<(), fidl::Error> {
12603        self.control_handle.inner.send::<fidl::encoding::ResultType<
12604            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12605            fidl_fuchsia_posix::Errno,
12606        >>(
12607            result.map(|addr| (addr,)),
12608            self.tx_id,
12609            0x1ffecf4bd5b6432e,
12610            fidl::encoding::DynamicFlags::empty(),
12611        )
12612    }
12613}
12614
12615#[must_use = "FIDL methods require a response to be sent"]
12616#[derive(Debug)]
12617pub struct SocketShutdownResponder {
12618    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12619    tx_id: u32,
12620}
12621
12622/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12623/// if the responder is dropped without sending a response, so that the client
12624/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12625impl std::ops::Drop for SocketShutdownResponder {
12626    fn drop(&mut self) {
12627        self.control_handle.shutdown();
12628        // Safety: drops once, never accessed again
12629        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12630    }
12631}
12632
12633impl fidl::endpoints::Responder for SocketShutdownResponder {
12634    type ControlHandle = SocketControlHandle;
12635
12636    fn control_handle(&self) -> &SocketControlHandle {
12637        &self.control_handle
12638    }
12639
12640    fn drop_without_shutdown(mut self) {
12641        // Safety: drops once, never accessed again due to mem::forget
12642        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12643        // Prevent Drop from running (which would shut down the channel)
12644        std::mem::forget(self);
12645    }
12646}
12647
12648impl SocketShutdownResponder {
12649    /// Sends a response to the FIDL transaction.
12650    ///
12651    /// Sets the channel to shutdown if an error occurs.
12652    pub fn send(
12653        self,
12654        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12655    ) -> Result<(), fidl::Error> {
12656        let _result = self.send_raw(result);
12657        if _result.is_err() {
12658            self.control_handle.shutdown();
12659        }
12660        self.drop_without_shutdown();
12661        _result
12662    }
12663
12664    /// Similar to "send" but does not shutdown the channel if an error occurs.
12665    pub fn send_no_shutdown_on_err(
12666        self,
12667        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12668    ) -> Result<(), fidl::Error> {
12669        let _result = self.send_raw(result);
12670        self.drop_without_shutdown();
12671        _result
12672    }
12673
12674    fn send_raw(
12675        &self,
12676        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12677    ) -> Result<(), fidl::Error> {
12678        self.control_handle.inner.send::<fidl::encoding::ResultType<
12679            fidl::encoding::EmptyStruct,
12680            fidl_fuchsia_posix::Errno,
12681        >>(
12682            result,
12683            self.tx_id,
12684            0x247f38b6db68c336,
12685            fidl::encoding::DynamicFlags::empty(),
12686        )
12687    }
12688}
12689
12690#[must_use = "FIDL methods require a response to be sent"]
12691#[derive(Debug)]
12692pub struct SocketSetIpTypeOfServiceResponder {
12693    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12694    tx_id: u32,
12695}
12696
12697/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12698/// if the responder is dropped without sending a response, so that the client
12699/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12700impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12701    fn drop(&mut self) {
12702        self.control_handle.shutdown();
12703        // Safety: drops once, never accessed again
12704        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12705    }
12706}
12707
12708impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12709    type ControlHandle = SocketControlHandle;
12710
12711    fn control_handle(&self) -> &SocketControlHandle {
12712        &self.control_handle
12713    }
12714
12715    fn drop_without_shutdown(mut self) {
12716        // Safety: drops once, never accessed again due to mem::forget
12717        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12718        // Prevent Drop from running (which would shut down the channel)
12719        std::mem::forget(self);
12720    }
12721}
12722
12723impl SocketSetIpTypeOfServiceResponder {
12724    /// Sends a response to the FIDL transaction.
12725    ///
12726    /// Sets the channel to shutdown if an error occurs.
12727    pub fn send(
12728        self,
12729        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12730    ) -> Result<(), fidl::Error> {
12731        let _result = self.send_raw(result);
12732        if _result.is_err() {
12733            self.control_handle.shutdown();
12734        }
12735        self.drop_without_shutdown();
12736        _result
12737    }
12738
12739    /// Similar to "send" but does not shutdown the channel if an error occurs.
12740    pub fn send_no_shutdown_on_err(
12741        self,
12742        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12743    ) -> Result<(), fidl::Error> {
12744        let _result = self.send_raw(result);
12745        self.drop_without_shutdown();
12746        _result
12747    }
12748
12749    fn send_raw(
12750        &self,
12751        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12752    ) -> Result<(), fidl::Error> {
12753        self.control_handle.inner.send::<fidl::encoding::ResultType<
12754            fidl::encoding::EmptyStruct,
12755            fidl_fuchsia_posix::Errno,
12756        >>(
12757            result,
12758            self.tx_id,
12759            0x995c600475b6d46,
12760            fidl::encoding::DynamicFlags::empty(),
12761        )
12762    }
12763}
12764
12765#[must_use = "FIDL methods require a response to be sent"]
12766#[derive(Debug)]
12767pub struct SocketGetIpTypeOfServiceResponder {
12768    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12769    tx_id: u32,
12770}
12771
12772/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12773/// if the responder is dropped without sending a response, so that the client
12774/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12775impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12776    fn drop(&mut self) {
12777        self.control_handle.shutdown();
12778        // Safety: drops once, never accessed again
12779        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12780    }
12781}
12782
12783impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12784    type ControlHandle = SocketControlHandle;
12785
12786    fn control_handle(&self) -> &SocketControlHandle {
12787        &self.control_handle
12788    }
12789
12790    fn drop_without_shutdown(mut self) {
12791        // Safety: drops once, never accessed again due to mem::forget
12792        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12793        // Prevent Drop from running (which would shut down the channel)
12794        std::mem::forget(self);
12795    }
12796}
12797
12798impl SocketGetIpTypeOfServiceResponder {
12799    /// Sends a response to the FIDL transaction.
12800    ///
12801    /// Sets the channel to shutdown if an error occurs.
12802    pub fn send(
12803        self,
12804        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12805    ) -> Result<(), fidl::Error> {
12806        let _result = self.send_raw(result);
12807        if _result.is_err() {
12808            self.control_handle.shutdown();
12809        }
12810        self.drop_without_shutdown();
12811        _result
12812    }
12813
12814    /// Similar to "send" but does not shutdown the channel if an error occurs.
12815    pub fn send_no_shutdown_on_err(
12816        self,
12817        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12818    ) -> Result<(), fidl::Error> {
12819        let _result = self.send_raw(result);
12820        self.drop_without_shutdown();
12821        _result
12822    }
12823
12824    fn send_raw(
12825        &self,
12826        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12827    ) -> Result<(), fidl::Error> {
12828        self.control_handle.inner.send::<fidl::encoding::ResultType<
12829            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12830            fidl_fuchsia_posix::Errno,
12831        >>(
12832            result.map(|value| (value,)),
12833            self.tx_id,
12834            0x3814a04259f75fcb,
12835            fidl::encoding::DynamicFlags::empty(),
12836        )
12837    }
12838}
12839
12840#[must_use = "FIDL methods require a response to be sent"]
12841#[derive(Debug)]
12842pub struct SocketSetIpTtlResponder {
12843    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12844    tx_id: u32,
12845}
12846
12847/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12848/// if the responder is dropped without sending a response, so that the client
12849/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12850impl std::ops::Drop for SocketSetIpTtlResponder {
12851    fn drop(&mut self) {
12852        self.control_handle.shutdown();
12853        // Safety: drops once, never accessed again
12854        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12855    }
12856}
12857
12858impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12859    type ControlHandle = SocketControlHandle;
12860
12861    fn control_handle(&self) -> &SocketControlHandle {
12862        &self.control_handle
12863    }
12864
12865    fn drop_without_shutdown(mut self) {
12866        // Safety: drops once, never accessed again due to mem::forget
12867        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12868        // Prevent Drop from running (which would shut down the channel)
12869        std::mem::forget(self);
12870    }
12871}
12872
12873impl SocketSetIpTtlResponder {
12874    /// Sends a response to the FIDL transaction.
12875    ///
12876    /// Sets the channel to shutdown if an error occurs.
12877    pub fn send(
12878        self,
12879        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12880    ) -> Result<(), fidl::Error> {
12881        let _result = self.send_raw(result);
12882        if _result.is_err() {
12883            self.control_handle.shutdown();
12884        }
12885        self.drop_without_shutdown();
12886        _result
12887    }
12888
12889    /// Similar to "send" but does not shutdown the channel if an error occurs.
12890    pub fn send_no_shutdown_on_err(
12891        self,
12892        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12893    ) -> Result<(), fidl::Error> {
12894        let _result = self.send_raw(result);
12895        self.drop_without_shutdown();
12896        _result
12897    }
12898
12899    fn send_raw(
12900        &self,
12901        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12902    ) -> Result<(), fidl::Error> {
12903        self.control_handle.inner.send::<fidl::encoding::ResultType<
12904            fidl::encoding::EmptyStruct,
12905            fidl_fuchsia_posix::Errno,
12906        >>(
12907            result,
12908            self.tx_id,
12909            0x29e2424b433ae1ef,
12910            fidl::encoding::DynamicFlags::empty(),
12911        )
12912    }
12913}
12914
12915#[must_use = "FIDL methods require a response to be sent"]
12916#[derive(Debug)]
12917pub struct SocketGetIpTtlResponder {
12918    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12919    tx_id: u32,
12920}
12921
12922/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12923/// if the responder is dropped without sending a response, so that the client
12924/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12925impl std::ops::Drop for SocketGetIpTtlResponder {
12926    fn drop(&mut self) {
12927        self.control_handle.shutdown();
12928        // Safety: drops once, never accessed again
12929        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12930    }
12931}
12932
12933impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
12934    type ControlHandle = SocketControlHandle;
12935
12936    fn control_handle(&self) -> &SocketControlHandle {
12937        &self.control_handle
12938    }
12939
12940    fn drop_without_shutdown(mut self) {
12941        // Safety: drops once, never accessed again due to mem::forget
12942        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12943        // Prevent Drop from running (which would shut down the channel)
12944        std::mem::forget(self);
12945    }
12946}
12947
12948impl SocketGetIpTtlResponder {
12949    /// Sends a response to the FIDL transaction.
12950    ///
12951    /// Sets the channel to shutdown if an error occurs.
12952    pub fn send(
12953        self,
12954        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12955    ) -> Result<(), fidl::Error> {
12956        let _result = self.send_raw(result);
12957        if _result.is_err() {
12958            self.control_handle.shutdown();
12959        }
12960        self.drop_without_shutdown();
12961        _result
12962    }
12963
12964    /// Similar to "send" but does not shutdown the channel if an error occurs.
12965    pub fn send_no_shutdown_on_err(
12966        self,
12967        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12968    ) -> Result<(), fidl::Error> {
12969        let _result = self.send_raw(result);
12970        self.drop_without_shutdown();
12971        _result
12972    }
12973
12974    fn send_raw(
12975        &self,
12976        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12977    ) -> Result<(), fidl::Error> {
12978        self.control_handle.inner.send::<fidl::encoding::ResultType<
12979            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
12980            fidl_fuchsia_posix::Errno,
12981        >>(
12982            result.map(|value| (value,)),
12983            self.tx_id,
12984            0x47e47fa1f24da471,
12985            fidl::encoding::DynamicFlags::empty(),
12986        )
12987    }
12988}
12989
12990#[must_use = "FIDL methods require a response to be sent"]
12991#[derive(Debug)]
12992pub struct SocketSetIpPacketInfoResponder {
12993    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12994    tx_id: u32,
12995}
12996
12997/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12998/// if the responder is dropped without sending a response, so that the client
12999/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13000impl std::ops::Drop for SocketSetIpPacketInfoResponder {
13001    fn drop(&mut self) {
13002        self.control_handle.shutdown();
13003        // Safety: drops once, never accessed again
13004        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13005    }
13006}
13007
13008impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
13009    type ControlHandle = SocketControlHandle;
13010
13011    fn control_handle(&self) -> &SocketControlHandle {
13012        &self.control_handle
13013    }
13014
13015    fn drop_without_shutdown(mut self) {
13016        // Safety: drops once, never accessed again due to mem::forget
13017        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13018        // Prevent Drop from running (which would shut down the channel)
13019        std::mem::forget(self);
13020    }
13021}
13022
13023impl SocketSetIpPacketInfoResponder {
13024    /// Sends a response to the FIDL transaction.
13025    ///
13026    /// Sets the channel to shutdown if an error occurs.
13027    pub fn send(
13028        self,
13029        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13030    ) -> Result<(), fidl::Error> {
13031        let _result = self.send_raw(result);
13032        if _result.is_err() {
13033            self.control_handle.shutdown();
13034        }
13035        self.drop_without_shutdown();
13036        _result
13037    }
13038
13039    /// Similar to "send" but does not shutdown the channel if an error occurs.
13040    pub fn send_no_shutdown_on_err(
13041        self,
13042        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13043    ) -> Result<(), fidl::Error> {
13044        let _result = self.send_raw(result);
13045        self.drop_without_shutdown();
13046        _result
13047    }
13048
13049    fn send_raw(
13050        &self,
13051        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13052    ) -> Result<(), fidl::Error> {
13053        self.control_handle.inner.send::<fidl::encoding::ResultType<
13054            fidl::encoding::EmptyStruct,
13055            fidl_fuchsia_posix::Errno,
13056        >>(
13057            result,
13058            self.tx_id,
13059            0x392d16bee20c0e16,
13060            fidl::encoding::DynamicFlags::empty(),
13061        )
13062    }
13063}
13064
13065#[must_use = "FIDL methods require a response to be sent"]
13066#[derive(Debug)]
13067pub struct SocketGetIpPacketInfoResponder {
13068    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13069    tx_id: u32,
13070}
13071
13072/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13073/// if the responder is dropped without sending a response, so that the client
13074/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13075impl std::ops::Drop for SocketGetIpPacketInfoResponder {
13076    fn drop(&mut self) {
13077        self.control_handle.shutdown();
13078        // Safety: drops once, never accessed again
13079        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13080    }
13081}
13082
13083impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
13084    type ControlHandle = SocketControlHandle;
13085
13086    fn control_handle(&self) -> &SocketControlHandle {
13087        &self.control_handle
13088    }
13089
13090    fn drop_without_shutdown(mut self) {
13091        // Safety: drops once, never accessed again due to mem::forget
13092        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13093        // Prevent Drop from running (which would shut down the channel)
13094        std::mem::forget(self);
13095    }
13096}
13097
13098impl SocketGetIpPacketInfoResponder {
13099    /// Sends a response to the FIDL transaction.
13100    ///
13101    /// Sets the channel to shutdown if an error occurs.
13102    pub fn send(
13103        self,
13104        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13105    ) -> Result<(), fidl::Error> {
13106        let _result = self.send_raw(result);
13107        if _result.is_err() {
13108            self.control_handle.shutdown();
13109        }
13110        self.drop_without_shutdown();
13111        _result
13112    }
13113
13114    /// Similar to "send" but does not shutdown the channel if an error occurs.
13115    pub fn send_no_shutdown_on_err(
13116        self,
13117        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13118    ) -> Result<(), fidl::Error> {
13119        let _result = self.send_raw(result);
13120        self.drop_without_shutdown();
13121        _result
13122    }
13123
13124    fn send_raw(
13125        &self,
13126        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13127    ) -> Result<(), fidl::Error> {
13128        self.control_handle.inner.send::<fidl::encoding::ResultType<
13129            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
13130            fidl_fuchsia_posix::Errno,
13131        >>(
13132            result.map(|value| (value,)),
13133            self.tx_id,
13134            0x54b505f242280740,
13135            fidl::encoding::DynamicFlags::empty(),
13136        )
13137    }
13138}
13139
13140#[must_use = "FIDL methods require a response to be sent"]
13141#[derive(Debug)]
13142pub struct SocketSetIpReceiveTypeOfServiceResponder {
13143    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13144    tx_id: u32,
13145}
13146
13147/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13148/// if the responder is dropped without sending a response, so that the client
13149/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13150impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
13151    fn drop(&mut self) {
13152        self.control_handle.shutdown();
13153        // Safety: drops once, never accessed again
13154        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13155    }
13156}
13157
13158impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
13159    type ControlHandle = SocketControlHandle;
13160
13161    fn control_handle(&self) -> &SocketControlHandle {
13162        &self.control_handle
13163    }
13164
13165    fn drop_without_shutdown(mut self) {
13166        // Safety: drops once, never accessed again due to mem::forget
13167        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13168        // Prevent Drop from running (which would shut down the channel)
13169        std::mem::forget(self);
13170    }
13171}
13172
13173impl SocketSetIpReceiveTypeOfServiceResponder {
13174    /// Sends a response to the FIDL transaction.
13175    ///
13176    /// Sets the channel to shutdown if an error occurs.
13177    pub fn send(
13178        self,
13179        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13180    ) -> Result<(), fidl::Error> {
13181        let _result = self.send_raw(result);
13182        if _result.is_err() {
13183            self.control_handle.shutdown();
13184        }
13185        self.drop_without_shutdown();
13186        _result
13187    }
13188
13189    /// Similar to "send" but does not shutdown the channel if an error occurs.
13190    pub fn send_no_shutdown_on_err(
13191        self,
13192        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13193    ) -> Result<(), fidl::Error> {
13194        let _result = self.send_raw(result);
13195        self.drop_without_shutdown();
13196        _result
13197    }
13198
13199    fn send_raw(
13200        &self,
13201        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13202    ) -> Result<(), fidl::Error> {
13203        self.control_handle.inner.send::<fidl::encoding::ResultType<
13204            fidl::encoding::EmptyStruct,
13205            fidl_fuchsia_posix::Errno,
13206        >>(
13207            result,
13208            self.tx_id,
13209            0x6c4f6714995f84ef,
13210            fidl::encoding::DynamicFlags::empty(),
13211        )
13212    }
13213}
13214
13215#[must_use = "FIDL methods require a response to be sent"]
13216#[derive(Debug)]
13217pub struct SocketGetIpReceiveTypeOfServiceResponder {
13218    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13219    tx_id: u32,
13220}
13221
13222/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13223/// if the responder is dropped without sending a response, so that the client
13224/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13225impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13226    fn drop(&mut self) {
13227        self.control_handle.shutdown();
13228        // Safety: drops once, never accessed again
13229        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13230    }
13231}
13232
13233impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13234    type ControlHandle = SocketControlHandle;
13235
13236    fn control_handle(&self) -> &SocketControlHandle {
13237        &self.control_handle
13238    }
13239
13240    fn drop_without_shutdown(mut self) {
13241        // Safety: drops once, never accessed again due to mem::forget
13242        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13243        // Prevent Drop from running (which would shut down the channel)
13244        std::mem::forget(self);
13245    }
13246}
13247
13248impl SocketGetIpReceiveTypeOfServiceResponder {
13249    /// Sends a response to the FIDL transaction.
13250    ///
13251    /// Sets the channel to shutdown if an error occurs.
13252    pub fn send(
13253        self,
13254        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13255    ) -> Result<(), fidl::Error> {
13256        let _result = self.send_raw(result);
13257        if _result.is_err() {
13258            self.control_handle.shutdown();
13259        }
13260        self.drop_without_shutdown();
13261        _result
13262    }
13263
13264    /// Similar to "send" but does not shutdown the channel if an error occurs.
13265    pub fn send_no_shutdown_on_err(
13266        self,
13267        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13268    ) -> Result<(), fidl::Error> {
13269        let _result = self.send_raw(result);
13270        self.drop_without_shutdown();
13271        _result
13272    }
13273
13274    fn send_raw(
13275        &self,
13276        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13277    ) -> Result<(), fidl::Error> {
13278        self.control_handle.inner.send::<fidl::encoding::ResultType<
13279            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13280            fidl_fuchsia_posix::Errno,
13281        >>(
13282            result.map(|value| (value,)),
13283            self.tx_id,
13284            0x4158ba7dc2795960,
13285            fidl::encoding::DynamicFlags::empty(),
13286        )
13287    }
13288}
13289
13290#[must_use = "FIDL methods require a response to be sent"]
13291#[derive(Debug)]
13292pub struct SocketSetIpReceiveTtlResponder {
13293    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13294    tx_id: u32,
13295}
13296
13297/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13298/// if the responder is dropped without sending a response, so that the client
13299/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13300impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13301    fn drop(&mut self) {
13302        self.control_handle.shutdown();
13303        // Safety: drops once, never accessed again
13304        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13305    }
13306}
13307
13308impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13309    type ControlHandle = SocketControlHandle;
13310
13311    fn control_handle(&self) -> &SocketControlHandle {
13312        &self.control_handle
13313    }
13314
13315    fn drop_without_shutdown(mut self) {
13316        // Safety: drops once, never accessed again due to mem::forget
13317        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13318        // Prevent Drop from running (which would shut down the channel)
13319        std::mem::forget(self);
13320    }
13321}
13322
13323impl SocketSetIpReceiveTtlResponder {
13324    /// Sends a response to the FIDL transaction.
13325    ///
13326    /// Sets the channel to shutdown if an error occurs.
13327    pub fn send(
13328        self,
13329        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13330    ) -> Result<(), fidl::Error> {
13331        let _result = self.send_raw(result);
13332        if _result.is_err() {
13333            self.control_handle.shutdown();
13334        }
13335        self.drop_without_shutdown();
13336        _result
13337    }
13338
13339    /// Similar to "send" but does not shutdown the channel if an error occurs.
13340    pub fn send_no_shutdown_on_err(
13341        self,
13342        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13343    ) -> Result<(), fidl::Error> {
13344        let _result = self.send_raw(result);
13345        self.drop_without_shutdown();
13346        _result
13347    }
13348
13349    fn send_raw(
13350        &self,
13351        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13352    ) -> Result<(), fidl::Error> {
13353        self.control_handle.inner.send::<fidl::encoding::ResultType<
13354            fidl::encoding::EmptyStruct,
13355            fidl_fuchsia_posix::Errno,
13356        >>(
13357            result,
13358            self.tx_id,
13359            0x46f15be0ce0ab82b,
13360            fidl::encoding::DynamicFlags::empty(),
13361        )
13362    }
13363}
13364
13365#[must_use = "FIDL methods require a response to be sent"]
13366#[derive(Debug)]
13367pub struct SocketGetIpReceiveTtlResponder {
13368    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13369    tx_id: u32,
13370}
13371
13372/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13373/// if the responder is dropped without sending a response, so that the client
13374/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13375impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13376    fn drop(&mut self) {
13377        self.control_handle.shutdown();
13378        // Safety: drops once, never accessed again
13379        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13380    }
13381}
13382
13383impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13384    type ControlHandle = SocketControlHandle;
13385
13386    fn control_handle(&self) -> &SocketControlHandle {
13387        &self.control_handle
13388    }
13389
13390    fn drop_without_shutdown(mut self) {
13391        // Safety: drops once, never accessed again due to mem::forget
13392        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13393        // Prevent Drop from running (which would shut down the channel)
13394        std::mem::forget(self);
13395    }
13396}
13397
13398impl SocketGetIpReceiveTtlResponder {
13399    /// Sends a response to the FIDL transaction.
13400    ///
13401    /// Sets the channel to shutdown if an error occurs.
13402    pub fn send(
13403        self,
13404        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13405    ) -> Result<(), fidl::Error> {
13406        let _result = self.send_raw(result);
13407        if _result.is_err() {
13408            self.control_handle.shutdown();
13409        }
13410        self.drop_without_shutdown();
13411        _result
13412    }
13413
13414    /// Similar to "send" but does not shutdown the channel if an error occurs.
13415    pub fn send_no_shutdown_on_err(
13416        self,
13417        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13418    ) -> Result<(), fidl::Error> {
13419        let _result = self.send_raw(result);
13420        self.drop_without_shutdown();
13421        _result
13422    }
13423
13424    fn send_raw(
13425        &self,
13426        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13427    ) -> Result<(), fidl::Error> {
13428        self.control_handle.inner.send::<fidl::encoding::ResultType<
13429            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13430            fidl_fuchsia_posix::Errno,
13431        >>(
13432            result.map(|value| (value,)),
13433            self.tx_id,
13434            0x678ddd5a5dfa2eb5,
13435            fidl::encoding::DynamicFlags::empty(),
13436        )
13437    }
13438}
13439
13440#[must_use = "FIDL methods require a response to be sent"]
13441#[derive(Debug)]
13442pub struct SocketSetIpMulticastInterfaceResponder {
13443    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13444    tx_id: u32,
13445}
13446
13447/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13448/// if the responder is dropped without sending a response, so that the client
13449/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13450impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13451    fn drop(&mut self) {
13452        self.control_handle.shutdown();
13453        // Safety: drops once, never accessed again
13454        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13455    }
13456}
13457
13458impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13459    type ControlHandle = SocketControlHandle;
13460
13461    fn control_handle(&self) -> &SocketControlHandle {
13462        &self.control_handle
13463    }
13464
13465    fn drop_without_shutdown(mut self) {
13466        // Safety: drops once, never accessed again due to mem::forget
13467        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13468        // Prevent Drop from running (which would shut down the channel)
13469        std::mem::forget(self);
13470    }
13471}
13472
13473impl SocketSetIpMulticastInterfaceResponder {
13474    /// Sends a response to the FIDL transaction.
13475    ///
13476    /// Sets the channel to shutdown if an error occurs.
13477    pub fn send(
13478        self,
13479        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13480    ) -> Result<(), fidl::Error> {
13481        let _result = self.send_raw(result);
13482        if _result.is_err() {
13483            self.control_handle.shutdown();
13484        }
13485        self.drop_without_shutdown();
13486        _result
13487    }
13488
13489    /// Similar to "send" but does not shutdown the channel if an error occurs.
13490    pub fn send_no_shutdown_on_err(
13491        self,
13492        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13493    ) -> Result<(), fidl::Error> {
13494        let _result = self.send_raw(result);
13495        self.drop_without_shutdown();
13496        _result
13497    }
13498
13499    fn send_raw(
13500        &self,
13501        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13502    ) -> Result<(), fidl::Error> {
13503        self.control_handle.inner.send::<fidl::encoding::ResultType<
13504            fidl::encoding::EmptyStruct,
13505            fidl_fuchsia_posix::Errno,
13506        >>(
13507            result,
13508            self.tx_id,
13509            0x752fbfa9b12befe,
13510            fidl::encoding::DynamicFlags::empty(),
13511        )
13512    }
13513}
13514
13515#[must_use = "FIDL methods require a response to be sent"]
13516#[derive(Debug)]
13517pub struct SocketGetIpMulticastInterfaceResponder {
13518    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13519    tx_id: u32,
13520}
13521
13522/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13523/// if the responder is dropped without sending a response, so that the client
13524/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13525impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13526    fn drop(&mut self) {
13527        self.control_handle.shutdown();
13528        // Safety: drops once, never accessed again
13529        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13530    }
13531}
13532
13533impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13534    type ControlHandle = SocketControlHandle;
13535
13536    fn control_handle(&self) -> &SocketControlHandle {
13537        &self.control_handle
13538    }
13539
13540    fn drop_without_shutdown(mut self) {
13541        // Safety: drops once, never accessed again due to mem::forget
13542        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13543        // Prevent Drop from running (which would shut down the channel)
13544        std::mem::forget(self);
13545    }
13546}
13547
13548impl SocketGetIpMulticastInterfaceResponder {
13549    /// Sends a response to the FIDL transaction.
13550    ///
13551    /// Sets the channel to shutdown if an error occurs.
13552    pub fn send(
13553        self,
13554        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13555    ) -> Result<(), fidl::Error> {
13556        let _result = self.send_raw(result);
13557        if _result.is_err() {
13558            self.control_handle.shutdown();
13559        }
13560        self.drop_without_shutdown();
13561        _result
13562    }
13563
13564    /// Similar to "send" but does not shutdown the channel if an error occurs.
13565    pub fn send_no_shutdown_on_err(
13566        self,
13567        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13568    ) -> Result<(), fidl::Error> {
13569        let _result = self.send_raw(result);
13570        self.drop_without_shutdown();
13571        _result
13572    }
13573
13574    fn send_raw(
13575        &self,
13576        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13577    ) -> Result<(), fidl::Error> {
13578        self.control_handle.inner.send::<fidl::encoding::ResultType<
13579            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13580            fidl_fuchsia_posix::Errno,
13581        >>(
13582            result.map(|value| (value,)),
13583            self.tx_id,
13584            0x320bd14c4df046c4,
13585            fidl::encoding::DynamicFlags::empty(),
13586        )
13587    }
13588}
13589
13590#[must_use = "FIDL methods require a response to be sent"]
13591#[derive(Debug)]
13592pub struct SocketSetIpMulticastTtlResponder {
13593    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13594    tx_id: u32,
13595}
13596
13597/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13598/// if the responder is dropped without sending a response, so that the client
13599/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13600impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13601    fn drop(&mut self) {
13602        self.control_handle.shutdown();
13603        // Safety: drops once, never accessed again
13604        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13605    }
13606}
13607
13608impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13609    type ControlHandle = SocketControlHandle;
13610
13611    fn control_handle(&self) -> &SocketControlHandle {
13612        &self.control_handle
13613    }
13614
13615    fn drop_without_shutdown(mut self) {
13616        // Safety: drops once, never accessed again due to mem::forget
13617        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13618        // Prevent Drop from running (which would shut down the channel)
13619        std::mem::forget(self);
13620    }
13621}
13622
13623impl SocketSetIpMulticastTtlResponder {
13624    /// Sends a response to the FIDL transaction.
13625    ///
13626    /// Sets the channel to shutdown if an error occurs.
13627    pub fn send(
13628        self,
13629        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13630    ) -> Result<(), fidl::Error> {
13631        let _result = self.send_raw(result);
13632        if _result.is_err() {
13633            self.control_handle.shutdown();
13634        }
13635        self.drop_without_shutdown();
13636        _result
13637    }
13638
13639    /// Similar to "send" but does not shutdown the channel if an error occurs.
13640    pub fn send_no_shutdown_on_err(
13641        self,
13642        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13643    ) -> Result<(), fidl::Error> {
13644        let _result = self.send_raw(result);
13645        self.drop_without_shutdown();
13646        _result
13647    }
13648
13649    fn send_raw(
13650        &self,
13651        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13652    ) -> Result<(), fidl::Error> {
13653        self.control_handle.inner.send::<fidl::encoding::ResultType<
13654            fidl::encoding::EmptyStruct,
13655            fidl_fuchsia_posix::Errno,
13656        >>(
13657            result,
13658            self.tx_id,
13659            0x63134d53772916a1,
13660            fidl::encoding::DynamicFlags::empty(),
13661        )
13662    }
13663}
13664
13665#[must_use = "FIDL methods require a response to be sent"]
13666#[derive(Debug)]
13667pub struct SocketGetIpMulticastTtlResponder {
13668    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13669    tx_id: u32,
13670}
13671
13672/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13673/// if the responder is dropped without sending a response, so that the client
13674/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13675impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13676    fn drop(&mut self) {
13677        self.control_handle.shutdown();
13678        // Safety: drops once, never accessed again
13679        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13680    }
13681}
13682
13683impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13684    type ControlHandle = SocketControlHandle;
13685
13686    fn control_handle(&self) -> &SocketControlHandle {
13687        &self.control_handle
13688    }
13689
13690    fn drop_without_shutdown(mut self) {
13691        // Safety: drops once, never accessed again due to mem::forget
13692        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13693        // Prevent Drop from running (which would shut down the channel)
13694        std::mem::forget(self);
13695    }
13696}
13697
13698impl SocketGetIpMulticastTtlResponder {
13699    /// Sends a response to the FIDL transaction.
13700    ///
13701    /// Sets the channel to shutdown if an error occurs.
13702    pub fn send(
13703        self,
13704        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13705    ) -> Result<(), fidl::Error> {
13706        let _result = self.send_raw(result);
13707        if _result.is_err() {
13708            self.control_handle.shutdown();
13709        }
13710        self.drop_without_shutdown();
13711        _result
13712    }
13713
13714    /// Similar to "send" but does not shutdown the channel if an error occurs.
13715    pub fn send_no_shutdown_on_err(
13716        self,
13717        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13718    ) -> Result<(), fidl::Error> {
13719        let _result = self.send_raw(result);
13720        self.drop_without_shutdown();
13721        _result
13722    }
13723
13724    fn send_raw(
13725        &self,
13726        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13727    ) -> Result<(), fidl::Error> {
13728        self.control_handle.inner.send::<fidl::encoding::ResultType<
13729            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13730            fidl_fuchsia_posix::Errno,
13731        >>(
13732            result.map(|value| (value,)),
13733            self.tx_id,
13734            0x4665cd378f39e1a,
13735            fidl::encoding::DynamicFlags::empty(),
13736        )
13737    }
13738}
13739
13740#[must_use = "FIDL methods require a response to be sent"]
13741#[derive(Debug)]
13742pub struct SocketSetIpMulticastLoopbackResponder {
13743    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13744    tx_id: u32,
13745}
13746
13747/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13748/// if the responder is dropped without sending a response, so that the client
13749/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13750impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13751    fn drop(&mut self) {
13752        self.control_handle.shutdown();
13753        // Safety: drops once, never accessed again
13754        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13755    }
13756}
13757
13758impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13759    type ControlHandle = SocketControlHandle;
13760
13761    fn control_handle(&self) -> &SocketControlHandle {
13762        &self.control_handle
13763    }
13764
13765    fn drop_without_shutdown(mut self) {
13766        // Safety: drops once, never accessed again due to mem::forget
13767        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13768        // Prevent Drop from running (which would shut down the channel)
13769        std::mem::forget(self);
13770    }
13771}
13772
13773impl SocketSetIpMulticastLoopbackResponder {
13774    /// Sends a response to the FIDL transaction.
13775    ///
13776    /// Sets the channel to shutdown if an error occurs.
13777    pub fn send(
13778        self,
13779        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13780    ) -> Result<(), fidl::Error> {
13781        let _result = self.send_raw(result);
13782        if _result.is_err() {
13783            self.control_handle.shutdown();
13784        }
13785        self.drop_without_shutdown();
13786        _result
13787    }
13788
13789    /// Similar to "send" but does not shutdown the channel if an error occurs.
13790    pub fn send_no_shutdown_on_err(
13791        self,
13792        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13793    ) -> Result<(), fidl::Error> {
13794        let _result = self.send_raw(result);
13795        self.drop_without_shutdown();
13796        _result
13797    }
13798
13799    fn send_raw(
13800        &self,
13801        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13802    ) -> Result<(), fidl::Error> {
13803        self.control_handle.inner.send::<fidl::encoding::ResultType<
13804            fidl::encoding::EmptyStruct,
13805            fidl_fuchsia_posix::Errno,
13806        >>(
13807            result,
13808            self.tx_id,
13809            0x20c55c11f00943ea,
13810            fidl::encoding::DynamicFlags::empty(),
13811        )
13812    }
13813}
13814
13815#[must_use = "FIDL methods require a response to be sent"]
13816#[derive(Debug)]
13817pub struct SocketGetIpMulticastLoopbackResponder {
13818    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13819    tx_id: u32,
13820}
13821
13822/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13823/// if the responder is dropped without sending a response, so that the client
13824/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13825impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13826    fn drop(&mut self) {
13827        self.control_handle.shutdown();
13828        // Safety: drops once, never accessed again
13829        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13830    }
13831}
13832
13833impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13834    type ControlHandle = SocketControlHandle;
13835
13836    fn control_handle(&self) -> &SocketControlHandle {
13837        &self.control_handle
13838    }
13839
13840    fn drop_without_shutdown(mut self) {
13841        // Safety: drops once, never accessed again due to mem::forget
13842        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13843        // Prevent Drop from running (which would shut down the channel)
13844        std::mem::forget(self);
13845    }
13846}
13847
13848impl SocketGetIpMulticastLoopbackResponder {
13849    /// Sends a response to the FIDL transaction.
13850    ///
13851    /// Sets the channel to shutdown if an error occurs.
13852    pub fn send(
13853        self,
13854        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13855    ) -> Result<(), fidl::Error> {
13856        let _result = self.send_raw(result);
13857        if _result.is_err() {
13858            self.control_handle.shutdown();
13859        }
13860        self.drop_without_shutdown();
13861        _result
13862    }
13863
13864    /// Similar to "send" but does not shutdown the channel if an error occurs.
13865    pub fn send_no_shutdown_on_err(
13866        self,
13867        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13868    ) -> Result<(), fidl::Error> {
13869        let _result = self.send_raw(result);
13870        self.drop_without_shutdown();
13871        _result
13872    }
13873
13874    fn send_raw(
13875        &self,
13876        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13877    ) -> Result<(), fidl::Error> {
13878        self.control_handle.inner.send::<fidl::encoding::ResultType<
13879            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
13880            fidl_fuchsia_posix::Errno,
13881        >>(
13882            result.map(|value| (value,)),
13883            self.tx_id,
13884            0x3b6b26ff558298f2,
13885            fidl::encoding::DynamicFlags::empty(),
13886        )
13887    }
13888}
13889
13890#[must_use = "FIDL methods require a response to be sent"]
13891#[derive(Debug)]
13892pub struct SocketAddIpMembershipResponder {
13893    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13894    tx_id: u32,
13895}
13896
13897/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13898/// if the responder is dropped without sending a response, so that the client
13899/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13900impl std::ops::Drop for SocketAddIpMembershipResponder {
13901    fn drop(&mut self) {
13902        self.control_handle.shutdown();
13903        // Safety: drops once, never accessed again
13904        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13905    }
13906}
13907
13908impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
13909    type ControlHandle = SocketControlHandle;
13910
13911    fn control_handle(&self) -> &SocketControlHandle {
13912        &self.control_handle
13913    }
13914
13915    fn drop_without_shutdown(mut self) {
13916        // Safety: drops once, never accessed again due to mem::forget
13917        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13918        // Prevent Drop from running (which would shut down the channel)
13919        std::mem::forget(self);
13920    }
13921}
13922
13923impl SocketAddIpMembershipResponder {
13924    /// Sends a response to the FIDL transaction.
13925    ///
13926    /// Sets the channel to shutdown if an error occurs.
13927    pub fn send(
13928        self,
13929        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13930    ) -> Result<(), fidl::Error> {
13931        let _result = self.send_raw(result);
13932        if _result.is_err() {
13933            self.control_handle.shutdown();
13934        }
13935        self.drop_without_shutdown();
13936        _result
13937    }
13938
13939    /// Similar to "send" but does not shutdown the channel if an error occurs.
13940    pub fn send_no_shutdown_on_err(
13941        self,
13942        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13943    ) -> Result<(), fidl::Error> {
13944        let _result = self.send_raw(result);
13945        self.drop_without_shutdown();
13946        _result
13947    }
13948
13949    fn send_raw(
13950        &self,
13951        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13952    ) -> Result<(), fidl::Error> {
13953        self.control_handle.inner.send::<fidl::encoding::ResultType<
13954            fidl::encoding::EmptyStruct,
13955            fidl_fuchsia_posix::Errno,
13956        >>(
13957            result,
13958            self.tx_id,
13959            0x76bc7df115a3b4d0,
13960            fidl::encoding::DynamicFlags::empty(),
13961        )
13962    }
13963}
13964
13965#[must_use = "FIDL methods require a response to be sent"]
13966#[derive(Debug)]
13967pub struct SocketDropIpMembershipResponder {
13968    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13969    tx_id: u32,
13970}
13971
13972/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13973/// if the responder is dropped without sending a response, so that the client
13974/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13975impl std::ops::Drop for SocketDropIpMembershipResponder {
13976    fn drop(&mut self) {
13977        self.control_handle.shutdown();
13978        // Safety: drops once, never accessed again
13979        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13980    }
13981}
13982
13983impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
13984    type ControlHandle = SocketControlHandle;
13985
13986    fn control_handle(&self) -> &SocketControlHandle {
13987        &self.control_handle
13988    }
13989
13990    fn drop_without_shutdown(mut self) {
13991        // Safety: drops once, never accessed again due to mem::forget
13992        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13993        // Prevent Drop from running (which would shut down the channel)
13994        std::mem::forget(self);
13995    }
13996}
13997
13998impl SocketDropIpMembershipResponder {
13999    /// Sends a response to the FIDL transaction.
14000    ///
14001    /// Sets the channel to shutdown if an error occurs.
14002    pub fn send(
14003        self,
14004        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14005    ) -> Result<(), fidl::Error> {
14006        let _result = self.send_raw(result);
14007        if _result.is_err() {
14008            self.control_handle.shutdown();
14009        }
14010        self.drop_without_shutdown();
14011        _result
14012    }
14013
14014    /// Similar to "send" but does not shutdown the channel if an error occurs.
14015    pub fn send_no_shutdown_on_err(
14016        self,
14017        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14018    ) -> Result<(), fidl::Error> {
14019        let _result = self.send_raw(result);
14020        self.drop_without_shutdown();
14021        _result
14022    }
14023
14024    fn send_raw(
14025        &self,
14026        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14027    ) -> Result<(), fidl::Error> {
14028        self.control_handle.inner.send::<fidl::encoding::ResultType<
14029            fidl::encoding::EmptyStruct,
14030            fidl_fuchsia_posix::Errno,
14031        >>(
14032            result,
14033            self.tx_id,
14034            0x2888f3099188d03,
14035            fidl::encoding::DynamicFlags::empty(),
14036        )
14037    }
14038}
14039
14040#[must_use = "FIDL methods require a response to be sent"]
14041#[derive(Debug)]
14042pub struct SocketSetIpTransparentResponder {
14043    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14044    tx_id: u32,
14045}
14046
14047/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14048/// if the responder is dropped without sending a response, so that the client
14049/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14050impl std::ops::Drop for SocketSetIpTransparentResponder {
14051    fn drop(&mut self) {
14052        self.control_handle.shutdown();
14053        // Safety: drops once, never accessed again
14054        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14055    }
14056}
14057
14058impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
14059    type ControlHandle = SocketControlHandle;
14060
14061    fn control_handle(&self) -> &SocketControlHandle {
14062        &self.control_handle
14063    }
14064
14065    fn drop_without_shutdown(mut self) {
14066        // Safety: drops once, never accessed again due to mem::forget
14067        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14068        // Prevent Drop from running (which would shut down the channel)
14069        std::mem::forget(self);
14070    }
14071}
14072
14073impl SocketSetIpTransparentResponder {
14074    /// Sends a response to the FIDL transaction.
14075    ///
14076    /// Sets the channel to shutdown if an error occurs.
14077    pub fn send(
14078        self,
14079        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14080    ) -> Result<(), fidl::Error> {
14081        let _result = self.send_raw(result);
14082        if _result.is_err() {
14083            self.control_handle.shutdown();
14084        }
14085        self.drop_without_shutdown();
14086        _result
14087    }
14088
14089    /// Similar to "send" but does not shutdown the channel if an error occurs.
14090    pub fn send_no_shutdown_on_err(
14091        self,
14092        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14093    ) -> Result<(), fidl::Error> {
14094        let _result = self.send_raw(result);
14095        self.drop_without_shutdown();
14096        _result
14097    }
14098
14099    fn send_raw(
14100        &self,
14101        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14102    ) -> Result<(), fidl::Error> {
14103        self.control_handle.inner.send::<fidl::encoding::ResultType<
14104            fidl::encoding::EmptyStruct,
14105            fidl_fuchsia_posix::Errno,
14106        >>(
14107            result,
14108            self.tx_id,
14109            0x1ae532b0c066e3a0,
14110            fidl::encoding::DynamicFlags::empty(),
14111        )
14112    }
14113}
14114
14115#[must_use = "FIDL methods require a response to be sent"]
14116#[derive(Debug)]
14117pub struct SocketGetIpTransparentResponder {
14118    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14119    tx_id: u32,
14120}
14121
14122/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14123/// if the responder is dropped without sending a response, so that the client
14124/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14125impl std::ops::Drop for SocketGetIpTransparentResponder {
14126    fn drop(&mut self) {
14127        self.control_handle.shutdown();
14128        // Safety: drops once, never accessed again
14129        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14130    }
14131}
14132
14133impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
14134    type ControlHandle = SocketControlHandle;
14135
14136    fn control_handle(&self) -> &SocketControlHandle {
14137        &self.control_handle
14138    }
14139
14140    fn drop_without_shutdown(mut self) {
14141        // Safety: drops once, never accessed again due to mem::forget
14142        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14143        // Prevent Drop from running (which would shut down the channel)
14144        std::mem::forget(self);
14145    }
14146}
14147
14148impl SocketGetIpTransparentResponder {
14149    /// Sends a response to the FIDL transaction.
14150    ///
14151    /// Sets the channel to shutdown if an error occurs.
14152    pub fn send(
14153        self,
14154        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14155    ) -> Result<(), fidl::Error> {
14156        let _result = self.send_raw(result);
14157        if _result.is_err() {
14158            self.control_handle.shutdown();
14159        }
14160        self.drop_without_shutdown();
14161        _result
14162    }
14163
14164    /// Similar to "send" but does not shutdown the channel if an error occurs.
14165    pub fn send_no_shutdown_on_err(
14166        self,
14167        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14168    ) -> Result<(), fidl::Error> {
14169        let _result = self.send_raw(result);
14170        self.drop_without_shutdown();
14171        _result
14172    }
14173
14174    fn send_raw(
14175        &self,
14176        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14177    ) -> Result<(), fidl::Error> {
14178        self.control_handle.inner.send::<fidl::encoding::ResultType<
14179            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
14180            fidl_fuchsia_posix::Errno,
14181        >>(
14182            result.map(|value| (value,)),
14183            self.tx_id,
14184            0x51d43695962ebfb5,
14185            fidl::encoding::DynamicFlags::empty(),
14186        )
14187    }
14188}
14189
14190#[must_use = "FIDL methods require a response to be sent"]
14191#[derive(Debug)]
14192pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14193    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14194    tx_id: u32,
14195}
14196
14197/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14198/// if the responder is dropped without sending a response, so that the client
14199/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14200impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14201    fn drop(&mut self) {
14202        self.control_handle.shutdown();
14203        // Safety: drops once, never accessed again
14204        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14205    }
14206}
14207
14208impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14209    type ControlHandle = SocketControlHandle;
14210
14211    fn control_handle(&self) -> &SocketControlHandle {
14212        &self.control_handle
14213    }
14214
14215    fn drop_without_shutdown(mut self) {
14216        // Safety: drops once, never accessed again due to mem::forget
14217        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14218        // Prevent Drop from running (which would shut down the channel)
14219        std::mem::forget(self);
14220    }
14221}
14222
14223impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14224    /// Sends a response to the FIDL transaction.
14225    ///
14226    /// Sets the channel to shutdown if an error occurs.
14227    pub fn send(
14228        self,
14229        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14230    ) -> Result<(), fidl::Error> {
14231        let _result = self.send_raw(result);
14232        if _result.is_err() {
14233            self.control_handle.shutdown();
14234        }
14235        self.drop_without_shutdown();
14236        _result
14237    }
14238
14239    /// Similar to "send" but does not shutdown the channel if an error occurs.
14240    pub fn send_no_shutdown_on_err(
14241        self,
14242        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14243    ) -> Result<(), fidl::Error> {
14244        let _result = self.send_raw(result);
14245        self.drop_without_shutdown();
14246        _result
14247    }
14248
14249    fn send_raw(
14250        &self,
14251        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14252    ) -> Result<(), fidl::Error> {
14253        self.control_handle.inner.send::<fidl::encoding::ResultType<
14254            fidl::encoding::EmptyStruct,
14255            fidl_fuchsia_posix::Errno,
14256        >>(
14257            result,
14258            self.tx_id,
14259            0x4722b4ce52f7840,
14260            fidl::encoding::DynamicFlags::empty(),
14261        )
14262    }
14263}
14264
14265#[must_use = "FIDL methods require a response to be sent"]
14266#[derive(Debug)]
14267pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14268    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14269    tx_id: u32,
14270}
14271
14272/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14273/// if the responder is dropped without sending a response, so that the client
14274/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14275impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14276    fn drop(&mut self) {
14277        self.control_handle.shutdown();
14278        // Safety: drops once, never accessed again
14279        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14280    }
14281}
14282
14283impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14284    type ControlHandle = SocketControlHandle;
14285
14286    fn control_handle(&self) -> &SocketControlHandle {
14287        &self.control_handle
14288    }
14289
14290    fn drop_without_shutdown(mut self) {
14291        // Safety: drops once, never accessed again due to mem::forget
14292        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14293        // Prevent Drop from running (which would shut down the channel)
14294        std::mem::forget(self);
14295    }
14296}
14297
14298impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14299    /// Sends a response to the FIDL transaction.
14300    ///
14301    /// Sets the channel to shutdown if an error occurs.
14302    pub fn send(
14303        self,
14304        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14305    ) -> Result<(), fidl::Error> {
14306        let _result = self.send_raw(result);
14307        if _result.is_err() {
14308            self.control_handle.shutdown();
14309        }
14310        self.drop_without_shutdown();
14311        _result
14312    }
14313
14314    /// Similar to "send" but does not shutdown the channel if an error occurs.
14315    pub fn send_no_shutdown_on_err(
14316        self,
14317        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14318    ) -> Result<(), fidl::Error> {
14319        let _result = self.send_raw(result);
14320        self.drop_without_shutdown();
14321        _result
14322    }
14323
14324    fn send_raw(
14325        &self,
14326        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14327    ) -> Result<(), fidl::Error> {
14328        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14329            result.map(|value| (value,)),
14330            self.tx_id,
14331            0x2a0e7dc5d6bfdfe9,
14332            fidl::encoding::DynamicFlags::empty()
14333        )
14334    }
14335}
14336
14337#[must_use = "FIDL methods require a response to be sent"]
14338#[derive(Debug)]
14339pub struct SocketAddIpv6MembershipResponder {
14340    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14341    tx_id: u32,
14342}
14343
14344/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14345/// if the responder is dropped without sending a response, so that the client
14346/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14347impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14348    fn drop(&mut self) {
14349        self.control_handle.shutdown();
14350        // Safety: drops once, never accessed again
14351        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14352    }
14353}
14354
14355impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14356    type ControlHandle = SocketControlHandle;
14357
14358    fn control_handle(&self) -> &SocketControlHandle {
14359        &self.control_handle
14360    }
14361
14362    fn drop_without_shutdown(mut self) {
14363        // Safety: drops once, never accessed again due to mem::forget
14364        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14365        // Prevent Drop from running (which would shut down the channel)
14366        std::mem::forget(self);
14367    }
14368}
14369
14370impl SocketAddIpv6MembershipResponder {
14371    /// Sends a response to the FIDL transaction.
14372    ///
14373    /// Sets the channel to shutdown if an error occurs.
14374    pub fn send(
14375        self,
14376        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14377    ) -> Result<(), fidl::Error> {
14378        let _result = self.send_raw(result);
14379        if _result.is_err() {
14380            self.control_handle.shutdown();
14381        }
14382        self.drop_without_shutdown();
14383        _result
14384    }
14385
14386    /// Similar to "send" but does not shutdown the channel if an error occurs.
14387    pub fn send_no_shutdown_on_err(
14388        self,
14389        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14390    ) -> Result<(), fidl::Error> {
14391        let _result = self.send_raw(result);
14392        self.drop_without_shutdown();
14393        _result
14394    }
14395
14396    fn send_raw(
14397        &self,
14398        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14399    ) -> Result<(), fidl::Error> {
14400        self.control_handle.inner.send::<fidl::encoding::ResultType<
14401            fidl::encoding::EmptyStruct,
14402            fidl_fuchsia_posix::Errno,
14403        >>(
14404            result,
14405            self.tx_id,
14406            0x7c94727acb4ea4b3,
14407            fidl::encoding::DynamicFlags::empty(),
14408        )
14409    }
14410}
14411
14412#[must_use = "FIDL methods require a response to be sent"]
14413#[derive(Debug)]
14414pub struct SocketDropIpv6MembershipResponder {
14415    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14416    tx_id: u32,
14417}
14418
14419/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14420/// if the responder is dropped without sending a response, so that the client
14421/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14422impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14423    fn drop(&mut self) {
14424        self.control_handle.shutdown();
14425        // Safety: drops once, never accessed again
14426        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14427    }
14428}
14429
14430impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14431    type ControlHandle = SocketControlHandle;
14432
14433    fn control_handle(&self) -> &SocketControlHandle {
14434        &self.control_handle
14435    }
14436
14437    fn drop_without_shutdown(mut self) {
14438        // Safety: drops once, never accessed again due to mem::forget
14439        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14440        // Prevent Drop from running (which would shut down the channel)
14441        std::mem::forget(self);
14442    }
14443}
14444
14445impl SocketDropIpv6MembershipResponder {
14446    /// Sends a response to the FIDL transaction.
14447    ///
14448    /// Sets the channel to shutdown if an error occurs.
14449    pub fn send(
14450        self,
14451        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14452    ) -> Result<(), fidl::Error> {
14453        let _result = self.send_raw(result);
14454        if _result.is_err() {
14455            self.control_handle.shutdown();
14456        }
14457        self.drop_without_shutdown();
14458        _result
14459    }
14460
14461    /// Similar to "send" but does not shutdown the channel if an error occurs.
14462    pub fn send_no_shutdown_on_err(
14463        self,
14464        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14465    ) -> Result<(), fidl::Error> {
14466        let _result = self.send_raw(result);
14467        self.drop_without_shutdown();
14468        _result
14469    }
14470
14471    fn send_raw(
14472        &self,
14473        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14474    ) -> Result<(), fidl::Error> {
14475        self.control_handle.inner.send::<fidl::encoding::ResultType<
14476            fidl::encoding::EmptyStruct,
14477            fidl_fuchsia_posix::Errno,
14478        >>(
14479            result,
14480            self.tx_id,
14481            0x42104c70ccaba304,
14482            fidl::encoding::DynamicFlags::empty(),
14483        )
14484    }
14485}
14486
14487#[must_use = "FIDL methods require a response to be sent"]
14488#[derive(Debug)]
14489pub struct SocketSetIpv6MulticastInterfaceResponder {
14490    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14491    tx_id: u32,
14492}
14493
14494/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14495/// if the responder is dropped without sending a response, so that the client
14496/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14497impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14498    fn drop(&mut self) {
14499        self.control_handle.shutdown();
14500        // Safety: drops once, never accessed again
14501        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14502    }
14503}
14504
14505impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14506    type ControlHandle = SocketControlHandle;
14507
14508    fn control_handle(&self) -> &SocketControlHandle {
14509        &self.control_handle
14510    }
14511
14512    fn drop_without_shutdown(mut self) {
14513        // Safety: drops once, never accessed again due to mem::forget
14514        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14515        // Prevent Drop from running (which would shut down the channel)
14516        std::mem::forget(self);
14517    }
14518}
14519
14520impl SocketSetIpv6MulticastInterfaceResponder {
14521    /// Sends a response to the FIDL transaction.
14522    ///
14523    /// Sets the channel to shutdown if an error occurs.
14524    pub fn send(
14525        self,
14526        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14527    ) -> Result<(), fidl::Error> {
14528        let _result = self.send_raw(result);
14529        if _result.is_err() {
14530            self.control_handle.shutdown();
14531        }
14532        self.drop_without_shutdown();
14533        _result
14534    }
14535
14536    /// Similar to "send" but does not shutdown the channel if an error occurs.
14537    pub fn send_no_shutdown_on_err(
14538        self,
14539        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14540    ) -> Result<(), fidl::Error> {
14541        let _result = self.send_raw(result);
14542        self.drop_without_shutdown();
14543        _result
14544    }
14545
14546    fn send_raw(
14547        &self,
14548        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14549    ) -> Result<(), fidl::Error> {
14550        self.control_handle.inner.send::<fidl::encoding::ResultType<
14551            fidl::encoding::EmptyStruct,
14552            fidl_fuchsia_posix::Errno,
14553        >>(
14554            result,
14555            self.tx_id,
14556            0x135f76db3774ab3b,
14557            fidl::encoding::DynamicFlags::empty(),
14558        )
14559    }
14560}
14561
14562#[must_use = "FIDL methods require a response to be sent"]
14563#[derive(Debug)]
14564pub struct SocketGetIpv6MulticastInterfaceResponder {
14565    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14566    tx_id: u32,
14567}
14568
14569/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14570/// if the responder is dropped without sending a response, so that the client
14571/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14572impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14573    fn drop(&mut self) {
14574        self.control_handle.shutdown();
14575        // Safety: drops once, never accessed again
14576        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14577    }
14578}
14579
14580impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14581    type ControlHandle = SocketControlHandle;
14582
14583    fn control_handle(&self) -> &SocketControlHandle {
14584        &self.control_handle
14585    }
14586
14587    fn drop_without_shutdown(mut self) {
14588        // Safety: drops once, never accessed again due to mem::forget
14589        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14590        // Prevent Drop from running (which would shut down the channel)
14591        std::mem::forget(self);
14592    }
14593}
14594
14595impl SocketGetIpv6MulticastInterfaceResponder {
14596    /// Sends a response to the FIDL transaction.
14597    ///
14598    /// Sets the channel to shutdown if an error occurs.
14599    pub fn send(
14600        self,
14601        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14602    ) -> Result<(), fidl::Error> {
14603        let _result = self.send_raw(result);
14604        if _result.is_err() {
14605            self.control_handle.shutdown();
14606        }
14607        self.drop_without_shutdown();
14608        _result
14609    }
14610
14611    /// Similar to "send" but does not shutdown the channel if an error occurs.
14612    pub fn send_no_shutdown_on_err(
14613        self,
14614        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14615    ) -> Result<(), fidl::Error> {
14616        let _result = self.send_raw(result);
14617        self.drop_without_shutdown();
14618        _result
14619    }
14620
14621    fn send_raw(
14622        &self,
14623        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14624    ) -> Result<(), fidl::Error> {
14625        self.control_handle.inner.send::<fidl::encoding::ResultType<
14626            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14627            fidl_fuchsia_posix::Errno,
14628        >>(
14629            result.map(|value| (value,)),
14630            self.tx_id,
14631            0x1f26fcdd348f1882,
14632            fidl::encoding::DynamicFlags::empty(),
14633        )
14634    }
14635}
14636
14637#[must_use = "FIDL methods require a response to be sent"]
14638#[derive(Debug)]
14639pub struct SocketSetIpv6UnicastHopsResponder {
14640    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14641    tx_id: u32,
14642}
14643
14644/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14645/// if the responder is dropped without sending a response, so that the client
14646/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14647impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14648    fn drop(&mut self) {
14649        self.control_handle.shutdown();
14650        // Safety: drops once, never accessed again
14651        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14652    }
14653}
14654
14655impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14656    type ControlHandle = SocketControlHandle;
14657
14658    fn control_handle(&self) -> &SocketControlHandle {
14659        &self.control_handle
14660    }
14661
14662    fn drop_without_shutdown(mut self) {
14663        // Safety: drops once, never accessed again due to mem::forget
14664        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14665        // Prevent Drop from running (which would shut down the channel)
14666        std::mem::forget(self);
14667    }
14668}
14669
14670impl SocketSetIpv6UnicastHopsResponder {
14671    /// Sends a response to the FIDL transaction.
14672    ///
14673    /// Sets the channel to shutdown if an error occurs.
14674    pub fn send(
14675        self,
14676        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14677    ) -> Result<(), fidl::Error> {
14678        let _result = self.send_raw(result);
14679        if _result.is_err() {
14680            self.control_handle.shutdown();
14681        }
14682        self.drop_without_shutdown();
14683        _result
14684    }
14685
14686    /// Similar to "send" but does not shutdown the channel if an error occurs.
14687    pub fn send_no_shutdown_on_err(
14688        self,
14689        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14690    ) -> Result<(), fidl::Error> {
14691        let _result = self.send_raw(result);
14692        self.drop_without_shutdown();
14693        _result
14694    }
14695
14696    fn send_raw(
14697        &self,
14698        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14699    ) -> Result<(), fidl::Error> {
14700        self.control_handle.inner.send::<fidl::encoding::ResultType<
14701            fidl::encoding::EmptyStruct,
14702            fidl_fuchsia_posix::Errno,
14703        >>(
14704            result,
14705            self.tx_id,
14706            0x157d51e98f462859,
14707            fidl::encoding::DynamicFlags::empty(),
14708        )
14709    }
14710}
14711
14712#[must_use = "FIDL methods require a response to be sent"]
14713#[derive(Debug)]
14714pub struct SocketGetIpv6UnicastHopsResponder {
14715    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14716    tx_id: u32,
14717}
14718
14719/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14720/// if the responder is dropped without sending a response, so that the client
14721/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14722impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14723    fn drop(&mut self) {
14724        self.control_handle.shutdown();
14725        // Safety: drops once, never accessed again
14726        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14727    }
14728}
14729
14730impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14731    type ControlHandle = SocketControlHandle;
14732
14733    fn control_handle(&self) -> &SocketControlHandle {
14734        &self.control_handle
14735    }
14736
14737    fn drop_without_shutdown(mut self) {
14738        // Safety: drops once, never accessed again due to mem::forget
14739        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14740        // Prevent Drop from running (which would shut down the channel)
14741        std::mem::forget(self);
14742    }
14743}
14744
14745impl SocketGetIpv6UnicastHopsResponder {
14746    /// Sends a response to the FIDL transaction.
14747    ///
14748    /// Sets the channel to shutdown if an error occurs.
14749    pub fn send(
14750        self,
14751        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14752    ) -> Result<(), fidl::Error> {
14753        let _result = self.send_raw(result);
14754        if _result.is_err() {
14755            self.control_handle.shutdown();
14756        }
14757        self.drop_without_shutdown();
14758        _result
14759    }
14760
14761    /// Similar to "send" but does not shutdown the channel if an error occurs.
14762    pub fn send_no_shutdown_on_err(
14763        self,
14764        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14765    ) -> Result<(), fidl::Error> {
14766        let _result = self.send_raw(result);
14767        self.drop_without_shutdown();
14768        _result
14769    }
14770
14771    fn send_raw(
14772        &self,
14773        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14774    ) -> Result<(), fidl::Error> {
14775        self.control_handle.inner.send::<fidl::encoding::ResultType<
14776            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14777            fidl_fuchsia_posix::Errno,
14778        >>(
14779            result.map(|value| (value,)),
14780            self.tx_id,
14781            0x21f4641cad8bd8d2,
14782            fidl::encoding::DynamicFlags::empty(),
14783        )
14784    }
14785}
14786
14787#[must_use = "FIDL methods require a response to be sent"]
14788#[derive(Debug)]
14789pub struct SocketSetIpv6ReceiveHopLimitResponder {
14790    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14791    tx_id: u32,
14792}
14793
14794/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14795/// if the responder is dropped without sending a response, so that the client
14796/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14797impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14798    fn drop(&mut self) {
14799        self.control_handle.shutdown();
14800        // Safety: drops once, never accessed again
14801        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14802    }
14803}
14804
14805impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14806    type ControlHandle = SocketControlHandle;
14807
14808    fn control_handle(&self) -> &SocketControlHandle {
14809        &self.control_handle
14810    }
14811
14812    fn drop_without_shutdown(mut self) {
14813        // Safety: drops once, never accessed again due to mem::forget
14814        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14815        // Prevent Drop from running (which would shut down the channel)
14816        std::mem::forget(self);
14817    }
14818}
14819
14820impl SocketSetIpv6ReceiveHopLimitResponder {
14821    /// Sends a response to the FIDL transaction.
14822    ///
14823    /// Sets the channel to shutdown if an error occurs.
14824    pub fn send(
14825        self,
14826        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14827    ) -> Result<(), fidl::Error> {
14828        let _result = self.send_raw(result);
14829        if _result.is_err() {
14830            self.control_handle.shutdown();
14831        }
14832        self.drop_without_shutdown();
14833        _result
14834    }
14835
14836    /// Similar to "send" but does not shutdown the channel if an error occurs.
14837    pub fn send_no_shutdown_on_err(
14838        self,
14839        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14840    ) -> Result<(), fidl::Error> {
14841        let _result = self.send_raw(result);
14842        self.drop_without_shutdown();
14843        _result
14844    }
14845
14846    fn send_raw(
14847        &self,
14848        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14849    ) -> Result<(), fidl::Error> {
14850        self.control_handle.inner.send::<fidl::encoding::ResultType<
14851            fidl::encoding::EmptyStruct,
14852            fidl_fuchsia_posix::Errno,
14853        >>(
14854            result,
14855            self.tx_id,
14856            0x5c24808ed2e84a1e,
14857            fidl::encoding::DynamicFlags::empty(),
14858        )
14859    }
14860}
14861
14862#[must_use = "FIDL methods require a response to be sent"]
14863#[derive(Debug)]
14864pub struct SocketGetIpv6ReceiveHopLimitResponder {
14865    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14866    tx_id: u32,
14867}
14868
14869/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14870/// if the responder is dropped without sending a response, so that the client
14871/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14872impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
14873    fn drop(&mut self) {
14874        self.control_handle.shutdown();
14875        // Safety: drops once, never accessed again
14876        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14877    }
14878}
14879
14880impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
14881    type ControlHandle = SocketControlHandle;
14882
14883    fn control_handle(&self) -> &SocketControlHandle {
14884        &self.control_handle
14885    }
14886
14887    fn drop_without_shutdown(mut self) {
14888        // Safety: drops once, never accessed again due to mem::forget
14889        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14890        // Prevent Drop from running (which would shut down the channel)
14891        std::mem::forget(self);
14892    }
14893}
14894
14895impl SocketGetIpv6ReceiveHopLimitResponder {
14896    /// Sends a response to the FIDL transaction.
14897    ///
14898    /// Sets the channel to shutdown if an error occurs.
14899    pub fn send(
14900        self,
14901        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14902    ) -> Result<(), fidl::Error> {
14903        let _result = self.send_raw(result);
14904        if _result.is_err() {
14905            self.control_handle.shutdown();
14906        }
14907        self.drop_without_shutdown();
14908        _result
14909    }
14910
14911    /// Similar to "send" but does not shutdown the channel if an error occurs.
14912    pub fn send_no_shutdown_on_err(
14913        self,
14914        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14915    ) -> Result<(), fidl::Error> {
14916        let _result = self.send_raw(result);
14917        self.drop_without_shutdown();
14918        _result
14919    }
14920
14921    fn send_raw(
14922        &self,
14923        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14924    ) -> Result<(), fidl::Error> {
14925        self.control_handle.inner.send::<fidl::encoding::ResultType<
14926            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
14927            fidl_fuchsia_posix::Errno,
14928        >>(
14929            result.map(|value| (value,)),
14930            self.tx_id,
14931            0x341e06689885b4c0,
14932            fidl::encoding::DynamicFlags::empty(),
14933        )
14934    }
14935}
14936
14937#[must_use = "FIDL methods require a response to be sent"]
14938#[derive(Debug)]
14939pub struct SocketSetIpv6MulticastHopsResponder {
14940    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14941    tx_id: u32,
14942}
14943
14944/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14945/// if the responder is dropped without sending a response, so that the client
14946/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14947impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
14948    fn drop(&mut self) {
14949        self.control_handle.shutdown();
14950        // Safety: drops once, never accessed again
14951        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14952    }
14953}
14954
14955impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
14956    type ControlHandle = SocketControlHandle;
14957
14958    fn control_handle(&self) -> &SocketControlHandle {
14959        &self.control_handle
14960    }
14961
14962    fn drop_without_shutdown(mut self) {
14963        // Safety: drops once, never accessed again due to mem::forget
14964        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14965        // Prevent Drop from running (which would shut down the channel)
14966        std::mem::forget(self);
14967    }
14968}
14969
14970impl SocketSetIpv6MulticastHopsResponder {
14971    /// Sends a response to the FIDL transaction.
14972    ///
14973    /// Sets the channel to shutdown if an error occurs.
14974    pub fn send(
14975        self,
14976        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14977    ) -> Result<(), fidl::Error> {
14978        let _result = self.send_raw(result);
14979        if _result.is_err() {
14980            self.control_handle.shutdown();
14981        }
14982        self.drop_without_shutdown();
14983        _result
14984    }
14985
14986    /// Similar to "send" but does not shutdown the channel if an error occurs.
14987    pub fn send_no_shutdown_on_err(
14988        self,
14989        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14990    ) -> Result<(), fidl::Error> {
14991        let _result = self.send_raw(result);
14992        self.drop_without_shutdown();
14993        _result
14994    }
14995
14996    fn send_raw(
14997        &self,
14998        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14999    ) -> Result<(), fidl::Error> {
15000        self.control_handle.inner.send::<fidl::encoding::ResultType<
15001            fidl::encoding::EmptyStruct,
15002            fidl_fuchsia_posix::Errno,
15003        >>(
15004            result,
15005            self.tx_id,
15006            0x25b9cd4d181f82c1,
15007            fidl::encoding::DynamicFlags::empty(),
15008        )
15009    }
15010}
15011
15012#[must_use = "FIDL methods require a response to be sent"]
15013#[derive(Debug)]
15014pub struct SocketGetIpv6MulticastHopsResponder {
15015    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15016    tx_id: u32,
15017}
15018
15019/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15020/// if the responder is dropped without sending a response, so that the client
15021/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15022impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
15023    fn drop(&mut self) {
15024        self.control_handle.shutdown();
15025        // Safety: drops once, never accessed again
15026        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15027    }
15028}
15029
15030impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
15031    type ControlHandle = SocketControlHandle;
15032
15033    fn control_handle(&self) -> &SocketControlHandle {
15034        &self.control_handle
15035    }
15036
15037    fn drop_without_shutdown(mut self) {
15038        // Safety: drops once, never accessed again due to mem::forget
15039        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15040        // Prevent Drop from running (which would shut down the channel)
15041        std::mem::forget(self);
15042    }
15043}
15044
15045impl SocketGetIpv6MulticastHopsResponder {
15046    /// Sends a response to the FIDL transaction.
15047    ///
15048    /// Sets the channel to shutdown if an error occurs.
15049    pub fn send(
15050        self,
15051        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15052    ) -> Result<(), fidl::Error> {
15053        let _result = self.send_raw(result);
15054        if _result.is_err() {
15055            self.control_handle.shutdown();
15056        }
15057        self.drop_without_shutdown();
15058        _result
15059    }
15060
15061    /// Similar to "send" but does not shutdown the channel if an error occurs.
15062    pub fn send_no_shutdown_on_err(
15063        self,
15064        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15065    ) -> Result<(), fidl::Error> {
15066        let _result = self.send_raw(result);
15067        self.drop_without_shutdown();
15068        _result
15069    }
15070
15071    fn send_raw(
15072        &self,
15073        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15074    ) -> Result<(), fidl::Error> {
15075        self.control_handle.inner.send::<fidl::encoding::ResultType<
15076            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
15077            fidl_fuchsia_posix::Errno,
15078        >>(
15079            result.map(|value| (value,)),
15080            self.tx_id,
15081            0x52916948a365012a,
15082            fidl::encoding::DynamicFlags::empty(),
15083        )
15084    }
15085}
15086
15087#[must_use = "FIDL methods require a response to be sent"]
15088#[derive(Debug)]
15089pub struct SocketSetIpv6MulticastLoopbackResponder {
15090    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15091    tx_id: u32,
15092}
15093
15094/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15095/// if the responder is dropped without sending a response, so that the client
15096/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15097impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
15098    fn drop(&mut self) {
15099        self.control_handle.shutdown();
15100        // Safety: drops once, never accessed again
15101        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15102    }
15103}
15104
15105impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
15106    type ControlHandle = SocketControlHandle;
15107
15108    fn control_handle(&self) -> &SocketControlHandle {
15109        &self.control_handle
15110    }
15111
15112    fn drop_without_shutdown(mut self) {
15113        // Safety: drops once, never accessed again due to mem::forget
15114        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15115        // Prevent Drop from running (which would shut down the channel)
15116        std::mem::forget(self);
15117    }
15118}
15119
15120impl SocketSetIpv6MulticastLoopbackResponder {
15121    /// Sends a response to the FIDL transaction.
15122    ///
15123    /// Sets the channel to shutdown if an error occurs.
15124    pub fn send(
15125        self,
15126        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15127    ) -> Result<(), fidl::Error> {
15128        let _result = self.send_raw(result);
15129        if _result.is_err() {
15130            self.control_handle.shutdown();
15131        }
15132        self.drop_without_shutdown();
15133        _result
15134    }
15135
15136    /// Similar to "send" but does not shutdown the channel if an error occurs.
15137    pub fn send_no_shutdown_on_err(
15138        self,
15139        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15140    ) -> Result<(), fidl::Error> {
15141        let _result = self.send_raw(result);
15142        self.drop_without_shutdown();
15143        _result
15144    }
15145
15146    fn send_raw(
15147        &self,
15148        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15149    ) -> Result<(), fidl::Error> {
15150        self.control_handle.inner.send::<fidl::encoding::ResultType<
15151            fidl::encoding::EmptyStruct,
15152            fidl_fuchsia_posix::Errno,
15153        >>(
15154            result,
15155            self.tx_id,
15156            0x55701c409ff41b40,
15157            fidl::encoding::DynamicFlags::empty(),
15158        )
15159    }
15160}
15161
15162#[must_use = "FIDL methods require a response to be sent"]
15163#[derive(Debug)]
15164pub struct SocketGetIpv6MulticastLoopbackResponder {
15165    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15166    tx_id: u32,
15167}
15168
15169/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15170/// if the responder is dropped without sending a response, so that the client
15171/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15172impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
15173    fn drop(&mut self) {
15174        self.control_handle.shutdown();
15175        // Safety: drops once, never accessed again
15176        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15177    }
15178}
15179
15180impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
15181    type ControlHandle = SocketControlHandle;
15182
15183    fn control_handle(&self) -> &SocketControlHandle {
15184        &self.control_handle
15185    }
15186
15187    fn drop_without_shutdown(mut self) {
15188        // Safety: drops once, never accessed again due to mem::forget
15189        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15190        // Prevent Drop from running (which would shut down the channel)
15191        std::mem::forget(self);
15192    }
15193}
15194
15195impl SocketGetIpv6MulticastLoopbackResponder {
15196    /// Sends a response to the FIDL transaction.
15197    ///
15198    /// Sets the channel to shutdown if an error occurs.
15199    pub fn send(
15200        self,
15201        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15202    ) -> Result<(), fidl::Error> {
15203        let _result = self.send_raw(result);
15204        if _result.is_err() {
15205            self.control_handle.shutdown();
15206        }
15207        self.drop_without_shutdown();
15208        _result
15209    }
15210
15211    /// Similar to "send" but does not shutdown the channel if an error occurs.
15212    pub fn send_no_shutdown_on_err(
15213        self,
15214        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15215    ) -> Result<(), fidl::Error> {
15216        let _result = self.send_raw(result);
15217        self.drop_without_shutdown();
15218        _result
15219    }
15220
15221    fn send_raw(
15222        &self,
15223        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15224    ) -> Result<(), fidl::Error> {
15225        self.control_handle.inner.send::<fidl::encoding::ResultType<
15226            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15227            fidl_fuchsia_posix::Errno,
15228        >>(
15229            result.map(|value| (value,)),
15230            self.tx_id,
15231            0x4415b701fde319c3,
15232            fidl::encoding::DynamicFlags::empty(),
15233        )
15234    }
15235}
15236
15237#[must_use = "FIDL methods require a response to be sent"]
15238#[derive(Debug)]
15239pub struct SocketSetIpv6OnlyResponder {
15240    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15241    tx_id: u32,
15242}
15243
15244/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15245/// if the responder is dropped without sending a response, so that the client
15246/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15247impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15248    fn drop(&mut self) {
15249        self.control_handle.shutdown();
15250        // Safety: drops once, never accessed again
15251        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15252    }
15253}
15254
15255impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15256    type ControlHandle = SocketControlHandle;
15257
15258    fn control_handle(&self) -> &SocketControlHandle {
15259        &self.control_handle
15260    }
15261
15262    fn drop_without_shutdown(mut self) {
15263        // Safety: drops once, never accessed again due to mem::forget
15264        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15265        // Prevent Drop from running (which would shut down the channel)
15266        std::mem::forget(self);
15267    }
15268}
15269
15270impl SocketSetIpv6OnlyResponder {
15271    /// Sends a response to the FIDL transaction.
15272    ///
15273    /// Sets the channel to shutdown if an error occurs.
15274    pub fn send(
15275        self,
15276        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15277    ) -> Result<(), fidl::Error> {
15278        let _result = self.send_raw(result);
15279        if _result.is_err() {
15280            self.control_handle.shutdown();
15281        }
15282        self.drop_without_shutdown();
15283        _result
15284    }
15285
15286    /// Similar to "send" but does not shutdown the channel if an error occurs.
15287    pub fn send_no_shutdown_on_err(
15288        self,
15289        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15290    ) -> Result<(), fidl::Error> {
15291        let _result = self.send_raw(result);
15292        self.drop_without_shutdown();
15293        _result
15294    }
15295
15296    fn send_raw(
15297        &self,
15298        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15299    ) -> Result<(), fidl::Error> {
15300        self.control_handle.inner.send::<fidl::encoding::ResultType<
15301            fidl::encoding::EmptyStruct,
15302            fidl_fuchsia_posix::Errno,
15303        >>(
15304            result,
15305            self.tx_id,
15306            0x4873f1364758cbba,
15307            fidl::encoding::DynamicFlags::empty(),
15308        )
15309    }
15310}
15311
15312#[must_use = "FIDL methods require a response to be sent"]
15313#[derive(Debug)]
15314pub struct SocketGetIpv6OnlyResponder {
15315    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15316    tx_id: u32,
15317}
15318
15319/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15320/// if the responder is dropped without sending a response, so that the client
15321/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15322impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15323    fn drop(&mut self) {
15324        self.control_handle.shutdown();
15325        // Safety: drops once, never accessed again
15326        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15327    }
15328}
15329
15330impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15331    type ControlHandle = SocketControlHandle;
15332
15333    fn control_handle(&self) -> &SocketControlHandle {
15334        &self.control_handle
15335    }
15336
15337    fn drop_without_shutdown(mut self) {
15338        // Safety: drops once, never accessed again due to mem::forget
15339        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15340        // Prevent Drop from running (which would shut down the channel)
15341        std::mem::forget(self);
15342    }
15343}
15344
15345impl SocketGetIpv6OnlyResponder {
15346    /// Sends a response to the FIDL transaction.
15347    ///
15348    /// Sets the channel to shutdown if an error occurs.
15349    pub fn send(
15350        self,
15351        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15352    ) -> Result<(), fidl::Error> {
15353        let _result = self.send_raw(result);
15354        if _result.is_err() {
15355            self.control_handle.shutdown();
15356        }
15357        self.drop_without_shutdown();
15358        _result
15359    }
15360
15361    /// Similar to "send" but does not shutdown the channel if an error occurs.
15362    pub fn send_no_shutdown_on_err(
15363        self,
15364        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15365    ) -> Result<(), fidl::Error> {
15366        let _result = self.send_raw(result);
15367        self.drop_without_shutdown();
15368        _result
15369    }
15370
15371    fn send_raw(
15372        &self,
15373        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15374    ) -> Result<(), fidl::Error> {
15375        self.control_handle.inner.send::<fidl::encoding::ResultType<
15376            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15377            fidl_fuchsia_posix::Errno,
15378        >>(
15379            result.map(|value| (value,)),
15380            self.tx_id,
15381            0x4aa3340a1a26b89c,
15382            fidl::encoding::DynamicFlags::empty(),
15383        )
15384    }
15385}
15386
15387#[must_use = "FIDL methods require a response to be sent"]
15388#[derive(Debug)]
15389pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15390    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15391    tx_id: u32,
15392}
15393
15394/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15395/// if the responder is dropped without sending a response, so that the client
15396/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15397impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15398    fn drop(&mut self) {
15399        self.control_handle.shutdown();
15400        // Safety: drops once, never accessed again
15401        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15402    }
15403}
15404
15405impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15406    type ControlHandle = SocketControlHandle;
15407
15408    fn control_handle(&self) -> &SocketControlHandle {
15409        &self.control_handle
15410    }
15411
15412    fn drop_without_shutdown(mut self) {
15413        // Safety: drops once, never accessed again due to mem::forget
15414        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15415        // Prevent Drop from running (which would shut down the channel)
15416        std::mem::forget(self);
15417    }
15418}
15419
15420impl SocketSetIpv6ReceiveTrafficClassResponder {
15421    /// Sends a response to the FIDL transaction.
15422    ///
15423    /// Sets the channel to shutdown if an error occurs.
15424    pub fn send(
15425        self,
15426        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15427    ) -> Result<(), fidl::Error> {
15428        let _result = self.send_raw(result);
15429        if _result.is_err() {
15430            self.control_handle.shutdown();
15431        }
15432        self.drop_without_shutdown();
15433        _result
15434    }
15435
15436    /// Similar to "send" but does not shutdown the channel if an error occurs.
15437    pub fn send_no_shutdown_on_err(
15438        self,
15439        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15440    ) -> Result<(), fidl::Error> {
15441        let _result = self.send_raw(result);
15442        self.drop_without_shutdown();
15443        _result
15444    }
15445
15446    fn send_raw(
15447        &self,
15448        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15449    ) -> Result<(), fidl::Error> {
15450        self.control_handle.inner.send::<fidl::encoding::ResultType<
15451            fidl::encoding::EmptyStruct,
15452            fidl_fuchsia_posix::Errno,
15453        >>(
15454            result,
15455            self.tx_id,
15456            0x58f07c8788d099a0,
15457            fidl::encoding::DynamicFlags::empty(),
15458        )
15459    }
15460}
15461
15462#[must_use = "FIDL methods require a response to be sent"]
15463#[derive(Debug)]
15464pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15465    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15466    tx_id: u32,
15467}
15468
15469/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15470/// if the responder is dropped without sending a response, so that the client
15471/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15472impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15473    fn drop(&mut self) {
15474        self.control_handle.shutdown();
15475        // Safety: drops once, never accessed again
15476        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15477    }
15478}
15479
15480impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15481    type ControlHandle = SocketControlHandle;
15482
15483    fn control_handle(&self) -> &SocketControlHandle {
15484        &self.control_handle
15485    }
15486
15487    fn drop_without_shutdown(mut self) {
15488        // Safety: drops once, never accessed again due to mem::forget
15489        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15490        // Prevent Drop from running (which would shut down the channel)
15491        std::mem::forget(self);
15492    }
15493}
15494
15495impl SocketGetIpv6ReceiveTrafficClassResponder {
15496    /// Sends a response to the FIDL transaction.
15497    ///
15498    /// Sets the channel to shutdown if an error occurs.
15499    pub fn send(
15500        self,
15501        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15502    ) -> Result<(), fidl::Error> {
15503        let _result = self.send_raw(result);
15504        if _result.is_err() {
15505            self.control_handle.shutdown();
15506        }
15507        self.drop_without_shutdown();
15508        _result
15509    }
15510
15511    /// Similar to "send" but does not shutdown the channel if an error occurs.
15512    pub fn send_no_shutdown_on_err(
15513        self,
15514        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15515    ) -> Result<(), fidl::Error> {
15516        let _result = self.send_raw(result);
15517        self.drop_without_shutdown();
15518        _result
15519    }
15520
15521    fn send_raw(
15522        &self,
15523        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15524    ) -> Result<(), fidl::Error> {
15525        self.control_handle.inner.send::<fidl::encoding::ResultType<
15526            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15527            fidl_fuchsia_posix::Errno,
15528        >>(
15529            result.map(|value| (value,)),
15530            self.tx_id,
15531            0x2e334df1da553ffa,
15532            fidl::encoding::DynamicFlags::empty(),
15533        )
15534    }
15535}
15536
15537#[must_use = "FIDL methods require a response to be sent"]
15538#[derive(Debug)]
15539pub struct SocketSetIpv6TrafficClassResponder {
15540    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15541    tx_id: u32,
15542}
15543
15544/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15545/// if the responder is dropped without sending a response, so that the client
15546/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15547impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15548    fn drop(&mut self) {
15549        self.control_handle.shutdown();
15550        // Safety: drops once, never accessed again
15551        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15552    }
15553}
15554
15555impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15556    type ControlHandle = SocketControlHandle;
15557
15558    fn control_handle(&self) -> &SocketControlHandle {
15559        &self.control_handle
15560    }
15561
15562    fn drop_without_shutdown(mut self) {
15563        // Safety: drops once, never accessed again due to mem::forget
15564        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15565        // Prevent Drop from running (which would shut down the channel)
15566        std::mem::forget(self);
15567    }
15568}
15569
15570impl SocketSetIpv6TrafficClassResponder {
15571    /// Sends a response to the FIDL transaction.
15572    ///
15573    /// Sets the channel to shutdown if an error occurs.
15574    pub fn send(
15575        self,
15576        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15577    ) -> Result<(), fidl::Error> {
15578        let _result = self.send_raw(result);
15579        if _result.is_err() {
15580            self.control_handle.shutdown();
15581        }
15582        self.drop_without_shutdown();
15583        _result
15584    }
15585
15586    /// Similar to "send" but does not shutdown the channel if an error occurs.
15587    pub fn send_no_shutdown_on_err(
15588        self,
15589        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15590    ) -> Result<(), fidl::Error> {
15591        let _result = self.send_raw(result);
15592        self.drop_without_shutdown();
15593        _result
15594    }
15595
15596    fn send_raw(
15597        &self,
15598        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15599    ) -> Result<(), fidl::Error> {
15600        self.control_handle.inner.send::<fidl::encoding::ResultType<
15601            fidl::encoding::EmptyStruct,
15602            fidl_fuchsia_posix::Errno,
15603        >>(
15604            result,
15605            self.tx_id,
15606            0x6af077800c5a0b4f,
15607            fidl::encoding::DynamicFlags::empty(),
15608        )
15609    }
15610}
15611
15612#[must_use = "FIDL methods require a response to be sent"]
15613#[derive(Debug)]
15614pub struct SocketGetIpv6TrafficClassResponder {
15615    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15616    tx_id: u32,
15617}
15618
15619/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15620/// if the responder is dropped without sending a response, so that the client
15621/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15622impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15623    fn drop(&mut self) {
15624        self.control_handle.shutdown();
15625        // Safety: drops once, never accessed again
15626        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15627    }
15628}
15629
15630impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15631    type ControlHandle = SocketControlHandle;
15632
15633    fn control_handle(&self) -> &SocketControlHandle {
15634        &self.control_handle
15635    }
15636
15637    fn drop_without_shutdown(mut self) {
15638        // Safety: drops once, never accessed again due to mem::forget
15639        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15640        // Prevent Drop from running (which would shut down the channel)
15641        std::mem::forget(self);
15642    }
15643}
15644
15645impl SocketGetIpv6TrafficClassResponder {
15646    /// Sends a response to the FIDL transaction.
15647    ///
15648    /// Sets the channel to shutdown if an error occurs.
15649    pub fn send(
15650        self,
15651        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15652    ) -> Result<(), fidl::Error> {
15653        let _result = self.send_raw(result);
15654        if _result.is_err() {
15655            self.control_handle.shutdown();
15656        }
15657        self.drop_without_shutdown();
15658        _result
15659    }
15660
15661    /// Similar to "send" but does not shutdown the channel if an error occurs.
15662    pub fn send_no_shutdown_on_err(
15663        self,
15664        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15665    ) -> Result<(), fidl::Error> {
15666        let _result = self.send_raw(result);
15667        self.drop_without_shutdown();
15668        _result
15669    }
15670
15671    fn send_raw(
15672        &self,
15673        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15674    ) -> Result<(), fidl::Error> {
15675        self.control_handle.inner.send::<fidl::encoding::ResultType<
15676            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15677            fidl_fuchsia_posix::Errno,
15678        >>(
15679            result.map(|value| (value,)),
15680            self.tx_id,
15681            0x6baf6eed8fc2f04,
15682            fidl::encoding::DynamicFlags::empty(),
15683        )
15684    }
15685}
15686
15687#[must_use = "FIDL methods require a response to be sent"]
15688#[derive(Debug)]
15689pub struct SocketSetIpv6ReceivePacketInfoResponder {
15690    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15691    tx_id: u32,
15692}
15693
15694/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15695/// if the responder is dropped without sending a response, so that the client
15696/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15697impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15698    fn drop(&mut self) {
15699        self.control_handle.shutdown();
15700        // Safety: drops once, never accessed again
15701        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15702    }
15703}
15704
15705impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15706    type ControlHandle = SocketControlHandle;
15707
15708    fn control_handle(&self) -> &SocketControlHandle {
15709        &self.control_handle
15710    }
15711
15712    fn drop_without_shutdown(mut self) {
15713        // Safety: drops once, never accessed again due to mem::forget
15714        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15715        // Prevent Drop from running (which would shut down the channel)
15716        std::mem::forget(self);
15717    }
15718}
15719
15720impl SocketSetIpv6ReceivePacketInfoResponder {
15721    /// Sends a response to the FIDL transaction.
15722    ///
15723    /// Sets the channel to shutdown if an error occurs.
15724    pub fn send(
15725        self,
15726        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15727    ) -> Result<(), fidl::Error> {
15728        let _result = self.send_raw(result);
15729        if _result.is_err() {
15730            self.control_handle.shutdown();
15731        }
15732        self.drop_without_shutdown();
15733        _result
15734    }
15735
15736    /// Similar to "send" but does not shutdown the channel if an error occurs.
15737    pub fn send_no_shutdown_on_err(
15738        self,
15739        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15740    ) -> Result<(), fidl::Error> {
15741        let _result = self.send_raw(result);
15742        self.drop_without_shutdown();
15743        _result
15744    }
15745
15746    fn send_raw(
15747        &self,
15748        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15749    ) -> Result<(), fidl::Error> {
15750        self.control_handle.inner.send::<fidl::encoding::ResultType<
15751            fidl::encoding::EmptyStruct,
15752            fidl_fuchsia_posix::Errno,
15753        >>(
15754            result,
15755            self.tx_id,
15756            0x19259775b1a92768,
15757            fidl::encoding::DynamicFlags::empty(),
15758        )
15759    }
15760}
15761
15762#[must_use = "FIDL methods require a response to be sent"]
15763#[derive(Debug)]
15764pub struct SocketGetIpv6ReceivePacketInfoResponder {
15765    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15766    tx_id: u32,
15767}
15768
15769/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15770/// if the responder is dropped without sending a response, so that the client
15771/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15772impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15773    fn drop(&mut self) {
15774        self.control_handle.shutdown();
15775        // Safety: drops once, never accessed again
15776        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15777    }
15778}
15779
15780impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15781    type ControlHandle = SocketControlHandle;
15782
15783    fn control_handle(&self) -> &SocketControlHandle {
15784        &self.control_handle
15785    }
15786
15787    fn drop_without_shutdown(mut self) {
15788        // Safety: drops once, never accessed again due to mem::forget
15789        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15790        // Prevent Drop from running (which would shut down the channel)
15791        std::mem::forget(self);
15792    }
15793}
15794
15795impl SocketGetIpv6ReceivePacketInfoResponder {
15796    /// Sends a response to the FIDL transaction.
15797    ///
15798    /// Sets the channel to shutdown if an error occurs.
15799    pub fn send(
15800        self,
15801        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15802    ) -> Result<(), fidl::Error> {
15803        let _result = self.send_raw(result);
15804        if _result.is_err() {
15805            self.control_handle.shutdown();
15806        }
15807        self.drop_without_shutdown();
15808        _result
15809    }
15810
15811    /// Similar to "send" but does not shutdown the channel if an error occurs.
15812    pub fn send_no_shutdown_on_err(
15813        self,
15814        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15815    ) -> Result<(), fidl::Error> {
15816        let _result = self.send_raw(result);
15817        self.drop_without_shutdown();
15818        _result
15819    }
15820
15821    fn send_raw(
15822        &self,
15823        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15824    ) -> Result<(), fidl::Error> {
15825        self.control_handle.inner.send::<fidl::encoding::ResultType<
15826            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15827            fidl_fuchsia_posix::Errno,
15828        >>(
15829            result.map(|value| (value,)),
15830            self.tx_id,
15831            0x7acd4a2775baec75,
15832            fidl::encoding::DynamicFlags::empty(),
15833        )
15834    }
15835}
15836
15837#[must_use = "FIDL methods require a response to be sent"]
15838#[derive(Debug)]
15839pub struct SocketGetOriginalDestinationResponder {
15840    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15841    tx_id: u32,
15842}
15843
15844/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15845/// if the responder is dropped without sending a response, so that the client
15846/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15847impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15848    fn drop(&mut self) {
15849        self.control_handle.shutdown();
15850        // Safety: drops once, never accessed again
15851        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15852    }
15853}
15854
15855impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15856    type ControlHandle = SocketControlHandle;
15857
15858    fn control_handle(&self) -> &SocketControlHandle {
15859        &self.control_handle
15860    }
15861
15862    fn drop_without_shutdown(mut self) {
15863        // Safety: drops once, never accessed again due to mem::forget
15864        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15865        // Prevent Drop from running (which would shut down the channel)
15866        std::mem::forget(self);
15867    }
15868}
15869
15870impl SocketGetOriginalDestinationResponder {
15871    /// Sends a response to the FIDL transaction.
15872    ///
15873    /// Sets the channel to shutdown if an error occurs.
15874    pub fn send(
15875        self,
15876        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15877    ) -> Result<(), fidl::Error> {
15878        let _result = self.send_raw(result);
15879        if _result.is_err() {
15880            self.control_handle.shutdown();
15881        }
15882        self.drop_without_shutdown();
15883        _result
15884    }
15885
15886    /// Similar to "send" but does not shutdown the channel if an error occurs.
15887    pub fn send_no_shutdown_on_err(
15888        self,
15889        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15890    ) -> Result<(), fidl::Error> {
15891        let _result = self.send_raw(result);
15892        self.drop_without_shutdown();
15893        _result
15894    }
15895
15896    fn send_raw(
15897        &self,
15898        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15899    ) -> Result<(), fidl::Error> {
15900        self.control_handle.inner.send::<fidl::encoding::ResultType<
15901            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
15902            fidl_fuchsia_posix::Errno,
15903        >>(
15904            result.map(|value| (value,)),
15905            self.tx_id,
15906            0x38bf28f0dafdbac0,
15907            fidl::encoding::DynamicFlags::empty(),
15908        )
15909    }
15910}
15911
15912#[must_use = "FIDL methods require a response to be sent"]
15913#[derive(Debug)]
15914pub struct SocketDescribeResponder {
15915    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15916    tx_id: u32,
15917}
15918
15919/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15920/// if the responder is dropped without sending a response, so that the client
15921/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15922impl std::ops::Drop for SocketDescribeResponder {
15923    fn drop(&mut self) {
15924        self.control_handle.shutdown();
15925        // Safety: drops once, never accessed again
15926        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15927    }
15928}
15929
15930impl fidl::endpoints::Responder for SocketDescribeResponder {
15931    type ControlHandle = SocketControlHandle;
15932
15933    fn control_handle(&self) -> &SocketControlHandle {
15934        &self.control_handle
15935    }
15936
15937    fn drop_without_shutdown(mut self) {
15938        // Safety: drops once, never accessed again due to mem::forget
15939        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15940        // Prevent Drop from running (which would shut down the channel)
15941        std::mem::forget(self);
15942    }
15943}
15944
15945impl SocketDescribeResponder {
15946    /// Sends a response to the FIDL transaction.
15947    ///
15948    /// Sets the channel to shutdown if an error occurs.
15949    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15950        let _result = self.send_raw(payload);
15951        if _result.is_err() {
15952            self.control_handle.shutdown();
15953        }
15954        self.drop_without_shutdown();
15955        _result
15956    }
15957
15958    /// Similar to "send" but does not shutdown the channel if an error occurs.
15959    pub fn send_no_shutdown_on_err(
15960        self,
15961        mut payload: SocketDescribeResponse,
15962    ) -> Result<(), fidl::Error> {
15963        let _result = self.send_raw(payload);
15964        self.drop_without_shutdown();
15965        _result
15966    }
15967
15968    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15969        self.control_handle.inner.send::<SocketDescribeResponse>(
15970            &mut payload,
15971            self.tx_id,
15972            0x335706eccf54a135,
15973            fidl::encoding::DynamicFlags::empty(),
15974        )
15975    }
15976}
15977
15978#[must_use = "FIDL methods require a response to be sent"]
15979#[derive(Debug)]
15980pub struct SocketRecvMsgResponder {
15981    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15982    tx_id: u32,
15983}
15984
15985/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15986/// if the responder is dropped without sending a response, so that the client
15987/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15988impl std::ops::Drop for SocketRecvMsgResponder {
15989    fn drop(&mut self) {
15990        self.control_handle.shutdown();
15991        // Safety: drops once, never accessed again
15992        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15993    }
15994}
15995
15996impl fidl::endpoints::Responder for SocketRecvMsgResponder {
15997    type ControlHandle = SocketControlHandle;
15998
15999    fn control_handle(&self) -> &SocketControlHandle {
16000        &self.control_handle
16001    }
16002
16003    fn drop_without_shutdown(mut self) {
16004        // Safety: drops once, never accessed again due to mem::forget
16005        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16006        // Prevent Drop from running (which would shut down the channel)
16007        std::mem::forget(self);
16008    }
16009}
16010
16011impl SocketRecvMsgResponder {
16012    /// Sends a response to the FIDL transaction.
16013    ///
16014    /// Sets the channel to shutdown if an error occurs.
16015    pub fn send(
16016        self,
16017        mut result: Result<
16018            (
16019                Option<&fidl_fuchsia_net::SocketAddress>,
16020                &[u8],
16021                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16022                u32,
16023            ),
16024            fidl_fuchsia_posix::Errno,
16025        >,
16026    ) -> Result<(), fidl::Error> {
16027        let _result = self.send_raw(result);
16028        if _result.is_err() {
16029            self.control_handle.shutdown();
16030        }
16031        self.drop_without_shutdown();
16032        _result
16033    }
16034
16035    /// Similar to "send" but does not shutdown the channel if an error occurs.
16036    pub fn send_no_shutdown_on_err(
16037        self,
16038        mut result: Result<
16039            (
16040                Option<&fidl_fuchsia_net::SocketAddress>,
16041                &[u8],
16042                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16043                u32,
16044            ),
16045            fidl_fuchsia_posix::Errno,
16046        >,
16047    ) -> Result<(), fidl::Error> {
16048        let _result = self.send_raw(result);
16049        self.drop_without_shutdown();
16050        _result
16051    }
16052
16053    fn send_raw(
16054        &self,
16055        mut result: Result<
16056            (
16057                Option<&fidl_fuchsia_net::SocketAddress>,
16058                &[u8],
16059                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16060                u32,
16061            ),
16062            fidl_fuchsia_posix::Errno,
16063        >,
16064    ) -> Result<(), fidl::Error> {
16065        self.control_handle.inner.send::<fidl::encoding::ResultType<
16066            SocketRecvMsgResponse,
16067            fidl_fuchsia_posix::Errno,
16068        >>(
16069            result,
16070            self.tx_id,
16071            0x1dfb695351d3aa1d,
16072            fidl::encoding::DynamicFlags::empty(),
16073        )
16074    }
16075}
16076
16077#[must_use = "FIDL methods require a response to be sent"]
16078#[derive(Debug)]
16079pub struct SocketSendMsgResponder {
16080    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16081    tx_id: u32,
16082}
16083
16084/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16085/// if the responder is dropped without sending a response, so that the client
16086/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16087impl std::ops::Drop for SocketSendMsgResponder {
16088    fn drop(&mut self) {
16089        self.control_handle.shutdown();
16090        // Safety: drops once, never accessed again
16091        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16092    }
16093}
16094
16095impl fidl::endpoints::Responder for SocketSendMsgResponder {
16096    type ControlHandle = SocketControlHandle;
16097
16098    fn control_handle(&self) -> &SocketControlHandle {
16099        &self.control_handle
16100    }
16101
16102    fn drop_without_shutdown(mut self) {
16103        // Safety: drops once, never accessed again due to mem::forget
16104        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16105        // Prevent Drop from running (which would shut down the channel)
16106        std::mem::forget(self);
16107    }
16108}
16109
16110impl SocketSendMsgResponder {
16111    /// Sends a response to the FIDL transaction.
16112    ///
16113    /// Sets the channel to shutdown if an error occurs.
16114    pub fn send(
16115        self,
16116        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16117    ) -> Result<(), fidl::Error> {
16118        let _result = self.send_raw(result);
16119        if _result.is_err() {
16120            self.control_handle.shutdown();
16121        }
16122        self.drop_without_shutdown();
16123        _result
16124    }
16125
16126    /// Similar to "send" but does not shutdown the channel if an error occurs.
16127    pub fn send_no_shutdown_on_err(
16128        self,
16129        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16130    ) -> Result<(), fidl::Error> {
16131        let _result = self.send_raw(result);
16132        self.drop_without_shutdown();
16133        _result
16134    }
16135
16136    fn send_raw(
16137        &self,
16138        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16139    ) -> Result<(), fidl::Error> {
16140        self.control_handle.inner.send::<fidl::encoding::ResultType<
16141            fidl::encoding::EmptyStruct,
16142            fidl_fuchsia_posix::Errno,
16143        >>(
16144            result,
16145            self.tx_id,
16146            0x2cf1eac9a7fc8958,
16147            fidl::encoding::DynamicFlags::empty(),
16148        )
16149    }
16150}
16151
16152#[must_use = "FIDL methods require a response to be sent"]
16153#[derive(Debug)]
16154pub struct SocketGetInfoResponder {
16155    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16156    tx_id: u32,
16157}
16158
16159/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16160/// if the responder is dropped without sending a response, so that the client
16161/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16162impl std::ops::Drop for SocketGetInfoResponder {
16163    fn drop(&mut self) {
16164        self.control_handle.shutdown();
16165        // Safety: drops once, never accessed again
16166        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16167    }
16168}
16169
16170impl fidl::endpoints::Responder for SocketGetInfoResponder {
16171    type ControlHandle = SocketControlHandle;
16172
16173    fn control_handle(&self) -> &SocketControlHandle {
16174        &self.control_handle
16175    }
16176
16177    fn drop_without_shutdown(mut self) {
16178        // Safety: drops once, never accessed again due to mem::forget
16179        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16180        // Prevent Drop from running (which would shut down the channel)
16181        std::mem::forget(self);
16182    }
16183}
16184
16185impl SocketGetInfoResponder {
16186    /// Sends a response to the FIDL transaction.
16187    ///
16188    /// Sets the channel to shutdown if an error occurs.
16189    pub fn send(
16190        self,
16191        mut result: Result<
16192            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16193            fidl_fuchsia_posix::Errno,
16194        >,
16195    ) -> Result<(), fidl::Error> {
16196        let _result = self.send_raw(result);
16197        if _result.is_err() {
16198            self.control_handle.shutdown();
16199        }
16200        self.drop_without_shutdown();
16201        _result
16202    }
16203
16204    /// Similar to "send" but does not shutdown the channel if an error occurs.
16205    pub fn send_no_shutdown_on_err(
16206        self,
16207        mut result: Result<
16208            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16209            fidl_fuchsia_posix::Errno,
16210        >,
16211    ) -> Result<(), fidl::Error> {
16212        let _result = self.send_raw(result);
16213        self.drop_without_shutdown();
16214        _result
16215    }
16216
16217    fn send_raw(
16218        &self,
16219        mut result: Result<
16220            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16221            fidl_fuchsia_posix::Errno,
16222        >,
16223    ) -> Result<(), fidl::Error> {
16224        self.control_handle.inner.send::<fidl::encoding::ResultType<
16225            SocketGetInfoResponse,
16226            fidl_fuchsia_posix::Errno,
16227        >>(
16228            result,
16229            self.tx_id,
16230            0x39676f75aec339ba,
16231            fidl::encoding::DynamicFlags::empty(),
16232        )
16233    }
16234}
16235
16236#[must_use = "FIDL methods require a response to be sent"]
16237#[derive(Debug)]
16238pub struct SocketSetIpHeaderIncludedResponder {
16239    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16240    tx_id: u32,
16241}
16242
16243/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16244/// if the responder is dropped without sending a response, so that the client
16245/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16246impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16247    fn drop(&mut self) {
16248        self.control_handle.shutdown();
16249        // Safety: drops once, never accessed again
16250        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16251    }
16252}
16253
16254impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16255    type ControlHandle = SocketControlHandle;
16256
16257    fn control_handle(&self) -> &SocketControlHandle {
16258        &self.control_handle
16259    }
16260
16261    fn drop_without_shutdown(mut self) {
16262        // Safety: drops once, never accessed again due to mem::forget
16263        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16264        // Prevent Drop from running (which would shut down the channel)
16265        std::mem::forget(self);
16266    }
16267}
16268
16269impl SocketSetIpHeaderIncludedResponder {
16270    /// Sends a response to the FIDL transaction.
16271    ///
16272    /// Sets the channel to shutdown if an error occurs.
16273    pub fn send(
16274        self,
16275        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16276    ) -> Result<(), fidl::Error> {
16277        let _result = self.send_raw(result);
16278        if _result.is_err() {
16279            self.control_handle.shutdown();
16280        }
16281        self.drop_without_shutdown();
16282        _result
16283    }
16284
16285    /// Similar to "send" but does not shutdown the channel if an error occurs.
16286    pub fn send_no_shutdown_on_err(
16287        self,
16288        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16289    ) -> Result<(), fidl::Error> {
16290        let _result = self.send_raw(result);
16291        self.drop_without_shutdown();
16292        _result
16293    }
16294
16295    fn send_raw(
16296        &self,
16297        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16298    ) -> Result<(), fidl::Error> {
16299        self.control_handle.inner.send::<fidl::encoding::ResultType<
16300            fidl::encoding::EmptyStruct,
16301            fidl_fuchsia_posix::Errno,
16302        >>(
16303            result,
16304            self.tx_id,
16305            0x5d06a606d95e8f3,
16306            fidl::encoding::DynamicFlags::empty(),
16307        )
16308    }
16309}
16310
16311#[must_use = "FIDL methods require a response to be sent"]
16312#[derive(Debug)]
16313pub struct SocketGetIpHeaderIncludedResponder {
16314    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16315    tx_id: u32,
16316}
16317
16318/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16319/// if the responder is dropped without sending a response, so that the client
16320/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16321impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16322    fn drop(&mut self) {
16323        self.control_handle.shutdown();
16324        // Safety: drops once, never accessed again
16325        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16326    }
16327}
16328
16329impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16330    type ControlHandle = SocketControlHandle;
16331
16332    fn control_handle(&self) -> &SocketControlHandle {
16333        &self.control_handle
16334    }
16335
16336    fn drop_without_shutdown(mut self) {
16337        // Safety: drops once, never accessed again due to mem::forget
16338        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16339        // Prevent Drop from running (which would shut down the channel)
16340        std::mem::forget(self);
16341    }
16342}
16343
16344impl SocketGetIpHeaderIncludedResponder {
16345    /// Sends a response to the FIDL transaction.
16346    ///
16347    /// Sets the channel to shutdown if an error occurs.
16348    pub fn send(
16349        self,
16350        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16351    ) -> Result<(), fidl::Error> {
16352        let _result = self.send_raw(result);
16353        if _result.is_err() {
16354            self.control_handle.shutdown();
16355        }
16356        self.drop_without_shutdown();
16357        _result
16358    }
16359
16360    /// Similar to "send" but does not shutdown the channel if an error occurs.
16361    pub fn send_no_shutdown_on_err(
16362        self,
16363        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16364    ) -> Result<(), fidl::Error> {
16365        let _result = self.send_raw(result);
16366        self.drop_without_shutdown();
16367        _result
16368    }
16369
16370    fn send_raw(
16371        &self,
16372        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16373    ) -> Result<(), fidl::Error> {
16374        self.control_handle.inner.send::<fidl::encoding::ResultType<
16375            SocketGetIpHeaderIncludedResponse,
16376            fidl_fuchsia_posix::Errno,
16377        >>(
16378            result.map(|value| (value,)),
16379            self.tx_id,
16380            0x76125ad1f4d175f6,
16381            fidl::encoding::DynamicFlags::empty(),
16382        )
16383    }
16384}
16385
16386#[must_use = "FIDL methods require a response to be sent"]
16387#[derive(Debug)]
16388pub struct SocketSetIcmpv6FilterResponder {
16389    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16390    tx_id: u32,
16391}
16392
16393/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16394/// if the responder is dropped without sending a response, so that the client
16395/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16396impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16397    fn drop(&mut self) {
16398        self.control_handle.shutdown();
16399        // Safety: drops once, never accessed again
16400        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16401    }
16402}
16403
16404impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16405    type ControlHandle = SocketControlHandle;
16406
16407    fn control_handle(&self) -> &SocketControlHandle {
16408        &self.control_handle
16409    }
16410
16411    fn drop_without_shutdown(mut self) {
16412        // Safety: drops once, never accessed again due to mem::forget
16413        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16414        // Prevent Drop from running (which would shut down the channel)
16415        std::mem::forget(self);
16416    }
16417}
16418
16419impl SocketSetIcmpv6FilterResponder {
16420    /// Sends a response to the FIDL transaction.
16421    ///
16422    /// Sets the channel to shutdown if an error occurs.
16423    pub fn send(
16424        self,
16425        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16426    ) -> Result<(), fidl::Error> {
16427        let _result = self.send_raw(result);
16428        if _result.is_err() {
16429            self.control_handle.shutdown();
16430        }
16431        self.drop_without_shutdown();
16432        _result
16433    }
16434
16435    /// Similar to "send" but does not shutdown the channel if an error occurs.
16436    pub fn send_no_shutdown_on_err(
16437        self,
16438        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16439    ) -> Result<(), fidl::Error> {
16440        let _result = self.send_raw(result);
16441        self.drop_without_shutdown();
16442        _result
16443    }
16444
16445    fn send_raw(
16446        &self,
16447        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16448    ) -> Result<(), fidl::Error> {
16449        self.control_handle.inner.send::<fidl::encoding::ResultType<
16450            fidl::encoding::EmptyStruct,
16451            fidl_fuchsia_posix::Errno,
16452        >>(
16453            result,
16454            self.tx_id,
16455            0x4ebea92a43ae68a9,
16456            fidl::encoding::DynamicFlags::empty(),
16457        )
16458    }
16459}
16460
16461#[must_use = "FIDL methods require a response to be sent"]
16462#[derive(Debug)]
16463pub struct SocketGetIcmpv6FilterResponder {
16464    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16465    tx_id: u32,
16466}
16467
16468/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16469/// if the responder is dropped without sending a response, so that the client
16470/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16471impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16472    fn drop(&mut self) {
16473        self.control_handle.shutdown();
16474        // Safety: drops once, never accessed again
16475        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16476    }
16477}
16478
16479impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16480    type ControlHandle = SocketControlHandle;
16481
16482    fn control_handle(&self) -> &SocketControlHandle {
16483        &self.control_handle
16484    }
16485
16486    fn drop_without_shutdown(mut self) {
16487        // Safety: drops once, never accessed again due to mem::forget
16488        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16489        // Prevent Drop from running (which would shut down the channel)
16490        std::mem::forget(self);
16491    }
16492}
16493
16494impl SocketGetIcmpv6FilterResponder {
16495    /// Sends a response to the FIDL transaction.
16496    ///
16497    /// Sets the channel to shutdown if an error occurs.
16498    pub fn send(
16499        self,
16500        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16501    ) -> Result<(), fidl::Error> {
16502        let _result = self.send_raw(result);
16503        if _result.is_err() {
16504            self.control_handle.shutdown();
16505        }
16506        self.drop_without_shutdown();
16507        _result
16508    }
16509
16510    /// Similar to "send" but does not shutdown the channel if an error occurs.
16511    pub fn send_no_shutdown_on_err(
16512        self,
16513        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16514    ) -> Result<(), fidl::Error> {
16515        let _result = self.send_raw(result);
16516        self.drop_without_shutdown();
16517        _result
16518    }
16519
16520    fn send_raw(
16521        &self,
16522        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16523    ) -> Result<(), fidl::Error> {
16524        self.control_handle.inner.send::<fidl::encoding::ResultType<
16525            SocketGetIcmpv6FilterResponse,
16526            fidl_fuchsia_posix::Errno,
16527        >>(
16528            result.map(|filter| (filter,)),
16529            self.tx_id,
16530            0x43bd4f3bc0970ace,
16531            fidl::encoding::DynamicFlags::empty(),
16532        )
16533    }
16534}
16535
16536#[must_use = "FIDL methods require a response to be sent"]
16537#[derive(Debug)]
16538pub struct SocketSetIpv6ChecksumResponder {
16539    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16540    tx_id: u32,
16541}
16542
16543/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16544/// if the responder is dropped without sending a response, so that the client
16545/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16546impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16547    fn drop(&mut self) {
16548        self.control_handle.shutdown();
16549        // Safety: drops once, never accessed again
16550        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16551    }
16552}
16553
16554impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16555    type ControlHandle = SocketControlHandle;
16556
16557    fn control_handle(&self) -> &SocketControlHandle {
16558        &self.control_handle
16559    }
16560
16561    fn drop_without_shutdown(mut self) {
16562        // Safety: drops once, never accessed again due to mem::forget
16563        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16564        // Prevent Drop from running (which would shut down the channel)
16565        std::mem::forget(self);
16566    }
16567}
16568
16569impl SocketSetIpv6ChecksumResponder {
16570    /// Sends a response to the FIDL transaction.
16571    ///
16572    /// Sets the channel to shutdown if an error occurs.
16573    pub fn send(
16574        self,
16575        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16576    ) -> Result<(), fidl::Error> {
16577        let _result = self.send_raw(result);
16578        if _result.is_err() {
16579            self.control_handle.shutdown();
16580        }
16581        self.drop_without_shutdown();
16582        _result
16583    }
16584
16585    /// Similar to "send" but does not shutdown the channel if an error occurs.
16586    pub fn send_no_shutdown_on_err(
16587        self,
16588        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16589    ) -> Result<(), fidl::Error> {
16590        let _result = self.send_raw(result);
16591        self.drop_without_shutdown();
16592        _result
16593    }
16594
16595    fn send_raw(
16596        &self,
16597        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16598    ) -> Result<(), fidl::Error> {
16599        self.control_handle.inner.send::<fidl::encoding::ResultType<
16600            fidl::encoding::EmptyStruct,
16601            fidl_fuchsia_posix::Errno,
16602        >>(
16603            result,
16604            self.tx_id,
16605            0x18b7809577199cb4,
16606            fidl::encoding::DynamicFlags::empty(),
16607        )
16608    }
16609}
16610
16611#[must_use = "FIDL methods require a response to be sent"]
16612#[derive(Debug)]
16613pub struct SocketGetIpv6ChecksumResponder {
16614    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16615    tx_id: u32,
16616}
16617
16618/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16619/// if the responder is dropped without sending a response, so that the client
16620/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16621impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16622    fn drop(&mut self) {
16623        self.control_handle.shutdown();
16624        // Safety: drops once, never accessed again
16625        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16626    }
16627}
16628
16629impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16630    type ControlHandle = SocketControlHandle;
16631
16632    fn control_handle(&self) -> &SocketControlHandle {
16633        &self.control_handle
16634    }
16635
16636    fn drop_without_shutdown(mut self) {
16637        // Safety: drops once, never accessed again due to mem::forget
16638        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16639        // Prevent Drop from running (which would shut down the channel)
16640        std::mem::forget(self);
16641    }
16642}
16643
16644impl SocketGetIpv6ChecksumResponder {
16645    /// Sends a response to the FIDL transaction.
16646    ///
16647    /// Sets the channel to shutdown if an error occurs.
16648    pub fn send(
16649        self,
16650        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16651    ) -> Result<(), fidl::Error> {
16652        let _result = self.send_raw(result);
16653        if _result.is_err() {
16654            self.control_handle.shutdown();
16655        }
16656        self.drop_without_shutdown();
16657        _result
16658    }
16659
16660    /// Similar to "send" but does not shutdown the channel if an error occurs.
16661    pub fn send_no_shutdown_on_err(
16662        self,
16663        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16664    ) -> Result<(), fidl::Error> {
16665        let _result = self.send_raw(result);
16666        self.drop_without_shutdown();
16667        _result
16668    }
16669
16670    fn send_raw(
16671        &self,
16672        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16673    ) -> Result<(), fidl::Error> {
16674        self.control_handle.inner.send::<fidl::encoding::ResultType<
16675            SocketGetIpv6ChecksumResponse,
16676            fidl_fuchsia_posix::Errno,
16677        >>(
16678            result.map(|config| (config,)),
16679            self.tx_id,
16680            0x1847bf5b2d263dd,
16681            fidl::encoding::DynamicFlags::empty(),
16682        )
16683    }
16684}
16685
16686mod internal {
16687    use super::*;
16688
16689    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsRequest {
16690        type Borrowed<'a> = &'a mut Self;
16691        fn take_or_borrow<'a>(
16692            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16693        ) -> Self::Borrowed<'a> {
16694            value
16695        }
16696    }
16697
16698    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16699        type Owned = Self;
16700
16701        #[inline(always)]
16702        fn inline_align(_context: fidl::encoding::Context) -> usize {
16703            8
16704        }
16705
16706        #[inline(always)]
16707        fn inline_size(_context: fidl::encoding::Context) -> usize {
16708            40
16709        }
16710    }
16711
16712    unsafe impl
16713        fidl::encoding::Encode<
16714            ProviderSocketWithOptionsRequest,
16715            fidl::encoding::DefaultFuchsiaResourceDialect,
16716        > for &mut ProviderSocketWithOptionsRequest
16717    {
16718        #[inline]
16719        unsafe fn encode(
16720            self,
16721            encoder: &mut fidl::encoding::Encoder<
16722                '_,
16723                fidl::encoding::DefaultFuchsiaResourceDialect,
16724            >,
16725            offset: usize,
16726            _depth: fidl::encoding::Depth,
16727        ) -> fidl::Result<()> {
16728            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16729            // Delegate to tuple encoding.
16730            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16731                (
16732                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16733                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16734                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.opts),
16735                ),
16736                encoder, offset, _depth
16737            )
16738        }
16739    }
16740    unsafe impl<
16741        T0: fidl::encoding::Encode<
16742                fidl_fuchsia_posix_socket::Domain,
16743                fidl::encoding::DefaultFuchsiaResourceDialect,
16744            >,
16745        T1: fidl::encoding::Encode<ProtocolAssociation, fidl::encoding::DefaultFuchsiaResourceDialect>,
16746        T2: fidl::encoding::Encode<
16747                fidl_fuchsia_posix_socket::SocketCreationOptions,
16748                fidl::encoding::DefaultFuchsiaResourceDialect,
16749            >,
16750    >
16751        fidl::encoding::Encode<
16752            ProviderSocketWithOptionsRequest,
16753            fidl::encoding::DefaultFuchsiaResourceDialect,
16754        > for (T0, T1, T2)
16755    {
16756        #[inline]
16757        unsafe fn encode(
16758            self,
16759            encoder: &mut fidl::encoding::Encoder<
16760                '_,
16761                fidl::encoding::DefaultFuchsiaResourceDialect,
16762            >,
16763            offset: usize,
16764            depth: fidl::encoding::Depth,
16765        ) -> fidl::Result<()> {
16766            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16767            // Zero out padding regions. There's no need to apply masks
16768            // because the unmasked parts will be overwritten by fields.
16769            unsafe {
16770                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16771                (ptr as *mut u64).write_unaligned(0);
16772            }
16773            // Write the fields.
16774            self.0.encode(encoder, offset + 0, depth)?;
16775            self.1.encode(encoder, offset + 8, depth)?;
16776            self.2.encode(encoder, offset + 24, depth)?;
16777            Ok(())
16778        }
16779    }
16780
16781    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16782        for ProviderSocketWithOptionsRequest
16783    {
16784        #[inline(always)]
16785        fn new_empty() -> Self {
16786            Self {
16787                domain: fidl::new_empty!(
16788                    fidl_fuchsia_posix_socket::Domain,
16789                    fidl::encoding::DefaultFuchsiaResourceDialect
16790                ),
16791                proto: fidl::new_empty!(
16792                    ProtocolAssociation,
16793                    fidl::encoding::DefaultFuchsiaResourceDialect
16794                ),
16795                opts: fidl::new_empty!(
16796                    fidl_fuchsia_posix_socket::SocketCreationOptions,
16797                    fidl::encoding::DefaultFuchsiaResourceDialect
16798                ),
16799            }
16800        }
16801
16802        #[inline]
16803        unsafe fn decode(
16804            &mut self,
16805            decoder: &mut fidl::encoding::Decoder<
16806                '_,
16807                fidl::encoding::DefaultFuchsiaResourceDialect,
16808            >,
16809            offset: usize,
16810            _depth: fidl::encoding::Depth,
16811        ) -> fidl::Result<()> {
16812            decoder.debug_check_bounds::<Self>(offset);
16813            // Verify that padding bytes are zero.
16814            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16815            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16816            let mask = 0xffffffffffff0000u64;
16817            let maskedval = padval & mask;
16818            if maskedval != 0 {
16819                return Err(fidl::Error::NonZeroPadding {
16820                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16821                });
16822            }
16823            fidl::decode!(
16824                fidl_fuchsia_posix_socket::Domain,
16825                fidl::encoding::DefaultFuchsiaResourceDialect,
16826                &mut self.domain,
16827                decoder,
16828                offset + 0,
16829                _depth
16830            )?;
16831            fidl::decode!(
16832                ProtocolAssociation,
16833                fidl::encoding::DefaultFuchsiaResourceDialect,
16834                &mut self.proto,
16835                decoder,
16836                offset + 8,
16837                _depth
16838            )?;
16839            fidl::decode!(
16840                fidl_fuchsia_posix_socket::SocketCreationOptions,
16841                fidl::encoding::DefaultFuchsiaResourceDialect,
16842                &mut self.opts,
16843                decoder,
16844                offset + 24,
16845                _depth
16846            )?;
16847            Ok(())
16848        }
16849    }
16850
16851    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16852        type Borrowed<'a> = &'a mut Self;
16853        fn take_or_borrow<'a>(
16854            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16855        ) -> Self::Borrowed<'a> {
16856            value
16857        }
16858    }
16859
16860    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16861        type Owned = Self;
16862
16863        #[inline(always)]
16864        fn inline_align(_context: fidl::encoding::Context) -> usize {
16865            4
16866        }
16867
16868        #[inline(always)]
16869        fn inline_size(_context: fidl::encoding::Context) -> usize {
16870            4
16871        }
16872    }
16873
16874    unsafe impl
16875        fidl::encoding::Encode<
16876            ProviderSocketWithOptionsResponse,
16877            fidl::encoding::DefaultFuchsiaResourceDialect,
16878        > for &mut ProviderSocketWithOptionsResponse
16879    {
16880        #[inline]
16881        unsafe fn encode(
16882            self,
16883            encoder: &mut fidl::encoding::Encoder<
16884                '_,
16885                fidl::encoding::DefaultFuchsiaResourceDialect,
16886            >,
16887            offset: usize,
16888            _depth: fidl::encoding::Depth,
16889        ) -> fidl::Result<()> {
16890            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16891            // Delegate to tuple encoding.
16892            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16893                (
16894                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
16895                ),
16896                encoder, offset, _depth
16897            )
16898        }
16899    }
16900    unsafe impl<
16901        T0: fidl::encoding::Encode<
16902                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16903                fidl::encoding::DefaultFuchsiaResourceDialect,
16904            >,
16905    >
16906        fidl::encoding::Encode<
16907            ProviderSocketWithOptionsResponse,
16908            fidl::encoding::DefaultFuchsiaResourceDialect,
16909        > for (T0,)
16910    {
16911        #[inline]
16912        unsafe fn encode(
16913            self,
16914            encoder: &mut fidl::encoding::Encoder<
16915                '_,
16916                fidl::encoding::DefaultFuchsiaResourceDialect,
16917            >,
16918            offset: usize,
16919            depth: fidl::encoding::Depth,
16920        ) -> fidl::Result<()> {
16921            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16922            // Zero out padding regions. There's no need to apply masks
16923            // because the unmasked parts will be overwritten by fields.
16924            // Write the fields.
16925            self.0.encode(encoder, offset + 0, depth)?;
16926            Ok(())
16927        }
16928    }
16929
16930    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16931        for ProviderSocketWithOptionsResponse
16932    {
16933        #[inline(always)]
16934        fn new_empty() -> Self {
16935            Self {
16936                s: fidl::new_empty!(
16937                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16938                    fidl::encoding::DefaultFuchsiaResourceDialect
16939                ),
16940            }
16941        }
16942
16943        #[inline]
16944        unsafe fn decode(
16945            &mut self,
16946            decoder: &mut fidl::encoding::Decoder<
16947                '_,
16948                fidl::encoding::DefaultFuchsiaResourceDialect,
16949            >,
16950            offset: usize,
16951            _depth: fidl::encoding::Depth,
16952        ) -> fidl::Result<()> {
16953            decoder.debug_check_bounds::<Self>(offset);
16954            // Verify that padding bytes are zero.
16955            fidl::decode!(
16956                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16957                fidl::encoding::DefaultFuchsiaResourceDialect,
16958                &mut self.s,
16959                decoder,
16960                offset + 0,
16961                _depth
16962            )?;
16963            Ok(())
16964        }
16965    }
16966
16967    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
16968        type Borrowed<'a> = &'a mut Self;
16969        fn take_or_borrow<'a>(
16970            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16971        ) -> Self::Borrowed<'a> {
16972            value
16973        }
16974    }
16975
16976    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
16977        type Owned = Self;
16978
16979        #[inline(always)]
16980        fn inline_align(_context: fidl::encoding::Context) -> usize {
16981            4
16982        }
16983
16984        #[inline(always)]
16985        fn inline_size(_context: fidl::encoding::Context) -> usize {
16986            4
16987        }
16988    }
16989
16990    unsafe impl
16991        fidl::encoding::Encode<
16992            ProviderSocketResponse,
16993            fidl::encoding::DefaultFuchsiaResourceDialect,
16994        > for &mut ProviderSocketResponse
16995    {
16996        #[inline]
16997        unsafe fn encode(
16998            self,
16999            encoder: &mut fidl::encoding::Encoder<
17000                '_,
17001                fidl::encoding::DefaultFuchsiaResourceDialect,
17002            >,
17003            offset: usize,
17004            _depth: fidl::encoding::Depth,
17005        ) -> fidl::Result<()> {
17006            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17007            // Delegate to tuple encoding.
17008            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17009                (
17010                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17011                ),
17012                encoder, offset, _depth
17013            )
17014        }
17015    }
17016    unsafe impl<
17017        T0: fidl::encoding::Encode<
17018                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17019                fidl::encoding::DefaultFuchsiaResourceDialect,
17020            >,
17021    >
17022        fidl::encoding::Encode<
17023            ProviderSocketResponse,
17024            fidl::encoding::DefaultFuchsiaResourceDialect,
17025        > for (T0,)
17026    {
17027        #[inline]
17028        unsafe fn encode(
17029            self,
17030            encoder: &mut fidl::encoding::Encoder<
17031                '_,
17032                fidl::encoding::DefaultFuchsiaResourceDialect,
17033            >,
17034            offset: usize,
17035            depth: fidl::encoding::Depth,
17036        ) -> fidl::Result<()> {
17037            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17038            // Zero out padding regions. There's no need to apply masks
17039            // because the unmasked parts will be overwritten by fields.
17040            // Write the fields.
17041            self.0.encode(encoder, offset + 0, depth)?;
17042            Ok(())
17043        }
17044    }
17045
17046    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17047        for ProviderSocketResponse
17048    {
17049        #[inline(always)]
17050        fn new_empty() -> Self {
17051            Self {
17052                s: fidl::new_empty!(
17053                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17054                    fidl::encoding::DefaultFuchsiaResourceDialect
17055                ),
17056            }
17057        }
17058
17059        #[inline]
17060        unsafe fn decode(
17061            &mut self,
17062            decoder: &mut fidl::encoding::Decoder<
17063                '_,
17064                fidl::encoding::DefaultFuchsiaResourceDialect,
17065            >,
17066            offset: usize,
17067            _depth: fidl::encoding::Depth,
17068        ) -> fidl::Result<()> {
17069            decoder.debug_check_bounds::<Self>(offset);
17070            // Verify that padding bytes are zero.
17071            fidl::decode!(
17072                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17073                fidl::encoding::DefaultFuchsiaResourceDialect,
17074                &mut self.s,
17075                decoder,
17076                offset + 0,
17077                _depth
17078            )?;
17079            Ok(())
17080        }
17081    }
17082
17083    impl SocketDescribeResponse {
17084        #[inline(always)]
17085        fn max_ordinal_present(&self) -> u64 {
17086            if let Some(_) = self.event {
17087                return 1;
17088            }
17089            0
17090        }
17091    }
17092
17093    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
17094        type Borrowed<'a> = &'a mut Self;
17095        fn take_or_borrow<'a>(
17096            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17097        ) -> Self::Borrowed<'a> {
17098            value
17099        }
17100    }
17101
17102    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
17103        type Owned = Self;
17104
17105        #[inline(always)]
17106        fn inline_align(_context: fidl::encoding::Context) -> usize {
17107            8
17108        }
17109
17110        #[inline(always)]
17111        fn inline_size(_context: fidl::encoding::Context) -> usize {
17112            16
17113        }
17114    }
17115
17116    unsafe impl
17117        fidl::encoding::Encode<
17118            SocketDescribeResponse,
17119            fidl::encoding::DefaultFuchsiaResourceDialect,
17120        > for &mut SocketDescribeResponse
17121    {
17122        unsafe fn encode(
17123            self,
17124            encoder: &mut fidl::encoding::Encoder<
17125                '_,
17126                fidl::encoding::DefaultFuchsiaResourceDialect,
17127            >,
17128            offset: usize,
17129            mut depth: fidl::encoding::Depth,
17130        ) -> fidl::Result<()> {
17131            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
17132            // Vector header
17133            let max_ordinal: u64 = self.max_ordinal_present();
17134            encoder.write_num(max_ordinal, offset);
17135            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17136            // Calling encoder.out_of_line_offset(0) is not allowed.
17137            if max_ordinal == 0 {
17138                return Ok(());
17139            }
17140            depth.increment()?;
17141            let envelope_size = 8;
17142            let bytes_len = max_ordinal as usize * envelope_size;
17143            #[allow(unused_variables)]
17144            let offset = encoder.out_of_line_offset(bytes_len);
17145            let mut _prev_end_offset: usize = 0;
17146            if 1 > max_ordinal {
17147                return Ok(());
17148            }
17149
17150            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17151            // are envelope_size bytes.
17152            let cur_offset: usize = (1 - 1) * envelope_size;
17153
17154            // Zero reserved fields.
17155            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17156
17157            // Safety:
17158            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17159            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17160            //   envelope_size bytes, there is always sufficient room.
17161            fidl::encoding::encode_in_envelope_optional::<
17162                fidl::encoding::HandleType<
17163                    fidl::EventPair,
17164                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17165                    2147483648,
17166                >,
17167                fidl::encoding::DefaultFuchsiaResourceDialect,
17168            >(
17169                self.event.as_mut().map(
17170                    <fidl::encoding::HandleType<
17171                        fidl::EventPair,
17172                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17173                        2147483648,
17174                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
17175                ),
17176                encoder,
17177                offset + cur_offset,
17178                depth,
17179            )?;
17180
17181            _prev_end_offset = cur_offset + envelope_size;
17182
17183            Ok(())
17184        }
17185    }
17186
17187    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17188        for SocketDescribeResponse
17189    {
17190        #[inline(always)]
17191        fn new_empty() -> Self {
17192            Self::default()
17193        }
17194
17195        unsafe fn decode(
17196            &mut self,
17197            decoder: &mut fidl::encoding::Decoder<
17198                '_,
17199                fidl::encoding::DefaultFuchsiaResourceDialect,
17200            >,
17201            offset: usize,
17202            mut depth: fidl::encoding::Depth,
17203        ) -> fidl::Result<()> {
17204            decoder.debug_check_bounds::<Self>(offset);
17205            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17206                None => return Err(fidl::Error::NotNullable),
17207                Some(len) => len,
17208            };
17209            // Calling decoder.out_of_line_offset(0) is not allowed.
17210            if len == 0 {
17211                return Ok(());
17212            };
17213            depth.increment()?;
17214            let envelope_size = 8;
17215            let bytes_len = len * envelope_size;
17216            let offset = decoder.out_of_line_offset(bytes_len)?;
17217            // Decode the envelope for each type.
17218            let mut _next_ordinal_to_read = 0;
17219            let mut next_offset = offset;
17220            let end_offset = offset + bytes_len;
17221            _next_ordinal_to_read += 1;
17222            if next_offset >= end_offset {
17223                return Ok(());
17224            }
17225
17226            // Decode unknown envelopes for gaps in ordinals.
17227            while _next_ordinal_to_read < 1 {
17228                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17229                _next_ordinal_to_read += 1;
17230                next_offset += envelope_size;
17231            }
17232
17233            let next_out_of_line = decoder.next_out_of_line();
17234            let handles_before = decoder.remaining_handles();
17235            if let Some((inlined, num_bytes, num_handles)) =
17236                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17237            {
17238                let member_inline_size = <fidl::encoding::HandleType<
17239                    fidl::EventPair,
17240                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17241                    2147483648,
17242                > as fidl::encoding::TypeMarker>::inline_size(
17243                    decoder.context
17244                );
17245                if inlined != (member_inline_size <= 4) {
17246                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17247                }
17248                let inner_offset;
17249                let mut inner_depth = depth.clone();
17250                if inlined {
17251                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17252                    inner_offset = next_offset;
17253                } else {
17254                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17255                    inner_depth.increment()?;
17256                }
17257                let val_ref =
17258                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
17259                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
17260                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17261                {
17262                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17263                }
17264                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17265                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17266                }
17267            }
17268
17269            next_offset += envelope_size;
17270
17271            // Decode the remaining unknown envelopes.
17272            while next_offset < end_offset {
17273                _next_ordinal_to_read += 1;
17274                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17275                next_offset += envelope_size;
17276            }
17277
17278            Ok(())
17279        }
17280    }
17281}