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 _};
10use futures::future::{self, MaybeDone, TryFutureExt};
11use zx_status;
12
13/// The protocol a raw socket may be associated with.
14pub type Protocol = u8;
15
16pub const SOCKET_PROTOCOL_NAME: &str = "fuchsia.posix.socket.raw/Socket";
17
18#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
19pub struct Empty;
20
21impl fidl::Persistable for Empty {}
22
23/// A filter for ICMPv6 types.
24#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
25#[repr(C)]
26pub struct Icmpv6Filter {
27    /// Indicates whether or not an ICMPv6 type should be blocked.
28    ///
29    /// Each bit index encodes an ICMPv6 type; bit 0 in `blocked_types[0]` holds
30    /// the flag for ICMPv6 type 0 and bit 31 in `blocked_types[7]` holds the
31    /// flag for ICMPv6 type 255.
32    ///
33    /// Equivalent to Linux's `icmp6_filter.icmp6_filt`.
34    pub blocked_types: [u32; 8],
35}
36
37impl fidl::Persistable for Icmpv6Filter {}
38
39#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
40pub struct ProviderSocketRequest {
41    pub domain: fidl_fuchsia_posix_socket::Domain,
42    pub proto: ProtocolAssociation,
43}
44
45impl fidl::Persistable for ProviderSocketRequest {}
46
47#[derive(Clone, Debug, PartialEq)]
48pub struct ProviderSocketWithOptionsRequest {
49    pub domain: fidl_fuchsia_posix_socket::Domain,
50    pub proto: ProtocolAssociation,
51    pub opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
52}
53
54impl fidl::Persistable for ProviderSocketWithOptionsRequest {}
55
56#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
57pub struct ProviderSocketWithOptionsResponse {
58    pub s: fidl::endpoints::ClientEnd<SocketMarker>,
59}
60
61impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
62    for ProviderSocketWithOptionsResponse
63{
64}
65
66#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
67pub struct ProviderSocketResponse {
68    pub s: fidl::endpoints::ClientEnd<SocketMarker>,
69}
70
71impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ProviderSocketResponse {}
72
73#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
74pub struct SocketRecvMsgRequest {
75    pub want_addr: bool,
76    pub data_len: u32,
77    pub want_control: bool,
78    pub flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
79}
80
81impl fidl::Persistable for SocketRecvMsgRequest {}
82
83#[derive(Clone, Debug, PartialEq)]
84pub struct SocketSendMsgRequest {
85    pub addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
86    pub data: Vec<u8>,
87    pub control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
88    pub flags: fidl_fuchsia_posix_socket::SendMsgFlags,
89}
90
91impl fidl::Persistable for SocketSendMsgRequest {}
92
93#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
94#[repr(C)]
95pub struct SocketSetIcmpv6FilterRequest {
96    pub filter: Icmpv6Filter,
97}
98
99impl fidl::Persistable for SocketSetIcmpv6FilterRequest {}
100
101#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
102pub struct SocketSetIpHeaderIncludedRequest {
103    pub value: bool,
104}
105
106impl fidl::Persistable for SocketSetIpHeaderIncludedRequest {}
107
108#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
109pub struct SocketSetIpv6ChecksumRequest {
110    pub config: Ipv6ChecksumConfiguration,
111}
112
113impl fidl::Persistable for SocketSetIpv6ChecksumRequest {}
114
115#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
116#[repr(C)]
117pub struct SocketGetIcmpv6FilterResponse {
118    pub filter: Icmpv6Filter,
119}
120
121impl fidl::Persistable for SocketGetIcmpv6FilterResponse {}
122
123#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
124pub struct SocketGetInfoResponse {
125    pub domain: fidl_fuchsia_posix_socket::Domain,
126    pub proto: ProtocolAssociation,
127}
128
129impl fidl::Persistable for SocketGetInfoResponse {}
130
131#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
132pub struct SocketGetIpHeaderIncludedResponse {
133    pub value: bool,
134}
135
136impl fidl::Persistable for SocketGetIpHeaderIncludedResponse {}
137
138#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
139pub struct SocketGetIpv6ChecksumResponse {
140    pub config: Ipv6ChecksumConfiguration,
141}
142
143impl fidl::Persistable for SocketGetIpv6ChecksumResponse {}
144
145#[derive(Clone, Debug, PartialEq)]
146pub struct SocketRecvMsgResponse {
147    pub addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
148    pub data: Vec<u8>,
149    pub control: fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
150    pub truncated: u32,
151}
152
153impl fidl::Persistable for SocketRecvMsgResponse {}
154
155#[derive(Debug, Default, PartialEq)]
156pub struct SocketDescribeResponse {
157    /// Signals additional information about the state of the socket such as
158    /// readiness or shutdown-ness.
159    pub event: Option<fidl::EventPair>,
160    #[doc(hidden)]
161    pub __source_breaking: fidl::marker::SourceBreaking,
162}
163
164impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for SocketDescribeResponse {}
165
166/// IPv6 socket checksum configuration.
167#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
168pub enum Ipv6ChecksumConfiguration {
169    /// Indicates that the stack should not calculate checksums for outgoing
170    /// packets and valiate checksums for incoming packets.
171    Disabled(Empty),
172    /// Indicates that the stack should calculate checksums for outgoing packets
173    /// and validate checksums for incoming packets.
174    ///
175    /// `offset` indicates where the checksum is found in the IPv6 packet's
176    /// payload.
177    ///
178    /// The offset must be aligned to the size of an internet checksum as
179    /// specified in RFC 1071. That is, the offset must be 2-byte aligned.
180    Offset(i32),
181}
182
183impl Ipv6ChecksumConfiguration {
184    #[inline]
185    pub fn ordinal(&self) -> u64 {
186        match *self {
187            Self::Disabled(_) => 1,
188            Self::Offset(_) => 2,
189        }
190    }
191
192    #[deprecated = "Strict unions should not use `is_unknown`"]
193    #[inline]
194    pub fn is_unknown(&self) -> bool {
195        false
196    }
197}
198
199impl fidl::Persistable for Ipv6ChecksumConfiguration {}
200
201/// The protocol a raw socket is associated with.
202#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
203pub enum ProtocolAssociation {
204    /// Indicates no association with any protocol.
205    ///
206    /// The socket will not receive packets. Sent packets must include the
207    /// network header.
208    Unassociated(Empty),
209    /// The associated protocol.
210    ///
211    /// The socket may only send and receive network packets for the associated
212    /// protocol.
213    Associated(u8),
214}
215
216impl ProtocolAssociation {
217    #[inline]
218    pub fn ordinal(&self) -> u64 {
219        match *self {
220            Self::Unassociated(_) => 1,
221            Self::Associated(_) => 2,
222        }
223    }
224
225    #[deprecated = "Strict unions should not use `is_unknown`"]
226    #[inline]
227    pub fn is_unknown(&self) -> bool {
228        false
229    }
230}
231
232impl fidl::Persistable for ProtocolAssociation {}
233
234#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
235pub struct ProviderMarker;
236
237impl fidl::endpoints::ProtocolMarker for ProviderMarker {
238    type Proxy = ProviderProxy;
239    type RequestStream = ProviderRequestStream;
240    #[cfg(target_os = "fuchsia")]
241    type SynchronousProxy = ProviderSynchronousProxy;
242
243    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Provider";
244}
245impl fidl::endpoints::DiscoverableProtocolMarker for ProviderMarker {}
246pub type ProviderSocketResult =
247    Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>;
248pub type ProviderSocketWithOptionsResult =
249    Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>;
250
251pub trait ProviderProxyInterface: Send + Sync {
252    type SocketResponseFut: std::future::Future<Output = Result<ProviderSocketResult, fidl::Error>>
253        + Send;
254    fn r#socket(
255        &self,
256        domain: fidl_fuchsia_posix_socket::Domain,
257        proto: &ProtocolAssociation,
258    ) -> Self::SocketResponseFut;
259    type SocketWithOptionsResponseFut: std::future::Future<Output = Result<ProviderSocketWithOptionsResult, fidl::Error>>
260        + Send;
261    fn r#socket_with_options(
262        &self,
263        domain: fidl_fuchsia_posix_socket::Domain,
264        proto: &ProtocolAssociation,
265        opts: &fidl_fuchsia_posix_socket::SocketCreationOptions,
266    ) -> Self::SocketWithOptionsResponseFut;
267}
268#[derive(Debug)]
269#[cfg(target_os = "fuchsia")]
270pub struct ProviderSynchronousProxy {
271    client: fidl::client::sync::Client,
272}
273
274#[cfg(target_os = "fuchsia")]
275impl fidl::endpoints::SynchronousProxy for ProviderSynchronousProxy {
276    type Proxy = ProviderProxy;
277    type Protocol = ProviderMarker;
278
279    fn from_channel(inner: fidl::Channel) -> Self {
280        Self::new(inner)
281    }
282
283    fn into_channel(self) -> fidl::Channel {
284        self.client.into_channel()
285    }
286
287    fn as_channel(&self) -> &fidl::Channel {
288        self.client.as_channel()
289    }
290}
291
292#[cfg(target_os = "fuchsia")]
293impl ProviderSynchronousProxy {
294    pub fn new(channel: fidl::Channel) -> Self {
295        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
296        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
297    }
298
299    pub fn into_channel(self) -> fidl::Channel {
300        self.client.into_channel()
301    }
302
303    /// Waits until an event arrives and returns it. It is safe for other
304    /// threads to make concurrent requests while waiting for an event.
305    pub fn wait_for_event(
306        &self,
307        deadline: zx::MonotonicInstant,
308    ) -> Result<ProviderEvent, fidl::Error> {
309        ProviderEvent::decode(self.client.wait_for_event(deadline)?)
310    }
311
312    /// Requests a raw socket.
313    pub fn r#socket(
314        &self,
315        mut domain: fidl_fuchsia_posix_socket::Domain,
316        mut proto: &ProtocolAssociation,
317        ___deadline: zx::MonotonicInstant,
318    ) -> Result<ProviderSocketResult, fidl::Error> {
319        let _response =
320            self.client.send_query::<ProviderSocketRequest, fidl::encoding::ResultType<
321                ProviderSocketResponse,
322                fidl_fuchsia_posix::Errno,
323            >>(
324                (domain, proto),
325                0xdfa6a591ab48fd1,
326                fidl::encoding::DynamicFlags::empty(),
327                ___deadline,
328            )?;
329        Ok(_response.map(|x| x.s))
330    }
331
332    /// Requests a raw socket with creation options.
333    pub fn r#socket_with_options(
334        &self,
335        mut domain: fidl_fuchsia_posix_socket::Domain,
336        mut proto: &ProtocolAssociation,
337        mut opts: &fidl_fuchsia_posix_socket::SocketCreationOptions,
338        ___deadline: zx::MonotonicInstant,
339    ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
340        let _response =
341            self.client.send_query::<ProviderSocketWithOptionsRequest, fidl::encoding::ResultType<
342                ProviderSocketWithOptionsResponse,
343                fidl_fuchsia_posix::Errno,
344            >>(
345                (domain, proto, opts),
346                0x34cd6e7e82c46f85,
347                fidl::encoding::DynamicFlags::empty(),
348                ___deadline,
349            )?;
350        Ok(_response.map(|x| x.s))
351    }
352}
353
354#[derive(Debug, Clone)]
355pub struct ProviderProxy {
356    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
357}
358
359impl fidl::endpoints::Proxy for ProviderProxy {
360    type Protocol = ProviderMarker;
361
362    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
363        Self::new(inner)
364    }
365
366    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
367        self.client.into_channel().map_err(|client| Self { client })
368    }
369
370    fn as_channel(&self) -> &::fidl::AsyncChannel {
371        self.client.as_channel()
372    }
373}
374
375impl ProviderProxy {
376    /// Create a new Proxy for fuchsia.posix.socket.raw/Provider.
377    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
378        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
379        Self { client: fidl::client::Client::new(channel, protocol_name) }
380    }
381
382    /// Get a Stream of events from the remote end of the protocol.
383    ///
384    /// # Panics
385    ///
386    /// Panics if the event stream was already taken.
387    pub fn take_event_stream(&self) -> ProviderEventStream {
388        ProviderEventStream { event_receiver: self.client.take_event_receiver() }
389    }
390
391    /// Requests a raw socket.
392    pub fn r#socket(
393        &self,
394        mut domain: fidl_fuchsia_posix_socket::Domain,
395        mut proto: &ProtocolAssociation,
396    ) -> fidl::client::QueryResponseFut<
397        ProviderSocketResult,
398        fidl::encoding::DefaultFuchsiaResourceDialect,
399    > {
400        ProviderProxyInterface::r#socket(self, domain, proto)
401    }
402
403    /// Requests a raw socket with creation options.
404    pub fn r#socket_with_options(
405        &self,
406        mut domain: fidl_fuchsia_posix_socket::Domain,
407        mut proto: &ProtocolAssociation,
408        mut opts: &fidl_fuchsia_posix_socket::SocketCreationOptions,
409    ) -> fidl::client::QueryResponseFut<
410        ProviderSocketWithOptionsResult,
411        fidl::encoding::DefaultFuchsiaResourceDialect,
412    > {
413        ProviderProxyInterface::r#socket_with_options(self, domain, proto, opts)
414    }
415}
416
417impl ProviderProxyInterface for ProviderProxy {
418    type SocketResponseFut = fidl::client::QueryResponseFut<
419        ProviderSocketResult,
420        fidl::encoding::DefaultFuchsiaResourceDialect,
421    >;
422    fn r#socket(
423        &self,
424        mut domain: fidl_fuchsia_posix_socket::Domain,
425        mut proto: &ProtocolAssociation,
426    ) -> Self::SocketResponseFut {
427        fn _decode(
428            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
429        ) -> Result<ProviderSocketResult, fidl::Error> {
430            let _response = fidl::client::decode_transaction_body::<
431                fidl::encoding::ResultType<ProviderSocketResponse, fidl_fuchsia_posix::Errno>,
432                fidl::encoding::DefaultFuchsiaResourceDialect,
433                0xdfa6a591ab48fd1,
434            >(_buf?)?;
435            Ok(_response.map(|x| x.s))
436        }
437        self.client.send_query_and_decode::<ProviderSocketRequest, ProviderSocketResult>(
438            (domain, proto),
439            0xdfa6a591ab48fd1,
440            fidl::encoding::DynamicFlags::empty(),
441            _decode,
442        )
443    }
444
445    type SocketWithOptionsResponseFut = fidl::client::QueryResponseFut<
446        ProviderSocketWithOptionsResult,
447        fidl::encoding::DefaultFuchsiaResourceDialect,
448    >;
449    fn r#socket_with_options(
450        &self,
451        mut domain: fidl_fuchsia_posix_socket::Domain,
452        mut proto: &ProtocolAssociation,
453        mut opts: &fidl_fuchsia_posix_socket::SocketCreationOptions,
454    ) -> Self::SocketWithOptionsResponseFut {
455        fn _decode(
456            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
457        ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
458            let _response = fidl::client::decode_transaction_body::<
459                fidl::encoding::ResultType<
460                    ProviderSocketWithOptionsResponse,
461                    fidl_fuchsia_posix::Errno,
462                >,
463                fidl::encoding::DefaultFuchsiaResourceDialect,
464                0x34cd6e7e82c46f85,
465            >(_buf?)?;
466            Ok(_response.map(|x| x.s))
467        }
468        self.client.send_query_and_decode::<
469            ProviderSocketWithOptionsRequest,
470            ProviderSocketWithOptionsResult,
471        >(
472            (domain, proto, opts,),
473            0x34cd6e7e82c46f85,
474            fidl::encoding::DynamicFlags::empty(),
475            _decode,
476        )
477    }
478}
479
480pub struct ProviderEventStream {
481    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
482}
483
484impl std::marker::Unpin for ProviderEventStream {}
485
486impl futures::stream::FusedStream for ProviderEventStream {
487    fn is_terminated(&self) -> bool {
488        self.event_receiver.is_terminated()
489    }
490}
491
492impl futures::Stream for ProviderEventStream {
493    type Item = Result<ProviderEvent, fidl::Error>;
494
495    fn poll_next(
496        mut self: std::pin::Pin<&mut Self>,
497        cx: &mut std::task::Context<'_>,
498    ) -> std::task::Poll<Option<Self::Item>> {
499        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
500            &mut self.event_receiver,
501            cx
502        )?) {
503            Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
504            None => std::task::Poll::Ready(None),
505        }
506    }
507}
508
509#[derive(Debug)]
510pub enum ProviderEvent {}
511
512impl ProviderEvent {
513    /// Decodes a message buffer as a [`ProviderEvent`].
514    fn decode(
515        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
516    ) -> Result<ProviderEvent, fidl::Error> {
517        let (bytes, _handles) = buf.split_mut();
518        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
519        debug_assert_eq!(tx_header.tx_id, 0);
520        match tx_header.ordinal {
521            _ => Err(fidl::Error::UnknownOrdinal {
522                ordinal: tx_header.ordinal,
523                protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
524            }),
525        }
526    }
527}
528
529/// A Stream of incoming requests for fuchsia.posix.socket.raw/Provider.
530pub struct ProviderRequestStream {
531    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
532    is_terminated: bool,
533}
534
535impl std::marker::Unpin for ProviderRequestStream {}
536
537impl futures::stream::FusedStream for ProviderRequestStream {
538    fn is_terminated(&self) -> bool {
539        self.is_terminated
540    }
541}
542
543impl fidl::endpoints::RequestStream for ProviderRequestStream {
544    type Protocol = ProviderMarker;
545    type ControlHandle = ProviderControlHandle;
546
547    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
548        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
549    }
550
551    fn control_handle(&self) -> Self::ControlHandle {
552        ProviderControlHandle { inner: self.inner.clone() }
553    }
554
555    fn into_inner(
556        self,
557    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
558    {
559        (self.inner, self.is_terminated)
560    }
561
562    fn from_inner(
563        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
564        is_terminated: bool,
565    ) -> Self {
566        Self { inner, is_terminated }
567    }
568}
569
570impl futures::Stream for ProviderRequestStream {
571    type Item = Result<ProviderRequest, fidl::Error>;
572
573    fn poll_next(
574        mut self: std::pin::Pin<&mut Self>,
575        cx: &mut std::task::Context<'_>,
576    ) -> std::task::Poll<Option<Self::Item>> {
577        let this = &mut *self;
578        if this.inner.check_shutdown(cx) {
579            this.is_terminated = true;
580            return std::task::Poll::Ready(None);
581        }
582        if this.is_terminated {
583            panic!("polled ProviderRequestStream after completion");
584        }
585        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
586            |bytes, handles| {
587                match this.inner.channel().read_etc(cx, bytes, handles) {
588                    std::task::Poll::Ready(Ok(())) => {}
589                    std::task::Poll::Pending => return std::task::Poll::Pending,
590                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
591                        this.is_terminated = true;
592                        return std::task::Poll::Ready(None);
593                    }
594                    std::task::Poll::Ready(Err(e)) => {
595                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
596                            e.into(),
597                        ))))
598                    }
599                }
600
601                // A message has been received from the channel
602                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
603
604                std::task::Poll::Ready(Some(match header.ordinal {
605                    0xdfa6a591ab48fd1 => {
606                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
607                        let mut req = fidl::new_empty!(
608                            ProviderSocketRequest,
609                            fidl::encoding::DefaultFuchsiaResourceDialect
610                        );
611                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketRequest>(&header, _body_bytes, handles, &mut req)?;
612                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
613                        Ok(ProviderRequest::Socket {
614                            domain: req.domain,
615                            proto: req.proto,
616
617                            responder: ProviderSocketResponder {
618                                control_handle: std::mem::ManuallyDrop::new(control_handle),
619                                tx_id: header.tx_id,
620                            },
621                        })
622                    }
623                    0x34cd6e7e82c46f85 => {
624                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
625                        let mut req = fidl::new_empty!(
626                            ProviderSocketWithOptionsRequest,
627                            fidl::encoding::DefaultFuchsiaResourceDialect
628                        );
629                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketWithOptionsRequest>(&header, _body_bytes, handles, &mut req)?;
630                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
631                        Ok(ProviderRequest::SocketWithOptions {
632                            domain: req.domain,
633                            proto: req.proto,
634                            opts: req.opts,
635
636                            responder: ProviderSocketWithOptionsResponder {
637                                control_handle: std::mem::ManuallyDrop::new(control_handle),
638                                tx_id: header.tx_id,
639                            },
640                        })
641                    }
642                    _ => Err(fidl::Error::UnknownOrdinal {
643                        ordinal: header.ordinal,
644                        protocol_name:
645                            <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
646                    }),
647                }))
648            },
649        )
650    }
651}
652
653/// A raw network socket provider.
654#[derive(Debug)]
655pub enum ProviderRequest {
656    /// Requests a raw socket.
657    Socket {
658        domain: fidl_fuchsia_posix_socket::Domain,
659        proto: ProtocolAssociation,
660        responder: ProviderSocketResponder,
661    },
662    /// Requests a raw socket with creation options.
663    SocketWithOptions {
664        domain: fidl_fuchsia_posix_socket::Domain,
665        proto: ProtocolAssociation,
666        opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
667        responder: ProviderSocketWithOptionsResponder,
668    },
669}
670
671impl ProviderRequest {
672    #[allow(irrefutable_let_patterns)]
673    pub fn into_socket(
674        self,
675    ) -> Option<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation, ProviderSocketResponder)>
676    {
677        if let ProviderRequest::Socket { domain, proto, responder } = self {
678            Some((domain, proto, responder))
679        } else {
680            None
681        }
682    }
683
684    #[allow(irrefutable_let_patterns)]
685    pub fn into_socket_with_options(
686        self,
687    ) -> Option<(
688        fidl_fuchsia_posix_socket::Domain,
689        ProtocolAssociation,
690        fidl_fuchsia_posix_socket::SocketCreationOptions,
691        ProviderSocketWithOptionsResponder,
692    )> {
693        if let ProviderRequest::SocketWithOptions { domain, proto, opts, responder } = self {
694            Some((domain, proto, opts, responder))
695        } else {
696            None
697        }
698    }
699
700    /// Name of the method defined in FIDL
701    pub fn method_name(&self) -> &'static str {
702        match *self {
703            ProviderRequest::Socket { .. } => "socket",
704            ProviderRequest::SocketWithOptions { .. } => "socket_with_options",
705        }
706    }
707}
708
709#[derive(Debug, Clone)]
710pub struct ProviderControlHandle {
711    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
712}
713
714impl fidl::endpoints::ControlHandle for ProviderControlHandle {
715    fn shutdown(&self) {
716        self.inner.shutdown()
717    }
718    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
719        self.inner.shutdown_with_epitaph(status)
720    }
721
722    fn is_closed(&self) -> bool {
723        self.inner.channel().is_closed()
724    }
725    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
726        self.inner.channel().on_closed()
727    }
728
729    #[cfg(target_os = "fuchsia")]
730    fn signal_peer(
731        &self,
732        clear_mask: zx::Signals,
733        set_mask: zx::Signals,
734    ) -> Result<(), zx_status::Status> {
735        use fidl::Peered;
736        self.inner.channel().signal_peer(clear_mask, set_mask)
737    }
738}
739
740impl ProviderControlHandle {}
741
742#[must_use = "FIDL methods require a response to be sent"]
743#[derive(Debug)]
744pub struct ProviderSocketResponder {
745    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
746    tx_id: u32,
747}
748
749/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
750/// if the responder is dropped without sending a response, so that the client
751/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
752impl std::ops::Drop for ProviderSocketResponder {
753    fn drop(&mut self) {
754        self.control_handle.shutdown();
755        // Safety: drops once, never accessed again
756        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
757    }
758}
759
760impl fidl::endpoints::Responder for ProviderSocketResponder {
761    type ControlHandle = ProviderControlHandle;
762
763    fn control_handle(&self) -> &ProviderControlHandle {
764        &self.control_handle
765    }
766
767    fn drop_without_shutdown(mut self) {
768        // Safety: drops once, never accessed again due to mem::forget
769        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
770        // Prevent Drop from running (which would shut down the channel)
771        std::mem::forget(self);
772    }
773}
774
775impl ProviderSocketResponder {
776    /// Sends a response to the FIDL transaction.
777    ///
778    /// Sets the channel to shutdown if an error occurs.
779    pub fn send(
780        self,
781        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
782    ) -> Result<(), fidl::Error> {
783        let _result = self.send_raw(result);
784        if _result.is_err() {
785            self.control_handle.shutdown();
786        }
787        self.drop_without_shutdown();
788        _result
789    }
790
791    /// Similar to "send" but does not shutdown the channel if an error occurs.
792    pub fn send_no_shutdown_on_err(
793        self,
794        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
795    ) -> Result<(), fidl::Error> {
796        let _result = self.send_raw(result);
797        self.drop_without_shutdown();
798        _result
799    }
800
801    fn send_raw(
802        &self,
803        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
804    ) -> Result<(), fidl::Error> {
805        self.control_handle.inner.send::<fidl::encoding::ResultType<
806            ProviderSocketResponse,
807            fidl_fuchsia_posix::Errno,
808        >>(
809            result.map(|s| (s,)),
810            self.tx_id,
811            0xdfa6a591ab48fd1,
812            fidl::encoding::DynamicFlags::empty(),
813        )
814    }
815}
816
817#[must_use = "FIDL methods require a response to be sent"]
818#[derive(Debug)]
819pub struct ProviderSocketWithOptionsResponder {
820    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
821    tx_id: u32,
822}
823
824/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
825/// if the responder is dropped without sending a response, so that the client
826/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
827impl std::ops::Drop for ProviderSocketWithOptionsResponder {
828    fn drop(&mut self) {
829        self.control_handle.shutdown();
830        // Safety: drops once, never accessed again
831        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
832    }
833}
834
835impl fidl::endpoints::Responder for ProviderSocketWithOptionsResponder {
836    type ControlHandle = ProviderControlHandle;
837
838    fn control_handle(&self) -> &ProviderControlHandle {
839        &self.control_handle
840    }
841
842    fn drop_without_shutdown(mut self) {
843        // Safety: drops once, never accessed again due to mem::forget
844        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
845        // Prevent Drop from running (which would shut down the channel)
846        std::mem::forget(self);
847    }
848}
849
850impl ProviderSocketWithOptionsResponder {
851    /// Sends a response to the FIDL transaction.
852    ///
853    /// Sets the channel to shutdown if an error occurs.
854    pub fn send(
855        self,
856        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
857    ) -> Result<(), fidl::Error> {
858        let _result = self.send_raw(result);
859        if _result.is_err() {
860            self.control_handle.shutdown();
861        }
862        self.drop_without_shutdown();
863        _result
864    }
865
866    /// Similar to "send" but does not shutdown the channel if an error occurs.
867    pub fn send_no_shutdown_on_err(
868        self,
869        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
870    ) -> Result<(), fidl::Error> {
871        let _result = self.send_raw(result);
872        self.drop_without_shutdown();
873        _result
874    }
875
876    fn send_raw(
877        &self,
878        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
879    ) -> Result<(), fidl::Error> {
880        self.control_handle.inner.send::<fidl::encoding::ResultType<
881            ProviderSocketWithOptionsResponse,
882            fidl_fuchsia_posix::Errno,
883        >>(
884            result.map(|s| (s,)),
885            self.tx_id,
886            0x34cd6e7e82c46f85,
887            fidl::encoding::DynamicFlags::empty(),
888        )
889    }
890}
891
892#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
893pub struct SocketMarker;
894
895impl fidl::endpoints::ProtocolMarker for SocketMarker {
896    type Proxy = SocketProxy;
897    type RequestStream = SocketRequestStream;
898    #[cfg(target_os = "fuchsia")]
899    type SynchronousProxy = SocketSynchronousProxy;
900
901    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Socket";
902}
903impl fidl::endpoints::DiscoverableProtocolMarker for SocketMarker {}
904pub type SocketRecvMsgResult = Result<
905    (
906        Option<Box<fidl_fuchsia_net::SocketAddress>>,
907        Vec<u8>,
908        fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
909        u32,
910    ),
911    fidl_fuchsia_posix::Errno,
912>;
913pub type SocketSendMsgResult = Result<(), fidl_fuchsia_posix::Errno>;
914pub type SocketGetInfoResult =
915    Result<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation), fidl_fuchsia_posix::Errno>;
916pub type SocketSetIpHeaderIncludedResult = Result<(), fidl_fuchsia_posix::Errno>;
917pub type SocketGetIpHeaderIncludedResult = Result<bool, fidl_fuchsia_posix::Errno>;
918pub type SocketSetIcmpv6FilterResult = Result<(), fidl_fuchsia_posix::Errno>;
919pub type SocketGetIcmpv6FilterResult = Result<Icmpv6Filter, fidl_fuchsia_posix::Errno>;
920pub type SocketSetIpv6ChecksumResult = Result<(), fidl_fuchsia_posix::Errno>;
921pub type SocketGetIpv6ChecksumResult = Result<Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>;
922
923pub trait SocketProxyInterface: Send + Sync {
924    fn r#clone(
925        &self,
926        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
927    ) -> Result<(), fidl::Error>;
928    type CloseResponseFut: std::future::Future<
929            Output = Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error>,
930        > + Send;
931    fn r#close(&self) -> Self::CloseResponseFut;
932    type QueryResponseFut: std::future::Future<Output = Result<Vec<u8>, fidl::Error>> + Send;
933    fn r#query(&self) -> Self::QueryResponseFut;
934    type SetReuseAddressResponseFut: std::future::Future<
935            Output = Result<
936                fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
937                fidl::Error,
938            >,
939        > + Send;
940    fn r#set_reuse_address(&self, value: bool) -> Self::SetReuseAddressResponseFut;
941    type GetReuseAddressResponseFut: std::future::Future<
942            Output = Result<
943                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
944                fidl::Error,
945            >,
946        > + Send;
947    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut;
948    type GetErrorResponseFut: std::future::Future<
949            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error>,
950        > + Send;
951    fn r#get_error(&self) -> Self::GetErrorResponseFut;
952    type SetBroadcastResponseFut: std::future::Future<
953            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error>,
954        > + Send;
955    fn r#set_broadcast(&self, value: bool) -> Self::SetBroadcastResponseFut;
956    type GetBroadcastResponseFut: std::future::Future<
957            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error>,
958        > + Send;
959    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut;
960    type SetSendBufferResponseFut: std::future::Future<
961            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error>,
962        > + Send;
963    fn r#set_send_buffer(&self, value_bytes: u64) -> Self::SetSendBufferResponseFut;
964    type GetSendBufferResponseFut: std::future::Future<
965            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error>,
966        > + Send;
967    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut;
968    type SetReceiveBufferResponseFut: std::future::Future<
969            Output = Result<
970                fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
971                fidl::Error,
972            >,
973        > + Send;
974    fn r#set_receive_buffer(&self, value_bytes: u64) -> Self::SetReceiveBufferResponseFut;
975    type GetReceiveBufferResponseFut: std::future::Future<
976            Output = Result<
977                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
978                fidl::Error,
979            >,
980        > + Send;
981    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut;
982    type SetKeepAliveResponseFut: std::future::Future<
983            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error>,
984        > + Send;
985    fn r#set_keep_alive(&self, value: bool) -> Self::SetKeepAliveResponseFut;
986    type GetKeepAliveResponseFut: std::future::Future<
987            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error>,
988        > + Send;
989    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut;
990    type SetOutOfBandInlineResponseFut: std::future::Future<
991            Output = Result<
992                fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
993                fidl::Error,
994            >,
995        > + Send;
996    fn r#set_out_of_band_inline(&self, value: bool) -> Self::SetOutOfBandInlineResponseFut;
997    type GetOutOfBandInlineResponseFut: std::future::Future<
998            Output = Result<
999                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
1000                fidl::Error,
1001            >,
1002        > + Send;
1003    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut;
1004    type SetNoCheckResponseFut: std::future::Future<
1005            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error>,
1006        > + Send;
1007    fn r#set_no_check(&self, value: bool) -> Self::SetNoCheckResponseFut;
1008    type GetNoCheckResponseFut: std::future::Future<
1009            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error>,
1010        > + Send;
1011    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut;
1012    type SetLingerResponseFut: std::future::Future<
1013            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error>,
1014        > + Send;
1015    fn r#set_linger(&self, linger: bool, length_secs: u32) -> Self::SetLingerResponseFut;
1016    type GetLingerResponseFut: std::future::Future<
1017            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error>,
1018        > + Send;
1019    fn r#get_linger(&self) -> Self::GetLingerResponseFut;
1020    type SetReusePortResponseFut: std::future::Future<
1021            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error>,
1022        > + Send;
1023    fn r#set_reuse_port(&self, value: bool) -> Self::SetReusePortResponseFut;
1024    type GetReusePortResponseFut: std::future::Future<
1025            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
1026        > + Send;
1027    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
1028    type GetAcceptConnResponseFut: std::future::Future<
1029            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
1030        > + Send;
1031    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
1032    type SetBindToDeviceResponseFut: std::future::Future<
1033            Output = Result<
1034                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
1035                fidl::Error,
1036            >,
1037        > + Send;
1038    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
1039    type GetBindToDeviceResponseFut: std::future::Future<
1040            Output = Result<
1041                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
1042                fidl::Error,
1043            >,
1044        > + Send;
1045    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
1046    type SetBindToInterfaceIndexResponseFut: std::future::Future<
1047            Output = Result<
1048                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
1049                fidl::Error,
1050            >,
1051        > + Send;
1052    fn r#set_bind_to_interface_index(&self, value: u64)
1053        -> Self::SetBindToInterfaceIndexResponseFut;
1054    type GetBindToInterfaceIndexResponseFut: std::future::Future<
1055            Output = Result<
1056                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
1057                fidl::Error,
1058            >,
1059        > + Send;
1060    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
1061    type SetTimestampResponseFut: std::future::Future<
1062            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
1063        > + Send;
1064    fn r#set_timestamp(
1065        &self,
1066        value: fidl_fuchsia_posix_socket::TimestampOption,
1067    ) -> Self::SetTimestampResponseFut;
1068    type GetTimestampResponseFut: std::future::Future<
1069            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
1070        > + Send;
1071    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
1072    type SetMarkResponseFut: std::future::Future<
1073            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
1074        > + Send;
1075    fn r#set_mark(
1076        &self,
1077        domain: fidl_fuchsia_net::MarkDomain,
1078        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1079    ) -> Self::SetMarkResponseFut;
1080    type GetMarkResponseFut: std::future::Future<
1081            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
1082        > + Send;
1083    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
1084    type BindResponseFut: std::future::Future<
1085            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
1086        > + Send;
1087    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
1088    type ConnectResponseFut: std::future::Future<
1089            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
1090        > + Send;
1091    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
1092    type DisconnectResponseFut: std::future::Future<
1093            Output = Result<
1094                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
1095                fidl::Error,
1096            >,
1097        > + Send;
1098    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
1099    type GetSockNameResponseFut: std::future::Future<
1100            Output = Result<
1101                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
1102                fidl::Error,
1103            >,
1104        > + Send;
1105    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
1106    type GetPeerNameResponseFut: std::future::Future<
1107            Output = Result<
1108                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
1109                fidl::Error,
1110            >,
1111        > + Send;
1112    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
1113    type ShutdownResponseFut: std::future::Future<
1114            Output = Result<
1115                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
1116                fidl::Error,
1117            >,
1118        > + Send;
1119    fn r#shutdown(
1120        &self,
1121        mode: fidl_fuchsia_posix_socket::ShutdownMode,
1122    ) -> Self::ShutdownResponseFut;
1123    type SetIpTypeOfServiceResponseFut: std::future::Future<
1124            Output = Result<
1125                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
1126                fidl::Error,
1127            >,
1128        > + Send;
1129    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
1130    type GetIpTypeOfServiceResponseFut: std::future::Future<
1131            Output = Result<
1132                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
1133                fidl::Error,
1134            >,
1135        > + Send;
1136    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
1137    type SetIpTtlResponseFut: std::future::Future<
1138            Output = Result<
1139                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
1140                fidl::Error,
1141            >,
1142        > + Send;
1143    fn r#set_ip_ttl(
1144        &self,
1145        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1146    ) -> Self::SetIpTtlResponseFut;
1147    type GetIpTtlResponseFut: std::future::Future<
1148            Output = Result<
1149                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
1150                fidl::Error,
1151            >,
1152        > + Send;
1153    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1154    type SetIpPacketInfoResponseFut: std::future::Future<
1155            Output = Result<
1156                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1157                fidl::Error,
1158            >,
1159        > + Send;
1160    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1161    type GetIpPacketInfoResponseFut: std::future::Future<
1162            Output = Result<
1163                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1164                fidl::Error,
1165            >,
1166        > + Send;
1167    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1168    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1169            Output = Result<
1170                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1171                fidl::Error,
1172            >,
1173        > + Send;
1174    fn r#set_ip_receive_type_of_service(
1175        &self,
1176        value: bool,
1177    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1178    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1179            Output = Result<
1180                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1181                fidl::Error,
1182            >,
1183        > + Send;
1184    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1185    type SetIpReceiveTtlResponseFut: std::future::Future<
1186            Output = Result<
1187                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1188                fidl::Error,
1189            >,
1190        > + Send;
1191    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1192    type GetIpReceiveTtlResponseFut: std::future::Future<
1193            Output = Result<
1194                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1195                fidl::Error,
1196            >,
1197        > + Send;
1198    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1199    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1200            Output = Result<
1201                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1202                fidl::Error,
1203            >,
1204        > + Send;
1205    fn r#set_ip_multicast_interface(
1206        &self,
1207        iface: u64,
1208        address: &fidl_fuchsia_net::Ipv4Address,
1209    ) -> Self::SetIpMulticastInterfaceResponseFut;
1210    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1211            Output = Result<
1212                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1213                fidl::Error,
1214            >,
1215        > + Send;
1216    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1217    type SetIpMulticastTtlResponseFut: std::future::Future<
1218            Output = Result<
1219                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1220                fidl::Error,
1221            >,
1222        > + Send;
1223    fn r#set_ip_multicast_ttl(
1224        &self,
1225        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1226    ) -> Self::SetIpMulticastTtlResponseFut;
1227    type GetIpMulticastTtlResponseFut: std::future::Future<
1228            Output = Result<
1229                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1230                fidl::Error,
1231            >,
1232        > + Send;
1233    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1234    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1235            Output = Result<
1236                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1237                fidl::Error,
1238            >,
1239        > + Send;
1240    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1241    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1242            Output = Result<
1243                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1244                fidl::Error,
1245            >,
1246        > + Send;
1247    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1248    type AddIpMembershipResponseFut: std::future::Future<
1249            Output = Result<
1250                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1251                fidl::Error,
1252            >,
1253        > + Send;
1254    fn r#add_ip_membership(
1255        &self,
1256        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1257    ) -> Self::AddIpMembershipResponseFut;
1258    type DropIpMembershipResponseFut: std::future::Future<
1259            Output = Result<
1260                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1261                fidl::Error,
1262            >,
1263        > + Send;
1264    fn r#drop_ip_membership(
1265        &self,
1266        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1267    ) -> Self::DropIpMembershipResponseFut;
1268    type SetIpTransparentResponseFut: std::future::Future<
1269            Output = Result<
1270                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1271                fidl::Error,
1272            >,
1273        > + Send;
1274    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1275    type GetIpTransparentResponseFut: std::future::Future<
1276            Output = Result<
1277                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1278                fidl::Error,
1279            >,
1280        > + Send;
1281    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1282    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1283    fn r#set_ip_receive_original_destination_address(
1284        &self,
1285        value: bool,
1286    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1287    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1288    fn r#get_ip_receive_original_destination_address(
1289        &self,
1290    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1291    type AddIpv6MembershipResponseFut: std::future::Future<
1292            Output = Result<
1293                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1294                fidl::Error,
1295            >,
1296        > + Send;
1297    fn r#add_ipv6_membership(
1298        &self,
1299        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1300    ) -> Self::AddIpv6MembershipResponseFut;
1301    type DropIpv6MembershipResponseFut: std::future::Future<
1302            Output = Result<
1303                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1304                fidl::Error,
1305            >,
1306        > + Send;
1307    fn r#drop_ipv6_membership(
1308        &self,
1309        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1310    ) -> Self::DropIpv6MembershipResponseFut;
1311    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1312            Output = Result<
1313                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1314                fidl::Error,
1315            >,
1316        > + Send;
1317    fn r#set_ipv6_multicast_interface(
1318        &self,
1319        value: u64,
1320    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1321    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1322            Output = Result<
1323                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1324                fidl::Error,
1325            >,
1326        > + Send;
1327    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1328    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1329            Output = Result<
1330                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1331                fidl::Error,
1332            >,
1333        > + Send;
1334    fn r#set_ipv6_unicast_hops(
1335        &self,
1336        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1337    ) -> Self::SetIpv6UnicastHopsResponseFut;
1338    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1339            Output = Result<
1340                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1341                fidl::Error,
1342            >,
1343        > + Send;
1344    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1345    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1346            Output = Result<
1347                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1348                fidl::Error,
1349            >,
1350        > + Send;
1351    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1352    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1353            Output = Result<
1354                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1355                fidl::Error,
1356            >,
1357        > + Send;
1358    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1359    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1360            Output = Result<
1361                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1362                fidl::Error,
1363            >,
1364        > + Send;
1365    fn r#set_ipv6_multicast_hops(
1366        &self,
1367        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1368    ) -> Self::SetIpv6MulticastHopsResponseFut;
1369    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1370            Output = Result<
1371                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1372                fidl::Error,
1373            >,
1374        > + Send;
1375    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1376    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1377            Output = Result<
1378                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1379                fidl::Error,
1380            >,
1381        > + Send;
1382    fn r#set_ipv6_multicast_loopback(
1383        &self,
1384        value: bool,
1385    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1386    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1387            Output = Result<
1388                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1389                fidl::Error,
1390            >,
1391        > + Send;
1392    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1393    type SetIpv6OnlyResponseFut: std::future::Future<
1394            Output = Result<
1395                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1396                fidl::Error,
1397            >,
1398        > + Send;
1399    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1400    type GetIpv6OnlyResponseFut: std::future::Future<
1401            Output = Result<
1402                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1403                fidl::Error,
1404            >,
1405        > + Send;
1406    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1407    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1408            Output = Result<
1409                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1410                fidl::Error,
1411            >,
1412        > + Send;
1413    fn r#set_ipv6_receive_traffic_class(
1414        &self,
1415        value: bool,
1416    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1417    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1418            Output = Result<
1419                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1420                fidl::Error,
1421            >,
1422        > + Send;
1423    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1424    type SetIpv6TrafficClassResponseFut: std::future::Future<
1425            Output = Result<
1426                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1427                fidl::Error,
1428            >,
1429        > + Send;
1430    fn r#set_ipv6_traffic_class(
1431        &self,
1432        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1433    ) -> Self::SetIpv6TrafficClassResponseFut;
1434    type GetIpv6TrafficClassResponseFut: std::future::Future<
1435            Output = Result<
1436                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1437                fidl::Error,
1438            >,
1439        > + Send;
1440    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1441    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1442            Output = Result<
1443                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1444                fidl::Error,
1445            >,
1446        > + Send;
1447    fn r#set_ipv6_receive_packet_info(
1448        &self,
1449        value: bool,
1450    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1451    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1452            Output = Result<
1453                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1454                fidl::Error,
1455            >,
1456        > + Send;
1457    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1458    type GetOriginalDestinationResponseFut: std::future::Future<
1459            Output = Result<
1460                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1461                fidl::Error,
1462            >,
1463        > + Send;
1464    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1465    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1466        + Send;
1467    fn r#describe(&self) -> Self::DescribeResponseFut;
1468    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1469        + Send;
1470    fn r#recv_msg(
1471        &self,
1472        want_addr: bool,
1473        data_len: u32,
1474        want_control: bool,
1475        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1476    ) -> Self::RecvMsgResponseFut;
1477    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1478        + Send;
1479    fn r#send_msg(
1480        &self,
1481        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1482        data: &[u8],
1483        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1484        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1485    ) -> Self::SendMsgResponseFut;
1486    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1487        + Send;
1488    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1489    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1490        + Send;
1491    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1492    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1493        + Send;
1494    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1495    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1496        + Send;
1497    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1498    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1499        + Send;
1500    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1501    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1502        + Send;
1503    fn r#set_ipv6_checksum(
1504        &self,
1505        config: &Ipv6ChecksumConfiguration,
1506    ) -> Self::SetIpv6ChecksumResponseFut;
1507    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1508        + Send;
1509    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1510}
1511#[derive(Debug)]
1512#[cfg(target_os = "fuchsia")]
1513pub struct SocketSynchronousProxy {
1514    client: fidl::client::sync::Client,
1515}
1516
1517#[cfg(target_os = "fuchsia")]
1518impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1519    type Proxy = SocketProxy;
1520    type Protocol = SocketMarker;
1521
1522    fn from_channel(inner: fidl::Channel) -> Self {
1523        Self::new(inner)
1524    }
1525
1526    fn into_channel(self) -> fidl::Channel {
1527        self.client.into_channel()
1528    }
1529
1530    fn as_channel(&self) -> &fidl::Channel {
1531        self.client.as_channel()
1532    }
1533}
1534
1535#[cfg(target_os = "fuchsia")]
1536impl SocketSynchronousProxy {
1537    pub fn new(channel: fidl::Channel) -> Self {
1538        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1539        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1540    }
1541
1542    pub fn into_channel(self) -> fidl::Channel {
1543        self.client.into_channel()
1544    }
1545
1546    /// Waits until an event arrives and returns it. It is safe for other
1547    /// threads to make concurrent requests while waiting for an event.
1548    pub fn wait_for_event(
1549        &self,
1550        deadline: zx::MonotonicInstant,
1551    ) -> Result<SocketEvent, fidl::Error> {
1552        SocketEvent::decode(self.client.wait_for_event(deadline)?)
1553    }
1554
1555    pub fn r#clone(
1556        &self,
1557        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1558    ) -> Result<(), fidl::Error> {
1559        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1560            (request,),
1561            0x20d8a7aba2168a79,
1562            fidl::encoding::DynamicFlags::empty(),
1563        )
1564    }
1565
1566    /// Terminates the connection.
1567    ///
1568    /// After calling `Close`, the client must not send any other requests.
1569    ///
1570    /// Servers, after sending the status response, should close the connection
1571    /// regardless of status and without sending an epitaph.
1572    ///
1573    /// Closing the client end of the channel should be semantically equivalent
1574    /// to calling `Close` without knowing when the close has completed or its
1575    /// status.
1576    pub fn r#close(
1577        &self,
1578        ___deadline: zx::MonotonicInstant,
1579    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1580        let _response = self.client.send_query::<
1581            fidl::encoding::EmptyPayload,
1582            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1583        >(
1584            (),
1585            0x5ac5d459ad7f657e,
1586            fidl::encoding::DynamicFlags::empty(),
1587            ___deadline,
1588        )?;
1589        Ok(_response.map(|x| x))
1590    }
1591
1592    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1593        let _response = self.client.send_query::<
1594            fidl::encoding::EmptyPayload,
1595            fidl_fuchsia_unknown::QueryableQueryResponse,
1596        >(
1597            (),
1598            0x2658edee9decfc06,
1599            fidl::encoding::DynamicFlags::empty(),
1600            ___deadline,
1601        )?;
1602        Ok(_response.protocol)
1603    }
1604
1605    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1606    pub fn r#set_reuse_address(
1607        &self,
1608        mut value: bool,
1609        ___deadline: zx::MonotonicInstant,
1610    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1611        let _response = self.client.send_query::<
1612            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1613            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1614        >(
1615            (value,),
1616            0x1fd74ee8b9a4a876,
1617            fidl::encoding::DynamicFlags::empty(),
1618            ___deadline,
1619        )?;
1620        Ok(_response.map(|x| x))
1621    }
1622
1623    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1624    pub fn r#get_reuse_address(
1625        &self,
1626        ___deadline: zx::MonotonicInstant,
1627    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1628        let _response = self
1629            .client
1630            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1631                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1632                fidl_fuchsia_posix::Errno,
1633            >>(
1634                (), 0x67b7206b8d1bc0a5, fidl::encoding::DynamicFlags::empty(), ___deadline
1635            )?;
1636        Ok(_response.map(|x| x.value))
1637    }
1638
1639    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1640    /// Returns the last error if there is an error set on the socket.
1641    pub fn r#get_error(
1642        &self,
1643        ___deadline: zx::MonotonicInstant,
1644    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1645        let _response =
1646            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1647                fidl::encoding::EmptyStruct,
1648                fidl_fuchsia_posix::Errno,
1649            >>(
1650                (),
1651                0x5aad39b33e5f6ebb,
1652                fidl::encoding::DynamicFlags::empty(),
1653                ___deadline,
1654            )?;
1655        Ok(_response.map(|x| x))
1656    }
1657
1658    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1659    pub fn r#set_broadcast(
1660        &self,
1661        mut value: bool,
1662        ___deadline: zx::MonotonicInstant,
1663    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1664        let _response = self.client.send_query::<
1665            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1666            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1667        >(
1668            (value,),
1669            0x6023e081ce3cd947,
1670            fidl::encoding::DynamicFlags::empty(),
1671            ___deadline,
1672        )?;
1673        Ok(_response.map(|x| x))
1674    }
1675
1676    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1677    pub fn r#get_broadcast(
1678        &self,
1679        ___deadline: zx::MonotonicInstant,
1680    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1681        let _response = self
1682            .client
1683            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1684                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1685                fidl_fuchsia_posix::Errno,
1686            >>(
1687                (), 0x68796fc556f9780d, fidl::encoding::DynamicFlags::empty(), ___deadline
1688            )?;
1689        Ok(_response.map(|x| x.value))
1690    }
1691
1692    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1693    pub fn r#set_send_buffer(
1694        &self,
1695        mut value_bytes: u64,
1696        ___deadline: zx::MonotonicInstant,
1697    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1698        let _response = self.client.send_query::<
1699            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1700            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1701        >(
1702            (value_bytes,),
1703            0x756eac32d73a7a70,
1704            fidl::encoding::DynamicFlags::empty(),
1705            ___deadline,
1706        )?;
1707        Ok(_response.map(|x| x))
1708    }
1709
1710    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1711    pub fn r#get_send_buffer(
1712        &self,
1713        ___deadline: zx::MonotonicInstant,
1714    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1715        let _response = self
1716            .client
1717            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1718                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1719                fidl_fuchsia_posix::Errno,
1720            >>(
1721                (), 0x78a52fd9c7b2410b, fidl::encoding::DynamicFlags::empty(), ___deadline
1722            )?;
1723        Ok(_response.map(|x| x.value_bytes))
1724    }
1725
1726    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1727    pub fn r#set_receive_buffer(
1728        &self,
1729        mut value_bytes: u64,
1730        ___deadline: zx::MonotonicInstant,
1731    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1732        let _response = self.client.send_query::<
1733            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1734            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1735        >(
1736            (value_bytes,),
1737            0x6b0cf2f1919c7001,
1738            fidl::encoding::DynamicFlags::empty(),
1739            ___deadline,
1740        )?;
1741        Ok(_response.map(|x| x))
1742    }
1743
1744    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1745    pub fn r#get_receive_buffer(
1746        &self,
1747        ___deadline: zx::MonotonicInstant,
1748    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1749        let _response = self
1750            .client
1751            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1752                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1753                fidl_fuchsia_posix::Errno,
1754            >>(
1755                (), 0x14c1a4b64f709e5c, fidl::encoding::DynamicFlags::empty(), ___deadline
1756            )?;
1757        Ok(_response.map(|x| x.value_bytes))
1758    }
1759
1760    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1761    pub fn r#set_keep_alive(
1762        &self,
1763        mut value: bool,
1764        ___deadline: zx::MonotonicInstant,
1765    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1766        let _response = self.client.send_query::<
1767            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1768            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1769        >(
1770            (value,),
1771            0x572df8f0b920d2c7,
1772            fidl::encoding::DynamicFlags::empty(),
1773            ___deadline,
1774        )?;
1775        Ok(_response.map(|x| x))
1776    }
1777
1778    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1779    pub fn r#get_keep_alive(
1780        &self,
1781        ___deadline: zx::MonotonicInstant,
1782    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1783        let _response = self
1784            .client
1785            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1786                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1787                fidl_fuchsia_posix::Errno,
1788            >>(
1789                (), 0x2dd29d3215f2c9d2, fidl::encoding::DynamicFlags::empty(), ___deadline
1790            )?;
1791        Ok(_response.map(|x| x.value))
1792    }
1793
1794    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1795    pub fn r#set_out_of_band_inline(
1796        &self,
1797        mut value: bool,
1798        ___deadline: zx::MonotonicInstant,
1799    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1800        let _response = self.client.send_query::<
1801            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1802            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1803        >(
1804            (value,),
1805            0x3ecb49968bee439,
1806            fidl::encoding::DynamicFlags::empty(),
1807            ___deadline,
1808        )?;
1809        Ok(_response.map(|x| x))
1810    }
1811
1812    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1813    pub fn r#get_out_of_band_inline(
1814        &self,
1815        ___deadline: zx::MonotonicInstant,
1816    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1817        let _response = self
1818            .client
1819            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1820                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1821                fidl_fuchsia_posix::Errno,
1822            >>(
1823                (), 0x348c1ab3aeca1745, fidl::encoding::DynamicFlags::empty(), ___deadline
1824            )?;
1825        Ok(_response.map(|x| x.value))
1826    }
1827
1828    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1829    pub fn r#set_no_check(
1830        &self,
1831        mut value: bool,
1832        ___deadline: zx::MonotonicInstant,
1833    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1834        let _response = self.client.send_query::<
1835            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1836            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1837        >(
1838            (value,),
1839            0x6bbf00c53a4c78c2,
1840            fidl::encoding::DynamicFlags::empty(),
1841            ___deadline,
1842        )?;
1843        Ok(_response.map(|x| x))
1844    }
1845
1846    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1847    pub fn r#get_no_check(
1848        &self,
1849        ___deadline: zx::MonotonicInstant,
1850    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1851        let _response = self
1852            .client
1853            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1854                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1855                fidl_fuchsia_posix::Errno,
1856            >>(
1857                (), 0x2cd4249286417694, fidl::encoding::DynamicFlags::empty(), ___deadline
1858            )?;
1859        Ok(_response.map(|x| x.value))
1860    }
1861
1862    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1863    pub fn r#set_linger(
1864        &self,
1865        mut linger: bool,
1866        mut length_secs: u32,
1867        ___deadline: zx::MonotonicInstant,
1868    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1869        let _response = self.client.send_query::<
1870            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1871            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1872        >(
1873            (linger, length_secs,),
1874            0x45386351246e998e,
1875            fidl::encoding::DynamicFlags::empty(),
1876            ___deadline,
1877        )?;
1878        Ok(_response.map(|x| x))
1879    }
1880
1881    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1882    pub fn r#get_linger(
1883        &self,
1884        ___deadline: zx::MonotonicInstant,
1885    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1886        let _response = self
1887            .client
1888            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1889                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1890                fidl_fuchsia_posix::Errno,
1891            >>(
1892                (), 0x48eb20fc5ccb0e45, fidl::encoding::DynamicFlags::empty(), ___deadline
1893            )?;
1894        Ok(_response.map(|x| (x.linger, x.length_secs)))
1895    }
1896
1897    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1898    pub fn r#set_reuse_port(
1899        &self,
1900        mut value: bool,
1901        ___deadline: zx::MonotonicInstant,
1902    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1903        let _response = self.client.send_query::<
1904            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1905            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1906        >(
1907            (value,),
1908            0x24dd3e5cb36d9ccb,
1909            fidl::encoding::DynamicFlags::empty(),
1910            ___deadline,
1911        )?;
1912        Ok(_response.map(|x| x))
1913    }
1914
1915    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1916    pub fn r#get_reuse_port(
1917        &self,
1918        ___deadline: zx::MonotonicInstant,
1919    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1920        let _response = self
1921            .client
1922            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1923                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1924                fidl_fuchsia_posix::Errno,
1925            >>(
1926                (), 0x7a112c1ab54ff828, fidl::encoding::DynamicFlags::empty(), ___deadline
1927            )?;
1928        Ok(_response.map(|x| x.value))
1929    }
1930
1931    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1932    pub fn r#get_accept_conn(
1933        &self,
1934        ___deadline: zx::MonotonicInstant,
1935    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1936        let _response = self
1937            .client
1938            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1939                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1940                fidl_fuchsia_posix::Errno,
1941            >>(
1942                (), 0x67ce6db6c2ec8966, fidl::encoding::DynamicFlags::empty(), ___deadline
1943            )?;
1944        Ok(_response.map(|x| x.value))
1945    }
1946
1947    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1948    pub fn r#set_bind_to_device(
1949        &self,
1950        mut value: &str,
1951        ___deadline: zx::MonotonicInstant,
1952    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1953        let _response = self.client.send_query::<
1954            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1955            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1956        >(
1957            (value,),
1958            0x2118b483f28aafc4,
1959            fidl::encoding::DynamicFlags::empty(),
1960            ___deadline,
1961        )?;
1962        Ok(_response.map(|x| x))
1963    }
1964
1965    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1966    pub fn r#get_bind_to_device(
1967        &self,
1968        ___deadline: zx::MonotonicInstant,
1969    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1970        let _response = self
1971            .client
1972            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1973                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1974                fidl_fuchsia_posix::Errno,
1975            >>(
1976                (), 0x1ab1fbf0ef7906c8, fidl::encoding::DynamicFlags::empty(), ___deadline
1977            )?;
1978        Ok(_response.map(|x| x.value))
1979    }
1980
1981    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1982    /// If `value` is 0, this clears the bound interface.
1983    pub fn r#set_bind_to_interface_index(
1984        &self,
1985        mut value: u64,
1986        ___deadline: zx::MonotonicInstant,
1987    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1988    {
1989        let _response = self.client.send_query::<
1990            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1991            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1992        >(
1993            (value,),
1994            0x6e387a0def00821,
1995            fidl::encoding::DynamicFlags::empty(),
1996            ___deadline,
1997        )?;
1998        Ok(_response.map(|x| x))
1999    }
2000
2001    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
2002    pub fn r#get_bind_to_interface_index(
2003        &self,
2004        ___deadline: zx::MonotonicInstant,
2005    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
2006    {
2007        let _response = self
2008            .client
2009            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2010                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
2011                fidl_fuchsia_posix::Errno,
2012            >>(
2013                (), 0x59c31dd3e3078295, fidl::encoding::DynamicFlags::empty(), ___deadline
2014            )?;
2015        Ok(_response.map(|x| x.value))
2016    }
2017
2018    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
2019    pub fn r#set_timestamp(
2020        &self,
2021        mut value: fidl_fuchsia_posix_socket::TimestampOption,
2022        ___deadline: zx::MonotonicInstant,
2023    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
2024        let _response = self.client.send_query::<
2025            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
2026            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2027        >(
2028            (value,),
2029            0x285d6516c263d839,
2030            fidl::encoding::DynamicFlags::empty(),
2031            ___deadline,
2032        )?;
2033        Ok(_response.map(|x| x))
2034    }
2035
2036    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
2037    pub fn r#get_timestamp(
2038        &self,
2039        ___deadline: zx::MonotonicInstant,
2040    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
2041        let _response = self
2042            .client
2043            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2044                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
2045                fidl_fuchsia_posix::Errno,
2046            >>(
2047                (), 0x49f2fffbbcc2bd27, fidl::encoding::DynamicFlags::empty(), ___deadline
2048            )?;
2049        Ok(_response.map(|x| x.value))
2050    }
2051
2052    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
2053    /// unlike the standard SO_MARK, this API has multiple mark domains and each
2054    /// mark can be set independently in each domain.
2055    pub fn r#set_mark(
2056        &self,
2057        mut domain: fidl_fuchsia_net::MarkDomain,
2058        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
2059        ___deadline: zx::MonotonicInstant,
2060    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
2061        let _response = self.client.send_query::<
2062            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
2063            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2064        >(
2065            (domain, mark,),
2066            0x6ead6de09f653236,
2067            fidl::encoding::DynamicFlags::empty(),
2068            ___deadline,
2069        )?;
2070        Ok(_response.map(|x| x))
2071    }
2072
2073    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
2074    /// unlike the standard SO_MARK, this API has multiple mark domains and each
2075    /// mark can be retrieved independently in each domain.
2076    pub fn r#get_mark(
2077        &self,
2078        mut domain: fidl_fuchsia_net::MarkDomain,
2079        ___deadline: zx::MonotonicInstant,
2080    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
2081        let _response = self.client.send_query::<
2082            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
2083            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
2084        >(
2085            (domain,),
2086            0x57a2752c61d93d47,
2087            fidl::encoding::DynamicFlags::empty(),
2088            ___deadline,
2089        )?;
2090        Ok(_response.map(|x| x.mark))
2091    }
2092
2093    /// Sets the local address used for the socket.
2094    pub fn r#bind(
2095        &self,
2096        mut addr: &fidl_fuchsia_net::SocketAddress,
2097        ___deadline: zx::MonotonicInstant,
2098    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
2099        let _response = self.client.send_query::<
2100            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
2101            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2102        >(
2103            (addr,),
2104            0x4bc6400ae92125d,
2105            fidl::encoding::DynamicFlags::empty(),
2106            ___deadline,
2107        )?;
2108        Ok(_response.map(|x| x))
2109    }
2110
2111    /// Initiates a connection to a remote address.
2112    pub fn r#connect(
2113        &self,
2114        mut addr: &fidl_fuchsia_net::SocketAddress,
2115        ___deadline: zx::MonotonicInstant,
2116    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
2117        let _response = self.client.send_query::<
2118            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
2119            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2120        >(
2121            (addr,),
2122            0x5f05f19bfdd38871,
2123            fidl::encoding::DynamicFlags::empty(),
2124            ___deadline,
2125        )?;
2126        Ok(_response.map(|x| x))
2127    }
2128
2129    /// Clears connection information from this socket.
2130    pub fn r#disconnect(
2131        &self,
2132        ___deadline: zx::MonotonicInstant,
2133    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
2134        let _response =
2135            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2136                fidl::encoding::EmptyStruct,
2137                fidl_fuchsia_posix::Errno,
2138            >>(
2139                (),
2140                0x74e63b91f7b29b2,
2141                fidl::encoding::DynamicFlags::empty(),
2142                ___deadline,
2143            )?;
2144        Ok(_response.map(|x| x))
2145    }
2146
2147    /// Retrieves the local socket address.
2148    pub fn r#get_sock_name(
2149        &self,
2150        ___deadline: zx::MonotonicInstant,
2151    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2152        let _response = self
2153            .client
2154            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2155                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2156                fidl_fuchsia_posix::Errno,
2157            >>(
2158                (), 0x475f23f84a1a4f85, fidl::encoding::DynamicFlags::empty(), ___deadline
2159            )?;
2160        Ok(_response.map(|x| x.addr))
2161    }
2162
2163    /// Retrieves the remote socket address.
2164    pub fn r#get_peer_name(
2165        &self,
2166        ___deadline: zx::MonotonicInstant,
2167    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2168        let _response = self
2169            .client
2170            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2171                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2172                fidl_fuchsia_posix::Errno,
2173            >>(
2174                (), 0x1ffecf4bd5b6432e, fidl::encoding::DynamicFlags::empty(), ___deadline
2175            )?;
2176        Ok(_response.map(|x| x.addr))
2177    }
2178
2179    /// Shuts down part of the socket.
2180    pub fn r#shutdown(
2181        &self,
2182        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2183        ___deadline: zx::MonotonicInstant,
2184    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2185        let _response = self.client.send_query::<
2186            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2187            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2188        >(
2189            (mode,),
2190            0x247f38b6db68c336,
2191            fidl::encoding::DynamicFlags::empty(),
2192            ___deadline,
2193        )?;
2194        Ok(_response.map(|x| x))
2195    }
2196
2197    /// Set `SOL_IP` -> `IP_TOS`.
2198    pub fn r#set_ip_type_of_service(
2199        &self,
2200        mut value: u8,
2201        ___deadline: zx::MonotonicInstant,
2202    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2203    {
2204        let _response = self.client.send_query::<
2205            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2206            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2207        >(
2208            (value,),
2209            0x995c600475b6d46,
2210            fidl::encoding::DynamicFlags::empty(),
2211            ___deadline,
2212        )?;
2213        Ok(_response.map(|x| x))
2214    }
2215
2216    /// Get `SOL_IP` -> `IP_TOS`.
2217    pub fn r#get_ip_type_of_service(
2218        &self,
2219        ___deadline: zx::MonotonicInstant,
2220    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2221    {
2222        let _response = self
2223            .client
2224            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2225                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2226                fidl_fuchsia_posix::Errno,
2227            >>(
2228                (), 0x3814a04259f75fcb, fidl::encoding::DynamicFlags::empty(), ___deadline
2229            )?;
2230        Ok(_response.map(|x| x.value))
2231    }
2232
2233    /// Set `SOL_IP` -> `IP_TTL`.
2234    pub fn r#set_ip_ttl(
2235        &self,
2236        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2237        ___deadline: zx::MonotonicInstant,
2238    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2239        let _response = self.client.send_query::<
2240            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2241            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2242        >(
2243            (value,),
2244            0x29e2424b433ae1ef,
2245            fidl::encoding::DynamicFlags::empty(),
2246            ___deadline,
2247        )?;
2248        Ok(_response.map(|x| x))
2249    }
2250
2251    /// Get `SOL_IP` -> `IP_TTL`.
2252    pub fn r#get_ip_ttl(
2253        &self,
2254        ___deadline: zx::MonotonicInstant,
2255    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2256        let _response = self
2257            .client
2258            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2259                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2260                fidl_fuchsia_posix::Errno,
2261            >>(
2262                (), 0x47e47fa1f24da471, fidl::encoding::DynamicFlags::empty(), ___deadline
2263            )?;
2264        Ok(_response.map(|x| x.value))
2265    }
2266
2267    /// Set `SOL_IP` -> `IP_PKTINFO`.
2268    pub fn r#set_ip_packet_info(
2269        &self,
2270        mut value: bool,
2271        ___deadline: zx::MonotonicInstant,
2272    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2273    {
2274        let _response = self.client.send_query::<
2275            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2276            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2277        >(
2278            (value,),
2279            0x392d16bee20c0e16,
2280            fidl::encoding::DynamicFlags::empty(),
2281            ___deadline,
2282        )?;
2283        Ok(_response.map(|x| x))
2284    }
2285
2286    /// Get `SOL_IP` -> `IP_PKTINFO`.
2287    pub fn r#get_ip_packet_info(
2288        &self,
2289        ___deadline: zx::MonotonicInstant,
2290    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2291    {
2292        let _response = self
2293            .client
2294            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2295                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2296                fidl_fuchsia_posix::Errno,
2297            >>(
2298                (), 0x54b505f242280740, fidl::encoding::DynamicFlags::empty(), ___deadline
2299            )?;
2300        Ok(_response.map(|x| x.value))
2301    }
2302
2303    /// Set `SOL_IP` -> `IP_RECVTOS`.
2304    pub fn r#set_ip_receive_type_of_service(
2305        &self,
2306        mut value: bool,
2307        ___deadline: zx::MonotonicInstant,
2308    ) -> Result<
2309        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2310        fidl::Error,
2311    > {
2312        let _response = self.client.send_query::<
2313            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2314            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2315        >(
2316            (value,),
2317            0x6c4f6714995f84ef,
2318            fidl::encoding::DynamicFlags::empty(),
2319            ___deadline,
2320        )?;
2321        Ok(_response.map(|x| x))
2322    }
2323
2324    /// Get `SOL_IP` -> `IP_RECVTOS`.
2325    pub fn r#get_ip_receive_type_of_service(
2326        &self,
2327        ___deadline: zx::MonotonicInstant,
2328    ) -> Result<
2329        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2330        fidl::Error,
2331    > {
2332        let _response = self
2333            .client
2334            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2335                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2336                fidl_fuchsia_posix::Errno,
2337            >>(
2338                (), 0x4158ba7dc2795960, fidl::encoding::DynamicFlags::empty(), ___deadline
2339            )?;
2340        Ok(_response.map(|x| x.value))
2341    }
2342
2343    /// Set `SOL_IP` -> `IP_RECVTTL`.
2344    pub fn r#set_ip_receive_ttl(
2345        &self,
2346        mut value: bool,
2347        ___deadline: zx::MonotonicInstant,
2348    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2349    {
2350        let _response = self.client.send_query::<
2351            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2352            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2353        >(
2354            (value,),
2355            0x46f15be0ce0ab82b,
2356            fidl::encoding::DynamicFlags::empty(),
2357            ___deadline,
2358        )?;
2359        Ok(_response.map(|x| x))
2360    }
2361
2362    /// Get `SOL_IP` -> `IP_RECVTTL`.
2363    pub fn r#get_ip_receive_ttl(
2364        &self,
2365        ___deadline: zx::MonotonicInstant,
2366    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2367    {
2368        let _response = self
2369            .client
2370            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2371                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2372                fidl_fuchsia_posix::Errno,
2373            >>(
2374                (), 0x678ddd5a5dfa2eb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2375            )?;
2376        Ok(_response.map(|x| x.value))
2377    }
2378
2379    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2380    pub fn r#set_ip_multicast_interface(
2381        &self,
2382        mut iface: u64,
2383        mut address: &fidl_fuchsia_net::Ipv4Address,
2384        ___deadline: zx::MonotonicInstant,
2385    ) -> Result<
2386        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2387        fidl::Error,
2388    > {
2389        let _response = self.client.send_query::<
2390            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2391            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2392        >(
2393            (iface, address,),
2394            0x752fbfa9b12befe,
2395            fidl::encoding::DynamicFlags::empty(),
2396            ___deadline,
2397        )?;
2398        Ok(_response.map(|x| x))
2399    }
2400
2401    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2402    pub fn r#get_ip_multicast_interface(
2403        &self,
2404        ___deadline: zx::MonotonicInstant,
2405    ) -> Result<
2406        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2407        fidl::Error,
2408    > {
2409        let _response = self
2410            .client
2411            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2412                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2413                fidl_fuchsia_posix::Errno,
2414            >>(
2415                (), 0x320bd14c4df046c4, fidl::encoding::DynamicFlags::empty(), ___deadline
2416            )?;
2417        Ok(_response.map(|x| x.value))
2418    }
2419
2420    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2421    pub fn r#set_ip_multicast_ttl(
2422        &self,
2423        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2424        ___deadline: zx::MonotonicInstant,
2425    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2426    {
2427        let _response = self.client.send_query::<
2428            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2429            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2430        >(
2431            (value,),
2432            0x63134d53772916a1,
2433            fidl::encoding::DynamicFlags::empty(),
2434            ___deadline,
2435        )?;
2436        Ok(_response.map(|x| x))
2437    }
2438
2439    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2440    pub fn r#get_ip_multicast_ttl(
2441        &self,
2442        ___deadline: zx::MonotonicInstant,
2443    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2444    {
2445        let _response = self
2446            .client
2447            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2448                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2449                fidl_fuchsia_posix::Errno,
2450            >>(
2451                (), 0x4665cd378f39e1a, fidl::encoding::DynamicFlags::empty(), ___deadline
2452            )?;
2453        Ok(_response.map(|x| x.value))
2454    }
2455
2456    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2457    pub fn r#set_ip_multicast_loopback(
2458        &self,
2459        mut value: bool,
2460        ___deadline: zx::MonotonicInstant,
2461    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2462    {
2463        let _response = self.client.send_query::<
2464            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2465            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2466        >(
2467            (value,),
2468            0x20c55c11f00943ea,
2469            fidl::encoding::DynamicFlags::empty(),
2470            ___deadline,
2471        )?;
2472        Ok(_response.map(|x| x))
2473    }
2474
2475    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2476    pub fn r#get_ip_multicast_loopback(
2477        &self,
2478        ___deadline: zx::MonotonicInstant,
2479    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2480    {
2481        let _response = self
2482            .client
2483            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2484                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2485                fidl_fuchsia_posix::Errno,
2486            >>(
2487                (), 0x3b6b26ff558298f2, fidl::encoding::DynamicFlags::empty(), ___deadline
2488            )?;
2489        Ok(_response.map(|x| x.value))
2490    }
2491
2492    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2493    pub fn r#add_ip_membership(
2494        &self,
2495        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2496        ___deadline: zx::MonotonicInstant,
2497    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2498    {
2499        let _response = self.client.send_query::<
2500            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2501            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2502        >(
2503            (membership,),
2504            0x76bc7df115a3b4d0,
2505            fidl::encoding::DynamicFlags::empty(),
2506            ___deadline,
2507        )?;
2508        Ok(_response.map(|x| x))
2509    }
2510
2511    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2512    pub fn r#drop_ip_membership(
2513        &self,
2514        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2515        ___deadline: zx::MonotonicInstant,
2516    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2517    {
2518        let _response = self.client.send_query::<
2519            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2520            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2521        >(
2522            (membership,),
2523            0x2888f3099188d03,
2524            fidl::encoding::DynamicFlags::empty(),
2525            ___deadline,
2526        )?;
2527        Ok(_response.map(|x| x))
2528    }
2529
2530    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2531    pub fn r#set_ip_transparent(
2532        &self,
2533        mut value: bool,
2534        ___deadline: zx::MonotonicInstant,
2535    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2536    {
2537        let _response = self.client.send_query::<
2538            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2539            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2540        >(
2541            (value,),
2542            0x1ae532b0c066e3a0,
2543            fidl::encoding::DynamicFlags::empty(),
2544            ___deadline,
2545        )?;
2546        Ok(_response.map(|x| x))
2547    }
2548
2549    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2550    pub fn r#get_ip_transparent(
2551        &self,
2552        ___deadline: zx::MonotonicInstant,
2553    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2554    {
2555        let _response = self
2556            .client
2557            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2558                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2559                fidl_fuchsia_posix::Errno,
2560            >>(
2561                (), 0x51d43695962ebfb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2562            )?;
2563        Ok(_response.map(|x| x.value))
2564    }
2565
2566    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2567    pub fn r#set_ip_receive_original_destination_address(
2568        &self,
2569        mut value: bool,
2570        ___deadline: zx::MonotonicInstant,
2571    ) -> Result<
2572        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2573        fidl::Error,
2574    > {
2575        let _response = self.client.send_query::<
2576            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2577            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2578        >(
2579            (value,),
2580            0x4722b4ce52f7840,
2581            fidl::encoding::DynamicFlags::empty(),
2582            ___deadline,
2583        )?;
2584        Ok(_response.map(|x| x))
2585    }
2586
2587    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2588    pub fn r#get_ip_receive_original_destination_address(
2589        &self,
2590        ___deadline: zx::MonotonicInstant,
2591    ) -> Result<
2592        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2593        fidl::Error,
2594    > {
2595        let _response = self.client.send_query::<
2596            fidl::encoding::EmptyPayload,
2597            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2598        >(
2599            (),
2600            0x2a0e7dc5d6bfdfe9,
2601            fidl::encoding::DynamicFlags::empty(),
2602            ___deadline,
2603        )?;
2604        Ok(_response.map(|x| x.value))
2605    }
2606
2607    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2608    pub fn r#add_ipv6_membership(
2609        &self,
2610        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2611        ___deadline: zx::MonotonicInstant,
2612    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2613    {
2614        let _response = self.client.send_query::<
2615            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2616            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2617        >(
2618            (membership,),
2619            0x7c94727acb4ea4b3,
2620            fidl::encoding::DynamicFlags::empty(),
2621            ___deadline,
2622        )?;
2623        Ok(_response.map(|x| x))
2624    }
2625
2626    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2627    pub fn r#drop_ipv6_membership(
2628        &self,
2629        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2630        ___deadline: zx::MonotonicInstant,
2631    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2632    {
2633        let _response = self.client.send_query::<
2634            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2635            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2636        >(
2637            (membership,),
2638            0x42104c70ccaba304,
2639            fidl::encoding::DynamicFlags::empty(),
2640            ___deadline,
2641        )?;
2642        Ok(_response.map(|x| x))
2643    }
2644
2645    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2646    pub fn r#set_ipv6_multicast_interface(
2647        &self,
2648        mut value: u64,
2649        ___deadline: zx::MonotonicInstant,
2650    ) -> Result<
2651        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2652        fidl::Error,
2653    > {
2654        let _response = self.client.send_query::<
2655            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2656            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2657        >(
2658            (value,),
2659            0x135f76db3774ab3b,
2660            fidl::encoding::DynamicFlags::empty(),
2661            ___deadline,
2662        )?;
2663        Ok(_response.map(|x| x))
2664    }
2665
2666    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2667    pub fn r#get_ipv6_multicast_interface(
2668        &self,
2669        ___deadline: zx::MonotonicInstant,
2670    ) -> Result<
2671        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2672        fidl::Error,
2673    > {
2674        let _response = self
2675            .client
2676            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2677                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2678                fidl_fuchsia_posix::Errno,
2679            >>(
2680                (), 0x1f26fcdd348f1882, fidl::encoding::DynamicFlags::empty(), ___deadline
2681            )?;
2682        Ok(_response.map(|x| x.value))
2683    }
2684
2685    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2686    pub fn r#set_ipv6_unicast_hops(
2687        &self,
2688        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2689        ___deadline: zx::MonotonicInstant,
2690    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2691    {
2692        let _response = self.client.send_query::<
2693            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2694            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2695        >(
2696            (value,),
2697            0x157d51e98f462859,
2698            fidl::encoding::DynamicFlags::empty(),
2699            ___deadline,
2700        )?;
2701        Ok(_response.map(|x| x))
2702    }
2703
2704    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2705    pub fn r#get_ipv6_unicast_hops(
2706        &self,
2707        ___deadline: zx::MonotonicInstant,
2708    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2709    {
2710        let _response = self
2711            .client
2712            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2713                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2714                fidl_fuchsia_posix::Errno,
2715            >>(
2716                (), 0x21f4641cad8bd8d2, fidl::encoding::DynamicFlags::empty(), ___deadline
2717            )?;
2718        Ok(_response.map(|x| x.value))
2719    }
2720
2721    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2722    pub fn r#set_ipv6_receive_hop_limit(
2723        &self,
2724        mut value: bool,
2725        ___deadline: zx::MonotonicInstant,
2726    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2727    {
2728        let _response = self.client.send_query::<
2729            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2730            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2731        >(
2732            (value,),
2733            0x5c24808ed2e84a1e,
2734            fidl::encoding::DynamicFlags::empty(),
2735            ___deadline,
2736        )?;
2737        Ok(_response.map(|x| x))
2738    }
2739
2740    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2741    pub fn r#get_ipv6_receive_hop_limit(
2742        &self,
2743        ___deadline: zx::MonotonicInstant,
2744    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2745    {
2746        let _response = self
2747            .client
2748            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2749                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2750                fidl_fuchsia_posix::Errno,
2751            >>(
2752                (), 0x341e06689885b4c0, fidl::encoding::DynamicFlags::empty(), ___deadline
2753            )?;
2754        Ok(_response.map(|x| x.value))
2755    }
2756
2757    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2758    pub fn r#set_ipv6_multicast_hops(
2759        &self,
2760        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2761        ___deadline: zx::MonotonicInstant,
2762    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2763    {
2764        let _response = self.client.send_query::<
2765            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2766            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2767        >(
2768            (value,),
2769            0x25b9cd4d181f82c1,
2770            fidl::encoding::DynamicFlags::empty(),
2771            ___deadline,
2772        )?;
2773        Ok(_response.map(|x| x))
2774    }
2775
2776    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2777    pub fn r#get_ipv6_multicast_hops(
2778        &self,
2779        ___deadline: zx::MonotonicInstant,
2780    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2781    {
2782        let _response = self
2783            .client
2784            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2785                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2786                fidl_fuchsia_posix::Errno,
2787            >>(
2788                (), 0x52916948a365012a, fidl::encoding::DynamicFlags::empty(), ___deadline
2789            )?;
2790        Ok(_response.map(|x| x.value))
2791    }
2792
2793    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2794    pub fn r#set_ipv6_multicast_loopback(
2795        &self,
2796        mut value: bool,
2797        ___deadline: zx::MonotonicInstant,
2798    ) -> Result<
2799        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2800        fidl::Error,
2801    > {
2802        let _response = self.client.send_query::<
2803            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2804            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2805        >(
2806            (value,),
2807            0x55701c409ff41b40,
2808            fidl::encoding::DynamicFlags::empty(),
2809            ___deadline,
2810        )?;
2811        Ok(_response.map(|x| x))
2812    }
2813
2814    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2815    pub fn r#get_ipv6_multicast_loopback(
2816        &self,
2817        ___deadline: zx::MonotonicInstant,
2818    ) -> Result<
2819        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2820        fidl::Error,
2821    > {
2822        let _response = self
2823            .client
2824            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2825                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2826                fidl_fuchsia_posix::Errno,
2827            >>(
2828                (), 0x4415b701fde319c3, fidl::encoding::DynamicFlags::empty(), ___deadline
2829            )?;
2830        Ok(_response.map(|x| x.value))
2831    }
2832
2833    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2834    pub fn r#set_ipv6_only(
2835        &self,
2836        mut value: bool,
2837        ___deadline: zx::MonotonicInstant,
2838    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2839        let _response = self.client.send_query::<
2840            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2841            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2842        >(
2843            (value,),
2844            0x4873f1364758cbba,
2845            fidl::encoding::DynamicFlags::empty(),
2846            ___deadline,
2847        )?;
2848        Ok(_response.map(|x| x))
2849    }
2850
2851    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2852    pub fn r#get_ipv6_only(
2853        &self,
2854        ___deadline: zx::MonotonicInstant,
2855    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2856        let _response = self
2857            .client
2858            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2859                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2860                fidl_fuchsia_posix::Errno,
2861            >>(
2862                (), 0x4aa3340a1a26b89c, fidl::encoding::DynamicFlags::empty(), ___deadline
2863            )?;
2864        Ok(_response.map(|x| x.value))
2865    }
2866
2867    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2868    pub fn r#set_ipv6_receive_traffic_class(
2869        &self,
2870        mut value: bool,
2871        ___deadline: zx::MonotonicInstant,
2872    ) -> Result<
2873        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2874        fidl::Error,
2875    > {
2876        let _response = self.client.send_query::<
2877            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2878            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2879        >(
2880            (value,),
2881            0x58f07c8788d099a0,
2882            fidl::encoding::DynamicFlags::empty(),
2883            ___deadline,
2884        )?;
2885        Ok(_response.map(|x| x))
2886    }
2887
2888    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2889    pub fn r#get_ipv6_receive_traffic_class(
2890        &self,
2891        ___deadline: zx::MonotonicInstant,
2892    ) -> Result<
2893        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2894        fidl::Error,
2895    > {
2896        let _response = self
2897            .client
2898            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2899                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2900                fidl_fuchsia_posix::Errno,
2901            >>(
2902                (), 0x2e334df1da553ffa, fidl::encoding::DynamicFlags::empty(), ___deadline
2903            )?;
2904        Ok(_response.map(|x| x.value))
2905    }
2906
2907    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2908    pub fn r#set_ipv6_traffic_class(
2909        &self,
2910        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2911        ___deadline: zx::MonotonicInstant,
2912    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2913    {
2914        let _response = self.client.send_query::<
2915            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2916            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2917        >(
2918            (value,),
2919            0x6af077800c5a0b4f,
2920            fidl::encoding::DynamicFlags::empty(),
2921            ___deadline,
2922        )?;
2923        Ok(_response.map(|x| x))
2924    }
2925
2926    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2927    pub fn r#get_ipv6_traffic_class(
2928        &self,
2929        ___deadline: zx::MonotonicInstant,
2930    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2931    {
2932        let _response = self
2933            .client
2934            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2935                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2936                fidl_fuchsia_posix::Errno,
2937            >>(
2938                (), 0x6baf6eed8fc2f04, fidl::encoding::DynamicFlags::empty(), ___deadline
2939            )?;
2940        Ok(_response.map(|x| x.value))
2941    }
2942
2943    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2944    pub fn r#set_ipv6_receive_packet_info(
2945        &self,
2946        mut value: bool,
2947        ___deadline: zx::MonotonicInstant,
2948    ) -> Result<
2949        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2950        fidl::Error,
2951    > {
2952        let _response = self.client.send_query::<
2953            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2954            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2955        >(
2956            (value,),
2957            0x19259775b1a92768,
2958            fidl::encoding::DynamicFlags::empty(),
2959            ___deadline,
2960        )?;
2961        Ok(_response.map(|x| x))
2962    }
2963
2964    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2965    pub fn r#get_ipv6_receive_packet_info(
2966        &self,
2967        ___deadline: zx::MonotonicInstant,
2968    ) -> Result<
2969        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2970        fidl::Error,
2971    > {
2972        let _response = self
2973            .client
2974            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2975                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2976                fidl_fuchsia_posix::Errno,
2977            >>(
2978                (), 0x7acd4a2775baec75, fidl::encoding::DynamicFlags::empty(), ___deadline
2979            )?;
2980        Ok(_response.map(|x| x.value))
2981    }
2982
2983    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2984    pub fn r#get_original_destination(
2985        &self,
2986        ___deadline: zx::MonotonicInstant,
2987    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2988    {
2989        let _response = self
2990            .client
2991            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2992                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
2993                fidl_fuchsia_posix::Errno,
2994            >>(
2995                (), 0x38bf28f0dafdbac0, fidl::encoding::DynamicFlags::empty(), ___deadline
2996            )?;
2997        Ok(_response.map(|x| x.value))
2998    }
2999
3000    pub fn r#describe(
3001        &self,
3002        ___deadline: zx::MonotonicInstant,
3003    ) -> Result<SocketDescribeResponse, fidl::Error> {
3004        let _response =
3005            self.client.send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
3006                (),
3007                0x335706eccf54a135,
3008                fidl::encoding::DynamicFlags::empty(),
3009                ___deadline,
3010            )?;
3011        Ok(_response)
3012    }
3013
3014    /// Receives a message from the socket.
3015    ///
3016    /// + request `want_addr` request message's source address information to
3017    ///   be returned.
3018    /// + request `data_len` the maximum allowed length of the response data
3019    ///   buffer.
3020    /// + request `want_control` request ancillary data to be returned.
3021    /// + request `flags` flags for the receive request.
3022    /// - response `addr` the message's source address information, if
3023    ///   requested.
3024    /// - response `data` the message.
3025    /// - response `control` control messages, if requested.
3026    /// - response `truncated` indicates whether or not the returned message
3027    ///   was truncated.
3028    pub fn r#recv_msg(
3029        &self,
3030        mut want_addr: bool,
3031        mut data_len: u32,
3032        mut want_control: bool,
3033        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
3034        ___deadline: zx::MonotonicInstant,
3035    ) -> Result<SocketRecvMsgResult, fidl::Error> {
3036        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
3037            SocketRecvMsgResponse,
3038            fidl_fuchsia_posix::Errno,
3039        >>(
3040            (want_addr, data_len, want_control, flags),
3041            0x1dfb695351d3aa1d,
3042            fidl::encoding::DynamicFlags::empty(),
3043            ___deadline,
3044        )?;
3045        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
3046    }
3047
3048    /// Sends a message on the socket.
3049    ///
3050    /// + request `addr` the address to send the message to. If unset, will
3051    ///   send to the connected peer.
3052    /// + request `data` the message.
3053    /// + request `control` ancillary data.
3054    /// + request `flags` flags for the send request.
3055    pub fn r#send_msg(
3056        &self,
3057        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
3058        mut data: &[u8],
3059        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
3060        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
3061        ___deadline: zx::MonotonicInstant,
3062    ) -> Result<SocketSendMsgResult, fidl::Error> {
3063        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
3064            fidl::encoding::EmptyStruct,
3065            fidl_fuchsia_posix::Errno,
3066        >>(
3067            (addr, data, control, flags),
3068            0x2cf1eac9a7fc8958,
3069            fidl::encoding::DynamicFlags::empty(),
3070            ___deadline,
3071        )?;
3072        Ok(_response.map(|x| x))
3073    }
3074
3075    /// Retrieves creation information from the socket.
3076    ///
3077    /// - response `domain` the socket's associated domain.
3078    /// - response `proto` the socket's associated protocol.
3079    pub fn r#get_info(
3080        &self,
3081        ___deadline: zx::MonotonicInstant,
3082    ) -> Result<SocketGetInfoResult, fidl::Error> {
3083        let _response =
3084            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3085                SocketGetInfoResponse,
3086                fidl_fuchsia_posix::Errno,
3087            >>(
3088                (),
3089                0x39676f75aec339ba,
3090                fidl::encoding::DynamicFlags::empty(),
3091                ___deadline,
3092            )?;
3093        Ok(_response.map(|x| (x.domain, x.proto)))
3094    }
3095
3096    /// Set `SOL_IP` -> `IP_HDRINCL`.
3097    pub fn r#set_ip_header_included(
3098        &self,
3099        mut value: bool,
3100        ___deadline: zx::MonotonicInstant,
3101    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
3102        let _response =
3103            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
3104                fidl::encoding::EmptyStruct,
3105                fidl_fuchsia_posix::Errno,
3106            >>(
3107                (value,),
3108                0x5d06a606d95e8f3,
3109                fidl::encoding::DynamicFlags::empty(),
3110                ___deadline,
3111            )?;
3112        Ok(_response.map(|x| x))
3113    }
3114
3115    /// Get `SOL_IP` -> `IP_HDRINCL`.
3116    pub fn r#get_ip_header_included(
3117        &self,
3118        ___deadline: zx::MonotonicInstant,
3119    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
3120        let _response = self
3121            .client
3122            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3123                SocketGetIpHeaderIncludedResponse,
3124                fidl_fuchsia_posix::Errno,
3125            >>(
3126                (), 0x76125ad1f4d175f6, fidl::encoding::DynamicFlags::empty(), ___deadline
3127            )?;
3128        Ok(_response.map(|x| x.value))
3129    }
3130
3131    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
3132    pub fn r#set_icmpv6_filter(
3133        &self,
3134        mut filter: &Icmpv6Filter,
3135        ___deadline: zx::MonotonicInstant,
3136    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3137        let _response =
3138            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3139                fidl::encoding::EmptyStruct,
3140                fidl_fuchsia_posix::Errno,
3141            >>(
3142                (filter,),
3143                0x4ebea92a43ae68a9,
3144                fidl::encoding::DynamicFlags::empty(),
3145                ___deadline,
3146            )?;
3147        Ok(_response.map(|x| x))
3148    }
3149
3150    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3151    pub fn r#get_icmpv6_filter(
3152        &self,
3153        ___deadline: zx::MonotonicInstant,
3154    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3155        let _response =
3156            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3157                SocketGetIcmpv6FilterResponse,
3158                fidl_fuchsia_posix::Errno,
3159            >>(
3160                (),
3161                0x43bd4f3bc0970ace,
3162                fidl::encoding::DynamicFlags::empty(),
3163                ___deadline,
3164            )?;
3165        Ok(_response.map(|x| x.filter))
3166    }
3167
3168    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3169    pub fn r#set_ipv6_checksum(
3170        &self,
3171        mut config: &Ipv6ChecksumConfiguration,
3172        ___deadline: zx::MonotonicInstant,
3173    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3174        let _response =
3175            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3176                fidl::encoding::EmptyStruct,
3177                fidl_fuchsia_posix::Errno,
3178            >>(
3179                (config,),
3180                0x18b7809577199cb4,
3181                fidl::encoding::DynamicFlags::empty(),
3182                ___deadline,
3183            )?;
3184        Ok(_response.map(|x| x))
3185    }
3186
3187    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3188    pub fn r#get_ipv6_checksum(
3189        &self,
3190        ___deadline: zx::MonotonicInstant,
3191    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3192        let _response =
3193            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3194                SocketGetIpv6ChecksumResponse,
3195                fidl_fuchsia_posix::Errno,
3196            >>(
3197                (),
3198                0x1847bf5b2d263dd,
3199                fidl::encoding::DynamicFlags::empty(),
3200                ___deadline,
3201            )?;
3202        Ok(_response.map(|x| x.config))
3203    }
3204}
3205
3206#[derive(Debug, Clone)]
3207pub struct SocketProxy {
3208    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3209}
3210
3211impl fidl::endpoints::Proxy for SocketProxy {
3212    type Protocol = SocketMarker;
3213
3214    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3215        Self::new(inner)
3216    }
3217
3218    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3219        self.client.into_channel().map_err(|client| Self { client })
3220    }
3221
3222    fn as_channel(&self) -> &::fidl::AsyncChannel {
3223        self.client.as_channel()
3224    }
3225}
3226
3227impl SocketProxy {
3228    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3229    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3230        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3231        Self { client: fidl::client::Client::new(channel, protocol_name) }
3232    }
3233
3234    /// Get a Stream of events from the remote end of the protocol.
3235    ///
3236    /// # Panics
3237    ///
3238    /// Panics if the event stream was already taken.
3239    pub fn take_event_stream(&self) -> SocketEventStream {
3240        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3241    }
3242
3243    pub fn r#clone(
3244        &self,
3245        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3246    ) -> Result<(), fidl::Error> {
3247        SocketProxyInterface::r#clone(self, request)
3248    }
3249
3250    /// Terminates the connection.
3251    ///
3252    /// After calling `Close`, the client must not send any other requests.
3253    ///
3254    /// Servers, after sending the status response, should close the connection
3255    /// regardless of status and without sending an epitaph.
3256    ///
3257    /// Closing the client end of the channel should be semantically equivalent
3258    /// to calling `Close` without knowing when the close has completed or its
3259    /// status.
3260    pub fn r#close(
3261        &self,
3262    ) -> fidl::client::QueryResponseFut<
3263        fidl_fuchsia_unknown::CloseableCloseResult,
3264        fidl::encoding::DefaultFuchsiaResourceDialect,
3265    > {
3266        SocketProxyInterface::r#close(self)
3267    }
3268
3269    pub fn r#query(
3270        &self,
3271    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3272    {
3273        SocketProxyInterface::r#query(self)
3274    }
3275
3276    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3277    pub fn r#set_reuse_address(
3278        &self,
3279        mut value: bool,
3280    ) -> fidl::client::QueryResponseFut<
3281        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3282        fidl::encoding::DefaultFuchsiaResourceDialect,
3283    > {
3284        SocketProxyInterface::r#set_reuse_address(self, value)
3285    }
3286
3287    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3288    pub fn r#get_reuse_address(
3289        &self,
3290    ) -> fidl::client::QueryResponseFut<
3291        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3292        fidl::encoding::DefaultFuchsiaResourceDialect,
3293    > {
3294        SocketProxyInterface::r#get_reuse_address(self)
3295    }
3296
3297    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3298    /// Returns the last error if there is an error set on the socket.
3299    pub fn r#get_error(
3300        &self,
3301    ) -> fidl::client::QueryResponseFut<
3302        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3303        fidl::encoding::DefaultFuchsiaResourceDialect,
3304    > {
3305        SocketProxyInterface::r#get_error(self)
3306    }
3307
3308    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3309    pub fn r#set_broadcast(
3310        &self,
3311        mut value: bool,
3312    ) -> fidl::client::QueryResponseFut<
3313        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3314        fidl::encoding::DefaultFuchsiaResourceDialect,
3315    > {
3316        SocketProxyInterface::r#set_broadcast(self, value)
3317    }
3318
3319    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3320    pub fn r#get_broadcast(
3321        &self,
3322    ) -> fidl::client::QueryResponseFut<
3323        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3324        fidl::encoding::DefaultFuchsiaResourceDialect,
3325    > {
3326        SocketProxyInterface::r#get_broadcast(self)
3327    }
3328
3329    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3330    pub fn r#set_send_buffer(
3331        &self,
3332        mut value_bytes: u64,
3333    ) -> fidl::client::QueryResponseFut<
3334        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3335        fidl::encoding::DefaultFuchsiaResourceDialect,
3336    > {
3337        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3338    }
3339
3340    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3341    pub fn r#get_send_buffer(
3342        &self,
3343    ) -> fidl::client::QueryResponseFut<
3344        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3345        fidl::encoding::DefaultFuchsiaResourceDialect,
3346    > {
3347        SocketProxyInterface::r#get_send_buffer(self)
3348    }
3349
3350    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3351    pub fn r#set_receive_buffer(
3352        &self,
3353        mut value_bytes: u64,
3354    ) -> fidl::client::QueryResponseFut<
3355        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3356        fidl::encoding::DefaultFuchsiaResourceDialect,
3357    > {
3358        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3359    }
3360
3361    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3362    pub fn r#get_receive_buffer(
3363        &self,
3364    ) -> fidl::client::QueryResponseFut<
3365        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3366        fidl::encoding::DefaultFuchsiaResourceDialect,
3367    > {
3368        SocketProxyInterface::r#get_receive_buffer(self)
3369    }
3370
3371    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3372    pub fn r#set_keep_alive(
3373        &self,
3374        mut value: bool,
3375    ) -> fidl::client::QueryResponseFut<
3376        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3377        fidl::encoding::DefaultFuchsiaResourceDialect,
3378    > {
3379        SocketProxyInterface::r#set_keep_alive(self, value)
3380    }
3381
3382    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3383    pub fn r#get_keep_alive(
3384        &self,
3385    ) -> fidl::client::QueryResponseFut<
3386        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3387        fidl::encoding::DefaultFuchsiaResourceDialect,
3388    > {
3389        SocketProxyInterface::r#get_keep_alive(self)
3390    }
3391
3392    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3393    pub fn r#set_out_of_band_inline(
3394        &self,
3395        mut value: bool,
3396    ) -> fidl::client::QueryResponseFut<
3397        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3398        fidl::encoding::DefaultFuchsiaResourceDialect,
3399    > {
3400        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3401    }
3402
3403    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3404    pub fn r#get_out_of_band_inline(
3405        &self,
3406    ) -> fidl::client::QueryResponseFut<
3407        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3408        fidl::encoding::DefaultFuchsiaResourceDialect,
3409    > {
3410        SocketProxyInterface::r#get_out_of_band_inline(self)
3411    }
3412
3413    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3414    pub fn r#set_no_check(
3415        &self,
3416        mut value: bool,
3417    ) -> fidl::client::QueryResponseFut<
3418        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3419        fidl::encoding::DefaultFuchsiaResourceDialect,
3420    > {
3421        SocketProxyInterface::r#set_no_check(self, value)
3422    }
3423
3424    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3425    pub fn r#get_no_check(
3426        &self,
3427    ) -> fidl::client::QueryResponseFut<
3428        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3429        fidl::encoding::DefaultFuchsiaResourceDialect,
3430    > {
3431        SocketProxyInterface::r#get_no_check(self)
3432    }
3433
3434    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3435    pub fn r#set_linger(
3436        &self,
3437        mut linger: bool,
3438        mut length_secs: u32,
3439    ) -> fidl::client::QueryResponseFut<
3440        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3441        fidl::encoding::DefaultFuchsiaResourceDialect,
3442    > {
3443        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3444    }
3445
3446    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3447    pub fn r#get_linger(
3448        &self,
3449    ) -> fidl::client::QueryResponseFut<
3450        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3451        fidl::encoding::DefaultFuchsiaResourceDialect,
3452    > {
3453        SocketProxyInterface::r#get_linger(self)
3454    }
3455
3456    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3457    pub fn r#set_reuse_port(
3458        &self,
3459        mut value: bool,
3460    ) -> fidl::client::QueryResponseFut<
3461        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3462        fidl::encoding::DefaultFuchsiaResourceDialect,
3463    > {
3464        SocketProxyInterface::r#set_reuse_port(self, value)
3465    }
3466
3467    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
3468    pub fn r#get_reuse_port(
3469        &self,
3470    ) -> fidl::client::QueryResponseFut<
3471        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
3472        fidl::encoding::DefaultFuchsiaResourceDialect,
3473    > {
3474        SocketProxyInterface::r#get_reuse_port(self)
3475    }
3476
3477    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
3478    pub fn r#get_accept_conn(
3479        &self,
3480    ) -> fidl::client::QueryResponseFut<
3481        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
3482        fidl::encoding::DefaultFuchsiaResourceDialect,
3483    > {
3484        SocketProxyInterface::r#get_accept_conn(self)
3485    }
3486
3487    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3488    pub fn r#set_bind_to_device(
3489        &self,
3490        mut value: &str,
3491    ) -> fidl::client::QueryResponseFut<
3492        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
3493        fidl::encoding::DefaultFuchsiaResourceDialect,
3494    > {
3495        SocketProxyInterface::r#set_bind_to_device(self, value)
3496    }
3497
3498    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3499    pub fn r#get_bind_to_device(
3500        &self,
3501    ) -> fidl::client::QueryResponseFut<
3502        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
3503        fidl::encoding::DefaultFuchsiaResourceDialect,
3504    > {
3505        SocketProxyInterface::r#get_bind_to_device(self)
3506    }
3507
3508    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3509    /// If `value` is 0, this clears the bound interface.
3510    pub fn r#set_bind_to_interface_index(
3511        &self,
3512        mut value: u64,
3513    ) -> fidl::client::QueryResponseFut<
3514        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
3515        fidl::encoding::DefaultFuchsiaResourceDialect,
3516    > {
3517        SocketProxyInterface::r#set_bind_to_interface_index(self, value)
3518    }
3519
3520    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3521    pub fn r#get_bind_to_interface_index(
3522        &self,
3523    ) -> fidl::client::QueryResponseFut<
3524        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
3525        fidl::encoding::DefaultFuchsiaResourceDialect,
3526    > {
3527        SocketProxyInterface::r#get_bind_to_interface_index(self)
3528    }
3529
3530    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3531    pub fn r#set_timestamp(
3532        &self,
3533        mut value: fidl_fuchsia_posix_socket::TimestampOption,
3534    ) -> fidl::client::QueryResponseFut<
3535        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
3536        fidl::encoding::DefaultFuchsiaResourceDialect,
3537    > {
3538        SocketProxyInterface::r#set_timestamp(self, value)
3539    }
3540
3541    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3542    pub fn r#get_timestamp(
3543        &self,
3544    ) -> fidl::client::QueryResponseFut<
3545        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
3546        fidl::encoding::DefaultFuchsiaResourceDialect,
3547    > {
3548        SocketProxyInterface::r#get_timestamp(self)
3549    }
3550
3551    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3552    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3553    /// mark can be set independently in each domain.
3554    pub fn r#set_mark(
3555        &self,
3556        mut domain: fidl_fuchsia_net::MarkDomain,
3557        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
3558    ) -> fidl::client::QueryResponseFut<
3559        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
3560        fidl::encoding::DefaultFuchsiaResourceDialect,
3561    > {
3562        SocketProxyInterface::r#set_mark(self, domain, mark)
3563    }
3564
3565    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3566    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3567    /// mark can be retrieved independently in each domain.
3568    pub fn r#get_mark(
3569        &self,
3570        mut domain: fidl_fuchsia_net::MarkDomain,
3571    ) -> fidl::client::QueryResponseFut<
3572        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
3573        fidl::encoding::DefaultFuchsiaResourceDialect,
3574    > {
3575        SocketProxyInterface::r#get_mark(self, domain)
3576    }
3577
3578    /// Sets the local address used for the socket.
3579    pub fn r#bind(
3580        &self,
3581        mut addr: &fidl_fuchsia_net::SocketAddress,
3582    ) -> fidl::client::QueryResponseFut<
3583        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
3584        fidl::encoding::DefaultFuchsiaResourceDialect,
3585    > {
3586        SocketProxyInterface::r#bind(self, addr)
3587    }
3588
3589    /// Initiates a connection to a remote address.
3590    pub fn r#connect(
3591        &self,
3592        mut addr: &fidl_fuchsia_net::SocketAddress,
3593    ) -> fidl::client::QueryResponseFut<
3594        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
3595        fidl::encoding::DefaultFuchsiaResourceDialect,
3596    > {
3597        SocketProxyInterface::r#connect(self, addr)
3598    }
3599
3600    /// Clears connection information from this socket.
3601    pub fn r#disconnect(
3602        &self,
3603    ) -> fidl::client::QueryResponseFut<
3604        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
3605        fidl::encoding::DefaultFuchsiaResourceDialect,
3606    > {
3607        SocketProxyInterface::r#disconnect(self)
3608    }
3609
3610    /// Retrieves the local socket address.
3611    pub fn r#get_sock_name(
3612        &self,
3613    ) -> fidl::client::QueryResponseFut<
3614        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
3615        fidl::encoding::DefaultFuchsiaResourceDialect,
3616    > {
3617        SocketProxyInterface::r#get_sock_name(self)
3618    }
3619
3620    /// Retrieves the remote socket address.
3621    pub fn r#get_peer_name(
3622        &self,
3623    ) -> fidl::client::QueryResponseFut<
3624        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
3625        fidl::encoding::DefaultFuchsiaResourceDialect,
3626    > {
3627        SocketProxyInterface::r#get_peer_name(self)
3628    }
3629
3630    /// Shuts down part of the socket.
3631    pub fn r#shutdown(
3632        &self,
3633        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
3634    ) -> fidl::client::QueryResponseFut<
3635        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
3636        fidl::encoding::DefaultFuchsiaResourceDialect,
3637    > {
3638        SocketProxyInterface::r#shutdown(self, mode)
3639    }
3640
3641    /// Set `SOL_IP` -> `IP_TOS`.
3642    pub fn r#set_ip_type_of_service(
3643        &self,
3644        mut value: u8,
3645    ) -> fidl::client::QueryResponseFut<
3646        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
3647        fidl::encoding::DefaultFuchsiaResourceDialect,
3648    > {
3649        SocketProxyInterface::r#set_ip_type_of_service(self, value)
3650    }
3651
3652    /// Get `SOL_IP` -> `IP_TOS`.
3653    pub fn r#get_ip_type_of_service(
3654        &self,
3655    ) -> fidl::client::QueryResponseFut<
3656        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
3657        fidl::encoding::DefaultFuchsiaResourceDialect,
3658    > {
3659        SocketProxyInterface::r#get_ip_type_of_service(self)
3660    }
3661
3662    /// Set `SOL_IP` -> `IP_TTL`.
3663    pub fn r#set_ip_ttl(
3664        &self,
3665        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3666    ) -> fidl::client::QueryResponseFut<
3667        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
3668        fidl::encoding::DefaultFuchsiaResourceDialect,
3669    > {
3670        SocketProxyInterface::r#set_ip_ttl(self, value)
3671    }
3672
3673    /// Get `SOL_IP` -> `IP_TTL`.
3674    pub fn r#get_ip_ttl(
3675        &self,
3676    ) -> fidl::client::QueryResponseFut<
3677        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
3678        fidl::encoding::DefaultFuchsiaResourceDialect,
3679    > {
3680        SocketProxyInterface::r#get_ip_ttl(self)
3681    }
3682
3683    /// Set `SOL_IP` -> `IP_PKTINFO`.
3684    pub fn r#set_ip_packet_info(
3685        &self,
3686        mut value: bool,
3687    ) -> fidl::client::QueryResponseFut<
3688        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
3689        fidl::encoding::DefaultFuchsiaResourceDialect,
3690    > {
3691        SocketProxyInterface::r#set_ip_packet_info(self, value)
3692    }
3693
3694    /// Get `SOL_IP` -> `IP_PKTINFO`.
3695    pub fn r#get_ip_packet_info(
3696        &self,
3697    ) -> fidl::client::QueryResponseFut<
3698        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
3699        fidl::encoding::DefaultFuchsiaResourceDialect,
3700    > {
3701        SocketProxyInterface::r#get_ip_packet_info(self)
3702    }
3703
3704    /// Set `SOL_IP` -> `IP_RECVTOS`.
3705    pub fn r#set_ip_receive_type_of_service(
3706        &self,
3707        mut value: bool,
3708    ) -> fidl::client::QueryResponseFut<
3709        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
3710        fidl::encoding::DefaultFuchsiaResourceDialect,
3711    > {
3712        SocketProxyInterface::r#set_ip_receive_type_of_service(self, value)
3713    }
3714
3715    /// Get `SOL_IP` -> `IP_RECVTOS`.
3716    pub fn r#get_ip_receive_type_of_service(
3717        &self,
3718    ) -> fidl::client::QueryResponseFut<
3719        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
3720        fidl::encoding::DefaultFuchsiaResourceDialect,
3721    > {
3722        SocketProxyInterface::r#get_ip_receive_type_of_service(self)
3723    }
3724
3725    /// Set `SOL_IP` -> `IP_RECVTTL`.
3726    pub fn r#set_ip_receive_ttl(
3727        &self,
3728        mut value: bool,
3729    ) -> fidl::client::QueryResponseFut<
3730        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
3731        fidl::encoding::DefaultFuchsiaResourceDialect,
3732    > {
3733        SocketProxyInterface::r#set_ip_receive_ttl(self, value)
3734    }
3735
3736    /// Get `SOL_IP` -> `IP_RECVTTL`.
3737    pub fn r#get_ip_receive_ttl(
3738        &self,
3739    ) -> fidl::client::QueryResponseFut<
3740        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
3741        fidl::encoding::DefaultFuchsiaResourceDialect,
3742    > {
3743        SocketProxyInterface::r#get_ip_receive_ttl(self)
3744    }
3745
3746    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
3747    pub fn r#set_ip_multicast_interface(
3748        &self,
3749        mut iface: u64,
3750        mut address: &fidl_fuchsia_net::Ipv4Address,
3751    ) -> fidl::client::QueryResponseFut<
3752        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
3753        fidl::encoding::DefaultFuchsiaResourceDialect,
3754    > {
3755        SocketProxyInterface::r#set_ip_multicast_interface(self, iface, address)
3756    }
3757
3758    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
3759    pub fn r#get_ip_multicast_interface(
3760        &self,
3761    ) -> fidl::client::QueryResponseFut<
3762        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
3763        fidl::encoding::DefaultFuchsiaResourceDialect,
3764    > {
3765        SocketProxyInterface::r#get_ip_multicast_interface(self)
3766    }
3767
3768    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
3769    pub fn r#set_ip_multicast_ttl(
3770        &self,
3771        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3772    ) -> fidl::client::QueryResponseFut<
3773        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
3774        fidl::encoding::DefaultFuchsiaResourceDialect,
3775    > {
3776        SocketProxyInterface::r#set_ip_multicast_ttl(self, value)
3777    }
3778
3779    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
3780    pub fn r#get_ip_multicast_ttl(
3781        &self,
3782    ) -> fidl::client::QueryResponseFut<
3783        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
3784        fidl::encoding::DefaultFuchsiaResourceDialect,
3785    > {
3786        SocketProxyInterface::r#get_ip_multicast_ttl(self)
3787    }
3788
3789    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
3790    pub fn r#set_ip_multicast_loopback(
3791        &self,
3792        mut value: bool,
3793    ) -> fidl::client::QueryResponseFut<
3794        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
3795        fidl::encoding::DefaultFuchsiaResourceDialect,
3796    > {
3797        SocketProxyInterface::r#set_ip_multicast_loopback(self, value)
3798    }
3799
3800    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
3801    pub fn r#get_ip_multicast_loopback(
3802        &self,
3803    ) -> fidl::client::QueryResponseFut<
3804        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
3805        fidl::encoding::DefaultFuchsiaResourceDialect,
3806    > {
3807        SocketProxyInterface::r#get_ip_multicast_loopback(self)
3808    }
3809
3810    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
3811    pub fn r#add_ip_membership(
3812        &self,
3813        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3814    ) -> fidl::client::QueryResponseFut<
3815        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
3816        fidl::encoding::DefaultFuchsiaResourceDialect,
3817    > {
3818        SocketProxyInterface::r#add_ip_membership(self, membership)
3819    }
3820
3821    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
3822    pub fn r#drop_ip_membership(
3823        &self,
3824        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3825    ) -> fidl::client::QueryResponseFut<
3826        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
3827        fidl::encoding::DefaultFuchsiaResourceDialect,
3828    > {
3829        SocketProxyInterface::r#drop_ip_membership(self, membership)
3830    }
3831
3832    /// Set `SOL_IP` -> `IP_TRANSPARENT`
3833    pub fn r#set_ip_transparent(
3834        &self,
3835        mut value: bool,
3836    ) -> fidl::client::QueryResponseFut<
3837        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
3838        fidl::encoding::DefaultFuchsiaResourceDialect,
3839    > {
3840        SocketProxyInterface::r#set_ip_transparent(self, value)
3841    }
3842
3843    /// Get `SOL_IP` -> `IP_TRANSPARENT`
3844    pub fn r#get_ip_transparent(
3845        &self,
3846    ) -> fidl::client::QueryResponseFut<
3847        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
3848        fidl::encoding::DefaultFuchsiaResourceDialect,
3849    > {
3850        SocketProxyInterface::r#get_ip_transparent(self)
3851    }
3852
3853    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
3854    pub fn r#set_ip_receive_original_destination_address(
3855        &self,
3856        mut value: bool,
3857    ) -> fidl::client::QueryResponseFut<
3858        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
3859        fidl::encoding::DefaultFuchsiaResourceDialect,
3860    > {
3861        SocketProxyInterface::r#set_ip_receive_original_destination_address(self, value)
3862    }
3863
3864    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
3865    pub fn r#get_ip_receive_original_destination_address(
3866        &self,
3867    ) -> fidl::client::QueryResponseFut<
3868        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
3869        fidl::encoding::DefaultFuchsiaResourceDialect,
3870    > {
3871        SocketProxyInterface::r#get_ip_receive_original_destination_address(self)
3872    }
3873
3874    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
3875    pub fn r#add_ipv6_membership(
3876        &self,
3877        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3878    ) -> fidl::client::QueryResponseFut<
3879        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
3880        fidl::encoding::DefaultFuchsiaResourceDialect,
3881    > {
3882        SocketProxyInterface::r#add_ipv6_membership(self, membership)
3883    }
3884
3885    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
3886    pub fn r#drop_ipv6_membership(
3887        &self,
3888        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3889    ) -> fidl::client::QueryResponseFut<
3890        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
3891        fidl::encoding::DefaultFuchsiaResourceDialect,
3892    > {
3893        SocketProxyInterface::r#drop_ipv6_membership(self, membership)
3894    }
3895
3896    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3897    pub fn r#set_ipv6_multicast_interface(
3898        &self,
3899        mut value: u64,
3900    ) -> fidl::client::QueryResponseFut<
3901        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
3902        fidl::encoding::DefaultFuchsiaResourceDialect,
3903    > {
3904        SocketProxyInterface::r#set_ipv6_multicast_interface(self, value)
3905    }
3906
3907    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3908    pub fn r#get_ipv6_multicast_interface(
3909        &self,
3910    ) -> fidl::client::QueryResponseFut<
3911        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
3912        fidl::encoding::DefaultFuchsiaResourceDialect,
3913    > {
3914        SocketProxyInterface::r#get_ipv6_multicast_interface(self)
3915    }
3916
3917    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3918    pub fn r#set_ipv6_unicast_hops(
3919        &self,
3920        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3921    ) -> fidl::client::QueryResponseFut<
3922        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
3923        fidl::encoding::DefaultFuchsiaResourceDialect,
3924    > {
3925        SocketProxyInterface::r#set_ipv6_unicast_hops(self, value)
3926    }
3927
3928    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3929    pub fn r#get_ipv6_unicast_hops(
3930        &self,
3931    ) -> fidl::client::QueryResponseFut<
3932        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
3933        fidl::encoding::DefaultFuchsiaResourceDialect,
3934    > {
3935        SocketProxyInterface::r#get_ipv6_unicast_hops(self)
3936    }
3937
3938    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3939    pub fn r#set_ipv6_receive_hop_limit(
3940        &self,
3941        mut value: bool,
3942    ) -> fidl::client::QueryResponseFut<
3943        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
3944        fidl::encoding::DefaultFuchsiaResourceDialect,
3945    > {
3946        SocketProxyInterface::r#set_ipv6_receive_hop_limit(self, value)
3947    }
3948
3949    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3950    pub fn r#get_ipv6_receive_hop_limit(
3951        &self,
3952    ) -> fidl::client::QueryResponseFut<
3953        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
3954        fidl::encoding::DefaultFuchsiaResourceDialect,
3955    > {
3956        SocketProxyInterface::r#get_ipv6_receive_hop_limit(self)
3957    }
3958
3959    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3960    pub fn r#set_ipv6_multicast_hops(
3961        &self,
3962        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3963    ) -> fidl::client::QueryResponseFut<
3964        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
3965        fidl::encoding::DefaultFuchsiaResourceDialect,
3966    > {
3967        SocketProxyInterface::r#set_ipv6_multicast_hops(self, value)
3968    }
3969
3970    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3971    pub fn r#get_ipv6_multicast_hops(
3972        &self,
3973    ) -> fidl::client::QueryResponseFut<
3974        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
3975        fidl::encoding::DefaultFuchsiaResourceDialect,
3976    > {
3977        SocketProxyInterface::r#get_ipv6_multicast_hops(self)
3978    }
3979
3980    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3981    pub fn r#set_ipv6_multicast_loopback(
3982        &self,
3983        mut value: bool,
3984    ) -> fidl::client::QueryResponseFut<
3985        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
3986        fidl::encoding::DefaultFuchsiaResourceDialect,
3987    > {
3988        SocketProxyInterface::r#set_ipv6_multicast_loopback(self, value)
3989    }
3990
3991    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3992    pub fn r#get_ipv6_multicast_loopback(
3993        &self,
3994    ) -> fidl::client::QueryResponseFut<
3995        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
3996        fidl::encoding::DefaultFuchsiaResourceDialect,
3997    > {
3998        SocketProxyInterface::r#get_ipv6_multicast_loopback(self)
3999    }
4000
4001    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
4002    pub fn r#set_ipv6_only(
4003        &self,
4004        mut value: bool,
4005    ) -> fidl::client::QueryResponseFut<
4006        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
4007        fidl::encoding::DefaultFuchsiaResourceDialect,
4008    > {
4009        SocketProxyInterface::r#set_ipv6_only(self, value)
4010    }
4011
4012    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
4013    pub fn r#get_ipv6_only(
4014        &self,
4015    ) -> fidl::client::QueryResponseFut<
4016        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
4017        fidl::encoding::DefaultFuchsiaResourceDialect,
4018    > {
4019        SocketProxyInterface::r#get_ipv6_only(self)
4020    }
4021
4022    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
4023    pub fn r#set_ipv6_receive_traffic_class(
4024        &self,
4025        mut value: bool,
4026    ) -> fidl::client::QueryResponseFut<
4027        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
4028        fidl::encoding::DefaultFuchsiaResourceDialect,
4029    > {
4030        SocketProxyInterface::r#set_ipv6_receive_traffic_class(self, value)
4031    }
4032
4033    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
4034    pub fn r#get_ipv6_receive_traffic_class(
4035        &self,
4036    ) -> fidl::client::QueryResponseFut<
4037        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
4038        fidl::encoding::DefaultFuchsiaResourceDialect,
4039    > {
4040        SocketProxyInterface::r#get_ipv6_receive_traffic_class(self)
4041    }
4042
4043    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
4044    pub fn r#set_ipv6_traffic_class(
4045        &self,
4046        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
4047    ) -> fidl::client::QueryResponseFut<
4048        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
4049        fidl::encoding::DefaultFuchsiaResourceDialect,
4050    > {
4051        SocketProxyInterface::r#set_ipv6_traffic_class(self, value)
4052    }
4053
4054    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
4055    pub fn r#get_ipv6_traffic_class(
4056        &self,
4057    ) -> fidl::client::QueryResponseFut<
4058        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
4059        fidl::encoding::DefaultFuchsiaResourceDialect,
4060    > {
4061        SocketProxyInterface::r#get_ipv6_traffic_class(self)
4062    }
4063
4064    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4065    pub fn r#set_ipv6_receive_packet_info(
4066        &self,
4067        mut value: bool,
4068    ) -> fidl::client::QueryResponseFut<
4069        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
4070        fidl::encoding::DefaultFuchsiaResourceDialect,
4071    > {
4072        SocketProxyInterface::r#set_ipv6_receive_packet_info(self, value)
4073    }
4074
4075    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4076    pub fn r#get_ipv6_receive_packet_info(
4077        &self,
4078    ) -> fidl::client::QueryResponseFut<
4079        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
4080        fidl::encoding::DefaultFuchsiaResourceDialect,
4081    > {
4082        SocketProxyInterface::r#get_ipv6_receive_packet_info(self)
4083    }
4084
4085    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
4086    pub fn r#get_original_destination(
4087        &self,
4088    ) -> fidl::client::QueryResponseFut<
4089        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
4090        fidl::encoding::DefaultFuchsiaResourceDialect,
4091    > {
4092        SocketProxyInterface::r#get_original_destination(self)
4093    }
4094
4095    pub fn r#describe(
4096        &self,
4097    ) -> fidl::client::QueryResponseFut<
4098        SocketDescribeResponse,
4099        fidl::encoding::DefaultFuchsiaResourceDialect,
4100    > {
4101        SocketProxyInterface::r#describe(self)
4102    }
4103
4104    /// Receives a message from the socket.
4105    ///
4106    /// + request `want_addr` request message's source address information to
4107    ///   be returned.
4108    /// + request `data_len` the maximum allowed length of the response data
4109    ///   buffer.
4110    /// + request `want_control` request ancillary data to be returned.
4111    /// + request `flags` flags for the receive request.
4112    /// - response `addr` the message's source address information, if
4113    ///   requested.
4114    /// - response `data` the message.
4115    /// - response `control` control messages, if requested.
4116    /// - response `truncated` indicates whether or not the returned message
4117    ///   was truncated.
4118    pub fn r#recv_msg(
4119        &self,
4120        mut want_addr: bool,
4121        mut data_len: u32,
4122        mut want_control: bool,
4123        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
4124    ) -> fidl::client::QueryResponseFut<
4125        SocketRecvMsgResult,
4126        fidl::encoding::DefaultFuchsiaResourceDialect,
4127    > {
4128        SocketProxyInterface::r#recv_msg(self, want_addr, data_len, want_control, flags)
4129    }
4130
4131    /// Sends a message on the socket.
4132    ///
4133    /// + request `addr` the address to send the message to. If unset, will
4134    ///   send to the connected peer.
4135    /// + request `data` the message.
4136    /// + request `control` ancillary data.
4137    /// + request `flags` flags for the send request.
4138    pub fn r#send_msg(
4139        &self,
4140        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
4141        mut data: &[u8],
4142        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
4143        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
4144    ) -> fidl::client::QueryResponseFut<
4145        SocketSendMsgResult,
4146        fidl::encoding::DefaultFuchsiaResourceDialect,
4147    > {
4148        SocketProxyInterface::r#send_msg(self, addr, data, control, flags)
4149    }
4150
4151    /// Retrieves creation information from the socket.
4152    ///
4153    /// - response `domain` the socket's associated domain.
4154    /// - response `proto` the socket's associated protocol.
4155    pub fn r#get_info(
4156        &self,
4157    ) -> fidl::client::QueryResponseFut<
4158        SocketGetInfoResult,
4159        fidl::encoding::DefaultFuchsiaResourceDialect,
4160    > {
4161        SocketProxyInterface::r#get_info(self)
4162    }
4163
4164    /// Set `SOL_IP` -> `IP_HDRINCL`.
4165    pub fn r#set_ip_header_included(
4166        &self,
4167        mut value: bool,
4168    ) -> fidl::client::QueryResponseFut<
4169        SocketSetIpHeaderIncludedResult,
4170        fidl::encoding::DefaultFuchsiaResourceDialect,
4171    > {
4172        SocketProxyInterface::r#set_ip_header_included(self, value)
4173    }
4174
4175    /// Get `SOL_IP` -> `IP_HDRINCL`.
4176    pub fn r#get_ip_header_included(
4177        &self,
4178    ) -> fidl::client::QueryResponseFut<
4179        SocketGetIpHeaderIncludedResult,
4180        fidl::encoding::DefaultFuchsiaResourceDialect,
4181    > {
4182        SocketProxyInterface::r#get_ip_header_included(self)
4183    }
4184
4185    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
4186    pub fn r#set_icmpv6_filter(
4187        &self,
4188        mut filter: &Icmpv6Filter,
4189    ) -> fidl::client::QueryResponseFut<
4190        SocketSetIcmpv6FilterResult,
4191        fidl::encoding::DefaultFuchsiaResourceDialect,
4192    > {
4193        SocketProxyInterface::r#set_icmpv6_filter(self, filter)
4194    }
4195
4196    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
4197    pub fn r#get_icmpv6_filter(
4198        &self,
4199    ) -> fidl::client::QueryResponseFut<
4200        SocketGetIcmpv6FilterResult,
4201        fidl::encoding::DefaultFuchsiaResourceDialect,
4202    > {
4203        SocketProxyInterface::r#get_icmpv6_filter(self)
4204    }
4205
4206    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
4207    pub fn r#set_ipv6_checksum(
4208        &self,
4209        mut config: &Ipv6ChecksumConfiguration,
4210    ) -> fidl::client::QueryResponseFut<
4211        SocketSetIpv6ChecksumResult,
4212        fidl::encoding::DefaultFuchsiaResourceDialect,
4213    > {
4214        SocketProxyInterface::r#set_ipv6_checksum(self, config)
4215    }
4216
4217    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
4218    pub fn r#get_ipv6_checksum(
4219        &self,
4220    ) -> fidl::client::QueryResponseFut<
4221        SocketGetIpv6ChecksumResult,
4222        fidl::encoding::DefaultFuchsiaResourceDialect,
4223    > {
4224        SocketProxyInterface::r#get_ipv6_checksum(self)
4225    }
4226}
4227
4228impl SocketProxyInterface for SocketProxy {
4229    fn r#clone(
4230        &self,
4231        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
4232    ) -> Result<(), fidl::Error> {
4233        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
4234            (request,),
4235            0x20d8a7aba2168a79,
4236            fidl::encoding::DynamicFlags::empty(),
4237        )
4238    }
4239
4240    type CloseResponseFut = fidl::client::QueryResponseFut<
4241        fidl_fuchsia_unknown::CloseableCloseResult,
4242        fidl::encoding::DefaultFuchsiaResourceDialect,
4243    >;
4244    fn r#close(&self) -> Self::CloseResponseFut {
4245        fn _decode(
4246            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4247        ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
4248            let _response = fidl::client::decode_transaction_body::<
4249                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
4250                fidl::encoding::DefaultFuchsiaResourceDialect,
4251                0x5ac5d459ad7f657e,
4252            >(_buf?)?;
4253            Ok(_response.map(|x| x))
4254        }
4255        self.client.send_query_and_decode::<
4256            fidl::encoding::EmptyPayload,
4257            fidl_fuchsia_unknown::CloseableCloseResult,
4258        >(
4259            (),
4260            0x5ac5d459ad7f657e,
4261            fidl::encoding::DynamicFlags::empty(),
4262            _decode,
4263        )
4264    }
4265
4266    type QueryResponseFut =
4267        fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
4268    fn r#query(&self) -> Self::QueryResponseFut {
4269        fn _decode(
4270            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4271        ) -> Result<Vec<u8>, fidl::Error> {
4272            let _response = fidl::client::decode_transaction_body::<
4273                fidl_fuchsia_unknown::QueryableQueryResponse,
4274                fidl::encoding::DefaultFuchsiaResourceDialect,
4275                0x2658edee9decfc06,
4276            >(_buf?)?;
4277            Ok(_response.protocol)
4278        }
4279        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<u8>>(
4280            (),
4281            0x2658edee9decfc06,
4282            fidl::encoding::DynamicFlags::empty(),
4283            _decode,
4284        )
4285    }
4286
4287    type SetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4288        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4289        fidl::encoding::DefaultFuchsiaResourceDialect,
4290    >;
4291    fn r#set_reuse_address(&self, mut value: bool) -> Self::SetReuseAddressResponseFut {
4292        fn _decode(
4293            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4294        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error>
4295        {
4296            let _response = fidl::client::decode_transaction_body::<
4297                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4298                fidl::encoding::DefaultFuchsiaResourceDialect,
4299                0x1fd74ee8b9a4a876,
4300            >(_buf?)?;
4301            Ok(_response.map(|x| x))
4302        }
4303        self.client.send_query_and_decode::<
4304            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
4305            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4306        >(
4307            (value,),
4308            0x1fd74ee8b9a4a876,
4309            fidl::encoding::DynamicFlags::empty(),
4310            _decode,
4311        )
4312    }
4313
4314    type GetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4315        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4316        fidl::encoding::DefaultFuchsiaResourceDialect,
4317    >;
4318    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut {
4319        fn _decode(
4320            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4321        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error>
4322        {
4323            let _response = fidl::client::decode_transaction_body::<
4324                fidl::encoding::ResultType<
4325                    fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
4326                    fidl_fuchsia_posix::Errno,
4327                >,
4328                fidl::encoding::DefaultFuchsiaResourceDialect,
4329                0x67b7206b8d1bc0a5,
4330            >(_buf?)?;
4331            Ok(_response.map(|x| x.value))
4332        }
4333        self.client.send_query_and_decode::<
4334            fidl::encoding::EmptyPayload,
4335            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4336        >(
4337            (),
4338            0x67b7206b8d1bc0a5,
4339            fidl::encoding::DynamicFlags::empty(),
4340            _decode,
4341        )
4342    }
4343
4344    type GetErrorResponseFut = fidl::client::QueryResponseFut<
4345        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4346        fidl::encoding::DefaultFuchsiaResourceDialect,
4347    >;
4348    fn r#get_error(&self) -> Self::GetErrorResponseFut {
4349        fn _decode(
4350            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4351        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
4352            let _response = fidl::client::decode_transaction_body::<
4353                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4354                fidl::encoding::DefaultFuchsiaResourceDialect,
4355                0x5aad39b33e5f6ebb,
4356            >(_buf?)?;
4357            Ok(_response.map(|x| x))
4358        }
4359        self.client.send_query_and_decode::<
4360            fidl::encoding::EmptyPayload,
4361            fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4362        >(
4363            (),
4364            0x5aad39b33e5f6ebb,
4365            fidl::encoding::DynamicFlags::empty(),
4366            _decode,
4367        )
4368    }
4369
4370    type SetBroadcastResponseFut = fidl::client::QueryResponseFut<
4371        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4372        fidl::encoding::DefaultFuchsiaResourceDialect,
4373    >;
4374    fn r#set_broadcast(&self, mut value: bool) -> Self::SetBroadcastResponseFut {
4375        fn _decode(
4376            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4377        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
4378            let _response = fidl::client::decode_transaction_body::<
4379                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4380                fidl::encoding::DefaultFuchsiaResourceDialect,
4381                0x6023e081ce3cd947,
4382            >(_buf?)?;
4383            Ok(_response.map(|x| x))
4384        }
4385        self.client.send_query_and_decode::<
4386            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
4387            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4388        >(
4389            (value,),
4390            0x6023e081ce3cd947,
4391            fidl::encoding::DynamicFlags::empty(),
4392            _decode,
4393        )
4394    }
4395
4396    type GetBroadcastResponseFut = fidl::client::QueryResponseFut<
4397        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4398        fidl::encoding::DefaultFuchsiaResourceDialect,
4399    >;
4400    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut {
4401        fn _decode(
4402            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4403        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
4404            let _response = fidl::client::decode_transaction_body::<
4405                fidl::encoding::ResultType<
4406                    fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
4407                    fidl_fuchsia_posix::Errno,
4408                >,
4409                fidl::encoding::DefaultFuchsiaResourceDialect,
4410                0x68796fc556f9780d,
4411            >(_buf?)?;
4412            Ok(_response.map(|x| x.value))
4413        }
4414        self.client.send_query_and_decode::<
4415            fidl::encoding::EmptyPayload,
4416            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4417        >(
4418            (),
4419            0x68796fc556f9780d,
4420            fidl::encoding::DynamicFlags::empty(),
4421            _decode,
4422        )
4423    }
4424
4425    type SetSendBufferResponseFut = fidl::client::QueryResponseFut<
4426        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4427        fidl::encoding::DefaultFuchsiaResourceDialect,
4428    >;
4429    fn r#set_send_buffer(&self, mut value_bytes: u64) -> Self::SetSendBufferResponseFut {
4430        fn _decode(
4431            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4432        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
4433            let _response = fidl::client::decode_transaction_body::<
4434                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4435                fidl::encoding::DefaultFuchsiaResourceDialect,
4436                0x756eac32d73a7a70,
4437            >(_buf?)?;
4438            Ok(_response.map(|x| x))
4439        }
4440        self.client.send_query_and_decode::<
4441            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
4442            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4443        >(
4444            (value_bytes,),
4445            0x756eac32d73a7a70,
4446            fidl::encoding::DynamicFlags::empty(),
4447            _decode,
4448        )
4449    }
4450
4451    type GetSendBufferResponseFut = fidl::client::QueryResponseFut<
4452        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4453        fidl::encoding::DefaultFuchsiaResourceDialect,
4454    >;
4455    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut {
4456        fn _decode(
4457            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4458        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
4459            let _response = fidl::client::decode_transaction_body::<
4460                fidl::encoding::ResultType<
4461                    fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
4462                    fidl_fuchsia_posix::Errno,
4463                >,
4464                fidl::encoding::DefaultFuchsiaResourceDialect,
4465                0x78a52fd9c7b2410b,
4466            >(_buf?)?;
4467            Ok(_response.map(|x| x.value_bytes))
4468        }
4469        self.client.send_query_and_decode::<
4470            fidl::encoding::EmptyPayload,
4471            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4472        >(
4473            (),
4474            0x78a52fd9c7b2410b,
4475            fidl::encoding::DynamicFlags::empty(),
4476            _decode,
4477        )
4478    }
4479
4480    type SetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4481        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4482        fidl::encoding::DefaultFuchsiaResourceDialect,
4483    >;
4484    fn r#set_receive_buffer(&self, mut value_bytes: u64) -> Self::SetReceiveBufferResponseFut {
4485        fn _decode(
4486            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4487        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error>
4488        {
4489            let _response = fidl::client::decode_transaction_body::<
4490                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4491                fidl::encoding::DefaultFuchsiaResourceDialect,
4492                0x6b0cf2f1919c7001,
4493            >(_buf?)?;
4494            Ok(_response.map(|x| x))
4495        }
4496        self.client.send_query_and_decode::<
4497            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
4498            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4499        >(
4500            (value_bytes,),
4501            0x6b0cf2f1919c7001,
4502            fidl::encoding::DynamicFlags::empty(),
4503            _decode,
4504        )
4505    }
4506
4507    type GetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4508        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4509        fidl::encoding::DefaultFuchsiaResourceDialect,
4510    >;
4511    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut {
4512        fn _decode(
4513            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4514        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error>
4515        {
4516            let _response = fidl::client::decode_transaction_body::<
4517                fidl::encoding::ResultType<
4518                    fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
4519                    fidl_fuchsia_posix::Errno,
4520                >,
4521                fidl::encoding::DefaultFuchsiaResourceDialect,
4522                0x14c1a4b64f709e5c,
4523            >(_buf?)?;
4524            Ok(_response.map(|x| x.value_bytes))
4525        }
4526        self.client.send_query_and_decode::<
4527            fidl::encoding::EmptyPayload,
4528            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4529        >(
4530            (),
4531            0x14c1a4b64f709e5c,
4532            fidl::encoding::DynamicFlags::empty(),
4533            _decode,
4534        )
4535    }
4536
4537    type SetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4538        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4539        fidl::encoding::DefaultFuchsiaResourceDialect,
4540    >;
4541    fn r#set_keep_alive(&self, mut value: bool) -> Self::SetKeepAliveResponseFut {
4542        fn _decode(
4543            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4544        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
4545            let _response = fidl::client::decode_transaction_body::<
4546                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4547                fidl::encoding::DefaultFuchsiaResourceDialect,
4548                0x572df8f0b920d2c7,
4549            >(_buf?)?;
4550            Ok(_response.map(|x| x))
4551        }
4552        self.client.send_query_and_decode::<
4553            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
4554            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4555        >(
4556            (value,),
4557            0x572df8f0b920d2c7,
4558            fidl::encoding::DynamicFlags::empty(),
4559            _decode,
4560        )
4561    }
4562
4563    type GetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4564        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4565        fidl::encoding::DefaultFuchsiaResourceDialect,
4566    >;
4567    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut {
4568        fn _decode(
4569            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4570        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
4571            let _response = fidl::client::decode_transaction_body::<
4572                fidl::encoding::ResultType<
4573                    fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
4574                    fidl_fuchsia_posix::Errno,
4575                >,
4576                fidl::encoding::DefaultFuchsiaResourceDialect,
4577                0x2dd29d3215f2c9d2,
4578            >(_buf?)?;
4579            Ok(_response.map(|x| x.value))
4580        }
4581        self.client.send_query_and_decode::<
4582            fidl::encoding::EmptyPayload,
4583            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4584        >(
4585            (),
4586            0x2dd29d3215f2c9d2,
4587            fidl::encoding::DynamicFlags::empty(),
4588            _decode,
4589        )
4590    }
4591
4592    type SetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4593        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4594        fidl::encoding::DefaultFuchsiaResourceDialect,
4595    >;
4596    fn r#set_out_of_band_inline(&self, mut value: bool) -> Self::SetOutOfBandInlineResponseFut {
4597        fn _decode(
4598            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4599        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error>
4600        {
4601            let _response = fidl::client::decode_transaction_body::<
4602                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4603                fidl::encoding::DefaultFuchsiaResourceDialect,
4604                0x3ecb49968bee439,
4605            >(_buf?)?;
4606            Ok(_response.map(|x| x))
4607        }
4608        self.client.send_query_and_decode::<
4609            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
4610            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4611        >(
4612            (value,),
4613            0x3ecb49968bee439,
4614            fidl::encoding::DynamicFlags::empty(),
4615            _decode,
4616        )
4617    }
4618
4619    type GetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4620        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4621        fidl::encoding::DefaultFuchsiaResourceDialect,
4622    >;
4623    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut {
4624        fn _decode(
4625            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4626        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error>
4627        {
4628            let _response = fidl::client::decode_transaction_body::<
4629                fidl::encoding::ResultType<
4630                    fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
4631                    fidl_fuchsia_posix::Errno,
4632                >,
4633                fidl::encoding::DefaultFuchsiaResourceDialect,
4634                0x348c1ab3aeca1745,
4635            >(_buf?)?;
4636            Ok(_response.map(|x| x.value))
4637        }
4638        self.client.send_query_and_decode::<
4639            fidl::encoding::EmptyPayload,
4640            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4641        >(
4642            (),
4643            0x348c1ab3aeca1745,
4644            fidl::encoding::DynamicFlags::empty(),
4645            _decode,
4646        )
4647    }
4648
4649    type SetNoCheckResponseFut = fidl::client::QueryResponseFut<
4650        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4651        fidl::encoding::DefaultFuchsiaResourceDialect,
4652    >;
4653    fn r#set_no_check(&self, mut value: bool) -> Self::SetNoCheckResponseFut {
4654        fn _decode(
4655            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4656        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
4657            let _response = fidl::client::decode_transaction_body::<
4658                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4659                fidl::encoding::DefaultFuchsiaResourceDialect,
4660                0x6bbf00c53a4c78c2,
4661            >(_buf?)?;
4662            Ok(_response.map(|x| x))
4663        }
4664        self.client.send_query_and_decode::<
4665            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
4666            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4667        >(
4668            (value,),
4669            0x6bbf00c53a4c78c2,
4670            fidl::encoding::DynamicFlags::empty(),
4671            _decode,
4672        )
4673    }
4674
4675    type GetNoCheckResponseFut = fidl::client::QueryResponseFut<
4676        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4677        fidl::encoding::DefaultFuchsiaResourceDialect,
4678    >;
4679    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut {
4680        fn _decode(
4681            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4682        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
4683            let _response = fidl::client::decode_transaction_body::<
4684                fidl::encoding::ResultType<
4685                    fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
4686                    fidl_fuchsia_posix::Errno,
4687                >,
4688                fidl::encoding::DefaultFuchsiaResourceDialect,
4689                0x2cd4249286417694,
4690            >(_buf?)?;
4691            Ok(_response.map(|x| x.value))
4692        }
4693        self.client.send_query_and_decode::<
4694            fidl::encoding::EmptyPayload,
4695            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4696        >(
4697            (),
4698            0x2cd4249286417694,
4699            fidl::encoding::DynamicFlags::empty(),
4700            _decode,
4701        )
4702    }
4703
4704    type SetLingerResponseFut = fidl::client::QueryResponseFut<
4705        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4706        fidl::encoding::DefaultFuchsiaResourceDialect,
4707    >;
4708    fn r#set_linger(&self, mut linger: bool, mut length_secs: u32) -> Self::SetLingerResponseFut {
4709        fn _decode(
4710            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4711        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
4712            let _response = fidl::client::decode_transaction_body::<
4713                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4714                fidl::encoding::DefaultFuchsiaResourceDialect,
4715                0x45386351246e998e,
4716            >(_buf?)?;
4717            Ok(_response.map(|x| x))
4718        }
4719        self.client.send_query_and_decode::<
4720            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
4721            fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4722        >(
4723            (linger, length_secs,),
4724            0x45386351246e998e,
4725            fidl::encoding::DynamicFlags::empty(),
4726            _decode,
4727        )
4728    }
4729
4730    type GetLingerResponseFut = fidl::client::QueryResponseFut<
4731        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4732        fidl::encoding::DefaultFuchsiaResourceDialect,
4733    >;
4734    fn r#get_linger(&self) -> Self::GetLingerResponseFut {
4735        fn _decode(
4736            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4737        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
4738            let _response = fidl::client::decode_transaction_body::<
4739                fidl::encoding::ResultType<
4740                    fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
4741                    fidl_fuchsia_posix::Errno,
4742                >,
4743                fidl::encoding::DefaultFuchsiaResourceDialect,
4744                0x48eb20fc5ccb0e45,
4745            >(_buf?)?;
4746            Ok(_response.map(|x| (x.linger, x.length_secs)))
4747        }
4748        self.client.send_query_and_decode::<
4749            fidl::encoding::EmptyPayload,
4750            fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4751        >(
4752            (),
4753            0x48eb20fc5ccb0e45,
4754            fidl::encoding::DynamicFlags::empty(),
4755            _decode,
4756        )
4757    }
4758
4759    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4760        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4761        fidl::encoding::DefaultFuchsiaResourceDialect,
4762    >;
4763    fn r#set_reuse_port(&self, mut value: bool) -> Self::SetReusePortResponseFut {
4764        fn _decode(
4765            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4766        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4767            let _response = fidl::client::decode_transaction_body::<
4768                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4769                fidl::encoding::DefaultFuchsiaResourceDialect,
4770                0x24dd3e5cb36d9ccb,
4771            >(_buf?)?;
4772            Ok(_response.map(|x| x))
4773        }
4774        self.client.send_query_and_decode::<
4775            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4776            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4777        >(
4778            (value,),
4779            0x24dd3e5cb36d9ccb,
4780            fidl::encoding::DynamicFlags::empty(),
4781            _decode,
4782        )
4783    }
4784
4785    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4786        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4787        fidl::encoding::DefaultFuchsiaResourceDialect,
4788    >;
4789    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4790        fn _decode(
4791            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4792        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4793            let _response = fidl::client::decode_transaction_body::<
4794                fidl::encoding::ResultType<
4795                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4796                    fidl_fuchsia_posix::Errno,
4797                >,
4798                fidl::encoding::DefaultFuchsiaResourceDialect,
4799                0x7a112c1ab54ff828,
4800            >(_buf?)?;
4801            Ok(_response.map(|x| x.value))
4802        }
4803        self.client.send_query_and_decode::<
4804            fidl::encoding::EmptyPayload,
4805            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4806        >(
4807            (),
4808            0x7a112c1ab54ff828,
4809            fidl::encoding::DynamicFlags::empty(),
4810            _decode,
4811        )
4812    }
4813
4814    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4815        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4816        fidl::encoding::DefaultFuchsiaResourceDialect,
4817    >;
4818    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4819        fn _decode(
4820            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4821        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4822            let _response = fidl::client::decode_transaction_body::<
4823                fidl::encoding::ResultType<
4824                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4825                    fidl_fuchsia_posix::Errno,
4826                >,
4827                fidl::encoding::DefaultFuchsiaResourceDialect,
4828                0x67ce6db6c2ec8966,
4829            >(_buf?)?;
4830            Ok(_response.map(|x| x.value))
4831        }
4832        self.client.send_query_and_decode::<
4833            fidl::encoding::EmptyPayload,
4834            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4835        >(
4836            (),
4837            0x67ce6db6c2ec8966,
4838            fidl::encoding::DynamicFlags::empty(),
4839            _decode,
4840        )
4841    }
4842
4843    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4844        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4845        fidl::encoding::DefaultFuchsiaResourceDialect,
4846    >;
4847    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4848        fn _decode(
4849            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4850        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4851        {
4852            let _response = fidl::client::decode_transaction_body::<
4853                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4854                fidl::encoding::DefaultFuchsiaResourceDialect,
4855                0x2118b483f28aafc4,
4856            >(_buf?)?;
4857            Ok(_response.map(|x| x))
4858        }
4859        self.client.send_query_and_decode::<
4860            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4861            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4862        >(
4863            (value,),
4864            0x2118b483f28aafc4,
4865            fidl::encoding::DynamicFlags::empty(),
4866            _decode,
4867        )
4868    }
4869
4870    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4871        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4872        fidl::encoding::DefaultFuchsiaResourceDialect,
4873    >;
4874    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4875        fn _decode(
4876            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4877        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4878        {
4879            let _response = fidl::client::decode_transaction_body::<
4880                fidl::encoding::ResultType<
4881                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4882                    fidl_fuchsia_posix::Errno,
4883                >,
4884                fidl::encoding::DefaultFuchsiaResourceDialect,
4885                0x1ab1fbf0ef7906c8,
4886            >(_buf?)?;
4887            Ok(_response.map(|x| x.value))
4888        }
4889        self.client.send_query_and_decode::<
4890            fidl::encoding::EmptyPayload,
4891            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4892        >(
4893            (),
4894            0x1ab1fbf0ef7906c8,
4895            fidl::encoding::DynamicFlags::empty(),
4896            _decode,
4897        )
4898    }
4899
4900    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4901        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4902        fidl::encoding::DefaultFuchsiaResourceDialect,
4903    >;
4904    fn r#set_bind_to_interface_index(
4905        &self,
4906        mut value: u64,
4907    ) -> Self::SetBindToInterfaceIndexResponseFut {
4908        fn _decode(
4909            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4910        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
4911        {
4912            let _response = fidl::client::decode_transaction_body::<
4913                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4914                fidl::encoding::DefaultFuchsiaResourceDialect,
4915                0x6e387a0def00821,
4916            >(_buf?)?;
4917            Ok(_response.map(|x| x))
4918        }
4919        self.client.send_query_and_decode::<
4920            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
4921            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4922        >(
4923            (value,),
4924            0x6e387a0def00821,
4925            fidl::encoding::DynamicFlags::empty(),
4926            _decode,
4927        )
4928    }
4929
4930    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4931        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4932        fidl::encoding::DefaultFuchsiaResourceDialect,
4933    >;
4934    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
4935        fn _decode(
4936            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4937        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
4938        {
4939            let _response = fidl::client::decode_transaction_body::<
4940                fidl::encoding::ResultType<
4941                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
4942                    fidl_fuchsia_posix::Errno,
4943                >,
4944                fidl::encoding::DefaultFuchsiaResourceDialect,
4945                0x59c31dd3e3078295,
4946            >(_buf?)?;
4947            Ok(_response.map(|x| x.value))
4948        }
4949        self.client.send_query_and_decode::<
4950            fidl::encoding::EmptyPayload,
4951            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4952        >(
4953            (),
4954            0x59c31dd3e3078295,
4955            fidl::encoding::DynamicFlags::empty(),
4956            _decode,
4957        )
4958    }
4959
4960    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
4961        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4962        fidl::encoding::DefaultFuchsiaResourceDialect,
4963    >;
4964    fn r#set_timestamp(
4965        &self,
4966        mut value: fidl_fuchsia_posix_socket::TimestampOption,
4967    ) -> Self::SetTimestampResponseFut {
4968        fn _decode(
4969            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4970        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
4971            let _response = fidl::client::decode_transaction_body::<
4972                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4973                fidl::encoding::DefaultFuchsiaResourceDialect,
4974                0x285d6516c263d839,
4975            >(_buf?)?;
4976            Ok(_response.map(|x| x))
4977        }
4978        self.client.send_query_and_decode::<
4979            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
4980            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4981        >(
4982            (value,),
4983            0x285d6516c263d839,
4984            fidl::encoding::DynamicFlags::empty(),
4985            _decode,
4986        )
4987    }
4988
4989    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
4990        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4991        fidl::encoding::DefaultFuchsiaResourceDialect,
4992    >;
4993    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
4994        fn _decode(
4995            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4996        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
4997            let _response = fidl::client::decode_transaction_body::<
4998                fidl::encoding::ResultType<
4999                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
5000                    fidl_fuchsia_posix::Errno,
5001                >,
5002                fidl::encoding::DefaultFuchsiaResourceDialect,
5003                0x49f2fffbbcc2bd27,
5004            >(_buf?)?;
5005            Ok(_response.map(|x| x.value))
5006        }
5007        self.client.send_query_and_decode::<
5008            fidl::encoding::EmptyPayload,
5009            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
5010        >(
5011            (),
5012            0x49f2fffbbcc2bd27,
5013            fidl::encoding::DynamicFlags::empty(),
5014            _decode,
5015        )
5016    }
5017
5018    type SetMarkResponseFut = fidl::client::QueryResponseFut<
5019        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5020        fidl::encoding::DefaultFuchsiaResourceDialect,
5021    >;
5022    fn r#set_mark(
5023        &self,
5024        mut domain: fidl_fuchsia_net::MarkDomain,
5025        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
5026    ) -> Self::SetMarkResponseFut {
5027        fn _decode(
5028            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5029        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
5030            let _response = fidl::client::decode_transaction_body::<
5031                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5032                fidl::encoding::DefaultFuchsiaResourceDialect,
5033                0x6ead6de09f653236,
5034            >(_buf?)?;
5035            Ok(_response.map(|x| x))
5036        }
5037        self.client.send_query_and_decode::<
5038            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
5039            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5040        >(
5041            (domain, mark,),
5042            0x6ead6de09f653236,
5043            fidl::encoding::DynamicFlags::empty(),
5044            _decode,
5045        )
5046    }
5047
5048    type GetMarkResponseFut = fidl::client::QueryResponseFut<
5049        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5050        fidl::encoding::DefaultFuchsiaResourceDialect,
5051    >;
5052    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
5053        fn _decode(
5054            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5055        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
5056            let _response = fidl::client::decode_transaction_body::<
5057                fidl::encoding::ResultType<
5058                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
5059                    fidl_fuchsia_posix::Errno,
5060                >,
5061                fidl::encoding::DefaultFuchsiaResourceDialect,
5062                0x57a2752c61d93d47,
5063            >(_buf?)?;
5064            Ok(_response.map(|x| x.mark))
5065        }
5066        self.client.send_query_and_decode::<
5067            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
5068            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5069        >(
5070            (domain,),
5071            0x57a2752c61d93d47,
5072            fidl::encoding::DynamicFlags::empty(),
5073            _decode,
5074        )
5075    }
5076
5077    type BindResponseFut = fidl::client::QueryResponseFut<
5078        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5079        fidl::encoding::DefaultFuchsiaResourceDialect,
5080    >;
5081    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5082        fn _decode(
5083            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5084        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5085            let _response = fidl::client::decode_transaction_body::<
5086                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5087                fidl::encoding::DefaultFuchsiaResourceDialect,
5088                0x4bc6400ae92125d,
5089            >(_buf?)?;
5090            Ok(_response.map(|x| x))
5091        }
5092        self.client.send_query_and_decode::<
5093            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5094            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5095        >(
5096            (addr,),
5097            0x4bc6400ae92125d,
5098            fidl::encoding::DynamicFlags::empty(),
5099            _decode,
5100        )
5101    }
5102
5103    type ConnectResponseFut = fidl::client::QueryResponseFut<
5104        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5105        fidl::encoding::DefaultFuchsiaResourceDialect,
5106    >;
5107    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5108        fn _decode(
5109            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5110        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5111        {
5112            let _response = fidl::client::decode_transaction_body::<
5113                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5114                fidl::encoding::DefaultFuchsiaResourceDialect,
5115                0x5f05f19bfdd38871,
5116            >(_buf?)?;
5117            Ok(_response.map(|x| x))
5118        }
5119        self.client.send_query_and_decode::<
5120            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5121            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5122        >(
5123            (addr,),
5124            0x5f05f19bfdd38871,
5125            fidl::encoding::DynamicFlags::empty(),
5126            _decode,
5127        )
5128    }
5129
5130    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5131        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5132        fidl::encoding::DefaultFuchsiaResourceDialect,
5133    >;
5134    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5135        fn _decode(
5136            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5137        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5138        {
5139            let _response = fidl::client::decode_transaction_body::<
5140                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5141                fidl::encoding::DefaultFuchsiaResourceDialect,
5142                0x74e63b91f7b29b2,
5143            >(_buf?)?;
5144            Ok(_response.map(|x| x))
5145        }
5146        self.client.send_query_and_decode::<
5147            fidl::encoding::EmptyPayload,
5148            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5149        >(
5150            (),
5151            0x74e63b91f7b29b2,
5152            fidl::encoding::DynamicFlags::empty(),
5153            _decode,
5154        )
5155    }
5156
5157    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5158        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5159        fidl::encoding::DefaultFuchsiaResourceDialect,
5160    >;
5161    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5162        fn _decode(
5163            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5164        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5165        {
5166            let _response = fidl::client::decode_transaction_body::<
5167                fidl::encoding::ResultType<
5168                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5169                    fidl_fuchsia_posix::Errno,
5170                >,
5171                fidl::encoding::DefaultFuchsiaResourceDialect,
5172                0x475f23f84a1a4f85,
5173            >(_buf?)?;
5174            Ok(_response.map(|x| x.addr))
5175        }
5176        self.client.send_query_and_decode::<
5177            fidl::encoding::EmptyPayload,
5178            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5179        >(
5180            (),
5181            0x475f23f84a1a4f85,
5182            fidl::encoding::DynamicFlags::empty(),
5183            _decode,
5184        )
5185    }
5186
5187    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5188        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5189        fidl::encoding::DefaultFuchsiaResourceDialect,
5190    >;
5191    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5192        fn _decode(
5193            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5194        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5195        {
5196            let _response = fidl::client::decode_transaction_body::<
5197                fidl::encoding::ResultType<
5198                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5199                    fidl_fuchsia_posix::Errno,
5200                >,
5201                fidl::encoding::DefaultFuchsiaResourceDialect,
5202                0x1ffecf4bd5b6432e,
5203            >(_buf?)?;
5204            Ok(_response.map(|x| x.addr))
5205        }
5206        self.client.send_query_and_decode::<
5207            fidl::encoding::EmptyPayload,
5208            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5209        >(
5210            (),
5211            0x1ffecf4bd5b6432e,
5212            fidl::encoding::DynamicFlags::empty(),
5213            _decode,
5214        )
5215    }
5216
5217    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5218        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5219        fidl::encoding::DefaultFuchsiaResourceDialect,
5220    >;
5221    fn r#shutdown(
5222        &self,
5223        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5224    ) -> Self::ShutdownResponseFut {
5225        fn _decode(
5226            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5227        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5228        {
5229            let _response = fidl::client::decode_transaction_body::<
5230                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5231                fidl::encoding::DefaultFuchsiaResourceDialect,
5232                0x247f38b6db68c336,
5233            >(_buf?)?;
5234            Ok(_response.map(|x| x))
5235        }
5236        self.client.send_query_and_decode::<
5237            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5238            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5239        >(
5240            (mode,),
5241            0x247f38b6db68c336,
5242            fidl::encoding::DynamicFlags::empty(),
5243            _decode,
5244        )
5245    }
5246
5247    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5248        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5249        fidl::encoding::DefaultFuchsiaResourceDialect,
5250    >;
5251    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5252        fn _decode(
5253            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5254        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5255        {
5256            let _response = fidl::client::decode_transaction_body::<
5257                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5258                fidl::encoding::DefaultFuchsiaResourceDialect,
5259                0x995c600475b6d46,
5260            >(_buf?)?;
5261            Ok(_response.map(|x| x))
5262        }
5263        self.client.send_query_and_decode::<
5264            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5265            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5266        >(
5267            (value,),
5268            0x995c600475b6d46,
5269            fidl::encoding::DynamicFlags::empty(),
5270            _decode,
5271        )
5272    }
5273
5274    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5275        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5276        fidl::encoding::DefaultFuchsiaResourceDialect,
5277    >;
5278    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5279        fn _decode(
5280            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5281        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5282        {
5283            let _response = fidl::client::decode_transaction_body::<
5284                fidl::encoding::ResultType<
5285                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5286                    fidl_fuchsia_posix::Errno,
5287                >,
5288                fidl::encoding::DefaultFuchsiaResourceDialect,
5289                0x3814a04259f75fcb,
5290            >(_buf?)?;
5291            Ok(_response.map(|x| x.value))
5292        }
5293        self.client.send_query_and_decode::<
5294            fidl::encoding::EmptyPayload,
5295            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5296        >(
5297            (),
5298            0x3814a04259f75fcb,
5299            fidl::encoding::DynamicFlags::empty(),
5300            _decode,
5301        )
5302    }
5303
5304    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5305        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5306        fidl::encoding::DefaultFuchsiaResourceDialect,
5307    >;
5308    fn r#set_ip_ttl(
5309        &self,
5310        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5311    ) -> Self::SetIpTtlResponseFut {
5312        fn _decode(
5313            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5314        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5315        {
5316            let _response = fidl::client::decode_transaction_body::<
5317                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5318                fidl::encoding::DefaultFuchsiaResourceDialect,
5319                0x29e2424b433ae1ef,
5320            >(_buf?)?;
5321            Ok(_response.map(|x| x))
5322        }
5323        self.client.send_query_and_decode::<
5324            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5325            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5326        >(
5327            (value,),
5328            0x29e2424b433ae1ef,
5329            fidl::encoding::DynamicFlags::empty(),
5330            _decode,
5331        )
5332    }
5333
5334    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5335        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5336        fidl::encoding::DefaultFuchsiaResourceDialect,
5337    >;
5338    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5339        fn _decode(
5340            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5341        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5342        {
5343            let _response = fidl::client::decode_transaction_body::<
5344                fidl::encoding::ResultType<
5345                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5346                    fidl_fuchsia_posix::Errno,
5347                >,
5348                fidl::encoding::DefaultFuchsiaResourceDialect,
5349                0x47e47fa1f24da471,
5350            >(_buf?)?;
5351            Ok(_response.map(|x| x.value))
5352        }
5353        self.client.send_query_and_decode::<
5354            fidl::encoding::EmptyPayload,
5355            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5356        >(
5357            (),
5358            0x47e47fa1f24da471,
5359            fidl::encoding::DynamicFlags::empty(),
5360            _decode,
5361        )
5362    }
5363
5364    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5365        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5366        fidl::encoding::DefaultFuchsiaResourceDialect,
5367    >;
5368    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5369        fn _decode(
5370            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5371        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5372        {
5373            let _response = fidl::client::decode_transaction_body::<
5374                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5375                fidl::encoding::DefaultFuchsiaResourceDialect,
5376                0x392d16bee20c0e16,
5377            >(_buf?)?;
5378            Ok(_response.map(|x| x))
5379        }
5380        self.client.send_query_and_decode::<
5381            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5382            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5383        >(
5384            (value,),
5385            0x392d16bee20c0e16,
5386            fidl::encoding::DynamicFlags::empty(),
5387            _decode,
5388        )
5389    }
5390
5391    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5392        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5393        fidl::encoding::DefaultFuchsiaResourceDialect,
5394    >;
5395    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5396        fn _decode(
5397            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5398        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5399        {
5400            let _response = fidl::client::decode_transaction_body::<
5401                fidl::encoding::ResultType<
5402                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5403                    fidl_fuchsia_posix::Errno,
5404                >,
5405                fidl::encoding::DefaultFuchsiaResourceDialect,
5406                0x54b505f242280740,
5407            >(_buf?)?;
5408            Ok(_response.map(|x| x.value))
5409        }
5410        self.client.send_query_and_decode::<
5411            fidl::encoding::EmptyPayload,
5412            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5413        >(
5414            (),
5415            0x54b505f242280740,
5416            fidl::encoding::DynamicFlags::empty(),
5417            _decode,
5418        )
5419    }
5420
5421    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5422        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5423        fidl::encoding::DefaultFuchsiaResourceDialect,
5424    >;
5425    fn r#set_ip_receive_type_of_service(
5426        &self,
5427        mut value: bool,
5428    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5429        fn _decode(
5430            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5431        ) -> Result<
5432            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5433            fidl::Error,
5434        > {
5435            let _response = fidl::client::decode_transaction_body::<
5436                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5437                fidl::encoding::DefaultFuchsiaResourceDialect,
5438                0x6c4f6714995f84ef,
5439            >(_buf?)?;
5440            Ok(_response.map(|x| x))
5441        }
5442        self.client.send_query_and_decode::<
5443            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5444            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5445        >(
5446            (value,),
5447            0x6c4f6714995f84ef,
5448            fidl::encoding::DynamicFlags::empty(),
5449            _decode,
5450        )
5451    }
5452
5453    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5454        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5455        fidl::encoding::DefaultFuchsiaResourceDialect,
5456    >;
5457    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5458        fn _decode(
5459            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5460        ) -> Result<
5461            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5462            fidl::Error,
5463        > {
5464            let _response = fidl::client::decode_transaction_body::<
5465                fidl::encoding::ResultType<
5466                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5467                    fidl_fuchsia_posix::Errno,
5468                >,
5469                fidl::encoding::DefaultFuchsiaResourceDialect,
5470                0x4158ba7dc2795960,
5471            >(_buf?)?;
5472            Ok(_response.map(|x| x.value))
5473        }
5474        self.client.send_query_and_decode::<
5475            fidl::encoding::EmptyPayload,
5476            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5477        >(
5478            (),
5479            0x4158ba7dc2795960,
5480            fidl::encoding::DynamicFlags::empty(),
5481            _decode,
5482        )
5483    }
5484
5485    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5486        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5487        fidl::encoding::DefaultFuchsiaResourceDialect,
5488    >;
5489    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5490        fn _decode(
5491            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5492        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5493        {
5494            let _response = fidl::client::decode_transaction_body::<
5495                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5496                fidl::encoding::DefaultFuchsiaResourceDialect,
5497                0x46f15be0ce0ab82b,
5498            >(_buf?)?;
5499            Ok(_response.map(|x| x))
5500        }
5501        self.client.send_query_and_decode::<
5502            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5503            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5504        >(
5505            (value,),
5506            0x46f15be0ce0ab82b,
5507            fidl::encoding::DynamicFlags::empty(),
5508            _decode,
5509        )
5510    }
5511
5512    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5513        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5514        fidl::encoding::DefaultFuchsiaResourceDialect,
5515    >;
5516    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5517        fn _decode(
5518            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5519        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5520        {
5521            let _response = fidl::client::decode_transaction_body::<
5522                fidl::encoding::ResultType<
5523                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5524                    fidl_fuchsia_posix::Errno,
5525                >,
5526                fidl::encoding::DefaultFuchsiaResourceDialect,
5527                0x678ddd5a5dfa2eb5,
5528            >(_buf?)?;
5529            Ok(_response.map(|x| x.value))
5530        }
5531        self.client.send_query_and_decode::<
5532            fidl::encoding::EmptyPayload,
5533            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5534        >(
5535            (),
5536            0x678ddd5a5dfa2eb5,
5537            fidl::encoding::DynamicFlags::empty(),
5538            _decode,
5539        )
5540    }
5541
5542    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5543        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5544        fidl::encoding::DefaultFuchsiaResourceDialect,
5545    >;
5546    fn r#set_ip_multicast_interface(
5547        &self,
5548        mut iface: u64,
5549        mut address: &fidl_fuchsia_net::Ipv4Address,
5550    ) -> Self::SetIpMulticastInterfaceResponseFut {
5551        fn _decode(
5552            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5553        ) -> Result<
5554            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5555            fidl::Error,
5556        > {
5557            let _response = fidl::client::decode_transaction_body::<
5558                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5559                fidl::encoding::DefaultFuchsiaResourceDialect,
5560                0x752fbfa9b12befe,
5561            >(_buf?)?;
5562            Ok(_response.map(|x| x))
5563        }
5564        self.client.send_query_and_decode::<
5565            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5566            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5567        >(
5568            (iface, address,),
5569            0x752fbfa9b12befe,
5570            fidl::encoding::DynamicFlags::empty(),
5571            _decode,
5572        )
5573    }
5574
5575    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5576        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5577        fidl::encoding::DefaultFuchsiaResourceDialect,
5578    >;
5579    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5580        fn _decode(
5581            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5582        ) -> Result<
5583            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5584            fidl::Error,
5585        > {
5586            let _response = fidl::client::decode_transaction_body::<
5587                fidl::encoding::ResultType<
5588                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5589                    fidl_fuchsia_posix::Errno,
5590                >,
5591                fidl::encoding::DefaultFuchsiaResourceDialect,
5592                0x320bd14c4df046c4,
5593            >(_buf?)?;
5594            Ok(_response.map(|x| x.value))
5595        }
5596        self.client.send_query_and_decode::<
5597            fidl::encoding::EmptyPayload,
5598            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5599        >(
5600            (),
5601            0x320bd14c4df046c4,
5602            fidl::encoding::DynamicFlags::empty(),
5603            _decode,
5604        )
5605    }
5606
5607    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5608        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5609        fidl::encoding::DefaultFuchsiaResourceDialect,
5610    >;
5611    fn r#set_ip_multicast_ttl(
5612        &self,
5613        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5614    ) -> Self::SetIpMulticastTtlResponseFut {
5615        fn _decode(
5616            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5617        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5618        {
5619            let _response = fidl::client::decode_transaction_body::<
5620                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5621                fidl::encoding::DefaultFuchsiaResourceDialect,
5622                0x63134d53772916a1,
5623            >(_buf?)?;
5624            Ok(_response.map(|x| x))
5625        }
5626        self.client.send_query_and_decode::<
5627            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5628            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5629        >(
5630            (value,),
5631            0x63134d53772916a1,
5632            fidl::encoding::DynamicFlags::empty(),
5633            _decode,
5634        )
5635    }
5636
5637    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5638        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5639        fidl::encoding::DefaultFuchsiaResourceDialect,
5640    >;
5641    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5642        fn _decode(
5643            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5644        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5645        {
5646            let _response = fidl::client::decode_transaction_body::<
5647                fidl::encoding::ResultType<
5648                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5649                    fidl_fuchsia_posix::Errno,
5650                >,
5651                fidl::encoding::DefaultFuchsiaResourceDialect,
5652                0x4665cd378f39e1a,
5653            >(_buf?)?;
5654            Ok(_response.map(|x| x.value))
5655        }
5656        self.client.send_query_and_decode::<
5657            fidl::encoding::EmptyPayload,
5658            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5659        >(
5660            (),
5661            0x4665cd378f39e1a,
5662            fidl::encoding::DynamicFlags::empty(),
5663            _decode,
5664        )
5665    }
5666
5667    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5668        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5669        fidl::encoding::DefaultFuchsiaResourceDialect,
5670    >;
5671    fn r#set_ip_multicast_loopback(
5672        &self,
5673        mut value: bool,
5674    ) -> Self::SetIpMulticastLoopbackResponseFut {
5675        fn _decode(
5676            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5677        ) -> Result<
5678            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5679            fidl::Error,
5680        > {
5681            let _response = fidl::client::decode_transaction_body::<
5682                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5683                fidl::encoding::DefaultFuchsiaResourceDialect,
5684                0x20c55c11f00943ea,
5685            >(_buf?)?;
5686            Ok(_response.map(|x| x))
5687        }
5688        self.client.send_query_and_decode::<
5689            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5690            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5691        >(
5692            (value,),
5693            0x20c55c11f00943ea,
5694            fidl::encoding::DynamicFlags::empty(),
5695            _decode,
5696        )
5697    }
5698
5699    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5700        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5701        fidl::encoding::DefaultFuchsiaResourceDialect,
5702    >;
5703    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5704        fn _decode(
5705            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5706        ) -> Result<
5707            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5708            fidl::Error,
5709        > {
5710            let _response = fidl::client::decode_transaction_body::<
5711                fidl::encoding::ResultType<
5712                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5713                    fidl_fuchsia_posix::Errno,
5714                >,
5715                fidl::encoding::DefaultFuchsiaResourceDialect,
5716                0x3b6b26ff558298f2,
5717            >(_buf?)?;
5718            Ok(_response.map(|x| x.value))
5719        }
5720        self.client.send_query_and_decode::<
5721            fidl::encoding::EmptyPayload,
5722            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5723        >(
5724            (),
5725            0x3b6b26ff558298f2,
5726            fidl::encoding::DynamicFlags::empty(),
5727            _decode,
5728        )
5729    }
5730
5731    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5732        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5733        fidl::encoding::DefaultFuchsiaResourceDialect,
5734    >;
5735    fn r#add_ip_membership(
5736        &self,
5737        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5738    ) -> Self::AddIpMembershipResponseFut {
5739        fn _decode(
5740            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5741        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5742        {
5743            let _response = fidl::client::decode_transaction_body::<
5744                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5745                fidl::encoding::DefaultFuchsiaResourceDialect,
5746                0x76bc7df115a3b4d0,
5747            >(_buf?)?;
5748            Ok(_response.map(|x| x))
5749        }
5750        self.client.send_query_and_decode::<
5751            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5752            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5753        >(
5754            (membership,),
5755            0x76bc7df115a3b4d0,
5756            fidl::encoding::DynamicFlags::empty(),
5757            _decode,
5758        )
5759    }
5760
5761    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5762        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5763        fidl::encoding::DefaultFuchsiaResourceDialect,
5764    >;
5765    fn r#drop_ip_membership(
5766        &self,
5767        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5768    ) -> Self::DropIpMembershipResponseFut {
5769        fn _decode(
5770            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5771        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5772        {
5773            let _response = fidl::client::decode_transaction_body::<
5774                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5775                fidl::encoding::DefaultFuchsiaResourceDialect,
5776                0x2888f3099188d03,
5777            >(_buf?)?;
5778            Ok(_response.map(|x| x))
5779        }
5780        self.client.send_query_and_decode::<
5781            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5782            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5783        >(
5784            (membership,),
5785            0x2888f3099188d03,
5786            fidl::encoding::DynamicFlags::empty(),
5787            _decode,
5788        )
5789    }
5790
5791    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5792        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5793        fidl::encoding::DefaultFuchsiaResourceDialect,
5794    >;
5795    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5796        fn _decode(
5797            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5798        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5799        {
5800            let _response = fidl::client::decode_transaction_body::<
5801                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5802                fidl::encoding::DefaultFuchsiaResourceDialect,
5803                0x1ae532b0c066e3a0,
5804            >(_buf?)?;
5805            Ok(_response.map(|x| x))
5806        }
5807        self.client.send_query_and_decode::<
5808            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5809            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5810        >(
5811            (value,),
5812            0x1ae532b0c066e3a0,
5813            fidl::encoding::DynamicFlags::empty(),
5814            _decode,
5815        )
5816    }
5817
5818    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5819        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5820        fidl::encoding::DefaultFuchsiaResourceDialect,
5821    >;
5822    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5823        fn _decode(
5824            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5825        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5826        {
5827            let _response = fidl::client::decode_transaction_body::<
5828                fidl::encoding::ResultType<
5829                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5830                    fidl_fuchsia_posix::Errno,
5831                >,
5832                fidl::encoding::DefaultFuchsiaResourceDialect,
5833                0x51d43695962ebfb5,
5834            >(_buf?)?;
5835            Ok(_response.map(|x| x.value))
5836        }
5837        self.client.send_query_and_decode::<
5838            fidl::encoding::EmptyPayload,
5839            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5840        >(
5841            (),
5842            0x51d43695962ebfb5,
5843            fidl::encoding::DynamicFlags::empty(),
5844            _decode,
5845        )
5846    }
5847
5848    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5849        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5850        fidl::encoding::DefaultFuchsiaResourceDialect,
5851    >;
5852    fn r#set_ip_receive_original_destination_address(
5853        &self,
5854        mut value: bool,
5855    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5856        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5857            let _response = fidl::client::decode_transaction_body::<
5858                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5859                fidl::encoding::DefaultFuchsiaResourceDialect,
5860                0x4722b4ce52f7840,
5861            >(_buf?)?;
5862            Ok(_response.map(|x| x))
5863        }
5864        self.client.send_query_and_decode::<
5865            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5866            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5867        >(
5868            (value,),
5869            0x4722b4ce52f7840,
5870            fidl::encoding::DynamicFlags::empty(),
5871            _decode,
5872        )
5873    }
5874
5875    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5876        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5877        fidl::encoding::DefaultFuchsiaResourceDialect,
5878    >;
5879    fn r#get_ip_receive_original_destination_address(
5880        &self,
5881    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
5882        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5883            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
5884            Ok(_response.map(|x| x.value))
5885        }
5886        self.client.send_query_and_decode::<
5887            fidl::encoding::EmptyPayload,
5888            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5889        >(
5890            (),
5891            0x2a0e7dc5d6bfdfe9,
5892            fidl::encoding::DynamicFlags::empty(),
5893            _decode,
5894        )
5895    }
5896
5897    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5898        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5899        fidl::encoding::DefaultFuchsiaResourceDialect,
5900    >;
5901    fn r#add_ipv6_membership(
5902        &self,
5903        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5904    ) -> Self::AddIpv6MembershipResponseFut {
5905        fn _decode(
5906            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5907        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
5908        {
5909            let _response = fidl::client::decode_transaction_body::<
5910                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5911                fidl::encoding::DefaultFuchsiaResourceDialect,
5912                0x7c94727acb4ea4b3,
5913            >(_buf?)?;
5914            Ok(_response.map(|x| x))
5915        }
5916        self.client.send_query_and_decode::<
5917            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
5918            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5919        >(
5920            (membership,),
5921            0x7c94727acb4ea4b3,
5922            fidl::encoding::DynamicFlags::empty(),
5923            _decode,
5924        )
5925    }
5926
5927    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5928        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5929        fidl::encoding::DefaultFuchsiaResourceDialect,
5930    >;
5931    fn r#drop_ipv6_membership(
5932        &self,
5933        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5934    ) -> Self::DropIpv6MembershipResponseFut {
5935        fn _decode(
5936            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5937        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
5938        {
5939            let _response = fidl::client::decode_transaction_body::<
5940                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5941                fidl::encoding::DefaultFuchsiaResourceDialect,
5942                0x42104c70ccaba304,
5943            >(_buf?)?;
5944            Ok(_response.map(|x| x))
5945        }
5946        self.client.send_query_and_decode::<
5947            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
5948            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5949        >(
5950            (membership,),
5951            0x42104c70ccaba304,
5952            fidl::encoding::DynamicFlags::empty(),
5953            _decode,
5954        )
5955    }
5956
5957    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5958        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5959        fidl::encoding::DefaultFuchsiaResourceDialect,
5960    >;
5961    fn r#set_ipv6_multicast_interface(
5962        &self,
5963        mut value: u64,
5964    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
5965        fn _decode(
5966            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5967        ) -> Result<
5968            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5969            fidl::Error,
5970        > {
5971            let _response = fidl::client::decode_transaction_body::<
5972                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5973                fidl::encoding::DefaultFuchsiaResourceDialect,
5974                0x135f76db3774ab3b,
5975            >(_buf?)?;
5976            Ok(_response.map(|x| x))
5977        }
5978        self.client.send_query_and_decode::<
5979            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
5980            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5981        >(
5982            (value,),
5983            0x135f76db3774ab3b,
5984            fidl::encoding::DynamicFlags::empty(),
5985            _decode,
5986        )
5987    }
5988
5989    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5990        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5991        fidl::encoding::DefaultFuchsiaResourceDialect,
5992    >;
5993    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
5994        fn _decode(
5995            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5996        ) -> Result<
5997            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5998            fidl::Error,
5999        > {
6000            let _response = fidl::client::decode_transaction_body::<
6001                fidl::encoding::ResultType<
6002                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
6003                    fidl_fuchsia_posix::Errno,
6004                >,
6005                fidl::encoding::DefaultFuchsiaResourceDialect,
6006                0x1f26fcdd348f1882,
6007            >(_buf?)?;
6008            Ok(_response.map(|x| x.value))
6009        }
6010        self.client.send_query_and_decode::<
6011            fidl::encoding::EmptyPayload,
6012            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6013        >(
6014            (),
6015            0x1f26fcdd348f1882,
6016            fidl::encoding::DynamicFlags::empty(),
6017            _decode,
6018        )
6019    }
6020
6021    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6022        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6023        fidl::encoding::DefaultFuchsiaResourceDialect,
6024    >;
6025    fn r#set_ipv6_unicast_hops(
6026        &self,
6027        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6028    ) -> Self::SetIpv6UnicastHopsResponseFut {
6029        fn _decode(
6030            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6031        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
6032        {
6033            let _response = fidl::client::decode_transaction_body::<
6034                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6035                fidl::encoding::DefaultFuchsiaResourceDialect,
6036                0x157d51e98f462859,
6037            >(_buf?)?;
6038            Ok(_response.map(|x| x))
6039        }
6040        self.client.send_query_and_decode::<
6041            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
6042            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6043        >(
6044            (value,),
6045            0x157d51e98f462859,
6046            fidl::encoding::DynamicFlags::empty(),
6047            _decode,
6048        )
6049    }
6050
6051    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6052        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6053        fidl::encoding::DefaultFuchsiaResourceDialect,
6054    >;
6055    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
6056        fn _decode(
6057            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6058        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
6059        {
6060            let _response = fidl::client::decode_transaction_body::<
6061                fidl::encoding::ResultType<
6062                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
6063                    fidl_fuchsia_posix::Errno,
6064                >,
6065                fidl::encoding::DefaultFuchsiaResourceDialect,
6066                0x21f4641cad8bd8d2,
6067            >(_buf?)?;
6068            Ok(_response.map(|x| x.value))
6069        }
6070        self.client.send_query_and_decode::<
6071            fidl::encoding::EmptyPayload,
6072            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6073        >(
6074            (),
6075            0x21f4641cad8bd8d2,
6076            fidl::encoding::DynamicFlags::empty(),
6077            _decode,
6078        )
6079    }
6080
6081    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6082        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6083        fidl::encoding::DefaultFuchsiaResourceDialect,
6084    >;
6085    fn r#set_ipv6_receive_hop_limit(
6086        &self,
6087        mut value: bool,
6088    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6089        fn _decode(
6090            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6091        ) -> Result<
6092            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6093            fidl::Error,
6094        > {
6095            let _response = fidl::client::decode_transaction_body::<
6096                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6097                fidl::encoding::DefaultFuchsiaResourceDialect,
6098                0x5c24808ed2e84a1e,
6099            >(_buf?)?;
6100            Ok(_response.map(|x| x))
6101        }
6102        self.client.send_query_and_decode::<
6103            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6104            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6105        >(
6106            (value,),
6107            0x5c24808ed2e84a1e,
6108            fidl::encoding::DynamicFlags::empty(),
6109            _decode,
6110        )
6111    }
6112
6113    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6114        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6115        fidl::encoding::DefaultFuchsiaResourceDialect,
6116    >;
6117    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6118        fn _decode(
6119            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6120        ) -> Result<
6121            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6122            fidl::Error,
6123        > {
6124            let _response = fidl::client::decode_transaction_body::<
6125                fidl::encoding::ResultType<
6126                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6127                    fidl_fuchsia_posix::Errno,
6128                >,
6129                fidl::encoding::DefaultFuchsiaResourceDialect,
6130                0x341e06689885b4c0,
6131            >(_buf?)?;
6132            Ok(_response.map(|x| x.value))
6133        }
6134        self.client.send_query_and_decode::<
6135            fidl::encoding::EmptyPayload,
6136            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6137        >(
6138            (),
6139            0x341e06689885b4c0,
6140            fidl::encoding::DynamicFlags::empty(),
6141            _decode,
6142        )
6143    }
6144
6145    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6146        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6147        fidl::encoding::DefaultFuchsiaResourceDialect,
6148    >;
6149    fn r#set_ipv6_multicast_hops(
6150        &self,
6151        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6152    ) -> Self::SetIpv6MulticastHopsResponseFut {
6153        fn _decode(
6154            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6155        ) -> Result<
6156            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6157            fidl::Error,
6158        > {
6159            let _response = fidl::client::decode_transaction_body::<
6160                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6161                fidl::encoding::DefaultFuchsiaResourceDialect,
6162                0x25b9cd4d181f82c1,
6163            >(_buf?)?;
6164            Ok(_response.map(|x| x))
6165        }
6166        self.client.send_query_and_decode::<
6167            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6168            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6169        >(
6170            (value,),
6171            0x25b9cd4d181f82c1,
6172            fidl::encoding::DynamicFlags::empty(),
6173            _decode,
6174        )
6175    }
6176
6177    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6178        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6179        fidl::encoding::DefaultFuchsiaResourceDialect,
6180    >;
6181    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6182        fn _decode(
6183            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6184        ) -> Result<
6185            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6186            fidl::Error,
6187        > {
6188            let _response = fidl::client::decode_transaction_body::<
6189                fidl::encoding::ResultType<
6190                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6191                    fidl_fuchsia_posix::Errno,
6192                >,
6193                fidl::encoding::DefaultFuchsiaResourceDialect,
6194                0x52916948a365012a,
6195            >(_buf?)?;
6196            Ok(_response.map(|x| x.value))
6197        }
6198        self.client.send_query_and_decode::<
6199            fidl::encoding::EmptyPayload,
6200            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6201        >(
6202            (),
6203            0x52916948a365012a,
6204            fidl::encoding::DynamicFlags::empty(),
6205            _decode,
6206        )
6207    }
6208
6209    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6210        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6211        fidl::encoding::DefaultFuchsiaResourceDialect,
6212    >;
6213    fn r#set_ipv6_multicast_loopback(
6214        &self,
6215        mut value: bool,
6216    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6217        fn _decode(
6218            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6219        ) -> Result<
6220            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6221            fidl::Error,
6222        > {
6223            let _response = fidl::client::decode_transaction_body::<
6224                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6225                fidl::encoding::DefaultFuchsiaResourceDialect,
6226                0x55701c409ff41b40,
6227            >(_buf?)?;
6228            Ok(_response.map(|x| x))
6229        }
6230        self.client.send_query_and_decode::<
6231            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6232            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6233        >(
6234            (value,),
6235            0x55701c409ff41b40,
6236            fidl::encoding::DynamicFlags::empty(),
6237            _decode,
6238        )
6239    }
6240
6241    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6242        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6243        fidl::encoding::DefaultFuchsiaResourceDialect,
6244    >;
6245    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6246        fn _decode(
6247            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6248        ) -> Result<
6249            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6250            fidl::Error,
6251        > {
6252            let _response = fidl::client::decode_transaction_body::<
6253                fidl::encoding::ResultType<
6254                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6255                    fidl_fuchsia_posix::Errno,
6256                >,
6257                fidl::encoding::DefaultFuchsiaResourceDialect,
6258                0x4415b701fde319c3,
6259            >(_buf?)?;
6260            Ok(_response.map(|x| x.value))
6261        }
6262        self.client.send_query_and_decode::<
6263            fidl::encoding::EmptyPayload,
6264            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6265        >(
6266            (),
6267            0x4415b701fde319c3,
6268            fidl::encoding::DynamicFlags::empty(),
6269            _decode,
6270        )
6271    }
6272
6273    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6274        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6275        fidl::encoding::DefaultFuchsiaResourceDialect,
6276    >;
6277    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6278        fn _decode(
6279            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6280        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error>
6281        {
6282            let _response = fidl::client::decode_transaction_body::<
6283                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6284                fidl::encoding::DefaultFuchsiaResourceDialect,
6285                0x4873f1364758cbba,
6286            >(_buf?)?;
6287            Ok(_response.map(|x| x))
6288        }
6289        self.client.send_query_and_decode::<
6290            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6291            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6292        >(
6293            (value,),
6294            0x4873f1364758cbba,
6295            fidl::encoding::DynamicFlags::empty(),
6296            _decode,
6297        )
6298    }
6299
6300    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6301        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6302        fidl::encoding::DefaultFuchsiaResourceDialect,
6303    >;
6304    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6305        fn _decode(
6306            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6307        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6308        {
6309            let _response = fidl::client::decode_transaction_body::<
6310                fidl::encoding::ResultType<
6311                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6312                    fidl_fuchsia_posix::Errno,
6313                >,
6314                fidl::encoding::DefaultFuchsiaResourceDialect,
6315                0x4aa3340a1a26b89c,
6316            >(_buf?)?;
6317            Ok(_response.map(|x| x.value))
6318        }
6319        self.client.send_query_and_decode::<
6320            fidl::encoding::EmptyPayload,
6321            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6322        >(
6323            (),
6324            0x4aa3340a1a26b89c,
6325            fidl::encoding::DynamicFlags::empty(),
6326            _decode,
6327        )
6328    }
6329
6330    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6331        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6332        fidl::encoding::DefaultFuchsiaResourceDialect,
6333    >;
6334    fn r#set_ipv6_receive_traffic_class(
6335        &self,
6336        mut value: bool,
6337    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6338        fn _decode(
6339            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6340        ) -> Result<
6341            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6342            fidl::Error,
6343        > {
6344            let _response = fidl::client::decode_transaction_body::<
6345                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6346                fidl::encoding::DefaultFuchsiaResourceDialect,
6347                0x58f07c8788d099a0,
6348            >(_buf?)?;
6349            Ok(_response.map(|x| x))
6350        }
6351        self.client.send_query_and_decode::<
6352            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6353            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6354        >(
6355            (value,),
6356            0x58f07c8788d099a0,
6357            fidl::encoding::DynamicFlags::empty(),
6358            _decode,
6359        )
6360    }
6361
6362    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6363        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6364        fidl::encoding::DefaultFuchsiaResourceDialect,
6365    >;
6366    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6367        fn _decode(
6368            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6369        ) -> Result<
6370            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6371            fidl::Error,
6372        > {
6373            let _response = fidl::client::decode_transaction_body::<
6374                fidl::encoding::ResultType<
6375                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6376                    fidl_fuchsia_posix::Errno,
6377                >,
6378                fidl::encoding::DefaultFuchsiaResourceDialect,
6379                0x2e334df1da553ffa,
6380            >(_buf?)?;
6381            Ok(_response.map(|x| x.value))
6382        }
6383        self.client.send_query_and_decode::<
6384            fidl::encoding::EmptyPayload,
6385            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6386        >(
6387            (),
6388            0x2e334df1da553ffa,
6389            fidl::encoding::DynamicFlags::empty(),
6390            _decode,
6391        )
6392    }
6393
6394    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6395        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6396        fidl::encoding::DefaultFuchsiaResourceDialect,
6397    >;
6398    fn r#set_ipv6_traffic_class(
6399        &self,
6400        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6401    ) -> Self::SetIpv6TrafficClassResponseFut {
6402        fn _decode(
6403            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6404        ) -> Result<
6405            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6406            fidl::Error,
6407        > {
6408            let _response = fidl::client::decode_transaction_body::<
6409                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6410                fidl::encoding::DefaultFuchsiaResourceDialect,
6411                0x6af077800c5a0b4f,
6412            >(_buf?)?;
6413            Ok(_response.map(|x| x))
6414        }
6415        self.client.send_query_and_decode::<
6416            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6417            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6418        >(
6419            (value,),
6420            0x6af077800c5a0b4f,
6421            fidl::encoding::DynamicFlags::empty(),
6422            _decode,
6423        )
6424    }
6425
6426    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6427        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6428        fidl::encoding::DefaultFuchsiaResourceDialect,
6429    >;
6430    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6431        fn _decode(
6432            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6433        ) -> Result<
6434            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6435            fidl::Error,
6436        > {
6437            let _response = fidl::client::decode_transaction_body::<
6438                fidl::encoding::ResultType<
6439                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6440                    fidl_fuchsia_posix::Errno,
6441                >,
6442                fidl::encoding::DefaultFuchsiaResourceDialect,
6443                0x6baf6eed8fc2f04,
6444            >(_buf?)?;
6445            Ok(_response.map(|x| x.value))
6446        }
6447        self.client.send_query_and_decode::<
6448            fidl::encoding::EmptyPayload,
6449            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6450        >(
6451            (),
6452            0x6baf6eed8fc2f04,
6453            fidl::encoding::DynamicFlags::empty(),
6454            _decode,
6455        )
6456    }
6457
6458    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6459        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6460        fidl::encoding::DefaultFuchsiaResourceDialect,
6461    >;
6462    fn r#set_ipv6_receive_packet_info(
6463        &self,
6464        mut value: bool,
6465    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6466        fn _decode(
6467            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6468        ) -> Result<
6469            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6470            fidl::Error,
6471        > {
6472            let _response = fidl::client::decode_transaction_body::<
6473                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6474                fidl::encoding::DefaultFuchsiaResourceDialect,
6475                0x19259775b1a92768,
6476            >(_buf?)?;
6477            Ok(_response.map(|x| x))
6478        }
6479        self.client.send_query_and_decode::<
6480            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6481            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6482        >(
6483            (value,),
6484            0x19259775b1a92768,
6485            fidl::encoding::DynamicFlags::empty(),
6486            _decode,
6487        )
6488    }
6489
6490    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6491        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6492        fidl::encoding::DefaultFuchsiaResourceDialect,
6493    >;
6494    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6495        fn _decode(
6496            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6497        ) -> Result<
6498            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6499            fidl::Error,
6500        > {
6501            let _response = fidl::client::decode_transaction_body::<
6502                fidl::encoding::ResultType<
6503                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6504                    fidl_fuchsia_posix::Errno,
6505                >,
6506                fidl::encoding::DefaultFuchsiaResourceDialect,
6507                0x7acd4a2775baec75,
6508            >(_buf?)?;
6509            Ok(_response.map(|x| x.value))
6510        }
6511        self.client.send_query_and_decode::<
6512            fidl::encoding::EmptyPayload,
6513            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6514        >(
6515            (),
6516            0x7acd4a2775baec75,
6517            fidl::encoding::DynamicFlags::empty(),
6518            _decode,
6519        )
6520    }
6521
6522    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6523        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6524        fidl::encoding::DefaultFuchsiaResourceDialect,
6525    >;
6526    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6527        fn _decode(
6528            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6529        ) -> Result<
6530            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6531            fidl::Error,
6532        > {
6533            let _response = fidl::client::decode_transaction_body::<
6534                fidl::encoding::ResultType<
6535                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6536                    fidl_fuchsia_posix::Errno,
6537                >,
6538                fidl::encoding::DefaultFuchsiaResourceDialect,
6539                0x38bf28f0dafdbac0,
6540            >(_buf?)?;
6541            Ok(_response.map(|x| x.value))
6542        }
6543        self.client.send_query_and_decode::<
6544            fidl::encoding::EmptyPayload,
6545            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6546        >(
6547            (),
6548            0x38bf28f0dafdbac0,
6549            fidl::encoding::DynamicFlags::empty(),
6550            _decode,
6551        )
6552    }
6553
6554    type DescribeResponseFut = fidl::client::QueryResponseFut<
6555        SocketDescribeResponse,
6556        fidl::encoding::DefaultFuchsiaResourceDialect,
6557    >;
6558    fn r#describe(&self) -> Self::DescribeResponseFut {
6559        fn _decode(
6560            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6561        ) -> Result<SocketDescribeResponse, fidl::Error> {
6562            let _response = fidl::client::decode_transaction_body::<
6563                SocketDescribeResponse,
6564                fidl::encoding::DefaultFuchsiaResourceDialect,
6565                0x335706eccf54a135,
6566            >(_buf?)?;
6567            Ok(_response)
6568        }
6569        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6570            (),
6571            0x335706eccf54a135,
6572            fidl::encoding::DynamicFlags::empty(),
6573            _decode,
6574        )
6575    }
6576
6577    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6578        SocketRecvMsgResult,
6579        fidl::encoding::DefaultFuchsiaResourceDialect,
6580    >;
6581    fn r#recv_msg(
6582        &self,
6583        mut want_addr: bool,
6584        mut data_len: u32,
6585        mut want_control: bool,
6586        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6587    ) -> Self::RecvMsgResponseFut {
6588        fn _decode(
6589            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6590        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6591            let _response = fidl::client::decode_transaction_body::<
6592                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6593                fidl::encoding::DefaultFuchsiaResourceDialect,
6594                0x1dfb695351d3aa1d,
6595            >(_buf?)?;
6596            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6597        }
6598        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6599            (want_addr, data_len, want_control, flags),
6600            0x1dfb695351d3aa1d,
6601            fidl::encoding::DynamicFlags::empty(),
6602            _decode,
6603        )
6604    }
6605
6606    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6607        SocketSendMsgResult,
6608        fidl::encoding::DefaultFuchsiaResourceDialect,
6609    >;
6610    fn r#send_msg(
6611        &self,
6612        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6613        mut data: &[u8],
6614        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6615        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6616    ) -> Self::SendMsgResponseFut {
6617        fn _decode(
6618            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6619        ) -> Result<SocketSendMsgResult, fidl::Error> {
6620            let _response = fidl::client::decode_transaction_body::<
6621                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6622                fidl::encoding::DefaultFuchsiaResourceDialect,
6623                0x2cf1eac9a7fc8958,
6624            >(_buf?)?;
6625            Ok(_response.map(|x| x))
6626        }
6627        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6628            (addr, data, control, flags),
6629            0x2cf1eac9a7fc8958,
6630            fidl::encoding::DynamicFlags::empty(),
6631            _decode,
6632        )
6633    }
6634
6635    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6636        SocketGetInfoResult,
6637        fidl::encoding::DefaultFuchsiaResourceDialect,
6638    >;
6639    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6640        fn _decode(
6641            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6642        ) -> Result<SocketGetInfoResult, fidl::Error> {
6643            let _response = fidl::client::decode_transaction_body::<
6644                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6645                fidl::encoding::DefaultFuchsiaResourceDialect,
6646                0x39676f75aec339ba,
6647            >(_buf?)?;
6648            Ok(_response.map(|x| (x.domain, x.proto)))
6649        }
6650        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6651            (),
6652            0x39676f75aec339ba,
6653            fidl::encoding::DynamicFlags::empty(),
6654            _decode,
6655        )
6656    }
6657
6658    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6659        SocketSetIpHeaderIncludedResult,
6660        fidl::encoding::DefaultFuchsiaResourceDialect,
6661    >;
6662    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6663        fn _decode(
6664            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6665        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6666            let _response = fidl::client::decode_transaction_body::<
6667                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6668                fidl::encoding::DefaultFuchsiaResourceDialect,
6669                0x5d06a606d95e8f3,
6670            >(_buf?)?;
6671            Ok(_response.map(|x| x))
6672        }
6673        self.client.send_query_and_decode::<
6674            SocketSetIpHeaderIncludedRequest,
6675            SocketSetIpHeaderIncludedResult,
6676        >(
6677            (value,),
6678            0x5d06a606d95e8f3,
6679            fidl::encoding::DynamicFlags::empty(),
6680            _decode,
6681        )
6682    }
6683
6684    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6685        SocketGetIpHeaderIncludedResult,
6686        fidl::encoding::DefaultFuchsiaResourceDialect,
6687    >;
6688    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6689        fn _decode(
6690            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6691        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6692            let _response = fidl::client::decode_transaction_body::<
6693                fidl::encoding::ResultType<
6694                    SocketGetIpHeaderIncludedResponse,
6695                    fidl_fuchsia_posix::Errno,
6696                >,
6697                fidl::encoding::DefaultFuchsiaResourceDialect,
6698                0x76125ad1f4d175f6,
6699            >(_buf?)?;
6700            Ok(_response.map(|x| x.value))
6701        }
6702        self.client
6703            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6704                (),
6705                0x76125ad1f4d175f6,
6706                fidl::encoding::DynamicFlags::empty(),
6707                _decode,
6708            )
6709    }
6710
6711    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6712        SocketSetIcmpv6FilterResult,
6713        fidl::encoding::DefaultFuchsiaResourceDialect,
6714    >;
6715    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6716        fn _decode(
6717            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6718        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6719            let _response = fidl::client::decode_transaction_body::<
6720                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6721                fidl::encoding::DefaultFuchsiaResourceDialect,
6722                0x4ebea92a43ae68a9,
6723            >(_buf?)?;
6724            Ok(_response.map(|x| x))
6725        }
6726        self.client
6727            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6728                (filter,),
6729                0x4ebea92a43ae68a9,
6730                fidl::encoding::DynamicFlags::empty(),
6731                _decode,
6732            )
6733    }
6734
6735    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6736        SocketGetIcmpv6FilterResult,
6737        fidl::encoding::DefaultFuchsiaResourceDialect,
6738    >;
6739    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6740        fn _decode(
6741            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6742        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6743            let _response = fidl::client::decode_transaction_body::<
6744                fidl::encoding::ResultType<
6745                    SocketGetIcmpv6FilterResponse,
6746                    fidl_fuchsia_posix::Errno,
6747                >,
6748                fidl::encoding::DefaultFuchsiaResourceDialect,
6749                0x43bd4f3bc0970ace,
6750            >(_buf?)?;
6751            Ok(_response.map(|x| x.filter))
6752        }
6753        self.client
6754            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6755                (),
6756                0x43bd4f3bc0970ace,
6757                fidl::encoding::DynamicFlags::empty(),
6758                _decode,
6759            )
6760    }
6761
6762    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6763        SocketSetIpv6ChecksumResult,
6764        fidl::encoding::DefaultFuchsiaResourceDialect,
6765    >;
6766    fn r#set_ipv6_checksum(
6767        &self,
6768        mut config: &Ipv6ChecksumConfiguration,
6769    ) -> Self::SetIpv6ChecksumResponseFut {
6770        fn _decode(
6771            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6772        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6773            let _response = fidl::client::decode_transaction_body::<
6774                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6775                fidl::encoding::DefaultFuchsiaResourceDialect,
6776                0x18b7809577199cb4,
6777            >(_buf?)?;
6778            Ok(_response.map(|x| x))
6779        }
6780        self.client
6781            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6782                (config,),
6783                0x18b7809577199cb4,
6784                fidl::encoding::DynamicFlags::empty(),
6785                _decode,
6786            )
6787    }
6788
6789    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6790        SocketGetIpv6ChecksumResult,
6791        fidl::encoding::DefaultFuchsiaResourceDialect,
6792    >;
6793    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6794        fn _decode(
6795            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6796        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6797            let _response = fidl::client::decode_transaction_body::<
6798                fidl::encoding::ResultType<
6799                    SocketGetIpv6ChecksumResponse,
6800                    fidl_fuchsia_posix::Errno,
6801                >,
6802                fidl::encoding::DefaultFuchsiaResourceDialect,
6803                0x1847bf5b2d263dd,
6804            >(_buf?)?;
6805            Ok(_response.map(|x| x.config))
6806        }
6807        self.client
6808            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6809                (),
6810                0x1847bf5b2d263dd,
6811                fidl::encoding::DynamicFlags::empty(),
6812                _decode,
6813            )
6814    }
6815}
6816
6817pub struct SocketEventStream {
6818    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6819}
6820
6821impl std::marker::Unpin for SocketEventStream {}
6822
6823impl futures::stream::FusedStream for SocketEventStream {
6824    fn is_terminated(&self) -> bool {
6825        self.event_receiver.is_terminated()
6826    }
6827}
6828
6829impl futures::Stream for SocketEventStream {
6830    type Item = Result<SocketEvent, fidl::Error>;
6831
6832    fn poll_next(
6833        mut self: std::pin::Pin<&mut Self>,
6834        cx: &mut std::task::Context<'_>,
6835    ) -> std::task::Poll<Option<Self::Item>> {
6836        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6837            &mut self.event_receiver,
6838            cx
6839        )?) {
6840            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6841            None => std::task::Poll::Ready(None),
6842        }
6843    }
6844}
6845
6846#[derive(Debug)]
6847pub enum SocketEvent {}
6848
6849impl SocketEvent {
6850    /// Decodes a message buffer as a [`SocketEvent`].
6851    fn decode(
6852        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6853    ) -> Result<SocketEvent, fidl::Error> {
6854        let (bytes, _handles) = buf.split_mut();
6855        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6856        debug_assert_eq!(tx_header.tx_id, 0);
6857        match tx_header.ordinal {
6858            _ => Err(fidl::Error::UnknownOrdinal {
6859                ordinal: tx_header.ordinal,
6860                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6861            }),
6862        }
6863    }
6864}
6865
6866/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6867pub struct SocketRequestStream {
6868    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6869    is_terminated: bool,
6870}
6871
6872impl std::marker::Unpin for SocketRequestStream {}
6873
6874impl futures::stream::FusedStream for SocketRequestStream {
6875    fn is_terminated(&self) -> bool {
6876        self.is_terminated
6877    }
6878}
6879
6880impl fidl::endpoints::RequestStream for SocketRequestStream {
6881    type Protocol = SocketMarker;
6882    type ControlHandle = SocketControlHandle;
6883
6884    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6885        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6886    }
6887
6888    fn control_handle(&self) -> Self::ControlHandle {
6889        SocketControlHandle { inner: self.inner.clone() }
6890    }
6891
6892    fn into_inner(
6893        self,
6894    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
6895    {
6896        (self.inner, self.is_terminated)
6897    }
6898
6899    fn from_inner(
6900        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6901        is_terminated: bool,
6902    ) -> Self {
6903        Self { inner, is_terminated }
6904    }
6905}
6906
6907impl futures::Stream for SocketRequestStream {
6908    type Item = Result<SocketRequest, fidl::Error>;
6909
6910    fn poll_next(
6911        mut self: std::pin::Pin<&mut Self>,
6912        cx: &mut std::task::Context<'_>,
6913    ) -> std::task::Poll<Option<Self::Item>> {
6914        let this = &mut *self;
6915        if this.inner.check_shutdown(cx) {
6916            this.is_terminated = true;
6917            return std::task::Poll::Ready(None);
6918        }
6919        if this.is_terminated {
6920            panic!("polled SocketRequestStream after completion");
6921        }
6922        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
6923            |bytes, handles| {
6924                match this.inner.channel().read_etc(cx, bytes, handles) {
6925                    std::task::Poll::Ready(Ok(())) => {}
6926                    std::task::Poll::Pending => return std::task::Poll::Pending,
6927                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
6928                        this.is_terminated = true;
6929                        return std::task::Poll::Ready(None);
6930                    }
6931                    std::task::Poll::Ready(Err(e)) => {
6932                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
6933                            e.into(),
6934                        ))))
6935                    }
6936                }
6937
6938                // A message has been received from the channel
6939                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6940
6941                std::task::Poll::Ready(Some(match header.ordinal {
6942                    0x20d8a7aba2168a79 => {
6943                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6944                        let mut req = fidl::new_empty!(
6945                            fidl_fuchsia_unknown::CloneableCloneRequest,
6946                            fidl::encoding::DefaultFuchsiaResourceDialect
6947                        );
6948                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
6949                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6950                        Ok(SocketRequest::Clone { request: req.request, control_handle })
6951                    }
6952                    0x5ac5d459ad7f657e => {
6953                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6954                        let mut req = fidl::new_empty!(
6955                            fidl::encoding::EmptyPayload,
6956                            fidl::encoding::DefaultFuchsiaResourceDialect
6957                        );
6958                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6959                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6960                        Ok(SocketRequest::Close {
6961                            responder: SocketCloseResponder {
6962                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6963                                tx_id: header.tx_id,
6964                            },
6965                        })
6966                    }
6967                    0x2658edee9decfc06 => {
6968                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6969                        let mut req = fidl::new_empty!(
6970                            fidl::encoding::EmptyPayload,
6971                            fidl::encoding::DefaultFuchsiaResourceDialect
6972                        );
6973                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6974                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6975                        Ok(SocketRequest::Query {
6976                            responder: SocketQueryResponder {
6977                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6978                                tx_id: header.tx_id,
6979                            },
6980                        })
6981                    }
6982                    0x1fd74ee8b9a4a876 => {
6983                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6984                        let mut req = fidl::new_empty!(
6985                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
6986                            fidl::encoding::DefaultFuchsiaResourceDialect
6987                        );
6988                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
6989                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6990                        Ok(SocketRequest::SetReuseAddress {
6991                            value: req.value,
6992
6993                            responder: SocketSetReuseAddressResponder {
6994                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6995                                tx_id: header.tx_id,
6996                            },
6997                        })
6998                    }
6999                    0x67b7206b8d1bc0a5 => {
7000                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7001                        let mut req = fidl::new_empty!(
7002                            fidl::encoding::EmptyPayload,
7003                            fidl::encoding::DefaultFuchsiaResourceDialect
7004                        );
7005                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7006                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7007                        Ok(SocketRequest::GetReuseAddress {
7008                            responder: SocketGetReuseAddressResponder {
7009                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7010                                tx_id: header.tx_id,
7011                            },
7012                        })
7013                    }
7014                    0x5aad39b33e5f6ebb => {
7015                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7016                        let mut req = fidl::new_empty!(
7017                            fidl::encoding::EmptyPayload,
7018                            fidl::encoding::DefaultFuchsiaResourceDialect
7019                        );
7020                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7021                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7022                        Ok(SocketRequest::GetError {
7023                            responder: SocketGetErrorResponder {
7024                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7025                                tx_id: header.tx_id,
7026                            },
7027                        })
7028                    }
7029                    0x6023e081ce3cd947 => {
7030                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7031                        let mut req = fidl::new_empty!(
7032                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
7033                            fidl::encoding::DefaultFuchsiaResourceDialect
7034                        );
7035                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
7036                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7037                        Ok(SocketRequest::SetBroadcast {
7038                            value: req.value,
7039
7040                            responder: SocketSetBroadcastResponder {
7041                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7042                                tx_id: header.tx_id,
7043                            },
7044                        })
7045                    }
7046                    0x68796fc556f9780d => {
7047                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7048                        let mut req = fidl::new_empty!(
7049                            fidl::encoding::EmptyPayload,
7050                            fidl::encoding::DefaultFuchsiaResourceDialect
7051                        );
7052                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7053                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7054                        Ok(SocketRequest::GetBroadcast {
7055                            responder: SocketGetBroadcastResponder {
7056                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7057                                tx_id: header.tx_id,
7058                            },
7059                        })
7060                    }
7061                    0x756eac32d73a7a70 => {
7062                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7063                        let mut req = fidl::new_empty!(
7064                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
7065                            fidl::encoding::DefaultFuchsiaResourceDialect
7066                        );
7067                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7068                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7069                        Ok(SocketRequest::SetSendBuffer {
7070                            value_bytes: req.value_bytes,
7071
7072                            responder: SocketSetSendBufferResponder {
7073                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7074                                tx_id: header.tx_id,
7075                            },
7076                        })
7077                    }
7078                    0x78a52fd9c7b2410b => {
7079                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7080                        let mut req = fidl::new_empty!(
7081                            fidl::encoding::EmptyPayload,
7082                            fidl::encoding::DefaultFuchsiaResourceDialect
7083                        );
7084                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7085                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7086                        Ok(SocketRequest::GetSendBuffer {
7087                            responder: SocketGetSendBufferResponder {
7088                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7089                                tx_id: header.tx_id,
7090                            },
7091                        })
7092                    }
7093                    0x6b0cf2f1919c7001 => {
7094                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7095                        let mut req = fidl::new_empty!(
7096                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7097                            fidl::encoding::DefaultFuchsiaResourceDialect
7098                        );
7099                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7100                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7101                        Ok(SocketRequest::SetReceiveBuffer {
7102                            value_bytes: req.value_bytes,
7103
7104                            responder: SocketSetReceiveBufferResponder {
7105                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7106                                tx_id: header.tx_id,
7107                            },
7108                        })
7109                    }
7110                    0x14c1a4b64f709e5c => {
7111                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7112                        let mut req = fidl::new_empty!(
7113                            fidl::encoding::EmptyPayload,
7114                            fidl::encoding::DefaultFuchsiaResourceDialect
7115                        );
7116                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7117                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7118                        Ok(SocketRequest::GetReceiveBuffer {
7119                            responder: SocketGetReceiveBufferResponder {
7120                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7121                                tx_id: header.tx_id,
7122                            },
7123                        })
7124                    }
7125                    0x572df8f0b920d2c7 => {
7126                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7127                        let mut req = fidl::new_empty!(
7128                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7129                            fidl::encoding::DefaultFuchsiaResourceDialect
7130                        );
7131                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7132                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7133                        Ok(SocketRequest::SetKeepAlive {
7134                            value: req.value,
7135
7136                            responder: SocketSetKeepAliveResponder {
7137                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7138                                tx_id: header.tx_id,
7139                            },
7140                        })
7141                    }
7142                    0x2dd29d3215f2c9d2 => {
7143                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7144                        let mut req = fidl::new_empty!(
7145                            fidl::encoding::EmptyPayload,
7146                            fidl::encoding::DefaultFuchsiaResourceDialect
7147                        );
7148                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7149                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7150                        Ok(SocketRequest::GetKeepAlive {
7151                            responder: SocketGetKeepAliveResponder {
7152                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7153                                tx_id: header.tx_id,
7154                            },
7155                        })
7156                    }
7157                    0x3ecb49968bee439 => {
7158                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7159                        let mut req = fidl::new_empty!(
7160                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7161                            fidl::encoding::DefaultFuchsiaResourceDialect
7162                        );
7163                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7164                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7165                        Ok(SocketRequest::SetOutOfBandInline {
7166                            value: req.value,
7167
7168                            responder: SocketSetOutOfBandInlineResponder {
7169                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7170                                tx_id: header.tx_id,
7171                            },
7172                        })
7173                    }
7174                    0x348c1ab3aeca1745 => {
7175                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7176                        let mut req = fidl::new_empty!(
7177                            fidl::encoding::EmptyPayload,
7178                            fidl::encoding::DefaultFuchsiaResourceDialect
7179                        );
7180                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7181                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7182                        Ok(SocketRequest::GetOutOfBandInline {
7183                            responder: SocketGetOutOfBandInlineResponder {
7184                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7185                                tx_id: header.tx_id,
7186                            },
7187                        })
7188                    }
7189                    0x6bbf00c53a4c78c2 => {
7190                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7191                        let mut req = fidl::new_empty!(
7192                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7193                            fidl::encoding::DefaultFuchsiaResourceDialect
7194                        );
7195                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7196                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7197                        Ok(SocketRequest::SetNoCheck {
7198                            value: req.value,
7199
7200                            responder: SocketSetNoCheckResponder {
7201                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7202                                tx_id: header.tx_id,
7203                            },
7204                        })
7205                    }
7206                    0x2cd4249286417694 => {
7207                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7208                        let mut req = fidl::new_empty!(
7209                            fidl::encoding::EmptyPayload,
7210                            fidl::encoding::DefaultFuchsiaResourceDialect
7211                        );
7212                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7213                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7214                        Ok(SocketRequest::GetNoCheck {
7215                            responder: SocketGetNoCheckResponder {
7216                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7217                                tx_id: header.tx_id,
7218                            },
7219                        })
7220                    }
7221                    0x45386351246e998e => {
7222                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7223                        let mut req = fidl::new_empty!(
7224                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7225                            fidl::encoding::DefaultFuchsiaResourceDialect
7226                        );
7227                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7228                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7229                        Ok(SocketRequest::SetLinger {
7230                            linger: req.linger,
7231                            length_secs: req.length_secs,
7232
7233                            responder: SocketSetLingerResponder {
7234                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7235                                tx_id: header.tx_id,
7236                            },
7237                        })
7238                    }
7239                    0x48eb20fc5ccb0e45 => {
7240                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7241                        let mut req = fidl::new_empty!(
7242                            fidl::encoding::EmptyPayload,
7243                            fidl::encoding::DefaultFuchsiaResourceDialect
7244                        );
7245                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7246                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7247                        Ok(SocketRequest::GetLinger {
7248                            responder: SocketGetLingerResponder {
7249                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7250                                tx_id: header.tx_id,
7251                            },
7252                        })
7253                    }
7254                    0x24dd3e5cb36d9ccb => {
7255                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7256                        let mut req = fidl::new_empty!(
7257                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7258                            fidl::encoding::DefaultFuchsiaResourceDialect
7259                        );
7260                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7261                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7262                        Ok(SocketRequest::SetReusePort {
7263                            value: req.value,
7264
7265                            responder: SocketSetReusePortResponder {
7266                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7267                                tx_id: header.tx_id,
7268                            },
7269                        })
7270                    }
7271                    0x7a112c1ab54ff828 => {
7272                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7273                        let mut req = fidl::new_empty!(
7274                            fidl::encoding::EmptyPayload,
7275                            fidl::encoding::DefaultFuchsiaResourceDialect
7276                        );
7277                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7278                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7279                        Ok(SocketRequest::GetReusePort {
7280                            responder: SocketGetReusePortResponder {
7281                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7282                                tx_id: header.tx_id,
7283                            },
7284                        })
7285                    }
7286                    0x67ce6db6c2ec8966 => {
7287                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7288                        let mut req = fidl::new_empty!(
7289                            fidl::encoding::EmptyPayload,
7290                            fidl::encoding::DefaultFuchsiaResourceDialect
7291                        );
7292                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7293                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7294                        Ok(SocketRequest::GetAcceptConn {
7295                            responder: SocketGetAcceptConnResponder {
7296                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7297                                tx_id: header.tx_id,
7298                            },
7299                        })
7300                    }
7301                    0x2118b483f28aafc4 => {
7302                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7303                        let mut req = fidl::new_empty!(
7304                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7305                            fidl::encoding::DefaultFuchsiaResourceDialect
7306                        );
7307                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7308                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7309                        Ok(SocketRequest::SetBindToDevice {
7310                            value: req.value,
7311
7312                            responder: SocketSetBindToDeviceResponder {
7313                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7314                                tx_id: header.tx_id,
7315                            },
7316                        })
7317                    }
7318                    0x1ab1fbf0ef7906c8 => {
7319                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7320                        let mut req = fidl::new_empty!(
7321                            fidl::encoding::EmptyPayload,
7322                            fidl::encoding::DefaultFuchsiaResourceDialect
7323                        );
7324                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7325                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7326                        Ok(SocketRequest::GetBindToDevice {
7327                            responder: SocketGetBindToDeviceResponder {
7328                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7329                                tx_id: header.tx_id,
7330                            },
7331                        })
7332                    }
7333                    0x6e387a0def00821 => {
7334                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7335                        let mut req = fidl::new_empty!(
7336                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7337                            fidl::encoding::DefaultFuchsiaResourceDialect
7338                        );
7339                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7340                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7341                        Ok(SocketRequest::SetBindToInterfaceIndex {
7342                            value: req.value,
7343
7344                            responder: SocketSetBindToInterfaceIndexResponder {
7345                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7346                                tx_id: header.tx_id,
7347                            },
7348                        })
7349                    }
7350                    0x59c31dd3e3078295 => {
7351                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7352                        let mut req = fidl::new_empty!(
7353                            fidl::encoding::EmptyPayload,
7354                            fidl::encoding::DefaultFuchsiaResourceDialect
7355                        );
7356                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7357                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7358                        Ok(SocketRequest::GetBindToInterfaceIndex {
7359                            responder: SocketGetBindToInterfaceIndexResponder {
7360                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7361                                tx_id: header.tx_id,
7362                            },
7363                        })
7364                    }
7365                    0x285d6516c263d839 => {
7366                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7367                        let mut req = fidl::new_empty!(
7368                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7369                            fidl::encoding::DefaultFuchsiaResourceDialect
7370                        );
7371                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7372                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7373                        Ok(SocketRequest::SetTimestamp {
7374                            value: req.value,
7375
7376                            responder: SocketSetTimestampResponder {
7377                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7378                                tx_id: header.tx_id,
7379                            },
7380                        })
7381                    }
7382                    0x49f2fffbbcc2bd27 => {
7383                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7384                        let mut req = fidl::new_empty!(
7385                            fidl::encoding::EmptyPayload,
7386                            fidl::encoding::DefaultFuchsiaResourceDialect
7387                        );
7388                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7389                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7390                        Ok(SocketRequest::GetTimestamp {
7391                            responder: SocketGetTimestampResponder {
7392                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7393                                tx_id: header.tx_id,
7394                            },
7395                        })
7396                    }
7397                    0x6ead6de09f653236 => {
7398                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7399                        let mut req = fidl::new_empty!(
7400                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7401                            fidl::encoding::DefaultFuchsiaResourceDialect
7402                        );
7403                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7404                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7405                        Ok(SocketRequest::SetMark {
7406                            domain: req.domain,
7407                            mark: req.mark,
7408
7409                            responder: SocketSetMarkResponder {
7410                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7411                                tx_id: header.tx_id,
7412                            },
7413                        })
7414                    }
7415                    0x57a2752c61d93d47 => {
7416                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7417                        let mut req = fidl::new_empty!(
7418                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7419                            fidl::encoding::DefaultFuchsiaResourceDialect
7420                        );
7421                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7422                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7423                        Ok(SocketRequest::GetMark {
7424                            domain: req.domain,
7425
7426                            responder: SocketGetMarkResponder {
7427                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7428                                tx_id: header.tx_id,
7429                            },
7430                        })
7431                    }
7432                    0x4bc6400ae92125d => {
7433                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7434                        let mut req = fidl::new_empty!(
7435                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7436                            fidl::encoding::DefaultFuchsiaResourceDialect
7437                        );
7438                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7439                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7440                        Ok(SocketRequest::Bind {
7441                            addr: req.addr,
7442
7443                            responder: SocketBindResponder {
7444                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7445                                tx_id: header.tx_id,
7446                            },
7447                        })
7448                    }
7449                    0x5f05f19bfdd38871 => {
7450                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7451                        let mut req = fidl::new_empty!(
7452                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7453                            fidl::encoding::DefaultFuchsiaResourceDialect
7454                        );
7455                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7456                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7457                        Ok(SocketRequest::Connect {
7458                            addr: req.addr,
7459
7460                            responder: SocketConnectResponder {
7461                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7462                                tx_id: header.tx_id,
7463                            },
7464                        })
7465                    }
7466                    0x74e63b91f7b29b2 => {
7467                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7468                        let mut req = fidl::new_empty!(
7469                            fidl::encoding::EmptyPayload,
7470                            fidl::encoding::DefaultFuchsiaResourceDialect
7471                        );
7472                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7473                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7474                        Ok(SocketRequest::Disconnect {
7475                            responder: SocketDisconnectResponder {
7476                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7477                                tx_id: header.tx_id,
7478                            },
7479                        })
7480                    }
7481                    0x475f23f84a1a4f85 => {
7482                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7483                        let mut req = fidl::new_empty!(
7484                            fidl::encoding::EmptyPayload,
7485                            fidl::encoding::DefaultFuchsiaResourceDialect
7486                        );
7487                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7488                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7489                        Ok(SocketRequest::GetSockName {
7490                            responder: SocketGetSockNameResponder {
7491                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7492                                tx_id: header.tx_id,
7493                            },
7494                        })
7495                    }
7496                    0x1ffecf4bd5b6432e => {
7497                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7498                        let mut req = fidl::new_empty!(
7499                            fidl::encoding::EmptyPayload,
7500                            fidl::encoding::DefaultFuchsiaResourceDialect
7501                        );
7502                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7503                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7504                        Ok(SocketRequest::GetPeerName {
7505                            responder: SocketGetPeerNameResponder {
7506                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7507                                tx_id: header.tx_id,
7508                            },
7509                        })
7510                    }
7511                    0x247f38b6db68c336 => {
7512                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7513                        let mut req = fidl::new_empty!(
7514                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7515                            fidl::encoding::DefaultFuchsiaResourceDialect
7516                        );
7517                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7518                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7519                        Ok(SocketRequest::Shutdown {
7520                            mode: req.mode,
7521
7522                            responder: SocketShutdownResponder {
7523                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7524                                tx_id: header.tx_id,
7525                            },
7526                        })
7527                    }
7528                    0x995c600475b6d46 => {
7529                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7530                        let mut req = fidl::new_empty!(
7531                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7532                            fidl::encoding::DefaultFuchsiaResourceDialect
7533                        );
7534                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7535                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7536                        Ok(SocketRequest::SetIpTypeOfService {
7537                            value: req.value,
7538
7539                            responder: SocketSetIpTypeOfServiceResponder {
7540                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7541                                tx_id: header.tx_id,
7542                            },
7543                        })
7544                    }
7545                    0x3814a04259f75fcb => {
7546                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7547                        let mut req = fidl::new_empty!(
7548                            fidl::encoding::EmptyPayload,
7549                            fidl::encoding::DefaultFuchsiaResourceDialect
7550                        );
7551                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7552                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7553                        Ok(SocketRequest::GetIpTypeOfService {
7554                            responder: SocketGetIpTypeOfServiceResponder {
7555                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7556                                tx_id: header.tx_id,
7557                            },
7558                        })
7559                    }
7560                    0x29e2424b433ae1ef => {
7561                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7562                        let mut req = fidl::new_empty!(
7563                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7564                            fidl::encoding::DefaultFuchsiaResourceDialect
7565                        );
7566                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7567                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7568                        Ok(SocketRequest::SetIpTtl {
7569                            value: req.value,
7570
7571                            responder: SocketSetIpTtlResponder {
7572                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7573                                tx_id: header.tx_id,
7574                            },
7575                        })
7576                    }
7577                    0x47e47fa1f24da471 => {
7578                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7579                        let mut req = fidl::new_empty!(
7580                            fidl::encoding::EmptyPayload,
7581                            fidl::encoding::DefaultFuchsiaResourceDialect
7582                        );
7583                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7584                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7585                        Ok(SocketRequest::GetIpTtl {
7586                            responder: SocketGetIpTtlResponder {
7587                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7588                                tx_id: header.tx_id,
7589                            },
7590                        })
7591                    }
7592                    0x392d16bee20c0e16 => {
7593                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7594                        let mut req = fidl::new_empty!(
7595                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7596                            fidl::encoding::DefaultFuchsiaResourceDialect
7597                        );
7598                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7599                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7600                        Ok(SocketRequest::SetIpPacketInfo {
7601                            value: req.value,
7602
7603                            responder: SocketSetIpPacketInfoResponder {
7604                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7605                                tx_id: header.tx_id,
7606                            },
7607                        })
7608                    }
7609                    0x54b505f242280740 => {
7610                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7611                        let mut req = fidl::new_empty!(
7612                            fidl::encoding::EmptyPayload,
7613                            fidl::encoding::DefaultFuchsiaResourceDialect
7614                        );
7615                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7616                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7617                        Ok(SocketRequest::GetIpPacketInfo {
7618                            responder: SocketGetIpPacketInfoResponder {
7619                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7620                                tx_id: header.tx_id,
7621                            },
7622                        })
7623                    }
7624                    0x6c4f6714995f84ef => {
7625                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7626                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7627                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7628                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7629                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7630                            value: req.value,
7631
7632                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7633                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7634                                tx_id: header.tx_id,
7635                            },
7636                        })
7637                    }
7638                    0x4158ba7dc2795960 => {
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::GetIpReceiveTypeOfService {
7647                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7648                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7649                                tx_id: header.tx_id,
7650                            },
7651                        })
7652                    }
7653                    0x46f15be0ce0ab82b => {
7654                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7655                        let mut req = fidl::new_empty!(
7656                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7657                            fidl::encoding::DefaultFuchsiaResourceDialect
7658                        );
7659                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7660                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7661                        Ok(SocketRequest::SetIpReceiveTtl {
7662                            value: req.value,
7663
7664                            responder: SocketSetIpReceiveTtlResponder {
7665                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7666                                tx_id: header.tx_id,
7667                            },
7668                        })
7669                    }
7670                    0x678ddd5a5dfa2eb5 => {
7671                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7672                        let mut req = fidl::new_empty!(
7673                            fidl::encoding::EmptyPayload,
7674                            fidl::encoding::DefaultFuchsiaResourceDialect
7675                        );
7676                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7677                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7678                        Ok(SocketRequest::GetIpReceiveTtl {
7679                            responder: SocketGetIpReceiveTtlResponder {
7680                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7681                                tx_id: header.tx_id,
7682                            },
7683                        })
7684                    }
7685                    0x752fbfa9b12befe => {
7686                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7687                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7688                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7689                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7690                        Ok(SocketRequest::SetIpMulticastInterface {
7691                            iface: req.iface,
7692                            address: req.address,
7693
7694                            responder: SocketSetIpMulticastInterfaceResponder {
7695                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7696                                tx_id: header.tx_id,
7697                            },
7698                        })
7699                    }
7700                    0x320bd14c4df046c4 => {
7701                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7702                        let mut req = fidl::new_empty!(
7703                            fidl::encoding::EmptyPayload,
7704                            fidl::encoding::DefaultFuchsiaResourceDialect
7705                        );
7706                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7707                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7708                        Ok(SocketRequest::GetIpMulticastInterface {
7709                            responder: SocketGetIpMulticastInterfaceResponder {
7710                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7711                                tx_id: header.tx_id,
7712                            },
7713                        })
7714                    }
7715                    0x63134d53772916a1 => {
7716                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7717                        let mut req = fidl::new_empty!(
7718                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7719                            fidl::encoding::DefaultFuchsiaResourceDialect
7720                        );
7721                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7722                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7723                        Ok(SocketRequest::SetIpMulticastTtl {
7724                            value: req.value,
7725
7726                            responder: SocketSetIpMulticastTtlResponder {
7727                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7728                                tx_id: header.tx_id,
7729                            },
7730                        })
7731                    }
7732                    0x4665cd378f39e1a => {
7733                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7734                        let mut req = fidl::new_empty!(
7735                            fidl::encoding::EmptyPayload,
7736                            fidl::encoding::DefaultFuchsiaResourceDialect
7737                        );
7738                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7739                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7740                        Ok(SocketRequest::GetIpMulticastTtl {
7741                            responder: SocketGetIpMulticastTtlResponder {
7742                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7743                                tx_id: header.tx_id,
7744                            },
7745                        })
7746                    }
7747                    0x20c55c11f00943ea => {
7748                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7749                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7750                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7751                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7752                        Ok(SocketRequest::SetIpMulticastLoopback {
7753                            value: req.value,
7754
7755                            responder: SocketSetIpMulticastLoopbackResponder {
7756                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7757                                tx_id: header.tx_id,
7758                            },
7759                        })
7760                    }
7761                    0x3b6b26ff558298f2 => {
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::GetIpMulticastLoopback {
7770                            responder: SocketGetIpMulticastLoopbackResponder {
7771                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7772                                tx_id: header.tx_id,
7773                            },
7774                        })
7775                    }
7776                    0x76bc7df115a3b4d0 => {
7777                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7778                        let mut req = fidl::new_empty!(
7779                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7780                            fidl::encoding::DefaultFuchsiaResourceDialect
7781                        );
7782                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7783                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7784                        Ok(SocketRequest::AddIpMembership {
7785                            membership: req.membership,
7786
7787                            responder: SocketAddIpMembershipResponder {
7788                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7789                                tx_id: header.tx_id,
7790                            },
7791                        })
7792                    }
7793                    0x2888f3099188d03 => {
7794                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7795                        let mut req = fidl::new_empty!(
7796                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7797                            fidl::encoding::DefaultFuchsiaResourceDialect
7798                        );
7799                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7800                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7801                        Ok(SocketRequest::DropIpMembership {
7802                            membership: req.membership,
7803
7804                            responder: SocketDropIpMembershipResponder {
7805                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7806                                tx_id: header.tx_id,
7807                            },
7808                        })
7809                    }
7810                    0x1ae532b0c066e3a0 => {
7811                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7812                        let mut req = fidl::new_empty!(
7813                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7814                            fidl::encoding::DefaultFuchsiaResourceDialect
7815                        );
7816                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7817                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7818                        Ok(SocketRequest::SetIpTransparent {
7819                            value: req.value,
7820
7821                            responder: SocketSetIpTransparentResponder {
7822                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7823                                tx_id: header.tx_id,
7824                            },
7825                        })
7826                    }
7827                    0x51d43695962ebfb5 => {
7828                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7829                        let mut req = fidl::new_empty!(
7830                            fidl::encoding::EmptyPayload,
7831                            fidl::encoding::DefaultFuchsiaResourceDialect
7832                        );
7833                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7834                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7835                        Ok(SocketRequest::GetIpTransparent {
7836                            responder: SocketGetIpTransparentResponder {
7837                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7838                                tx_id: header.tx_id,
7839                            },
7840                        })
7841                    }
7842                    0x4722b4ce52f7840 => {
7843                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7844                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7845                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7846                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7847                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7848                            value: req.value,
7849
7850                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
7851                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7852                                tx_id: header.tx_id,
7853                            },
7854                        })
7855                    }
7856                    0x2a0e7dc5d6bfdfe9 => {
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::GetIpReceiveOriginalDestinationAddress {
7865                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
7866                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7867                                tx_id: header.tx_id,
7868                            },
7869                        })
7870                    }
7871                    0x7c94727acb4ea4b3 => {
7872                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7873                        let mut req = fidl::new_empty!(
7874                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
7875                            fidl::encoding::DefaultFuchsiaResourceDialect
7876                        );
7877                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7878                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7879                        Ok(SocketRequest::AddIpv6Membership {
7880                            membership: req.membership,
7881
7882                            responder: SocketAddIpv6MembershipResponder {
7883                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7884                                tx_id: header.tx_id,
7885                            },
7886                        })
7887                    }
7888                    0x42104c70ccaba304 => {
7889                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7890                        let mut req = fidl::new_empty!(
7891                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
7892                            fidl::encoding::DefaultFuchsiaResourceDialect
7893                        );
7894                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7895                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7896                        Ok(SocketRequest::DropIpv6Membership {
7897                            membership: req.membership,
7898
7899                            responder: SocketDropIpv6MembershipResponder {
7900                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7901                                tx_id: header.tx_id,
7902                            },
7903                        })
7904                    }
7905                    0x135f76db3774ab3b => {
7906                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7907                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7908                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7909                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7910                        Ok(SocketRequest::SetIpv6MulticastInterface {
7911                            value: req.value,
7912
7913                            responder: SocketSetIpv6MulticastInterfaceResponder {
7914                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7915                                tx_id: header.tx_id,
7916                            },
7917                        })
7918                    }
7919                    0x1f26fcdd348f1882 => {
7920                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7921                        let mut req = fidl::new_empty!(
7922                            fidl::encoding::EmptyPayload,
7923                            fidl::encoding::DefaultFuchsiaResourceDialect
7924                        );
7925                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7926                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7927                        Ok(SocketRequest::GetIpv6MulticastInterface {
7928                            responder: SocketGetIpv6MulticastInterfaceResponder {
7929                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7930                                tx_id: header.tx_id,
7931                            },
7932                        })
7933                    }
7934                    0x157d51e98f462859 => {
7935                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7936                        let mut req = fidl::new_empty!(
7937                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
7938                            fidl::encoding::DefaultFuchsiaResourceDialect
7939                        );
7940                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
7941                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7942                        Ok(SocketRequest::SetIpv6UnicastHops {
7943                            value: req.value,
7944
7945                            responder: SocketSetIpv6UnicastHopsResponder {
7946                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7947                                tx_id: header.tx_id,
7948                            },
7949                        })
7950                    }
7951                    0x21f4641cad8bd8d2 => {
7952                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7953                        let mut req = fidl::new_empty!(
7954                            fidl::encoding::EmptyPayload,
7955                            fidl::encoding::DefaultFuchsiaResourceDialect
7956                        );
7957                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7958                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7959                        Ok(SocketRequest::GetIpv6UnicastHops {
7960                            responder: SocketGetIpv6UnicastHopsResponder {
7961                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7962                                tx_id: header.tx_id,
7963                            },
7964                        })
7965                    }
7966                    0x5c24808ed2e84a1e => {
7967                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7968                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7969                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
7970                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7971                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
7972                            value: req.value,
7973
7974                            responder: SocketSetIpv6ReceiveHopLimitResponder {
7975                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7976                                tx_id: header.tx_id,
7977                            },
7978                        })
7979                    }
7980                    0x341e06689885b4c0 => {
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::GetIpv6ReceiveHopLimit {
7989                            responder: SocketGetIpv6ReceiveHopLimitResponder {
7990                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7991                                tx_id: header.tx_id,
7992                            },
7993                        })
7994                    }
7995                    0x25b9cd4d181f82c1 => {
7996                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7997                        let mut req = fidl::new_empty!(
7998                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
7999                            fidl::encoding::DefaultFuchsiaResourceDialect
8000                        );
8001                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8002                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8003                        Ok(SocketRequest::SetIpv6MulticastHops {
8004                            value: req.value,
8005
8006                            responder: SocketSetIpv6MulticastHopsResponder {
8007                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8008                                tx_id: header.tx_id,
8009                            },
8010                        })
8011                    }
8012                    0x52916948a365012a => {
8013                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8014                        let mut req = fidl::new_empty!(
8015                            fidl::encoding::EmptyPayload,
8016                            fidl::encoding::DefaultFuchsiaResourceDialect
8017                        );
8018                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8019                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8020                        Ok(SocketRequest::GetIpv6MulticastHops {
8021                            responder: SocketGetIpv6MulticastHopsResponder {
8022                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8023                                tx_id: header.tx_id,
8024                            },
8025                        })
8026                    }
8027                    0x55701c409ff41b40 => {
8028                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8029                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8030                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
8031                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8032                        Ok(SocketRequest::SetIpv6MulticastLoopback {
8033                            value: req.value,
8034
8035                            responder: SocketSetIpv6MulticastLoopbackResponder {
8036                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8037                                tx_id: header.tx_id,
8038                            },
8039                        })
8040                    }
8041                    0x4415b701fde319c3 => {
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::GetIpv6MulticastLoopback {
8050                            responder: SocketGetIpv6MulticastLoopbackResponder {
8051                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8052                                tx_id: header.tx_id,
8053                            },
8054                        })
8055                    }
8056                    0x4873f1364758cbba => {
8057                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8058                        let mut req = fidl::new_empty!(
8059                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8060                            fidl::encoding::DefaultFuchsiaResourceDialect
8061                        );
8062                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8063                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8064                        Ok(SocketRequest::SetIpv6Only {
8065                            value: req.value,
8066
8067                            responder: SocketSetIpv6OnlyResponder {
8068                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8069                                tx_id: header.tx_id,
8070                            },
8071                        })
8072                    }
8073                    0x4aa3340a1a26b89c => {
8074                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8075                        let mut req = fidl::new_empty!(
8076                            fidl::encoding::EmptyPayload,
8077                            fidl::encoding::DefaultFuchsiaResourceDialect
8078                        );
8079                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8080                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8081                        Ok(SocketRequest::GetIpv6Only {
8082                            responder: SocketGetIpv6OnlyResponder {
8083                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8084                                tx_id: header.tx_id,
8085                            },
8086                        })
8087                    }
8088                    0x58f07c8788d099a0 => {
8089                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8090                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8091                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8092                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8093                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8094                            value: req.value,
8095
8096                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8097                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8098                                tx_id: header.tx_id,
8099                            },
8100                        })
8101                    }
8102                    0x2e334df1da553ffa => {
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::GetIpv6ReceiveTrafficClass {
8111                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8112                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8113                                tx_id: header.tx_id,
8114                            },
8115                        })
8116                    }
8117                    0x6af077800c5a0b4f => {
8118                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8119                        let mut req = fidl::new_empty!(
8120                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8121                            fidl::encoding::DefaultFuchsiaResourceDialect
8122                        );
8123                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8124                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8125                        Ok(SocketRequest::SetIpv6TrafficClass {
8126                            value: req.value,
8127
8128                            responder: SocketSetIpv6TrafficClassResponder {
8129                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8130                                tx_id: header.tx_id,
8131                            },
8132                        })
8133                    }
8134                    0x6baf6eed8fc2f04 => {
8135                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8136                        let mut req = fidl::new_empty!(
8137                            fidl::encoding::EmptyPayload,
8138                            fidl::encoding::DefaultFuchsiaResourceDialect
8139                        );
8140                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8141                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8142                        Ok(SocketRequest::GetIpv6TrafficClass {
8143                            responder: SocketGetIpv6TrafficClassResponder {
8144                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8145                                tx_id: header.tx_id,
8146                            },
8147                        })
8148                    }
8149                    0x19259775b1a92768 => {
8150                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8151                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8152                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8153                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8154                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8155                            value: req.value,
8156
8157                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8158                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8159                                tx_id: header.tx_id,
8160                            },
8161                        })
8162                    }
8163                    0x7acd4a2775baec75 => {
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::GetIpv6ReceivePacketInfo {
8172                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8173                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8174                                tx_id: header.tx_id,
8175                            },
8176                        })
8177                    }
8178                    0x38bf28f0dafdbac0 => {
8179                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8180                        let mut req = fidl::new_empty!(
8181                            fidl::encoding::EmptyPayload,
8182                            fidl::encoding::DefaultFuchsiaResourceDialect
8183                        );
8184                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8185                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8186                        Ok(SocketRequest::GetOriginalDestination {
8187                            responder: SocketGetOriginalDestinationResponder {
8188                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8189                                tx_id: header.tx_id,
8190                            },
8191                        })
8192                    }
8193                    0x335706eccf54a135 => {
8194                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8195                        let mut req = fidl::new_empty!(
8196                            fidl::encoding::EmptyPayload,
8197                            fidl::encoding::DefaultFuchsiaResourceDialect
8198                        );
8199                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8200                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8201                        Ok(SocketRequest::Describe {
8202                            responder: SocketDescribeResponder {
8203                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8204                                tx_id: header.tx_id,
8205                            },
8206                        })
8207                    }
8208                    0x1dfb695351d3aa1d => {
8209                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8210                        let mut req = fidl::new_empty!(
8211                            SocketRecvMsgRequest,
8212                            fidl::encoding::DefaultFuchsiaResourceDialect
8213                        );
8214                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8215                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8216                        Ok(SocketRequest::RecvMsg {
8217                            want_addr: req.want_addr,
8218                            data_len: req.data_len,
8219                            want_control: req.want_control,
8220                            flags: req.flags,
8221
8222                            responder: SocketRecvMsgResponder {
8223                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8224                                tx_id: header.tx_id,
8225                            },
8226                        })
8227                    }
8228                    0x2cf1eac9a7fc8958 => {
8229                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8230                        let mut req = fidl::new_empty!(
8231                            SocketSendMsgRequest,
8232                            fidl::encoding::DefaultFuchsiaResourceDialect
8233                        );
8234                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8235                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8236                        Ok(SocketRequest::SendMsg {
8237                            addr: req.addr,
8238                            data: req.data,
8239                            control: req.control,
8240                            flags: req.flags,
8241
8242                            responder: SocketSendMsgResponder {
8243                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8244                                tx_id: header.tx_id,
8245                            },
8246                        })
8247                    }
8248                    0x39676f75aec339ba => {
8249                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8250                        let mut req = fidl::new_empty!(
8251                            fidl::encoding::EmptyPayload,
8252                            fidl::encoding::DefaultFuchsiaResourceDialect
8253                        );
8254                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8255                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8256                        Ok(SocketRequest::GetInfo {
8257                            responder: SocketGetInfoResponder {
8258                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8259                                tx_id: header.tx_id,
8260                            },
8261                        })
8262                    }
8263                    0x5d06a606d95e8f3 => {
8264                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8265                        let mut req = fidl::new_empty!(
8266                            SocketSetIpHeaderIncludedRequest,
8267                            fidl::encoding::DefaultFuchsiaResourceDialect
8268                        );
8269                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8270                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8271                        Ok(SocketRequest::SetIpHeaderIncluded {
8272                            value: req.value,
8273
8274                            responder: SocketSetIpHeaderIncludedResponder {
8275                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8276                                tx_id: header.tx_id,
8277                            },
8278                        })
8279                    }
8280                    0x76125ad1f4d175f6 => {
8281                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8282                        let mut req = fidl::new_empty!(
8283                            fidl::encoding::EmptyPayload,
8284                            fidl::encoding::DefaultFuchsiaResourceDialect
8285                        );
8286                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8287                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8288                        Ok(SocketRequest::GetIpHeaderIncluded {
8289                            responder: SocketGetIpHeaderIncludedResponder {
8290                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8291                                tx_id: header.tx_id,
8292                            },
8293                        })
8294                    }
8295                    0x4ebea92a43ae68a9 => {
8296                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8297                        let mut req = fidl::new_empty!(
8298                            SocketSetIcmpv6FilterRequest,
8299                            fidl::encoding::DefaultFuchsiaResourceDialect
8300                        );
8301                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8302                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8303                        Ok(SocketRequest::SetIcmpv6Filter {
8304                            filter: req.filter,
8305
8306                            responder: SocketSetIcmpv6FilterResponder {
8307                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8308                                tx_id: header.tx_id,
8309                            },
8310                        })
8311                    }
8312                    0x43bd4f3bc0970ace => {
8313                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8314                        let mut req = fidl::new_empty!(
8315                            fidl::encoding::EmptyPayload,
8316                            fidl::encoding::DefaultFuchsiaResourceDialect
8317                        );
8318                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8319                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8320                        Ok(SocketRequest::GetIcmpv6Filter {
8321                            responder: SocketGetIcmpv6FilterResponder {
8322                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8323                                tx_id: header.tx_id,
8324                            },
8325                        })
8326                    }
8327                    0x18b7809577199cb4 => {
8328                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8329                        let mut req = fidl::new_empty!(
8330                            SocketSetIpv6ChecksumRequest,
8331                            fidl::encoding::DefaultFuchsiaResourceDialect
8332                        );
8333                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8334                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8335                        Ok(SocketRequest::SetIpv6Checksum {
8336                            config: req.config,
8337
8338                            responder: SocketSetIpv6ChecksumResponder {
8339                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8340                                tx_id: header.tx_id,
8341                            },
8342                        })
8343                    }
8344                    0x1847bf5b2d263dd => {
8345                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8346                        let mut req = fidl::new_empty!(
8347                            fidl::encoding::EmptyPayload,
8348                            fidl::encoding::DefaultFuchsiaResourceDialect
8349                        );
8350                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8351                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8352                        Ok(SocketRequest::GetIpv6Checksum {
8353                            responder: SocketGetIpv6ChecksumResponder {
8354                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8355                                tx_id: header.tx_id,
8356                            },
8357                        })
8358                    }
8359                    _ => Err(fidl::Error::UnknownOrdinal {
8360                        ordinal: header.ordinal,
8361                        protocol_name:
8362                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8363                    }),
8364                }))
8365            },
8366        )
8367    }
8368}
8369
8370/// A raw network socket.
8371///
8372/// Once a socket has been retrieved from a provider, this interface is then
8373/// used to further configure and use the socket. This interface is essentially
8374/// POSIX.
8375///
8376/// All methods on this type are nonblocking; their exact behaviors match their
8377/// Linux counterparts.
8378///
8379/// *Warning:* This protocol is not yet ready for direct use by clients.
8380/// Instead, clients should use the BSD sockets API to interact with sockets.
8381/// We plan to change this protocol substantially and clients that couple
8382/// directly to this protocol will make those changes more difficult.
8383#[derive(Debug)]
8384pub enum SocketRequest {
8385    Clone {
8386        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8387        control_handle: SocketControlHandle,
8388    },
8389    /// Terminates the connection.
8390    ///
8391    /// After calling `Close`, the client must not send any other requests.
8392    ///
8393    /// Servers, after sending the status response, should close the connection
8394    /// regardless of status and without sending an epitaph.
8395    ///
8396    /// Closing the client end of the channel should be semantically equivalent
8397    /// to calling `Close` without knowing when the close has completed or its
8398    /// status.
8399    Close {
8400        responder: SocketCloseResponder,
8401    },
8402    Query {
8403        responder: SocketQueryResponder,
8404    },
8405    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8406    SetReuseAddress {
8407        value: bool,
8408        responder: SocketSetReuseAddressResponder,
8409    },
8410    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8411    GetReuseAddress {
8412        responder: SocketGetReuseAddressResponder,
8413    },
8414    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8415    /// Returns the last error if there is an error set on the socket.
8416    GetError {
8417        responder: SocketGetErrorResponder,
8418    },
8419    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8420    SetBroadcast {
8421        value: bool,
8422        responder: SocketSetBroadcastResponder,
8423    },
8424    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8425    GetBroadcast {
8426        responder: SocketGetBroadcastResponder,
8427    },
8428    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8429    SetSendBuffer {
8430        value_bytes: u64,
8431        responder: SocketSetSendBufferResponder,
8432    },
8433    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8434    GetSendBuffer {
8435        responder: SocketGetSendBufferResponder,
8436    },
8437    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8438    SetReceiveBuffer {
8439        value_bytes: u64,
8440        responder: SocketSetReceiveBufferResponder,
8441    },
8442    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8443    GetReceiveBuffer {
8444        responder: SocketGetReceiveBufferResponder,
8445    },
8446    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8447    SetKeepAlive {
8448        value: bool,
8449        responder: SocketSetKeepAliveResponder,
8450    },
8451    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8452    GetKeepAlive {
8453        responder: SocketGetKeepAliveResponder,
8454    },
8455    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8456    SetOutOfBandInline {
8457        value: bool,
8458        responder: SocketSetOutOfBandInlineResponder,
8459    },
8460    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8461    GetOutOfBandInline {
8462        responder: SocketGetOutOfBandInlineResponder,
8463    },
8464    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8465    SetNoCheck {
8466        value: bool,
8467        responder: SocketSetNoCheckResponder,
8468    },
8469    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8470    GetNoCheck {
8471        responder: SocketGetNoCheckResponder,
8472    },
8473    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8474    SetLinger {
8475        linger: bool,
8476        length_secs: u32,
8477        responder: SocketSetLingerResponder,
8478    },
8479    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8480    GetLinger {
8481        responder: SocketGetLingerResponder,
8482    },
8483    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8484    SetReusePort {
8485        value: bool,
8486        responder: SocketSetReusePortResponder,
8487    },
8488    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8489    GetReusePort {
8490        responder: SocketGetReusePortResponder,
8491    },
8492    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8493    GetAcceptConn {
8494        responder: SocketGetAcceptConnResponder,
8495    },
8496    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8497    SetBindToDevice {
8498        value: String,
8499        responder: SocketSetBindToDeviceResponder,
8500    },
8501    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8502    GetBindToDevice {
8503        responder: SocketGetBindToDeviceResponder,
8504    },
8505    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8506    /// If `value` is 0, this clears the bound interface.
8507    SetBindToInterfaceIndex {
8508        value: u64,
8509        responder: SocketSetBindToInterfaceIndexResponder,
8510    },
8511    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8512    GetBindToInterfaceIndex {
8513        responder: SocketGetBindToInterfaceIndexResponder,
8514    },
8515    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8516    SetTimestamp {
8517        value: fidl_fuchsia_posix_socket::TimestampOption,
8518        responder: SocketSetTimestampResponder,
8519    },
8520    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8521    GetTimestamp {
8522        responder: SocketGetTimestampResponder,
8523    },
8524    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8525    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8526    /// mark can be set independently in each domain.
8527    SetMark {
8528        domain: fidl_fuchsia_net::MarkDomain,
8529        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8530        responder: SocketSetMarkResponder,
8531    },
8532    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8533    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8534    /// mark can be retrieved independently in each domain.
8535    GetMark {
8536        domain: fidl_fuchsia_net::MarkDomain,
8537        responder: SocketGetMarkResponder,
8538    },
8539    /// Sets the local address used for the socket.
8540    Bind {
8541        addr: fidl_fuchsia_net::SocketAddress,
8542        responder: SocketBindResponder,
8543    },
8544    /// Initiates a connection to a remote address.
8545    Connect {
8546        addr: fidl_fuchsia_net::SocketAddress,
8547        responder: SocketConnectResponder,
8548    },
8549    /// Clears connection information from this socket.
8550    Disconnect {
8551        responder: SocketDisconnectResponder,
8552    },
8553    /// Retrieves the local socket address.
8554    GetSockName {
8555        responder: SocketGetSockNameResponder,
8556    },
8557    /// Retrieves the remote socket address.
8558    GetPeerName {
8559        responder: SocketGetPeerNameResponder,
8560    },
8561    /// Shuts down part of the socket.
8562    Shutdown {
8563        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8564        responder: SocketShutdownResponder,
8565    },
8566    /// Set `SOL_IP` -> `IP_TOS`.
8567    SetIpTypeOfService {
8568        value: u8,
8569        responder: SocketSetIpTypeOfServiceResponder,
8570    },
8571    /// Get `SOL_IP` -> `IP_TOS`.
8572    GetIpTypeOfService {
8573        responder: SocketGetIpTypeOfServiceResponder,
8574    },
8575    /// Set `SOL_IP` -> `IP_TTL`.
8576    SetIpTtl {
8577        value: fidl_fuchsia_posix_socket::OptionalUint8,
8578        responder: SocketSetIpTtlResponder,
8579    },
8580    /// Get `SOL_IP` -> `IP_TTL`.
8581    GetIpTtl {
8582        responder: SocketGetIpTtlResponder,
8583    },
8584    /// Set `SOL_IP` -> `IP_PKTINFO`.
8585    SetIpPacketInfo {
8586        value: bool,
8587        responder: SocketSetIpPacketInfoResponder,
8588    },
8589    /// Get `SOL_IP` -> `IP_PKTINFO`.
8590    GetIpPacketInfo {
8591        responder: SocketGetIpPacketInfoResponder,
8592    },
8593    /// Set `SOL_IP` -> `IP_RECVTOS`.
8594    SetIpReceiveTypeOfService {
8595        value: bool,
8596        responder: SocketSetIpReceiveTypeOfServiceResponder,
8597    },
8598    /// Get `SOL_IP` -> `IP_RECVTOS`.
8599    GetIpReceiveTypeOfService {
8600        responder: SocketGetIpReceiveTypeOfServiceResponder,
8601    },
8602    /// Set `SOL_IP` -> `IP_RECVTTL`.
8603    SetIpReceiveTtl {
8604        value: bool,
8605        responder: SocketSetIpReceiveTtlResponder,
8606    },
8607    /// Get `SOL_IP` -> `IP_RECVTTL`.
8608    GetIpReceiveTtl {
8609        responder: SocketGetIpReceiveTtlResponder,
8610    },
8611    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8612    SetIpMulticastInterface {
8613        iface: u64,
8614        address: fidl_fuchsia_net::Ipv4Address,
8615        responder: SocketSetIpMulticastInterfaceResponder,
8616    },
8617    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8618    GetIpMulticastInterface {
8619        responder: SocketGetIpMulticastInterfaceResponder,
8620    },
8621    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8622    SetIpMulticastTtl {
8623        value: fidl_fuchsia_posix_socket::OptionalUint8,
8624        responder: SocketSetIpMulticastTtlResponder,
8625    },
8626    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8627    GetIpMulticastTtl {
8628        responder: SocketGetIpMulticastTtlResponder,
8629    },
8630    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8631    SetIpMulticastLoopback {
8632        value: bool,
8633        responder: SocketSetIpMulticastLoopbackResponder,
8634    },
8635    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8636    GetIpMulticastLoopback {
8637        responder: SocketGetIpMulticastLoopbackResponder,
8638    },
8639    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8640    AddIpMembership {
8641        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8642        responder: SocketAddIpMembershipResponder,
8643    },
8644    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8645    DropIpMembership {
8646        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8647        responder: SocketDropIpMembershipResponder,
8648    },
8649    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8650    SetIpTransparent {
8651        value: bool,
8652        responder: SocketSetIpTransparentResponder,
8653    },
8654    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8655    GetIpTransparent {
8656        responder: SocketGetIpTransparentResponder,
8657    },
8658    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8659    SetIpReceiveOriginalDestinationAddress {
8660        value: bool,
8661        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8662    },
8663    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8664    GetIpReceiveOriginalDestinationAddress {
8665        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8666    },
8667    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8668    AddIpv6Membership {
8669        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8670        responder: SocketAddIpv6MembershipResponder,
8671    },
8672    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8673    DropIpv6Membership {
8674        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8675        responder: SocketDropIpv6MembershipResponder,
8676    },
8677    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8678    SetIpv6MulticastInterface {
8679        value: u64,
8680        responder: SocketSetIpv6MulticastInterfaceResponder,
8681    },
8682    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8683    GetIpv6MulticastInterface {
8684        responder: SocketGetIpv6MulticastInterfaceResponder,
8685    },
8686    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8687    SetIpv6UnicastHops {
8688        value: fidl_fuchsia_posix_socket::OptionalUint8,
8689        responder: SocketSetIpv6UnicastHopsResponder,
8690    },
8691    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8692    GetIpv6UnicastHops {
8693        responder: SocketGetIpv6UnicastHopsResponder,
8694    },
8695    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8696    SetIpv6ReceiveHopLimit {
8697        value: bool,
8698        responder: SocketSetIpv6ReceiveHopLimitResponder,
8699    },
8700    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8701    GetIpv6ReceiveHopLimit {
8702        responder: SocketGetIpv6ReceiveHopLimitResponder,
8703    },
8704    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8705    SetIpv6MulticastHops {
8706        value: fidl_fuchsia_posix_socket::OptionalUint8,
8707        responder: SocketSetIpv6MulticastHopsResponder,
8708    },
8709    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8710    GetIpv6MulticastHops {
8711        responder: SocketGetIpv6MulticastHopsResponder,
8712    },
8713    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8714    SetIpv6MulticastLoopback {
8715        value: bool,
8716        responder: SocketSetIpv6MulticastLoopbackResponder,
8717    },
8718    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8719    GetIpv6MulticastLoopback {
8720        responder: SocketGetIpv6MulticastLoopbackResponder,
8721    },
8722    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8723    SetIpv6Only {
8724        value: bool,
8725        responder: SocketSetIpv6OnlyResponder,
8726    },
8727    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8728    GetIpv6Only {
8729        responder: SocketGetIpv6OnlyResponder,
8730    },
8731    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8732    SetIpv6ReceiveTrafficClass {
8733        value: bool,
8734        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8735    },
8736    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8737    GetIpv6ReceiveTrafficClass {
8738        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8739    },
8740    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8741    SetIpv6TrafficClass {
8742        value: fidl_fuchsia_posix_socket::OptionalUint8,
8743        responder: SocketSetIpv6TrafficClassResponder,
8744    },
8745    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8746    GetIpv6TrafficClass {
8747        responder: SocketGetIpv6TrafficClassResponder,
8748    },
8749    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8750    SetIpv6ReceivePacketInfo {
8751        value: bool,
8752        responder: SocketSetIpv6ReceivePacketInfoResponder,
8753    },
8754    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8755    GetIpv6ReceivePacketInfo {
8756        responder: SocketGetIpv6ReceivePacketInfoResponder,
8757    },
8758    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8759    GetOriginalDestination {
8760        responder: SocketGetOriginalDestinationResponder,
8761    },
8762    Describe {
8763        responder: SocketDescribeResponder,
8764    },
8765    /// Receives a message from the socket.
8766    ///
8767    /// + request `want_addr` request message's source address information to
8768    ///   be returned.
8769    /// + request `data_len` the maximum allowed length of the response data
8770    ///   buffer.
8771    /// + request `want_control` request ancillary data to be returned.
8772    /// + request `flags` flags for the receive request.
8773    /// - response `addr` the message's source address information, if
8774    ///   requested.
8775    /// - response `data` the message.
8776    /// - response `control` control messages, if requested.
8777    /// - response `truncated` indicates whether or not the returned message
8778    ///   was truncated.
8779    RecvMsg {
8780        want_addr: bool,
8781        data_len: u32,
8782        want_control: bool,
8783        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8784        responder: SocketRecvMsgResponder,
8785    },
8786    /// Sends a message on the socket.
8787    ///
8788    /// + request `addr` the address to send the message to. If unset, will
8789    ///   send to the connected peer.
8790    /// + request `data` the message.
8791    /// + request `control` ancillary data.
8792    /// + request `flags` flags for the send request.
8793    SendMsg {
8794        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8795        data: Vec<u8>,
8796        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8797        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8798        responder: SocketSendMsgResponder,
8799    },
8800    /// Retrieves creation information from the socket.
8801    ///
8802    /// - response `domain` the socket's associated domain.
8803    /// - response `proto` the socket's associated protocol.
8804    GetInfo {
8805        responder: SocketGetInfoResponder,
8806    },
8807    /// Set `SOL_IP` -> `IP_HDRINCL`.
8808    SetIpHeaderIncluded {
8809        value: bool,
8810        responder: SocketSetIpHeaderIncludedResponder,
8811    },
8812    /// Get `SOL_IP` -> `IP_HDRINCL`.
8813    GetIpHeaderIncluded {
8814        responder: SocketGetIpHeaderIncludedResponder,
8815    },
8816    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8817    SetIcmpv6Filter {
8818        filter: Icmpv6Filter,
8819        responder: SocketSetIcmpv6FilterResponder,
8820    },
8821    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8822    GetIcmpv6Filter {
8823        responder: SocketGetIcmpv6FilterResponder,
8824    },
8825    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8826    SetIpv6Checksum {
8827        config: Ipv6ChecksumConfiguration,
8828        responder: SocketSetIpv6ChecksumResponder,
8829    },
8830    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8831    GetIpv6Checksum {
8832        responder: SocketGetIpv6ChecksumResponder,
8833    },
8834}
8835
8836impl SocketRequest {
8837    #[allow(irrefutable_let_patterns)]
8838    pub fn into_clone(
8839        self,
8840    ) -> Option<(
8841        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8842        SocketControlHandle,
8843    )> {
8844        if let SocketRequest::Clone { request, control_handle } = self {
8845            Some((request, control_handle))
8846        } else {
8847            None
8848        }
8849    }
8850
8851    #[allow(irrefutable_let_patterns)]
8852    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
8853        if let SocketRequest::Close { responder } = self {
8854            Some((responder))
8855        } else {
8856            None
8857        }
8858    }
8859
8860    #[allow(irrefutable_let_patterns)]
8861    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
8862        if let SocketRequest::Query { responder } = self {
8863            Some((responder))
8864        } else {
8865            None
8866        }
8867    }
8868
8869    #[allow(irrefutable_let_patterns)]
8870    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
8871        if let SocketRequest::SetReuseAddress { value, responder } = self {
8872            Some((value, responder))
8873        } else {
8874            None
8875        }
8876    }
8877
8878    #[allow(irrefutable_let_patterns)]
8879    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
8880        if let SocketRequest::GetReuseAddress { responder } = self {
8881            Some((responder))
8882        } else {
8883            None
8884        }
8885    }
8886
8887    #[allow(irrefutable_let_patterns)]
8888    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
8889        if let SocketRequest::GetError { responder } = self {
8890            Some((responder))
8891        } else {
8892            None
8893        }
8894    }
8895
8896    #[allow(irrefutable_let_patterns)]
8897    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
8898        if let SocketRequest::SetBroadcast { value, responder } = self {
8899            Some((value, responder))
8900        } else {
8901            None
8902        }
8903    }
8904
8905    #[allow(irrefutable_let_patterns)]
8906    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
8907        if let SocketRequest::GetBroadcast { responder } = self {
8908            Some((responder))
8909        } else {
8910            None
8911        }
8912    }
8913
8914    #[allow(irrefutable_let_patterns)]
8915    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
8916        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
8917            Some((value_bytes, responder))
8918        } else {
8919            None
8920        }
8921    }
8922
8923    #[allow(irrefutable_let_patterns)]
8924    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
8925        if let SocketRequest::GetSendBuffer { responder } = self {
8926            Some((responder))
8927        } else {
8928            None
8929        }
8930    }
8931
8932    #[allow(irrefutable_let_patterns)]
8933    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
8934        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
8935            Some((value_bytes, responder))
8936        } else {
8937            None
8938        }
8939    }
8940
8941    #[allow(irrefutable_let_patterns)]
8942    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
8943        if let SocketRequest::GetReceiveBuffer { responder } = self {
8944            Some((responder))
8945        } else {
8946            None
8947        }
8948    }
8949
8950    #[allow(irrefutable_let_patterns)]
8951    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
8952        if let SocketRequest::SetKeepAlive { value, responder } = self {
8953            Some((value, responder))
8954        } else {
8955            None
8956        }
8957    }
8958
8959    #[allow(irrefutable_let_patterns)]
8960    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
8961        if let SocketRequest::GetKeepAlive { responder } = self {
8962            Some((responder))
8963        } else {
8964            None
8965        }
8966    }
8967
8968    #[allow(irrefutable_let_patterns)]
8969    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
8970        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
8971            Some((value, responder))
8972        } else {
8973            None
8974        }
8975    }
8976
8977    #[allow(irrefutable_let_patterns)]
8978    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
8979        if let SocketRequest::GetOutOfBandInline { responder } = self {
8980            Some((responder))
8981        } else {
8982            None
8983        }
8984    }
8985
8986    #[allow(irrefutable_let_patterns)]
8987    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
8988        if let SocketRequest::SetNoCheck { value, responder } = self {
8989            Some((value, responder))
8990        } else {
8991            None
8992        }
8993    }
8994
8995    #[allow(irrefutable_let_patterns)]
8996    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
8997        if let SocketRequest::GetNoCheck { responder } = self {
8998            Some((responder))
8999        } else {
9000            None
9001        }
9002    }
9003
9004    #[allow(irrefutable_let_patterns)]
9005    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
9006        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
9007            Some((linger, length_secs, responder))
9008        } else {
9009            None
9010        }
9011    }
9012
9013    #[allow(irrefutable_let_patterns)]
9014    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
9015        if let SocketRequest::GetLinger { responder } = self {
9016            Some((responder))
9017        } else {
9018            None
9019        }
9020    }
9021
9022    #[allow(irrefutable_let_patterns)]
9023    pub fn into_set_reuse_port(self) -> Option<(bool, SocketSetReusePortResponder)> {
9024        if let SocketRequest::SetReusePort { value, responder } = self {
9025            Some((value, responder))
9026        } else {
9027            None
9028        }
9029    }
9030
9031    #[allow(irrefutable_let_patterns)]
9032    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
9033        if let SocketRequest::GetReusePort { responder } = self {
9034            Some((responder))
9035        } else {
9036            None
9037        }
9038    }
9039
9040    #[allow(irrefutable_let_patterns)]
9041    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
9042        if let SocketRequest::GetAcceptConn { responder } = self {
9043            Some((responder))
9044        } else {
9045            None
9046        }
9047    }
9048
9049    #[allow(irrefutable_let_patterns)]
9050    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
9051        if let SocketRequest::SetBindToDevice { value, responder } = self {
9052            Some((value, responder))
9053        } else {
9054            None
9055        }
9056    }
9057
9058    #[allow(irrefutable_let_patterns)]
9059    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
9060        if let SocketRequest::GetBindToDevice { responder } = self {
9061            Some((responder))
9062        } else {
9063            None
9064        }
9065    }
9066
9067    #[allow(irrefutable_let_patterns)]
9068    pub fn into_set_bind_to_interface_index(
9069        self,
9070    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
9071        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
9072            Some((value, responder))
9073        } else {
9074            None
9075        }
9076    }
9077
9078    #[allow(irrefutable_let_patterns)]
9079    pub fn into_get_bind_to_interface_index(
9080        self,
9081    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
9082        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
9083            Some((responder))
9084        } else {
9085            None
9086        }
9087    }
9088
9089    #[allow(irrefutable_let_patterns)]
9090    pub fn into_set_timestamp(
9091        self,
9092    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
9093        if let SocketRequest::SetTimestamp { value, responder } = self {
9094            Some((value, responder))
9095        } else {
9096            None
9097        }
9098    }
9099
9100    #[allow(irrefutable_let_patterns)]
9101    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9102        if let SocketRequest::GetTimestamp { responder } = self {
9103            Some((responder))
9104        } else {
9105            None
9106        }
9107    }
9108
9109    #[allow(irrefutable_let_patterns)]
9110    pub fn into_set_mark(
9111        self,
9112    ) -> Option<(
9113        fidl_fuchsia_net::MarkDomain,
9114        fidl_fuchsia_posix_socket::OptionalUint32,
9115        SocketSetMarkResponder,
9116    )> {
9117        if let SocketRequest::SetMark { domain, mark, responder } = self {
9118            Some((domain, mark, responder))
9119        } else {
9120            None
9121        }
9122    }
9123
9124    #[allow(irrefutable_let_patterns)]
9125    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9126        if let SocketRequest::GetMark { domain, responder } = self {
9127            Some((domain, responder))
9128        } else {
9129            None
9130        }
9131    }
9132
9133    #[allow(irrefutable_let_patterns)]
9134    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9135        if let SocketRequest::Bind { addr, responder } = self {
9136            Some((addr, responder))
9137        } else {
9138            None
9139        }
9140    }
9141
9142    #[allow(irrefutable_let_patterns)]
9143    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9144        if let SocketRequest::Connect { addr, responder } = self {
9145            Some((addr, responder))
9146        } else {
9147            None
9148        }
9149    }
9150
9151    #[allow(irrefutable_let_patterns)]
9152    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9153        if let SocketRequest::Disconnect { responder } = self {
9154            Some((responder))
9155        } else {
9156            None
9157        }
9158    }
9159
9160    #[allow(irrefutable_let_patterns)]
9161    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9162        if let SocketRequest::GetSockName { responder } = self {
9163            Some((responder))
9164        } else {
9165            None
9166        }
9167    }
9168
9169    #[allow(irrefutable_let_patterns)]
9170    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9171        if let SocketRequest::GetPeerName { responder } = self {
9172            Some((responder))
9173        } else {
9174            None
9175        }
9176    }
9177
9178    #[allow(irrefutable_let_patterns)]
9179    pub fn into_shutdown(
9180        self,
9181    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9182        if let SocketRequest::Shutdown { mode, responder } = self {
9183            Some((mode, responder))
9184        } else {
9185            None
9186        }
9187    }
9188
9189    #[allow(irrefutable_let_patterns)]
9190    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9191        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9192            Some((value, responder))
9193        } else {
9194            None
9195        }
9196    }
9197
9198    #[allow(irrefutable_let_patterns)]
9199    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9200        if let SocketRequest::GetIpTypeOfService { responder } = self {
9201            Some((responder))
9202        } else {
9203            None
9204        }
9205    }
9206
9207    #[allow(irrefutable_let_patterns)]
9208    pub fn into_set_ip_ttl(
9209        self,
9210    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9211        if let SocketRequest::SetIpTtl { value, responder } = self {
9212            Some((value, responder))
9213        } else {
9214            None
9215        }
9216    }
9217
9218    #[allow(irrefutable_let_patterns)]
9219    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9220        if let SocketRequest::GetIpTtl { responder } = self {
9221            Some((responder))
9222        } else {
9223            None
9224        }
9225    }
9226
9227    #[allow(irrefutable_let_patterns)]
9228    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9229        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9230            Some((value, responder))
9231        } else {
9232            None
9233        }
9234    }
9235
9236    #[allow(irrefutable_let_patterns)]
9237    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9238        if let SocketRequest::GetIpPacketInfo { responder } = self {
9239            Some((responder))
9240        } else {
9241            None
9242        }
9243    }
9244
9245    #[allow(irrefutable_let_patterns)]
9246    pub fn into_set_ip_receive_type_of_service(
9247        self,
9248    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9249        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9250            Some((value, responder))
9251        } else {
9252            None
9253        }
9254    }
9255
9256    #[allow(irrefutable_let_patterns)]
9257    pub fn into_get_ip_receive_type_of_service(
9258        self,
9259    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9260        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9261            Some((responder))
9262        } else {
9263            None
9264        }
9265    }
9266
9267    #[allow(irrefutable_let_patterns)]
9268    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9269        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9270            Some((value, responder))
9271        } else {
9272            None
9273        }
9274    }
9275
9276    #[allow(irrefutable_let_patterns)]
9277    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9278        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9279            Some((responder))
9280        } else {
9281            None
9282        }
9283    }
9284
9285    #[allow(irrefutable_let_patterns)]
9286    pub fn into_set_ip_multicast_interface(
9287        self,
9288    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9289        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9290            Some((iface, address, responder))
9291        } else {
9292            None
9293        }
9294    }
9295
9296    #[allow(irrefutable_let_patterns)]
9297    pub fn into_get_ip_multicast_interface(
9298        self,
9299    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9300        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9301            Some((responder))
9302        } else {
9303            None
9304        }
9305    }
9306
9307    #[allow(irrefutable_let_patterns)]
9308    pub fn into_set_ip_multicast_ttl(
9309        self,
9310    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9311        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9312            Some((value, responder))
9313        } else {
9314            None
9315        }
9316    }
9317
9318    #[allow(irrefutable_let_patterns)]
9319    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9320        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9321            Some((responder))
9322        } else {
9323            None
9324        }
9325    }
9326
9327    #[allow(irrefutable_let_patterns)]
9328    pub fn into_set_ip_multicast_loopback(
9329        self,
9330    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9331        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9332            Some((value, responder))
9333        } else {
9334            None
9335        }
9336    }
9337
9338    #[allow(irrefutable_let_patterns)]
9339    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9340        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9341            Some((responder))
9342        } else {
9343            None
9344        }
9345    }
9346
9347    #[allow(irrefutable_let_patterns)]
9348    pub fn into_add_ip_membership(
9349        self,
9350    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9351    {
9352        if let SocketRequest::AddIpMembership { membership, responder } = self {
9353            Some((membership, responder))
9354        } else {
9355            None
9356        }
9357    }
9358
9359    #[allow(irrefutable_let_patterns)]
9360    pub fn into_drop_ip_membership(
9361        self,
9362    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9363    {
9364        if let SocketRequest::DropIpMembership { membership, responder } = self {
9365            Some((membership, responder))
9366        } else {
9367            None
9368        }
9369    }
9370
9371    #[allow(irrefutable_let_patterns)]
9372    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9373        if let SocketRequest::SetIpTransparent { value, responder } = self {
9374            Some((value, responder))
9375        } else {
9376            None
9377        }
9378    }
9379
9380    #[allow(irrefutable_let_patterns)]
9381    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9382        if let SocketRequest::GetIpTransparent { responder } = self {
9383            Some((responder))
9384        } else {
9385            None
9386        }
9387    }
9388
9389    #[allow(irrefutable_let_patterns)]
9390    pub fn into_set_ip_receive_original_destination_address(
9391        self,
9392    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9393        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9394            Some((value, responder))
9395        } else {
9396            None
9397        }
9398    }
9399
9400    #[allow(irrefutable_let_patterns)]
9401    pub fn into_get_ip_receive_original_destination_address(
9402        self,
9403    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9404        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9405            Some((responder))
9406        } else {
9407            None
9408        }
9409    }
9410
9411    #[allow(irrefutable_let_patterns)]
9412    pub fn into_add_ipv6_membership(
9413        self,
9414    ) -> Option<(
9415        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9416        SocketAddIpv6MembershipResponder,
9417    )> {
9418        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9419            Some((membership, responder))
9420        } else {
9421            None
9422        }
9423    }
9424
9425    #[allow(irrefutable_let_patterns)]
9426    pub fn into_drop_ipv6_membership(
9427        self,
9428    ) -> Option<(
9429        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9430        SocketDropIpv6MembershipResponder,
9431    )> {
9432        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9433            Some((membership, responder))
9434        } else {
9435            None
9436        }
9437    }
9438
9439    #[allow(irrefutable_let_patterns)]
9440    pub fn into_set_ipv6_multicast_interface(
9441        self,
9442    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9443        if let SocketRequest::SetIpv6MulticastInterface { value, responder } = self {
9444            Some((value, responder))
9445        } else {
9446            None
9447        }
9448    }
9449
9450    #[allow(irrefutable_let_patterns)]
9451    pub fn into_get_ipv6_multicast_interface(
9452        self,
9453    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9454        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9455            Some((responder))
9456        } else {
9457            None
9458        }
9459    }
9460
9461    #[allow(irrefutable_let_patterns)]
9462    pub fn into_set_ipv6_unicast_hops(
9463        self,
9464    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9465        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9466            Some((value, responder))
9467        } else {
9468            None
9469        }
9470    }
9471
9472    #[allow(irrefutable_let_patterns)]
9473    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9474        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9475            Some((responder))
9476        } else {
9477            None
9478        }
9479    }
9480
9481    #[allow(irrefutable_let_patterns)]
9482    pub fn into_set_ipv6_receive_hop_limit(
9483        self,
9484    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9485        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9486            Some((value, responder))
9487        } else {
9488            None
9489        }
9490    }
9491
9492    #[allow(irrefutable_let_patterns)]
9493    pub fn into_get_ipv6_receive_hop_limit(
9494        self,
9495    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9496        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9497            Some((responder))
9498        } else {
9499            None
9500        }
9501    }
9502
9503    #[allow(irrefutable_let_patterns)]
9504    pub fn into_set_ipv6_multicast_hops(
9505        self,
9506    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9507    {
9508        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9509            Some((value, responder))
9510        } else {
9511            None
9512        }
9513    }
9514
9515    #[allow(irrefutable_let_patterns)]
9516    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9517        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9518            Some((responder))
9519        } else {
9520            None
9521        }
9522    }
9523
9524    #[allow(irrefutable_let_patterns)]
9525    pub fn into_set_ipv6_multicast_loopback(
9526        self,
9527    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9528        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9529            Some((value, responder))
9530        } else {
9531            None
9532        }
9533    }
9534
9535    #[allow(irrefutable_let_patterns)]
9536    pub fn into_get_ipv6_multicast_loopback(
9537        self,
9538    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9539        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9540            Some((responder))
9541        } else {
9542            None
9543        }
9544    }
9545
9546    #[allow(irrefutable_let_patterns)]
9547    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9548        if let SocketRequest::SetIpv6Only { value, responder } = self {
9549            Some((value, responder))
9550        } else {
9551            None
9552        }
9553    }
9554
9555    #[allow(irrefutable_let_patterns)]
9556    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9557        if let SocketRequest::GetIpv6Only { responder } = self {
9558            Some((responder))
9559        } else {
9560            None
9561        }
9562    }
9563
9564    #[allow(irrefutable_let_patterns)]
9565    pub fn into_set_ipv6_receive_traffic_class(
9566        self,
9567    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9568        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9569            Some((value, responder))
9570        } else {
9571            None
9572        }
9573    }
9574
9575    #[allow(irrefutable_let_patterns)]
9576    pub fn into_get_ipv6_receive_traffic_class(
9577        self,
9578    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9579        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9580            Some((responder))
9581        } else {
9582            None
9583        }
9584    }
9585
9586    #[allow(irrefutable_let_patterns)]
9587    pub fn into_set_ipv6_traffic_class(
9588        self,
9589    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9590    {
9591        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9592            Some((value, responder))
9593        } else {
9594            None
9595        }
9596    }
9597
9598    #[allow(irrefutable_let_patterns)]
9599    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9600        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9601            Some((responder))
9602        } else {
9603            None
9604        }
9605    }
9606
9607    #[allow(irrefutable_let_patterns)]
9608    pub fn into_set_ipv6_receive_packet_info(
9609        self,
9610    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9611        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9612            Some((value, responder))
9613        } else {
9614            None
9615        }
9616    }
9617
9618    #[allow(irrefutable_let_patterns)]
9619    pub fn into_get_ipv6_receive_packet_info(
9620        self,
9621    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9622        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9623            Some((responder))
9624        } else {
9625            None
9626        }
9627    }
9628
9629    #[allow(irrefutable_let_patterns)]
9630    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9631        if let SocketRequest::GetOriginalDestination { responder } = self {
9632            Some((responder))
9633        } else {
9634            None
9635        }
9636    }
9637
9638    #[allow(irrefutable_let_patterns)]
9639    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9640        if let SocketRequest::Describe { responder } = self {
9641            Some((responder))
9642        } else {
9643            None
9644        }
9645    }
9646
9647    #[allow(irrefutable_let_patterns)]
9648    pub fn into_recv_msg(
9649        self,
9650    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9651    {
9652        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9653        {
9654            Some((want_addr, data_len, want_control, flags, responder))
9655        } else {
9656            None
9657        }
9658    }
9659
9660    #[allow(irrefutable_let_patterns)]
9661    pub fn into_send_msg(
9662        self,
9663    ) -> Option<(
9664        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9665        Vec<u8>,
9666        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9667        fidl_fuchsia_posix_socket::SendMsgFlags,
9668        SocketSendMsgResponder,
9669    )> {
9670        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9671            Some((addr, data, control, flags, responder))
9672        } else {
9673            None
9674        }
9675    }
9676
9677    #[allow(irrefutable_let_patterns)]
9678    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9679        if let SocketRequest::GetInfo { responder } = self {
9680            Some((responder))
9681        } else {
9682            None
9683        }
9684    }
9685
9686    #[allow(irrefutable_let_patterns)]
9687    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9688        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9689            Some((value, responder))
9690        } else {
9691            None
9692        }
9693    }
9694
9695    #[allow(irrefutable_let_patterns)]
9696    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9697        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9698            Some((responder))
9699        } else {
9700            None
9701        }
9702    }
9703
9704    #[allow(irrefutable_let_patterns)]
9705    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9706        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9707            Some((filter, responder))
9708        } else {
9709            None
9710        }
9711    }
9712
9713    #[allow(irrefutable_let_patterns)]
9714    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9715        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9716            Some((responder))
9717        } else {
9718            None
9719        }
9720    }
9721
9722    #[allow(irrefutable_let_patterns)]
9723    pub fn into_set_ipv6_checksum(
9724        self,
9725    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9726        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9727            Some((config, responder))
9728        } else {
9729            None
9730        }
9731    }
9732
9733    #[allow(irrefutable_let_patterns)]
9734    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9735        if let SocketRequest::GetIpv6Checksum { responder } = self {
9736            Some((responder))
9737        } else {
9738            None
9739        }
9740    }
9741
9742    /// Name of the method defined in FIDL
9743    pub fn method_name(&self) -> &'static str {
9744        match *self {
9745            SocketRequest::Clone { .. } => "clone",
9746            SocketRequest::Close { .. } => "close",
9747            SocketRequest::Query { .. } => "query",
9748            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9749            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9750            SocketRequest::GetError { .. } => "get_error",
9751            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9752            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9753            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9754            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9755            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9756            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9757            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9758            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9759            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9760            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9761            SocketRequest::SetNoCheck { .. } => "set_no_check",
9762            SocketRequest::GetNoCheck { .. } => "get_no_check",
9763            SocketRequest::SetLinger { .. } => "set_linger",
9764            SocketRequest::GetLinger { .. } => "get_linger",
9765            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9766            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9767            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9768            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9769            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9770            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9771            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9772            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9773            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9774            SocketRequest::SetMark { .. } => "set_mark",
9775            SocketRequest::GetMark { .. } => "get_mark",
9776            SocketRequest::Bind { .. } => "bind",
9777            SocketRequest::Connect { .. } => "connect",
9778            SocketRequest::Disconnect { .. } => "disconnect",
9779            SocketRequest::GetSockName { .. } => "get_sock_name",
9780            SocketRequest::GetPeerName { .. } => "get_peer_name",
9781            SocketRequest::Shutdown { .. } => "shutdown",
9782            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9783            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9784            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9785            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9786            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9787            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9788            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9789            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9790            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9791            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9792            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9793            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9794            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9795            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9796            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9797            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9798            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9799            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9800            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9801            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9802            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9803                "set_ip_receive_original_destination_address"
9804            }
9805            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9806                "get_ip_receive_original_destination_address"
9807            }
9808            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9809            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9810            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9811            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9812            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9813            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9814            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9815            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9816            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9817            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9818            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9819            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9820            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9821            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9822            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9823            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9824            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9825            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9826            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9827            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9828            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9829            SocketRequest::Describe { .. } => "describe",
9830            SocketRequest::RecvMsg { .. } => "recv_msg",
9831            SocketRequest::SendMsg { .. } => "send_msg",
9832            SocketRequest::GetInfo { .. } => "get_info",
9833            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9834            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9835            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9836            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9837            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9838            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9839        }
9840    }
9841}
9842
9843#[derive(Debug, Clone)]
9844pub struct SocketControlHandle {
9845    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9846}
9847
9848impl fidl::endpoints::ControlHandle for SocketControlHandle {
9849    fn shutdown(&self) {
9850        self.inner.shutdown()
9851    }
9852    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9853        self.inner.shutdown_with_epitaph(status)
9854    }
9855
9856    fn is_closed(&self) -> bool {
9857        self.inner.channel().is_closed()
9858    }
9859    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9860        self.inner.channel().on_closed()
9861    }
9862
9863    #[cfg(target_os = "fuchsia")]
9864    fn signal_peer(
9865        &self,
9866        clear_mask: zx::Signals,
9867        set_mask: zx::Signals,
9868    ) -> Result<(), zx_status::Status> {
9869        use fidl::Peered;
9870        self.inner.channel().signal_peer(clear_mask, set_mask)
9871    }
9872}
9873
9874impl SocketControlHandle {}
9875
9876#[must_use = "FIDL methods require a response to be sent"]
9877#[derive(Debug)]
9878pub struct SocketCloseResponder {
9879    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9880    tx_id: u32,
9881}
9882
9883/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9884/// if the responder is dropped without sending a response, so that the client
9885/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9886impl std::ops::Drop for SocketCloseResponder {
9887    fn drop(&mut self) {
9888        self.control_handle.shutdown();
9889        // Safety: drops once, never accessed again
9890        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9891    }
9892}
9893
9894impl fidl::endpoints::Responder for SocketCloseResponder {
9895    type ControlHandle = SocketControlHandle;
9896
9897    fn control_handle(&self) -> &SocketControlHandle {
9898        &self.control_handle
9899    }
9900
9901    fn drop_without_shutdown(mut self) {
9902        // Safety: drops once, never accessed again due to mem::forget
9903        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9904        // Prevent Drop from running (which would shut down the channel)
9905        std::mem::forget(self);
9906    }
9907}
9908
9909impl SocketCloseResponder {
9910    /// Sends a response to the FIDL transaction.
9911    ///
9912    /// Sets the channel to shutdown if an error occurs.
9913    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9914        let _result = self.send_raw(result);
9915        if _result.is_err() {
9916            self.control_handle.shutdown();
9917        }
9918        self.drop_without_shutdown();
9919        _result
9920    }
9921
9922    /// Similar to "send" but does not shutdown the channel if an error occurs.
9923    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9924        let _result = self.send_raw(result);
9925        self.drop_without_shutdown();
9926        _result
9927    }
9928
9929    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9930        self.control_handle
9931            .inner
9932            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
9933                result,
9934                self.tx_id,
9935                0x5ac5d459ad7f657e,
9936                fidl::encoding::DynamicFlags::empty(),
9937            )
9938    }
9939}
9940
9941#[must_use = "FIDL methods require a response to be sent"]
9942#[derive(Debug)]
9943pub struct SocketQueryResponder {
9944    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9945    tx_id: u32,
9946}
9947
9948/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9949/// if the responder is dropped without sending a response, so that the client
9950/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9951impl std::ops::Drop for SocketQueryResponder {
9952    fn drop(&mut self) {
9953        self.control_handle.shutdown();
9954        // Safety: drops once, never accessed again
9955        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9956    }
9957}
9958
9959impl fidl::endpoints::Responder for SocketQueryResponder {
9960    type ControlHandle = SocketControlHandle;
9961
9962    fn control_handle(&self) -> &SocketControlHandle {
9963        &self.control_handle
9964    }
9965
9966    fn drop_without_shutdown(mut self) {
9967        // Safety: drops once, never accessed again due to mem::forget
9968        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9969        // Prevent Drop from running (which would shut down the channel)
9970        std::mem::forget(self);
9971    }
9972}
9973
9974impl SocketQueryResponder {
9975    /// Sends a response to the FIDL transaction.
9976    ///
9977    /// Sets the channel to shutdown if an error occurs.
9978    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9979        let _result = self.send_raw(protocol);
9980        if _result.is_err() {
9981            self.control_handle.shutdown();
9982        }
9983        self.drop_without_shutdown();
9984        _result
9985    }
9986
9987    /// Similar to "send" but does not shutdown the channel if an error occurs.
9988    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9989        let _result = self.send_raw(protocol);
9990        self.drop_without_shutdown();
9991        _result
9992    }
9993
9994    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9995        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
9996            (protocol,),
9997            self.tx_id,
9998            0x2658edee9decfc06,
9999            fidl::encoding::DynamicFlags::empty(),
10000        )
10001    }
10002}
10003
10004#[must_use = "FIDL methods require a response to be sent"]
10005#[derive(Debug)]
10006pub struct SocketSetReuseAddressResponder {
10007    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10008    tx_id: u32,
10009}
10010
10011/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10012/// if the responder is dropped without sending a response, so that the client
10013/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10014impl std::ops::Drop for SocketSetReuseAddressResponder {
10015    fn drop(&mut self) {
10016        self.control_handle.shutdown();
10017        // Safety: drops once, never accessed again
10018        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10019    }
10020}
10021
10022impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
10023    type ControlHandle = SocketControlHandle;
10024
10025    fn control_handle(&self) -> &SocketControlHandle {
10026        &self.control_handle
10027    }
10028
10029    fn drop_without_shutdown(mut self) {
10030        // Safety: drops once, never accessed again due to mem::forget
10031        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10032        // Prevent Drop from running (which would shut down the channel)
10033        std::mem::forget(self);
10034    }
10035}
10036
10037impl SocketSetReuseAddressResponder {
10038    /// Sends a response to the FIDL transaction.
10039    ///
10040    /// Sets the channel to shutdown if an error occurs.
10041    pub fn send(
10042        self,
10043        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10044    ) -> Result<(), fidl::Error> {
10045        let _result = self.send_raw(result);
10046        if _result.is_err() {
10047            self.control_handle.shutdown();
10048        }
10049        self.drop_without_shutdown();
10050        _result
10051    }
10052
10053    /// Similar to "send" but does not shutdown the channel if an error occurs.
10054    pub fn send_no_shutdown_on_err(
10055        self,
10056        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10057    ) -> Result<(), fidl::Error> {
10058        let _result = self.send_raw(result);
10059        self.drop_without_shutdown();
10060        _result
10061    }
10062
10063    fn send_raw(
10064        &self,
10065        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10066    ) -> Result<(), fidl::Error> {
10067        self.control_handle.inner.send::<fidl::encoding::ResultType<
10068            fidl::encoding::EmptyStruct,
10069            fidl_fuchsia_posix::Errno,
10070        >>(
10071            result,
10072            self.tx_id,
10073            0x1fd74ee8b9a4a876,
10074            fidl::encoding::DynamicFlags::empty(),
10075        )
10076    }
10077}
10078
10079#[must_use = "FIDL methods require a response to be sent"]
10080#[derive(Debug)]
10081pub struct SocketGetReuseAddressResponder {
10082    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10083    tx_id: u32,
10084}
10085
10086/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10087/// if the responder is dropped without sending a response, so that the client
10088/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10089impl std::ops::Drop for SocketGetReuseAddressResponder {
10090    fn drop(&mut self) {
10091        self.control_handle.shutdown();
10092        // Safety: drops once, never accessed again
10093        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10094    }
10095}
10096
10097impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
10098    type ControlHandle = SocketControlHandle;
10099
10100    fn control_handle(&self) -> &SocketControlHandle {
10101        &self.control_handle
10102    }
10103
10104    fn drop_without_shutdown(mut self) {
10105        // Safety: drops once, never accessed again due to mem::forget
10106        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10107        // Prevent Drop from running (which would shut down the channel)
10108        std::mem::forget(self);
10109    }
10110}
10111
10112impl SocketGetReuseAddressResponder {
10113    /// Sends a response to the FIDL transaction.
10114    ///
10115    /// Sets the channel to shutdown if an error occurs.
10116    pub fn send(
10117        self,
10118        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10119    ) -> Result<(), fidl::Error> {
10120        let _result = self.send_raw(result);
10121        if _result.is_err() {
10122            self.control_handle.shutdown();
10123        }
10124        self.drop_without_shutdown();
10125        _result
10126    }
10127
10128    /// Similar to "send" but does not shutdown the channel if an error occurs.
10129    pub fn send_no_shutdown_on_err(
10130        self,
10131        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10132    ) -> Result<(), fidl::Error> {
10133        let _result = self.send_raw(result);
10134        self.drop_without_shutdown();
10135        _result
10136    }
10137
10138    fn send_raw(
10139        &self,
10140        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10141    ) -> Result<(), fidl::Error> {
10142        self.control_handle.inner.send::<fidl::encoding::ResultType<
10143            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10144            fidl_fuchsia_posix::Errno,
10145        >>(
10146            result.map(|value| (value,)),
10147            self.tx_id,
10148            0x67b7206b8d1bc0a5,
10149            fidl::encoding::DynamicFlags::empty(),
10150        )
10151    }
10152}
10153
10154#[must_use = "FIDL methods require a response to be sent"]
10155#[derive(Debug)]
10156pub struct SocketGetErrorResponder {
10157    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10158    tx_id: u32,
10159}
10160
10161/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10162/// if the responder is dropped without sending a response, so that the client
10163/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10164impl std::ops::Drop for SocketGetErrorResponder {
10165    fn drop(&mut self) {
10166        self.control_handle.shutdown();
10167        // Safety: drops once, never accessed again
10168        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10169    }
10170}
10171
10172impl fidl::endpoints::Responder for SocketGetErrorResponder {
10173    type ControlHandle = SocketControlHandle;
10174
10175    fn control_handle(&self) -> &SocketControlHandle {
10176        &self.control_handle
10177    }
10178
10179    fn drop_without_shutdown(mut self) {
10180        // Safety: drops once, never accessed again due to mem::forget
10181        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10182        // Prevent Drop from running (which would shut down the channel)
10183        std::mem::forget(self);
10184    }
10185}
10186
10187impl SocketGetErrorResponder {
10188    /// Sends a response to the FIDL transaction.
10189    ///
10190    /// Sets the channel to shutdown if an error occurs.
10191    pub fn send(
10192        self,
10193        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10194    ) -> Result<(), fidl::Error> {
10195        let _result = self.send_raw(result);
10196        if _result.is_err() {
10197            self.control_handle.shutdown();
10198        }
10199        self.drop_without_shutdown();
10200        _result
10201    }
10202
10203    /// Similar to "send" but does not shutdown the channel if an error occurs.
10204    pub fn send_no_shutdown_on_err(
10205        self,
10206        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10207    ) -> Result<(), fidl::Error> {
10208        let _result = self.send_raw(result);
10209        self.drop_without_shutdown();
10210        _result
10211    }
10212
10213    fn send_raw(
10214        &self,
10215        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10216    ) -> Result<(), fidl::Error> {
10217        self.control_handle.inner.send::<fidl::encoding::ResultType<
10218            fidl::encoding::EmptyStruct,
10219            fidl_fuchsia_posix::Errno,
10220        >>(
10221            result,
10222            self.tx_id,
10223            0x5aad39b33e5f6ebb,
10224            fidl::encoding::DynamicFlags::empty(),
10225        )
10226    }
10227}
10228
10229#[must_use = "FIDL methods require a response to be sent"]
10230#[derive(Debug)]
10231pub struct SocketSetBroadcastResponder {
10232    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10233    tx_id: u32,
10234}
10235
10236/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10237/// if the responder is dropped without sending a response, so that the client
10238/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10239impl std::ops::Drop for SocketSetBroadcastResponder {
10240    fn drop(&mut self) {
10241        self.control_handle.shutdown();
10242        // Safety: drops once, never accessed again
10243        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10244    }
10245}
10246
10247impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10248    type ControlHandle = SocketControlHandle;
10249
10250    fn control_handle(&self) -> &SocketControlHandle {
10251        &self.control_handle
10252    }
10253
10254    fn drop_without_shutdown(mut self) {
10255        // Safety: drops once, never accessed again due to mem::forget
10256        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10257        // Prevent Drop from running (which would shut down the channel)
10258        std::mem::forget(self);
10259    }
10260}
10261
10262impl SocketSetBroadcastResponder {
10263    /// Sends a response to the FIDL transaction.
10264    ///
10265    /// Sets the channel to shutdown if an error occurs.
10266    pub fn send(
10267        self,
10268        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10269    ) -> Result<(), fidl::Error> {
10270        let _result = self.send_raw(result);
10271        if _result.is_err() {
10272            self.control_handle.shutdown();
10273        }
10274        self.drop_without_shutdown();
10275        _result
10276    }
10277
10278    /// Similar to "send" but does not shutdown the channel if an error occurs.
10279    pub fn send_no_shutdown_on_err(
10280        self,
10281        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10282    ) -> Result<(), fidl::Error> {
10283        let _result = self.send_raw(result);
10284        self.drop_without_shutdown();
10285        _result
10286    }
10287
10288    fn send_raw(
10289        &self,
10290        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10291    ) -> Result<(), fidl::Error> {
10292        self.control_handle.inner.send::<fidl::encoding::ResultType<
10293            fidl::encoding::EmptyStruct,
10294            fidl_fuchsia_posix::Errno,
10295        >>(
10296            result,
10297            self.tx_id,
10298            0x6023e081ce3cd947,
10299            fidl::encoding::DynamicFlags::empty(),
10300        )
10301    }
10302}
10303
10304#[must_use = "FIDL methods require a response to be sent"]
10305#[derive(Debug)]
10306pub struct SocketGetBroadcastResponder {
10307    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10308    tx_id: u32,
10309}
10310
10311/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10312/// if the responder is dropped without sending a response, so that the client
10313/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10314impl std::ops::Drop for SocketGetBroadcastResponder {
10315    fn drop(&mut self) {
10316        self.control_handle.shutdown();
10317        // Safety: drops once, never accessed again
10318        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10319    }
10320}
10321
10322impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10323    type ControlHandle = SocketControlHandle;
10324
10325    fn control_handle(&self) -> &SocketControlHandle {
10326        &self.control_handle
10327    }
10328
10329    fn drop_without_shutdown(mut self) {
10330        // Safety: drops once, never accessed again due to mem::forget
10331        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10332        // Prevent Drop from running (which would shut down the channel)
10333        std::mem::forget(self);
10334    }
10335}
10336
10337impl SocketGetBroadcastResponder {
10338    /// Sends a response to the FIDL transaction.
10339    ///
10340    /// Sets the channel to shutdown if an error occurs.
10341    pub fn send(
10342        self,
10343        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10344    ) -> Result<(), fidl::Error> {
10345        let _result = self.send_raw(result);
10346        if _result.is_err() {
10347            self.control_handle.shutdown();
10348        }
10349        self.drop_without_shutdown();
10350        _result
10351    }
10352
10353    /// Similar to "send" but does not shutdown the channel if an error occurs.
10354    pub fn send_no_shutdown_on_err(
10355        self,
10356        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10357    ) -> Result<(), fidl::Error> {
10358        let _result = self.send_raw(result);
10359        self.drop_without_shutdown();
10360        _result
10361    }
10362
10363    fn send_raw(
10364        &self,
10365        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10366    ) -> Result<(), fidl::Error> {
10367        self.control_handle.inner.send::<fidl::encoding::ResultType<
10368            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10369            fidl_fuchsia_posix::Errno,
10370        >>(
10371            result.map(|value| (value,)),
10372            self.tx_id,
10373            0x68796fc556f9780d,
10374            fidl::encoding::DynamicFlags::empty(),
10375        )
10376    }
10377}
10378
10379#[must_use = "FIDL methods require a response to be sent"]
10380#[derive(Debug)]
10381pub struct SocketSetSendBufferResponder {
10382    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10383    tx_id: u32,
10384}
10385
10386/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10387/// if the responder is dropped without sending a response, so that the client
10388/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10389impl std::ops::Drop for SocketSetSendBufferResponder {
10390    fn drop(&mut self) {
10391        self.control_handle.shutdown();
10392        // Safety: drops once, never accessed again
10393        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10394    }
10395}
10396
10397impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10398    type ControlHandle = SocketControlHandle;
10399
10400    fn control_handle(&self) -> &SocketControlHandle {
10401        &self.control_handle
10402    }
10403
10404    fn drop_without_shutdown(mut self) {
10405        // Safety: drops once, never accessed again due to mem::forget
10406        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10407        // Prevent Drop from running (which would shut down the channel)
10408        std::mem::forget(self);
10409    }
10410}
10411
10412impl SocketSetSendBufferResponder {
10413    /// Sends a response to the FIDL transaction.
10414    ///
10415    /// Sets the channel to shutdown if an error occurs.
10416    pub fn send(
10417        self,
10418        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10419    ) -> Result<(), fidl::Error> {
10420        let _result = self.send_raw(result);
10421        if _result.is_err() {
10422            self.control_handle.shutdown();
10423        }
10424        self.drop_without_shutdown();
10425        _result
10426    }
10427
10428    /// Similar to "send" but does not shutdown the channel if an error occurs.
10429    pub fn send_no_shutdown_on_err(
10430        self,
10431        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10432    ) -> Result<(), fidl::Error> {
10433        let _result = self.send_raw(result);
10434        self.drop_without_shutdown();
10435        _result
10436    }
10437
10438    fn send_raw(
10439        &self,
10440        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10441    ) -> Result<(), fidl::Error> {
10442        self.control_handle.inner.send::<fidl::encoding::ResultType<
10443            fidl::encoding::EmptyStruct,
10444            fidl_fuchsia_posix::Errno,
10445        >>(
10446            result,
10447            self.tx_id,
10448            0x756eac32d73a7a70,
10449            fidl::encoding::DynamicFlags::empty(),
10450        )
10451    }
10452}
10453
10454#[must_use = "FIDL methods require a response to be sent"]
10455#[derive(Debug)]
10456pub struct SocketGetSendBufferResponder {
10457    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10458    tx_id: u32,
10459}
10460
10461/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10462/// if the responder is dropped without sending a response, so that the client
10463/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10464impl std::ops::Drop for SocketGetSendBufferResponder {
10465    fn drop(&mut self) {
10466        self.control_handle.shutdown();
10467        // Safety: drops once, never accessed again
10468        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10469    }
10470}
10471
10472impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10473    type ControlHandle = SocketControlHandle;
10474
10475    fn control_handle(&self) -> &SocketControlHandle {
10476        &self.control_handle
10477    }
10478
10479    fn drop_without_shutdown(mut self) {
10480        // Safety: drops once, never accessed again due to mem::forget
10481        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10482        // Prevent Drop from running (which would shut down the channel)
10483        std::mem::forget(self);
10484    }
10485}
10486
10487impl SocketGetSendBufferResponder {
10488    /// Sends a response to the FIDL transaction.
10489    ///
10490    /// Sets the channel to shutdown if an error occurs.
10491    pub fn send(
10492        self,
10493        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10494    ) -> Result<(), fidl::Error> {
10495        let _result = self.send_raw(result);
10496        if _result.is_err() {
10497            self.control_handle.shutdown();
10498        }
10499        self.drop_without_shutdown();
10500        _result
10501    }
10502
10503    /// Similar to "send" but does not shutdown the channel if an error occurs.
10504    pub fn send_no_shutdown_on_err(
10505        self,
10506        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10507    ) -> Result<(), fidl::Error> {
10508        let _result = self.send_raw(result);
10509        self.drop_without_shutdown();
10510        _result
10511    }
10512
10513    fn send_raw(
10514        &self,
10515        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10516    ) -> Result<(), fidl::Error> {
10517        self.control_handle.inner.send::<fidl::encoding::ResultType<
10518            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10519            fidl_fuchsia_posix::Errno,
10520        >>(
10521            result.map(|value_bytes| (value_bytes,)),
10522            self.tx_id,
10523            0x78a52fd9c7b2410b,
10524            fidl::encoding::DynamicFlags::empty(),
10525        )
10526    }
10527}
10528
10529#[must_use = "FIDL methods require a response to be sent"]
10530#[derive(Debug)]
10531pub struct SocketSetReceiveBufferResponder {
10532    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10533    tx_id: u32,
10534}
10535
10536/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10537/// if the responder is dropped without sending a response, so that the client
10538/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10539impl std::ops::Drop for SocketSetReceiveBufferResponder {
10540    fn drop(&mut self) {
10541        self.control_handle.shutdown();
10542        // Safety: drops once, never accessed again
10543        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10544    }
10545}
10546
10547impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10548    type ControlHandle = SocketControlHandle;
10549
10550    fn control_handle(&self) -> &SocketControlHandle {
10551        &self.control_handle
10552    }
10553
10554    fn drop_without_shutdown(mut self) {
10555        // Safety: drops once, never accessed again due to mem::forget
10556        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10557        // Prevent Drop from running (which would shut down the channel)
10558        std::mem::forget(self);
10559    }
10560}
10561
10562impl SocketSetReceiveBufferResponder {
10563    /// Sends a response to the FIDL transaction.
10564    ///
10565    /// Sets the channel to shutdown if an error occurs.
10566    pub fn send(
10567        self,
10568        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10569    ) -> Result<(), fidl::Error> {
10570        let _result = self.send_raw(result);
10571        if _result.is_err() {
10572            self.control_handle.shutdown();
10573        }
10574        self.drop_without_shutdown();
10575        _result
10576    }
10577
10578    /// Similar to "send" but does not shutdown the channel if an error occurs.
10579    pub fn send_no_shutdown_on_err(
10580        self,
10581        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10582    ) -> Result<(), fidl::Error> {
10583        let _result = self.send_raw(result);
10584        self.drop_without_shutdown();
10585        _result
10586    }
10587
10588    fn send_raw(
10589        &self,
10590        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10591    ) -> Result<(), fidl::Error> {
10592        self.control_handle.inner.send::<fidl::encoding::ResultType<
10593            fidl::encoding::EmptyStruct,
10594            fidl_fuchsia_posix::Errno,
10595        >>(
10596            result,
10597            self.tx_id,
10598            0x6b0cf2f1919c7001,
10599            fidl::encoding::DynamicFlags::empty(),
10600        )
10601    }
10602}
10603
10604#[must_use = "FIDL methods require a response to be sent"]
10605#[derive(Debug)]
10606pub struct SocketGetReceiveBufferResponder {
10607    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10608    tx_id: u32,
10609}
10610
10611/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10612/// if the responder is dropped without sending a response, so that the client
10613/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10614impl std::ops::Drop for SocketGetReceiveBufferResponder {
10615    fn drop(&mut self) {
10616        self.control_handle.shutdown();
10617        // Safety: drops once, never accessed again
10618        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10619    }
10620}
10621
10622impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10623    type ControlHandle = SocketControlHandle;
10624
10625    fn control_handle(&self) -> &SocketControlHandle {
10626        &self.control_handle
10627    }
10628
10629    fn drop_without_shutdown(mut self) {
10630        // Safety: drops once, never accessed again due to mem::forget
10631        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10632        // Prevent Drop from running (which would shut down the channel)
10633        std::mem::forget(self);
10634    }
10635}
10636
10637impl SocketGetReceiveBufferResponder {
10638    /// Sends a response to the FIDL transaction.
10639    ///
10640    /// Sets the channel to shutdown if an error occurs.
10641    pub fn send(
10642        self,
10643        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10644    ) -> Result<(), fidl::Error> {
10645        let _result = self.send_raw(result);
10646        if _result.is_err() {
10647            self.control_handle.shutdown();
10648        }
10649        self.drop_without_shutdown();
10650        _result
10651    }
10652
10653    /// Similar to "send" but does not shutdown the channel if an error occurs.
10654    pub fn send_no_shutdown_on_err(
10655        self,
10656        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10657    ) -> Result<(), fidl::Error> {
10658        let _result = self.send_raw(result);
10659        self.drop_without_shutdown();
10660        _result
10661    }
10662
10663    fn send_raw(
10664        &self,
10665        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10666    ) -> Result<(), fidl::Error> {
10667        self.control_handle.inner.send::<fidl::encoding::ResultType<
10668            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10669            fidl_fuchsia_posix::Errno,
10670        >>(
10671            result.map(|value_bytes| (value_bytes,)),
10672            self.tx_id,
10673            0x14c1a4b64f709e5c,
10674            fidl::encoding::DynamicFlags::empty(),
10675        )
10676    }
10677}
10678
10679#[must_use = "FIDL methods require a response to be sent"]
10680#[derive(Debug)]
10681pub struct SocketSetKeepAliveResponder {
10682    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10683    tx_id: u32,
10684}
10685
10686/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10687/// if the responder is dropped without sending a response, so that the client
10688/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10689impl std::ops::Drop for SocketSetKeepAliveResponder {
10690    fn drop(&mut self) {
10691        self.control_handle.shutdown();
10692        // Safety: drops once, never accessed again
10693        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10694    }
10695}
10696
10697impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10698    type ControlHandle = SocketControlHandle;
10699
10700    fn control_handle(&self) -> &SocketControlHandle {
10701        &self.control_handle
10702    }
10703
10704    fn drop_without_shutdown(mut self) {
10705        // Safety: drops once, never accessed again due to mem::forget
10706        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10707        // Prevent Drop from running (which would shut down the channel)
10708        std::mem::forget(self);
10709    }
10710}
10711
10712impl SocketSetKeepAliveResponder {
10713    /// Sends a response to the FIDL transaction.
10714    ///
10715    /// Sets the channel to shutdown if an error occurs.
10716    pub fn send(
10717        self,
10718        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10719    ) -> Result<(), fidl::Error> {
10720        let _result = self.send_raw(result);
10721        if _result.is_err() {
10722            self.control_handle.shutdown();
10723        }
10724        self.drop_without_shutdown();
10725        _result
10726    }
10727
10728    /// Similar to "send" but does not shutdown the channel if an error occurs.
10729    pub fn send_no_shutdown_on_err(
10730        self,
10731        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10732    ) -> Result<(), fidl::Error> {
10733        let _result = self.send_raw(result);
10734        self.drop_without_shutdown();
10735        _result
10736    }
10737
10738    fn send_raw(
10739        &self,
10740        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10741    ) -> Result<(), fidl::Error> {
10742        self.control_handle.inner.send::<fidl::encoding::ResultType<
10743            fidl::encoding::EmptyStruct,
10744            fidl_fuchsia_posix::Errno,
10745        >>(
10746            result,
10747            self.tx_id,
10748            0x572df8f0b920d2c7,
10749            fidl::encoding::DynamicFlags::empty(),
10750        )
10751    }
10752}
10753
10754#[must_use = "FIDL methods require a response to be sent"]
10755#[derive(Debug)]
10756pub struct SocketGetKeepAliveResponder {
10757    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10758    tx_id: u32,
10759}
10760
10761/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10762/// if the responder is dropped without sending a response, so that the client
10763/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10764impl std::ops::Drop for SocketGetKeepAliveResponder {
10765    fn drop(&mut self) {
10766        self.control_handle.shutdown();
10767        // Safety: drops once, never accessed again
10768        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10769    }
10770}
10771
10772impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10773    type ControlHandle = SocketControlHandle;
10774
10775    fn control_handle(&self) -> &SocketControlHandle {
10776        &self.control_handle
10777    }
10778
10779    fn drop_without_shutdown(mut self) {
10780        // Safety: drops once, never accessed again due to mem::forget
10781        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10782        // Prevent Drop from running (which would shut down the channel)
10783        std::mem::forget(self);
10784    }
10785}
10786
10787impl SocketGetKeepAliveResponder {
10788    /// Sends a response to the FIDL transaction.
10789    ///
10790    /// Sets the channel to shutdown if an error occurs.
10791    pub fn send(
10792        self,
10793        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10794    ) -> Result<(), fidl::Error> {
10795        let _result = self.send_raw(result);
10796        if _result.is_err() {
10797            self.control_handle.shutdown();
10798        }
10799        self.drop_without_shutdown();
10800        _result
10801    }
10802
10803    /// Similar to "send" but does not shutdown the channel if an error occurs.
10804    pub fn send_no_shutdown_on_err(
10805        self,
10806        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10807    ) -> Result<(), fidl::Error> {
10808        let _result = self.send_raw(result);
10809        self.drop_without_shutdown();
10810        _result
10811    }
10812
10813    fn send_raw(
10814        &self,
10815        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10816    ) -> Result<(), fidl::Error> {
10817        self.control_handle.inner.send::<fidl::encoding::ResultType<
10818            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10819            fidl_fuchsia_posix::Errno,
10820        >>(
10821            result.map(|value| (value,)),
10822            self.tx_id,
10823            0x2dd29d3215f2c9d2,
10824            fidl::encoding::DynamicFlags::empty(),
10825        )
10826    }
10827}
10828
10829#[must_use = "FIDL methods require a response to be sent"]
10830#[derive(Debug)]
10831pub struct SocketSetOutOfBandInlineResponder {
10832    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10833    tx_id: u32,
10834}
10835
10836/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10837/// if the responder is dropped without sending a response, so that the client
10838/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10839impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10840    fn drop(&mut self) {
10841        self.control_handle.shutdown();
10842        // Safety: drops once, never accessed again
10843        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10844    }
10845}
10846
10847impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10848    type ControlHandle = SocketControlHandle;
10849
10850    fn control_handle(&self) -> &SocketControlHandle {
10851        &self.control_handle
10852    }
10853
10854    fn drop_without_shutdown(mut self) {
10855        // Safety: drops once, never accessed again due to mem::forget
10856        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10857        // Prevent Drop from running (which would shut down the channel)
10858        std::mem::forget(self);
10859    }
10860}
10861
10862impl SocketSetOutOfBandInlineResponder {
10863    /// Sends a response to the FIDL transaction.
10864    ///
10865    /// Sets the channel to shutdown if an error occurs.
10866    pub fn send(
10867        self,
10868        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10869    ) -> Result<(), fidl::Error> {
10870        let _result = self.send_raw(result);
10871        if _result.is_err() {
10872            self.control_handle.shutdown();
10873        }
10874        self.drop_without_shutdown();
10875        _result
10876    }
10877
10878    /// Similar to "send" but does not shutdown the channel if an error occurs.
10879    pub fn send_no_shutdown_on_err(
10880        self,
10881        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10882    ) -> Result<(), fidl::Error> {
10883        let _result = self.send_raw(result);
10884        self.drop_without_shutdown();
10885        _result
10886    }
10887
10888    fn send_raw(
10889        &self,
10890        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10891    ) -> Result<(), fidl::Error> {
10892        self.control_handle.inner.send::<fidl::encoding::ResultType<
10893            fidl::encoding::EmptyStruct,
10894            fidl_fuchsia_posix::Errno,
10895        >>(
10896            result,
10897            self.tx_id,
10898            0x3ecb49968bee439,
10899            fidl::encoding::DynamicFlags::empty(),
10900        )
10901    }
10902}
10903
10904#[must_use = "FIDL methods require a response to be sent"]
10905#[derive(Debug)]
10906pub struct SocketGetOutOfBandInlineResponder {
10907    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10908    tx_id: u32,
10909}
10910
10911/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10912/// if the responder is dropped without sending a response, so that the client
10913/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10914impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
10915    fn drop(&mut self) {
10916        self.control_handle.shutdown();
10917        // Safety: drops once, never accessed again
10918        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10919    }
10920}
10921
10922impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
10923    type ControlHandle = SocketControlHandle;
10924
10925    fn control_handle(&self) -> &SocketControlHandle {
10926        &self.control_handle
10927    }
10928
10929    fn drop_without_shutdown(mut self) {
10930        // Safety: drops once, never accessed again due to mem::forget
10931        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10932        // Prevent Drop from running (which would shut down the channel)
10933        std::mem::forget(self);
10934    }
10935}
10936
10937impl SocketGetOutOfBandInlineResponder {
10938    /// Sends a response to the FIDL transaction.
10939    ///
10940    /// Sets the channel to shutdown if an error occurs.
10941    pub fn send(
10942        self,
10943        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10944    ) -> Result<(), fidl::Error> {
10945        let _result = self.send_raw(result);
10946        if _result.is_err() {
10947            self.control_handle.shutdown();
10948        }
10949        self.drop_without_shutdown();
10950        _result
10951    }
10952
10953    /// Similar to "send" but does not shutdown the channel if an error occurs.
10954    pub fn send_no_shutdown_on_err(
10955        self,
10956        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10957    ) -> Result<(), fidl::Error> {
10958        let _result = self.send_raw(result);
10959        self.drop_without_shutdown();
10960        _result
10961    }
10962
10963    fn send_raw(
10964        &self,
10965        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10966    ) -> Result<(), fidl::Error> {
10967        self.control_handle.inner.send::<fidl::encoding::ResultType<
10968            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
10969            fidl_fuchsia_posix::Errno,
10970        >>(
10971            result.map(|value| (value,)),
10972            self.tx_id,
10973            0x348c1ab3aeca1745,
10974            fidl::encoding::DynamicFlags::empty(),
10975        )
10976    }
10977}
10978
10979#[must_use = "FIDL methods require a response to be sent"]
10980#[derive(Debug)]
10981pub struct SocketSetNoCheckResponder {
10982    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10983    tx_id: u32,
10984}
10985
10986/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10987/// if the responder is dropped without sending a response, so that the client
10988/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10989impl std::ops::Drop for SocketSetNoCheckResponder {
10990    fn drop(&mut self) {
10991        self.control_handle.shutdown();
10992        // Safety: drops once, never accessed again
10993        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10994    }
10995}
10996
10997impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
10998    type ControlHandle = SocketControlHandle;
10999
11000    fn control_handle(&self) -> &SocketControlHandle {
11001        &self.control_handle
11002    }
11003
11004    fn drop_without_shutdown(mut self) {
11005        // Safety: drops once, never accessed again due to mem::forget
11006        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11007        // Prevent Drop from running (which would shut down the channel)
11008        std::mem::forget(self);
11009    }
11010}
11011
11012impl SocketSetNoCheckResponder {
11013    /// Sends a response to the FIDL transaction.
11014    ///
11015    /// Sets the channel to shutdown if an error occurs.
11016    pub fn send(
11017        self,
11018        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11019    ) -> Result<(), fidl::Error> {
11020        let _result = self.send_raw(result);
11021        if _result.is_err() {
11022            self.control_handle.shutdown();
11023        }
11024        self.drop_without_shutdown();
11025        _result
11026    }
11027
11028    /// Similar to "send" but does not shutdown the channel if an error occurs.
11029    pub fn send_no_shutdown_on_err(
11030        self,
11031        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11032    ) -> Result<(), fidl::Error> {
11033        let _result = self.send_raw(result);
11034        self.drop_without_shutdown();
11035        _result
11036    }
11037
11038    fn send_raw(
11039        &self,
11040        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11041    ) -> Result<(), fidl::Error> {
11042        self.control_handle.inner.send::<fidl::encoding::ResultType<
11043            fidl::encoding::EmptyStruct,
11044            fidl_fuchsia_posix::Errno,
11045        >>(
11046            result,
11047            self.tx_id,
11048            0x6bbf00c53a4c78c2,
11049            fidl::encoding::DynamicFlags::empty(),
11050        )
11051    }
11052}
11053
11054#[must_use = "FIDL methods require a response to be sent"]
11055#[derive(Debug)]
11056pub struct SocketGetNoCheckResponder {
11057    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11058    tx_id: u32,
11059}
11060
11061/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11062/// if the responder is dropped without sending a response, so that the client
11063/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11064impl std::ops::Drop for SocketGetNoCheckResponder {
11065    fn drop(&mut self) {
11066        self.control_handle.shutdown();
11067        // Safety: drops once, never accessed again
11068        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11069    }
11070}
11071
11072impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
11073    type ControlHandle = SocketControlHandle;
11074
11075    fn control_handle(&self) -> &SocketControlHandle {
11076        &self.control_handle
11077    }
11078
11079    fn drop_without_shutdown(mut self) {
11080        // Safety: drops once, never accessed again due to mem::forget
11081        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11082        // Prevent Drop from running (which would shut down the channel)
11083        std::mem::forget(self);
11084    }
11085}
11086
11087impl SocketGetNoCheckResponder {
11088    /// Sends a response to the FIDL transaction.
11089    ///
11090    /// Sets the channel to shutdown if an error occurs.
11091    pub fn send(
11092        self,
11093        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11094    ) -> Result<(), fidl::Error> {
11095        let _result = self.send_raw(result);
11096        if _result.is_err() {
11097            self.control_handle.shutdown();
11098        }
11099        self.drop_without_shutdown();
11100        _result
11101    }
11102
11103    /// Similar to "send" but does not shutdown the channel if an error occurs.
11104    pub fn send_no_shutdown_on_err(
11105        self,
11106        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11107    ) -> Result<(), fidl::Error> {
11108        let _result = self.send_raw(result);
11109        self.drop_without_shutdown();
11110        _result
11111    }
11112
11113    fn send_raw(
11114        &self,
11115        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11116    ) -> Result<(), fidl::Error> {
11117        self.control_handle.inner.send::<fidl::encoding::ResultType<
11118            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
11119            fidl_fuchsia_posix::Errno,
11120        >>(
11121            result.map(|value| (value,)),
11122            self.tx_id,
11123            0x2cd4249286417694,
11124            fidl::encoding::DynamicFlags::empty(),
11125        )
11126    }
11127}
11128
11129#[must_use = "FIDL methods require a response to be sent"]
11130#[derive(Debug)]
11131pub struct SocketSetLingerResponder {
11132    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11133    tx_id: u32,
11134}
11135
11136/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11137/// if the responder is dropped without sending a response, so that the client
11138/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11139impl std::ops::Drop for SocketSetLingerResponder {
11140    fn drop(&mut self) {
11141        self.control_handle.shutdown();
11142        // Safety: drops once, never accessed again
11143        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11144    }
11145}
11146
11147impl fidl::endpoints::Responder for SocketSetLingerResponder {
11148    type ControlHandle = SocketControlHandle;
11149
11150    fn control_handle(&self) -> &SocketControlHandle {
11151        &self.control_handle
11152    }
11153
11154    fn drop_without_shutdown(mut self) {
11155        // Safety: drops once, never accessed again due to mem::forget
11156        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11157        // Prevent Drop from running (which would shut down the channel)
11158        std::mem::forget(self);
11159    }
11160}
11161
11162impl SocketSetLingerResponder {
11163    /// Sends a response to the FIDL transaction.
11164    ///
11165    /// Sets the channel to shutdown if an error occurs.
11166    pub fn send(
11167        self,
11168        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11169    ) -> Result<(), fidl::Error> {
11170        let _result = self.send_raw(result);
11171        if _result.is_err() {
11172            self.control_handle.shutdown();
11173        }
11174        self.drop_without_shutdown();
11175        _result
11176    }
11177
11178    /// Similar to "send" but does not shutdown the channel if an error occurs.
11179    pub fn send_no_shutdown_on_err(
11180        self,
11181        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11182    ) -> Result<(), fidl::Error> {
11183        let _result = self.send_raw(result);
11184        self.drop_without_shutdown();
11185        _result
11186    }
11187
11188    fn send_raw(
11189        &self,
11190        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11191    ) -> Result<(), fidl::Error> {
11192        self.control_handle.inner.send::<fidl::encoding::ResultType<
11193            fidl::encoding::EmptyStruct,
11194            fidl_fuchsia_posix::Errno,
11195        >>(
11196            result,
11197            self.tx_id,
11198            0x45386351246e998e,
11199            fidl::encoding::DynamicFlags::empty(),
11200        )
11201    }
11202}
11203
11204#[must_use = "FIDL methods require a response to be sent"]
11205#[derive(Debug)]
11206pub struct SocketGetLingerResponder {
11207    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11208    tx_id: u32,
11209}
11210
11211/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11212/// if the responder is dropped without sending a response, so that the client
11213/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11214impl std::ops::Drop for SocketGetLingerResponder {
11215    fn drop(&mut self) {
11216        self.control_handle.shutdown();
11217        // Safety: drops once, never accessed again
11218        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11219    }
11220}
11221
11222impl fidl::endpoints::Responder for SocketGetLingerResponder {
11223    type ControlHandle = SocketControlHandle;
11224
11225    fn control_handle(&self) -> &SocketControlHandle {
11226        &self.control_handle
11227    }
11228
11229    fn drop_without_shutdown(mut self) {
11230        // Safety: drops once, never accessed again due to mem::forget
11231        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11232        // Prevent Drop from running (which would shut down the channel)
11233        std::mem::forget(self);
11234    }
11235}
11236
11237impl SocketGetLingerResponder {
11238    /// Sends a response to the FIDL transaction.
11239    ///
11240    /// Sets the channel to shutdown if an error occurs.
11241    pub fn send(
11242        self,
11243        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11244    ) -> Result<(), fidl::Error> {
11245        let _result = self.send_raw(result);
11246        if _result.is_err() {
11247            self.control_handle.shutdown();
11248        }
11249        self.drop_without_shutdown();
11250        _result
11251    }
11252
11253    /// Similar to "send" but does not shutdown the channel if an error occurs.
11254    pub fn send_no_shutdown_on_err(
11255        self,
11256        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11257    ) -> Result<(), fidl::Error> {
11258        let _result = self.send_raw(result);
11259        self.drop_without_shutdown();
11260        _result
11261    }
11262
11263    fn send_raw(
11264        &self,
11265        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11266    ) -> Result<(), fidl::Error> {
11267        self.control_handle.inner.send::<fidl::encoding::ResultType<
11268            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11269            fidl_fuchsia_posix::Errno,
11270        >>(
11271            result,
11272            self.tx_id,
11273            0x48eb20fc5ccb0e45,
11274            fidl::encoding::DynamicFlags::empty(),
11275        )
11276    }
11277}
11278
11279#[must_use = "FIDL methods require a response to be sent"]
11280#[derive(Debug)]
11281pub struct SocketSetReusePortResponder {
11282    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11283    tx_id: u32,
11284}
11285
11286/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11287/// if the responder is dropped without sending a response, so that the client
11288/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11289impl std::ops::Drop for SocketSetReusePortResponder {
11290    fn drop(&mut self) {
11291        self.control_handle.shutdown();
11292        // Safety: drops once, never accessed again
11293        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11294    }
11295}
11296
11297impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11298    type ControlHandle = SocketControlHandle;
11299
11300    fn control_handle(&self) -> &SocketControlHandle {
11301        &self.control_handle
11302    }
11303
11304    fn drop_without_shutdown(mut self) {
11305        // Safety: drops once, never accessed again due to mem::forget
11306        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11307        // Prevent Drop from running (which would shut down the channel)
11308        std::mem::forget(self);
11309    }
11310}
11311
11312impl SocketSetReusePortResponder {
11313    /// Sends a response to the FIDL transaction.
11314    ///
11315    /// Sets the channel to shutdown if an error occurs.
11316    pub fn send(
11317        self,
11318        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11319    ) -> Result<(), fidl::Error> {
11320        let _result = self.send_raw(result);
11321        if _result.is_err() {
11322            self.control_handle.shutdown();
11323        }
11324        self.drop_without_shutdown();
11325        _result
11326    }
11327
11328    /// Similar to "send" but does not shutdown the channel if an error occurs.
11329    pub fn send_no_shutdown_on_err(
11330        self,
11331        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11332    ) -> Result<(), fidl::Error> {
11333        let _result = self.send_raw(result);
11334        self.drop_without_shutdown();
11335        _result
11336    }
11337
11338    fn send_raw(
11339        &self,
11340        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11341    ) -> Result<(), fidl::Error> {
11342        self.control_handle.inner.send::<fidl::encoding::ResultType<
11343            fidl::encoding::EmptyStruct,
11344            fidl_fuchsia_posix::Errno,
11345        >>(
11346            result,
11347            self.tx_id,
11348            0x24dd3e5cb36d9ccb,
11349            fidl::encoding::DynamicFlags::empty(),
11350        )
11351    }
11352}
11353
11354#[must_use = "FIDL methods require a response to be sent"]
11355#[derive(Debug)]
11356pub struct SocketGetReusePortResponder {
11357    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11358    tx_id: u32,
11359}
11360
11361/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11362/// if the responder is dropped without sending a response, so that the client
11363/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11364impl std::ops::Drop for SocketGetReusePortResponder {
11365    fn drop(&mut self) {
11366        self.control_handle.shutdown();
11367        // Safety: drops once, never accessed again
11368        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11369    }
11370}
11371
11372impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11373    type ControlHandle = SocketControlHandle;
11374
11375    fn control_handle(&self) -> &SocketControlHandle {
11376        &self.control_handle
11377    }
11378
11379    fn drop_without_shutdown(mut self) {
11380        // Safety: drops once, never accessed again due to mem::forget
11381        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11382        // Prevent Drop from running (which would shut down the channel)
11383        std::mem::forget(self);
11384    }
11385}
11386
11387impl SocketGetReusePortResponder {
11388    /// Sends a response to the FIDL transaction.
11389    ///
11390    /// Sets the channel to shutdown if an error occurs.
11391    pub fn send(
11392        self,
11393        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11394    ) -> Result<(), fidl::Error> {
11395        let _result = self.send_raw(result);
11396        if _result.is_err() {
11397            self.control_handle.shutdown();
11398        }
11399        self.drop_without_shutdown();
11400        _result
11401    }
11402
11403    /// Similar to "send" but does not shutdown the channel if an error occurs.
11404    pub fn send_no_shutdown_on_err(
11405        self,
11406        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11407    ) -> Result<(), fidl::Error> {
11408        let _result = self.send_raw(result);
11409        self.drop_without_shutdown();
11410        _result
11411    }
11412
11413    fn send_raw(
11414        &self,
11415        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11416    ) -> Result<(), fidl::Error> {
11417        self.control_handle.inner.send::<fidl::encoding::ResultType<
11418            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11419            fidl_fuchsia_posix::Errno,
11420        >>(
11421            result.map(|value| (value,)),
11422            self.tx_id,
11423            0x7a112c1ab54ff828,
11424            fidl::encoding::DynamicFlags::empty(),
11425        )
11426    }
11427}
11428
11429#[must_use = "FIDL methods require a response to be sent"]
11430#[derive(Debug)]
11431pub struct SocketGetAcceptConnResponder {
11432    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11433    tx_id: u32,
11434}
11435
11436/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11437/// if the responder is dropped without sending a response, so that the client
11438/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11439impl std::ops::Drop for SocketGetAcceptConnResponder {
11440    fn drop(&mut self) {
11441        self.control_handle.shutdown();
11442        // Safety: drops once, never accessed again
11443        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11444    }
11445}
11446
11447impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11448    type ControlHandle = SocketControlHandle;
11449
11450    fn control_handle(&self) -> &SocketControlHandle {
11451        &self.control_handle
11452    }
11453
11454    fn drop_without_shutdown(mut self) {
11455        // Safety: drops once, never accessed again due to mem::forget
11456        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11457        // Prevent Drop from running (which would shut down the channel)
11458        std::mem::forget(self);
11459    }
11460}
11461
11462impl SocketGetAcceptConnResponder {
11463    /// Sends a response to the FIDL transaction.
11464    ///
11465    /// Sets the channel to shutdown if an error occurs.
11466    pub fn send(
11467        self,
11468        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11469    ) -> Result<(), fidl::Error> {
11470        let _result = self.send_raw(result);
11471        if _result.is_err() {
11472            self.control_handle.shutdown();
11473        }
11474        self.drop_without_shutdown();
11475        _result
11476    }
11477
11478    /// Similar to "send" but does not shutdown the channel if an error occurs.
11479    pub fn send_no_shutdown_on_err(
11480        self,
11481        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11482    ) -> Result<(), fidl::Error> {
11483        let _result = self.send_raw(result);
11484        self.drop_without_shutdown();
11485        _result
11486    }
11487
11488    fn send_raw(
11489        &self,
11490        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11491    ) -> Result<(), fidl::Error> {
11492        self.control_handle.inner.send::<fidl::encoding::ResultType<
11493            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11494            fidl_fuchsia_posix::Errno,
11495        >>(
11496            result.map(|value| (value,)),
11497            self.tx_id,
11498            0x67ce6db6c2ec8966,
11499            fidl::encoding::DynamicFlags::empty(),
11500        )
11501    }
11502}
11503
11504#[must_use = "FIDL methods require a response to be sent"]
11505#[derive(Debug)]
11506pub struct SocketSetBindToDeviceResponder {
11507    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11508    tx_id: u32,
11509}
11510
11511/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11512/// if the responder is dropped without sending a response, so that the client
11513/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11514impl std::ops::Drop for SocketSetBindToDeviceResponder {
11515    fn drop(&mut self) {
11516        self.control_handle.shutdown();
11517        // Safety: drops once, never accessed again
11518        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11519    }
11520}
11521
11522impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11523    type ControlHandle = SocketControlHandle;
11524
11525    fn control_handle(&self) -> &SocketControlHandle {
11526        &self.control_handle
11527    }
11528
11529    fn drop_without_shutdown(mut self) {
11530        // Safety: drops once, never accessed again due to mem::forget
11531        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11532        // Prevent Drop from running (which would shut down the channel)
11533        std::mem::forget(self);
11534    }
11535}
11536
11537impl SocketSetBindToDeviceResponder {
11538    /// Sends a response to the FIDL transaction.
11539    ///
11540    /// Sets the channel to shutdown if an error occurs.
11541    pub fn send(
11542        self,
11543        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11544    ) -> Result<(), fidl::Error> {
11545        let _result = self.send_raw(result);
11546        if _result.is_err() {
11547            self.control_handle.shutdown();
11548        }
11549        self.drop_without_shutdown();
11550        _result
11551    }
11552
11553    /// Similar to "send" but does not shutdown the channel if an error occurs.
11554    pub fn send_no_shutdown_on_err(
11555        self,
11556        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11557    ) -> Result<(), fidl::Error> {
11558        let _result = self.send_raw(result);
11559        self.drop_without_shutdown();
11560        _result
11561    }
11562
11563    fn send_raw(
11564        &self,
11565        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11566    ) -> Result<(), fidl::Error> {
11567        self.control_handle.inner.send::<fidl::encoding::ResultType<
11568            fidl::encoding::EmptyStruct,
11569            fidl_fuchsia_posix::Errno,
11570        >>(
11571            result,
11572            self.tx_id,
11573            0x2118b483f28aafc4,
11574            fidl::encoding::DynamicFlags::empty(),
11575        )
11576    }
11577}
11578
11579#[must_use = "FIDL methods require a response to be sent"]
11580#[derive(Debug)]
11581pub struct SocketGetBindToDeviceResponder {
11582    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11583    tx_id: u32,
11584}
11585
11586/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11587/// if the responder is dropped without sending a response, so that the client
11588/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11589impl std::ops::Drop for SocketGetBindToDeviceResponder {
11590    fn drop(&mut self) {
11591        self.control_handle.shutdown();
11592        // Safety: drops once, never accessed again
11593        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11594    }
11595}
11596
11597impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11598    type ControlHandle = SocketControlHandle;
11599
11600    fn control_handle(&self) -> &SocketControlHandle {
11601        &self.control_handle
11602    }
11603
11604    fn drop_without_shutdown(mut self) {
11605        // Safety: drops once, never accessed again due to mem::forget
11606        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11607        // Prevent Drop from running (which would shut down the channel)
11608        std::mem::forget(self);
11609    }
11610}
11611
11612impl SocketGetBindToDeviceResponder {
11613    /// Sends a response to the FIDL transaction.
11614    ///
11615    /// Sets the channel to shutdown if an error occurs.
11616    pub fn send(
11617        self,
11618        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11619    ) -> Result<(), fidl::Error> {
11620        let _result = self.send_raw(result);
11621        if _result.is_err() {
11622            self.control_handle.shutdown();
11623        }
11624        self.drop_without_shutdown();
11625        _result
11626    }
11627
11628    /// Similar to "send" but does not shutdown the channel if an error occurs.
11629    pub fn send_no_shutdown_on_err(
11630        self,
11631        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11632    ) -> Result<(), fidl::Error> {
11633        let _result = self.send_raw(result);
11634        self.drop_without_shutdown();
11635        _result
11636    }
11637
11638    fn send_raw(
11639        &self,
11640        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11641    ) -> Result<(), fidl::Error> {
11642        self.control_handle.inner.send::<fidl::encoding::ResultType<
11643            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11644            fidl_fuchsia_posix::Errno,
11645        >>(
11646            result.map(|value| (value,)),
11647            self.tx_id,
11648            0x1ab1fbf0ef7906c8,
11649            fidl::encoding::DynamicFlags::empty(),
11650        )
11651    }
11652}
11653
11654#[must_use = "FIDL methods require a response to be sent"]
11655#[derive(Debug)]
11656pub struct SocketSetBindToInterfaceIndexResponder {
11657    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11658    tx_id: u32,
11659}
11660
11661/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11662/// if the responder is dropped without sending a response, so that the client
11663/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11664impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11665    fn drop(&mut self) {
11666        self.control_handle.shutdown();
11667        // Safety: drops once, never accessed again
11668        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11669    }
11670}
11671
11672impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11673    type ControlHandle = SocketControlHandle;
11674
11675    fn control_handle(&self) -> &SocketControlHandle {
11676        &self.control_handle
11677    }
11678
11679    fn drop_without_shutdown(mut self) {
11680        // Safety: drops once, never accessed again due to mem::forget
11681        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11682        // Prevent Drop from running (which would shut down the channel)
11683        std::mem::forget(self);
11684    }
11685}
11686
11687impl SocketSetBindToInterfaceIndexResponder {
11688    /// Sends a response to the FIDL transaction.
11689    ///
11690    /// Sets the channel to shutdown if an error occurs.
11691    pub fn send(
11692        self,
11693        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11694    ) -> Result<(), fidl::Error> {
11695        let _result = self.send_raw(result);
11696        if _result.is_err() {
11697            self.control_handle.shutdown();
11698        }
11699        self.drop_without_shutdown();
11700        _result
11701    }
11702
11703    /// Similar to "send" but does not shutdown the channel if an error occurs.
11704    pub fn send_no_shutdown_on_err(
11705        self,
11706        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11707    ) -> Result<(), fidl::Error> {
11708        let _result = self.send_raw(result);
11709        self.drop_without_shutdown();
11710        _result
11711    }
11712
11713    fn send_raw(
11714        &self,
11715        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11716    ) -> Result<(), fidl::Error> {
11717        self.control_handle.inner.send::<fidl::encoding::ResultType<
11718            fidl::encoding::EmptyStruct,
11719            fidl_fuchsia_posix::Errno,
11720        >>(
11721            result,
11722            self.tx_id,
11723            0x6e387a0def00821,
11724            fidl::encoding::DynamicFlags::empty(),
11725        )
11726    }
11727}
11728
11729#[must_use = "FIDL methods require a response to be sent"]
11730#[derive(Debug)]
11731pub struct SocketGetBindToInterfaceIndexResponder {
11732    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11733    tx_id: u32,
11734}
11735
11736/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11737/// if the responder is dropped without sending a response, so that the client
11738/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11739impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11740    fn drop(&mut self) {
11741        self.control_handle.shutdown();
11742        // Safety: drops once, never accessed again
11743        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11744    }
11745}
11746
11747impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11748    type ControlHandle = SocketControlHandle;
11749
11750    fn control_handle(&self) -> &SocketControlHandle {
11751        &self.control_handle
11752    }
11753
11754    fn drop_without_shutdown(mut self) {
11755        // Safety: drops once, never accessed again due to mem::forget
11756        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11757        // Prevent Drop from running (which would shut down the channel)
11758        std::mem::forget(self);
11759    }
11760}
11761
11762impl SocketGetBindToInterfaceIndexResponder {
11763    /// Sends a response to the FIDL transaction.
11764    ///
11765    /// Sets the channel to shutdown if an error occurs.
11766    pub fn send(
11767        self,
11768        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11769    ) -> Result<(), fidl::Error> {
11770        let _result = self.send_raw(result);
11771        if _result.is_err() {
11772            self.control_handle.shutdown();
11773        }
11774        self.drop_without_shutdown();
11775        _result
11776    }
11777
11778    /// Similar to "send" but does not shutdown the channel if an error occurs.
11779    pub fn send_no_shutdown_on_err(
11780        self,
11781        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11782    ) -> Result<(), fidl::Error> {
11783        let _result = self.send_raw(result);
11784        self.drop_without_shutdown();
11785        _result
11786    }
11787
11788    fn send_raw(
11789        &self,
11790        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11791    ) -> Result<(), fidl::Error> {
11792        self.control_handle.inner.send::<fidl::encoding::ResultType<
11793            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11794            fidl_fuchsia_posix::Errno,
11795        >>(
11796            result.map(|value| (value,)),
11797            self.tx_id,
11798            0x59c31dd3e3078295,
11799            fidl::encoding::DynamicFlags::empty(),
11800        )
11801    }
11802}
11803
11804#[must_use = "FIDL methods require a response to be sent"]
11805#[derive(Debug)]
11806pub struct SocketSetTimestampResponder {
11807    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11808    tx_id: u32,
11809}
11810
11811/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11812/// if the responder is dropped without sending a response, so that the client
11813/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11814impl std::ops::Drop for SocketSetTimestampResponder {
11815    fn drop(&mut self) {
11816        self.control_handle.shutdown();
11817        // Safety: drops once, never accessed again
11818        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11819    }
11820}
11821
11822impl fidl::endpoints::Responder for SocketSetTimestampResponder {
11823    type ControlHandle = SocketControlHandle;
11824
11825    fn control_handle(&self) -> &SocketControlHandle {
11826        &self.control_handle
11827    }
11828
11829    fn drop_without_shutdown(mut self) {
11830        // Safety: drops once, never accessed again due to mem::forget
11831        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11832        // Prevent Drop from running (which would shut down the channel)
11833        std::mem::forget(self);
11834    }
11835}
11836
11837impl SocketSetTimestampResponder {
11838    /// Sends a response to the FIDL transaction.
11839    ///
11840    /// Sets the channel to shutdown if an error occurs.
11841    pub fn send(
11842        self,
11843        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11844    ) -> Result<(), fidl::Error> {
11845        let _result = self.send_raw(result);
11846        if _result.is_err() {
11847            self.control_handle.shutdown();
11848        }
11849        self.drop_without_shutdown();
11850        _result
11851    }
11852
11853    /// Similar to "send" but does not shutdown the channel if an error occurs.
11854    pub fn send_no_shutdown_on_err(
11855        self,
11856        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11857    ) -> Result<(), fidl::Error> {
11858        let _result = self.send_raw(result);
11859        self.drop_without_shutdown();
11860        _result
11861    }
11862
11863    fn send_raw(
11864        &self,
11865        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11866    ) -> Result<(), fidl::Error> {
11867        self.control_handle.inner.send::<fidl::encoding::ResultType<
11868            fidl::encoding::EmptyStruct,
11869            fidl_fuchsia_posix::Errno,
11870        >>(
11871            result,
11872            self.tx_id,
11873            0x285d6516c263d839,
11874            fidl::encoding::DynamicFlags::empty(),
11875        )
11876    }
11877}
11878
11879#[must_use = "FIDL methods require a response to be sent"]
11880#[derive(Debug)]
11881pub struct SocketGetTimestampResponder {
11882    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11883    tx_id: u32,
11884}
11885
11886/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11887/// if the responder is dropped without sending a response, so that the client
11888/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11889impl std::ops::Drop for SocketGetTimestampResponder {
11890    fn drop(&mut self) {
11891        self.control_handle.shutdown();
11892        // Safety: drops once, never accessed again
11893        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11894    }
11895}
11896
11897impl fidl::endpoints::Responder for SocketGetTimestampResponder {
11898    type ControlHandle = SocketControlHandle;
11899
11900    fn control_handle(&self) -> &SocketControlHandle {
11901        &self.control_handle
11902    }
11903
11904    fn drop_without_shutdown(mut self) {
11905        // Safety: drops once, never accessed again due to mem::forget
11906        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11907        // Prevent Drop from running (which would shut down the channel)
11908        std::mem::forget(self);
11909    }
11910}
11911
11912impl SocketGetTimestampResponder {
11913    /// Sends a response to the FIDL transaction.
11914    ///
11915    /// Sets the channel to shutdown if an error occurs.
11916    pub fn send(
11917        self,
11918        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11919    ) -> Result<(), fidl::Error> {
11920        let _result = self.send_raw(result);
11921        if _result.is_err() {
11922            self.control_handle.shutdown();
11923        }
11924        self.drop_without_shutdown();
11925        _result
11926    }
11927
11928    /// Similar to "send" but does not shutdown the channel if an error occurs.
11929    pub fn send_no_shutdown_on_err(
11930        self,
11931        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11932    ) -> Result<(), fidl::Error> {
11933        let _result = self.send_raw(result);
11934        self.drop_without_shutdown();
11935        _result
11936    }
11937
11938    fn send_raw(
11939        &self,
11940        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11941    ) -> Result<(), fidl::Error> {
11942        self.control_handle.inner.send::<fidl::encoding::ResultType<
11943            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
11944            fidl_fuchsia_posix::Errno,
11945        >>(
11946            result.map(|value| (value,)),
11947            self.tx_id,
11948            0x49f2fffbbcc2bd27,
11949            fidl::encoding::DynamicFlags::empty(),
11950        )
11951    }
11952}
11953
11954#[must_use = "FIDL methods require a response to be sent"]
11955#[derive(Debug)]
11956pub struct SocketSetMarkResponder {
11957    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11958    tx_id: u32,
11959}
11960
11961/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11962/// if the responder is dropped without sending a response, so that the client
11963/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11964impl std::ops::Drop for SocketSetMarkResponder {
11965    fn drop(&mut self) {
11966        self.control_handle.shutdown();
11967        // Safety: drops once, never accessed again
11968        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11969    }
11970}
11971
11972impl fidl::endpoints::Responder for SocketSetMarkResponder {
11973    type ControlHandle = SocketControlHandle;
11974
11975    fn control_handle(&self) -> &SocketControlHandle {
11976        &self.control_handle
11977    }
11978
11979    fn drop_without_shutdown(mut self) {
11980        // Safety: drops once, never accessed again due to mem::forget
11981        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11982        // Prevent Drop from running (which would shut down the channel)
11983        std::mem::forget(self);
11984    }
11985}
11986
11987impl SocketSetMarkResponder {
11988    /// Sends a response to the FIDL transaction.
11989    ///
11990    /// Sets the channel to shutdown if an error occurs.
11991    pub fn send(
11992        self,
11993        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11994    ) -> Result<(), fidl::Error> {
11995        let _result = self.send_raw(result);
11996        if _result.is_err() {
11997            self.control_handle.shutdown();
11998        }
11999        self.drop_without_shutdown();
12000        _result
12001    }
12002
12003    /// Similar to "send" but does not shutdown the channel if an error occurs.
12004    pub fn send_no_shutdown_on_err(
12005        self,
12006        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12007    ) -> Result<(), fidl::Error> {
12008        let _result = self.send_raw(result);
12009        self.drop_without_shutdown();
12010        _result
12011    }
12012
12013    fn send_raw(
12014        &self,
12015        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12016    ) -> Result<(), fidl::Error> {
12017        self.control_handle.inner.send::<fidl::encoding::ResultType<
12018            fidl::encoding::EmptyStruct,
12019            fidl_fuchsia_posix::Errno,
12020        >>(
12021            result,
12022            self.tx_id,
12023            0x6ead6de09f653236,
12024            fidl::encoding::DynamicFlags::empty(),
12025        )
12026    }
12027}
12028
12029#[must_use = "FIDL methods require a response to be sent"]
12030#[derive(Debug)]
12031pub struct SocketGetMarkResponder {
12032    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12033    tx_id: u32,
12034}
12035
12036/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12037/// if the responder is dropped without sending a response, so that the client
12038/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12039impl std::ops::Drop for SocketGetMarkResponder {
12040    fn drop(&mut self) {
12041        self.control_handle.shutdown();
12042        // Safety: drops once, never accessed again
12043        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12044    }
12045}
12046
12047impl fidl::endpoints::Responder for SocketGetMarkResponder {
12048    type ControlHandle = SocketControlHandle;
12049
12050    fn control_handle(&self) -> &SocketControlHandle {
12051        &self.control_handle
12052    }
12053
12054    fn drop_without_shutdown(mut self) {
12055        // Safety: drops once, never accessed again due to mem::forget
12056        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12057        // Prevent Drop from running (which would shut down the channel)
12058        std::mem::forget(self);
12059    }
12060}
12061
12062impl SocketGetMarkResponder {
12063    /// Sends a response to the FIDL transaction.
12064    ///
12065    /// Sets the channel to shutdown if an error occurs.
12066    pub fn send(
12067        self,
12068        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12069    ) -> Result<(), fidl::Error> {
12070        let _result = self.send_raw(result);
12071        if _result.is_err() {
12072            self.control_handle.shutdown();
12073        }
12074        self.drop_without_shutdown();
12075        _result
12076    }
12077
12078    /// Similar to "send" but does not shutdown the channel if an error occurs.
12079    pub fn send_no_shutdown_on_err(
12080        self,
12081        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12082    ) -> Result<(), fidl::Error> {
12083        let _result = self.send_raw(result);
12084        self.drop_without_shutdown();
12085        _result
12086    }
12087
12088    fn send_raw(
12089        &self,
12090        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12091    ) -> Result<(), fidl::Error> {
12092        self.control_handle.inner.send::<fidl::encoding::ResultType<
12093            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
12094            fidl_fuchsia_posix::Errno,
12095        >>(
12096            result.map(|mark| (mark,)),
12097            self.tx_id,
12098            0x57a2752c61d93d47,
12099            fidl::encoding::DynamicFlags::empty(),
12100        )
12101    }
12102}
12103
12104#[must_use = "FIDL methods require a response to be sent"]
12105#[derive(Debug)]
12106pub struct SocketBindResponder {
12107    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12108    tx_id: u32,
12109}
12110
12111/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12112/// if the responder is dropped without sending a response, so that the client
12113/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12114impl std::ops::Drop for SocketBindResponder {
12115    fn drop(&mut self) {
12116        self.control_handle.shutdown();
12117        // Safety: drops once, never accessed again
12118        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12119    }
12120}
12121
12122impl fidl::endpoints::Responder for SocketBindResponder {
12123    type ControlHandle = SocketControlHandle;
12124
12125    fn control_handle(&self) -> &SocketControlHandle {
12126        &self.control_handle
12127    }
12128
12129    fn drop_without_shutdown(mut self) {
12130        // Safety: drops once, never accessed again due to mem::forget
12131        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12132        // Prevent Drop from running (which would shut down the channel)
12133        std::mem::forget(self);
12134    }
12135}
12136
12137impl SocketBindResponder {
12138    /// Sends a response to the FIDL transaction.
12139    ///
12140    /// Sets the channel to shutdown if an error occurs.
12141    pub fn send(
12142        self,
12143        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12144    ) -> Result<(), fidl::Error> {
12145        let _result = self.send_raw(result);
12146        if _result.is_err() {
12147            self.control_handle.shutdown();
12148        }
12149        self.drop_without_shutdown();
12150        _result
12151    }
12152
12153    /// Similar to "send" but does not shutdown the channel if an error occurs.
12154    pub fn send_no_shutdown_on_err(
12155        self,
12156        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12157    ) -> Result<(), fidl::Error> {
12158        let _result = self.send_raw(result);
12159        self.drop_without_shutdown();
12160        _result
12161    }
12162
12163    fn send_raw(
12164        &self,
12165        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12166    ) -> Result<(), fidl::Error> {
12167        self.control_handle.inner.send::<fidl::encoding::ResultType<
12168            fidl::encoding::EmptyStruct,
12169            fidl_fuchsia_posix::Errno,
12170        >>(
12171            result,
12172            self.tx_id,
12173            0x4bc6400ae92125d,
12174            fidl::encoding::DynamicFlags::empty(),
12175        )
12176    }
12177}
12178
12179#[must_use = "FIDL methods require a response to be sent"]
12180#[derive(Debug)]
12181pub struct SocketConnectResponder {
12182    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12183    tx_id: u32,
12184}
12185
12186/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12187/// if the responder is dropped without sending a response, so that the client
12188/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12189impl std::ops::Drop for SocketConnectResponder {
12190    fn drop(&mut self) {
12191        self.control_handle.shutdown();
12192        // Safety: drops once, never accessed again
12193        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12194    }
12195}
12196
12197impl fidl::endpoints::Responder for SocketConnectResponder {
12198    type ControlHandle = SocketControlHandle;
12199
12200    fn control_handle(&self) -> &SocketControlHandle {
12201        &self.control_handle
12202    }
12203
12204    fn drop_without_shutdown(mut self) {
12205        // Safety: drops once, never accessed again due to mem::forget
12206        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12207        // Prevent Drop from running (which would shut down the channel)
12208        std::mem::forget(self);
12209    }
12210}
12211
12212impl SocketConnectResponder {
12213    /// Sends a response to the FIDL transaction.
12214    ///
12215    /// Sets the channel to shutdown if an error occurs.
12216    pub fn send(
12217        self,
12218        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12219    ) -> Result<(), fidl::Error> {
12220        let _result = self.send_raw(result);
12221        if _result.is_err() {
12222            self.control_handle.shutdown();
12223        }
12224        self.drop_without_shutdown();
12225        _result
12226    }
12227
12228    /// Similar to "send" but does not shutdown the channel if an error occurs.
12229    pub fn send_no_shutdown_on_err(
12230        self,
12231        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12232    ) -> Result<(), fidl::Error> {
12233        let _result = self.send_raw(result);
12234        self.drop_without_shutdown();
12235        _result
12236    }
12237
12238    fn send_raw(
12239        &self,
12240        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12241    ) -> Result<(), fidl::Error> {
12242        self.control_handle.inner.send::<fidl::encoding::ResultType<
12243            fidl::encoding::EmptyStruct,
12244            fidl_fuchsia_posix::Errno,
12245        >>(
12246            result,
12247            self.tx_id,
12248            0x5f05f19bfdd38871,
12249            fidl::encoding::DynamicFlags::empty(),
12250        )
12251    }
12252}
12253
12254#[must_use = "FIDL methods require a response to be sent"]
12255#[derive(Debug)]
12256pub struct SocketDisconnectResponder {
12257    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12258    tx_id: u32,
12259}
12260
12261/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12262/// if the responder is dropped without sending a response, so that the client
12263/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12264impl std::ops::Drop for SocketDisconnectResponder {
12265    fn drop(&mut self) {
12266        self.control_handle.shutdown();
12267        // Safety: drops once, never accessed again
12268        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12269    }
12270}
12271
12272impl fidl::endpoints::Responder for SocketDisconnectResponder {
12273    type ControlHandle = SocketControlHandle;
12274
12275    fn control_handle(&self) -> &SocketControlHandle {
12276        &self.control_handle
12277    }
12278
12279    fn drop_without_shutdown(mut self) {
12280        // Safety: drops once, never accessed again due to mem::forget
12281        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12282        // Prevent Drop from running (which would shut down the channel)
12283        std::mem::forget(self);
12284    }
12285}
12286
12287impl SocketDisconnectResponder {
12288    /// Sends a response to the FIDL transaction.
12289    ///
12290    /// Sets the channel to shutdown if an error occurs.
12291    pub fn send(
12292        self,
12293        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12294    ) -> Result<(), fidl::Error> {
12295        let _result = self.send_raw(result);
12296        if _result.is_err() {
12297            self.control_handle.shutdown();
12298        }
12299        self.drop_without_shutdown();
12300        _result
12301    }
12302
12303    /// Similar to "send" but does not shutdown the channel if an error occurs.
12304    pub fn send_no_shutdown_on_err(
12305        self,
12306        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12307    ) -> Result<(), fidl::Error> {
12308        let _result = self.send_raw(result);
12309        self.drop_without_shutdown();
12310        _result
12311    }
12312
12313    fn send_raw(
12314        &self,
12315        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12316    ) -> Result<(), fidl::Error> {
12317        self.control_handle.inner.send::<fidl::encoding::ResultType<
12318            fidl::encoding::EmptyStruct,
12319            fidl_fuchsia_posix::Errno,
12320        >>(
12321            result,
12322            self.tx_id,
12323            0x74e63b91f7b29b2,
12324            fidl::encoding::DynamicFlags::empty(),
12325        )
12326    }
12327}
12328
12329#[must_use = "FIDL methods require a response to be sent"]
12330#[derive(Debug)]
12331pub struct SocketGetSockNameResponder {
12332    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12333    tx_id: u32,
12334}
12335
12336/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12337/// if the responder is dropped without sending a response, so that the client
12338/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12339impl std::ops::Drop for SocketGetSockNameResponder {
12340    fn drop(&mut self) {
12341        self.control_handle.shutdown();
12342        // Safety: drops once, never accessed again
12343        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12344    }
12345}
12346
12347impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12348    type ControlHandle = SocketControlHandle;
12349
12350    fn control_handle(&self) -> &SocketControlHandle {
12351        &self.control_handle
12352    }
12353
12354    fn drop_without_shutdown(mut self) {
12355        // Safety: drops once, never accessed again due to mem::forget
12356        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12357        // Prevent Drop from running (which would shut down the channel)
12358        std::mem::forget(self);
12359    }
12360}
12361
12362impl SocketGetSockNameResponder {
12363    /// Sends a response to the FIDL transaction.
12364    ///
12365    /// Sets the channel to shutdown if an error occurs.
12366    pub fn send(
12367        self,
12368        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12369    ) -> Result<(), fidl::Error> {
12370        let _result = self.send_raw(result);
12371        if _result.is_err() {
12372            self.control_handle.shutdown();
12373        }
12374        self.drop_without_shutdown();
12375        _result
12376    }
12377
12378    /// Similar to "send" but does not shutdown the channel if an error occurs.
12379    pub fn send_no_shutdown_on_err(
12380        self,
12381        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12382    ) -> Result<(), fidl::Error> {
12383        let _result = self.send_raw(result);
12384        self.drop_without_shutdown();
12385        _result
12386    }
12387
12388    fn send_raw(
12389        &self,
12390        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12391    ) -> Result<(), fidl::Error> {
12392        self.control_handle.inner.send::<fidl::encoding::ResultType<
12393            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12394            fidl_fuchsia_posix::Errno,
12395        >>(
12396            result.map(|addr| (addr,)),
12397            self.tx_id,
12398            0x475f23f84a1a4f85,
12399            fidl::encoding::DynamicFlags::empty(),
12400        )
12401    }
12402}
12403
12404#[must_use = "FIDL methods require a response to be sent"]
12405#[derive(Debug)]
12406pub struct SocketGetPeerNameResponder {
12407    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12408    tx_id: u32,
12409}
12410
12411/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12412/// if the responder is dropped without sending a response, so that the client
12413/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12414impl std::ops::Drop for SocketGetPeerNameResponder {
12415    fn drop(&mut self) {
12416        self.control_handle.shutdown();
12417        // Safety: drops once, never accessed again
12418        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12419    }
12420}
12421
12422impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12423    type ControlHandle = SocketControlHandle;
12424
12425    fn control_handle(&self) -> &SocketControlHandle {
12426        &self.control_handle
12427    }
12428
12429    fn drop_without_shutdown(mut self) {
12430        // Safety: drops once, never accessed again due to mem::forget
12431        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12432        // Prevent Drop from running (which would shut down the channel)
12433        std::mem::forget(self);
12434    }
12435}
12436
12437impl SocketGetPeerNameResponder {
12438    /// Sends a response to the FIDL transaction.
12439    ///
12440    /// Sets the channel to shutdown if an error occurs.
12441    pub fn send(
12442        self,
12443        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12444    ) -> Result<(), fidl::Error> {
12445        let _result = self.send_raw(result);
12446        if _result.is_err() {
12447            self.control_handle.shutdown();
12448        }
12449        self.drop_without_shutdown();
12450        _result
12451    }
12452
12453    /// Similar to "send" but does not shutdown the channel if an error occurs.
12454    pub fn send_no_shutdown_on_err(
12455        self,
12456        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12457    ) -> Result<(), fidl::Error> {
12458        let _result = self.send_raw(result);
12459        self.drop_without_shutdown();
12460        _result
12461    }
12462
12463    fn send_raw(
12464        &self,
12465        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12466    ) -> Result<(), fidl::Error> {
12467        self.control_handle.inner.send::<fidl::encoding::ResultType<
12468            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12469            fidl_fuchsia_posix::Errno,
12470        >>(
12471            result.map(|addr| (addr,)),
12472            self.tx_id,
12473            0x1ffecf4bd5b6432e,
12474            fidl::encoding::DynamicFlags::empty(),
12475        )
12476    }
12477}
12478
12479#[must_use = "FIDL methods require a response to be sent"]
12480#[derive(Debug)]
12481pub struct SocketShutdownResponder {
12482    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12483    tx_id: u32,
12484}
12485
12486/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12487/// if the responder is dropped without sending a response, so that the client
12488/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12489impl std::ops::Drop for SocketShutdownResponder {
12490    fn drop(&mut self) {
12491        self.control_handle.shutdown();
12492        // Safety: drops once, never accessed again
12493        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12494    }
12495}
12496
12497impl fidl::endpoints::Responder for SocketShutdownResponder {
12498    type ControlHandle = SocketControlHandle;
12499
12500    fn control_handle(&self) -> &SocketControlHandle {
12501        &self.control_handle
12502    }
12503
12504    fn drop_without_shutdown(mut self) {
12505        // Safety: drops once, never accessed again due to mem::forget
12506        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12507        // Prevent Drop from running (which would shut down the channel)
12508        std::mem::forget(self);
12509    }
12510}
12511
12512impl SocketShutdownResponder {
12513    /// Sends a response to the FIDL transaction.
12514    ///
12515    /// Sets the channel to shutdown if an error occurs.
12516    pub fn send(
12517        self,
12518        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12519    ) -> Result<(), fidl::Error> {
12520        let _result = self.send_raw(result);
12521        if _result.is_err() {
12522            self.control_handle.shutdown();
12523        }
12524        self.drop_without_shutdown();
12525        _result
12526    }
12527
12528    /// Similar to "send" but does not shutdown the channel if an error occurs.
12529    pub fn send_no_shutdown_on_err(
12530        self,
12531        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12532    ) -> Result<(), fidl::Error> {
12533        let _result = self.send_raw(result);
12534        self.drop_without_shutdown();
12535        _result
12536    }
12537
12538    fn send_raw(
12539        &self,
12540        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12541    ) -> Result<(), fidl::Error> {
12542        self.control_handle.inner.send::<fidl::encoding::ResultType<
12543            fidl::encoding::EmptyStruct,
12544            fidl_fuchsia_posix::Errno,
12545        >>(
12546            result,
12547            self.tx_id,
12548            0x247f38b6db68c336,
12549            fidl::encoding::DynamicFlags::empty(),
12550        )
12551    }
12552}
12553
12554#[must_use = "FIDL methods require a response to be sent"]
12555#[derive(Debug)]
12556pub struct SocketSetIpTypeOfServiceResponder {
12557    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12558    tx_id: u32,
12559}
12560
12561/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12562/// if the responder is dropped without sending a response, so that the client
12563/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12564impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12565    fn drop(&mut self) {
12566        self.control_handle.shutdown();
12567        // Safety: drops once, never accessed again
12568        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12569    }
12570}
12571
12572impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12573    type ControlHandle = SocketControlHandle;
12574
12575    fn control_handle(&self) -> &SocketControlHandle {
12576        &self.control_handle
12577    }
12578
12579    fn drop_without_shutdown(mut self) {
12580        // Safety: drops once, never accessed again due to mem::forget
12581        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12582        // Prevent Drop from running (which would shut down the channel)
12583        std::mem::forget(self);
12584    }
12585}
12586
12587impl SocketSetIpTypeOfServiceResponder {
12588    /// Sends a response to the FIDL transaction.
12589    ///
12590    /// Sets the channel to shutdown if an error occurs.
12591    pub fn send(
12592        self,
12593        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12594    ) -> Result<(), fidl::Error> {
12595        let _result = self.send_raw(result);
12596        if _result.is_err() {
12597            self.control_handle.shutdown();
12598        }
12599        self.drop_without_shutdown();
12600        _result
12601    }
12602
12603    /// Similar to "send" but does not shutdown the channel if an error occurs.
12604    pub fn send_no_shutdown_on_err(
12605        self,
12606        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12607    ) -> Result<(), fidl::Error> {
12608        let _result = self.send_raw(result);
12609        self.drop_without_shutdown();
12610        _result
12611    }
12612
12613    fn send_raw(
12614        &self,
12615        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12616    ) -> Result<(), fidl::Error> {
12617        self.control_handle.inner.send::<fidl::encoding::ResultType<
12618            fidl::encoding::EmptyStruct,
12619            fidl_fuchsia_posix::Errno,
12620        >>(
12621            result,
12622            self.tx_id,
12623            0x995c600475b6d46,
12624            fidl::encoding::DynamicFlags::empty(),
12625        )
12626    }
12627}
12628
12629#[must_use = "FIDL methods require a response to be sent"]
12630#[derive(Debug)]
12631pub struct SocketGetIpTypeOfServiceResponder {
12632    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12633    tx_id: u32,
12634}
12635
12636/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12637/// if the responder is dropped without sending a response, so that the client
12638/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12639impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12640    fn drop(&mut self) {
12641        self.control_handle.shutdown();
12642        // Safety: drops once, never accessed again
12643        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12644    }
12645}
12646
12647impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12648    type ControlHandle = SocketControlHandle;
12649
12650    fn control_handle(&self) -> &SocketControlHandle {
12651        &self.control_handle
12652    }
12653
12654    fn drop_without_shutdown(mut self) {
12655        // Safety: drops once, never accessed again due to mem::forget
12656        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12657        // Prevent Drop from running (which would shut down the channel)
12658        std::mem::forget(self);
12659    }
12660}
12661
12662impl SocketGetIpTypeOfServiceResponder {
12663    /// Sends a response to the FIDL transaction.
12664    ///
12665    /// Sets the channel to shutdown if an error occurs.
12666    pub fn send(
12667        self,
12668        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12669    ) -> Result<(), fidl::Error> {
12670        let _result = self.send_raw(result);
12671        if _result.is_err() {
12672            self.control_handle.shutdown();
12673        }
12674        self.drop_without_shutdown();
12675        _result
12676    }
12677
12678    /// Similar to "send" but does not shutdown the channel if an error occurs.
12679    pub fn send_no_shutdown_on_err(
12680        self,
12681        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12682    ) -> Result<(), fidl::Error> {
12683        let _result = self.send_raw(result);
12684        self.drop_without_shutdown();
12685        _result
12686    }
12687
12688    fn send_raw(
12689        &self,
12690        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12691    ) -> Result<(), fidl::Error> {
12692        self.control_handle.inner.send::<fidl::encoding::ResultType<
12693            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12694            fidl_fuchsia_posix::Errno,
12695        >>(
12696            result.map(|value| (value,)),
12697            self.tx_id,
12698            0x3814a04259f75fcb,
12699            fidl::encoding::DynamicFlags::empty(),
12700        )
12701    }
12702}
12703
12704#[must_use = "FIDL methods require a response to be sent"]
12705#[derive(Debug)]
12706pub struct SocketSetIpTtlResponder {
12707    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12708    tx_id: u32,
12709}
12710
12711/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12712/// if the responder is dropped without sending a response, so that the client
12713/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12714impl std::ops::Drop for SocketSetIpTtlResponder {
12715    fn drop(&mut self) {
12716        self.control_handle.shutdown();
12717        // Safety: drops once, never accessed again
12718        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12719    }
12720}
12721
12722impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12723    type ControlHandle = SocketControlHandle;
12724
12725    fn control_handle(&self) -> &SocketControlHandle {
12726        &self.control_handle
12727    }
12728
12729    fn drop_without_shutdown(mut self) {
12730        // Safety: drops once, never accessed again due to mem::forget
12731        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12732        // Prevent Drop from running (which would shut down the channel)
12733        std::mem::forget(self);
12734    }
12735}
12736
12737impl SocketSetIpTtlResponder {
12738    /// Sends a response to the FIDL transaction.
12739    ///
12740    /// Sets the channel to shutdown if an error occurs.
12741    pub fn send(
12742        self,
12743        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12744    ) -> Result<(), fidl::Error> {
12745        let _result = self.send_raw(result);
12746        if _result.is_err() {
12747            self.control_handle.shutdown();
12748        }
12749        self.drop_without_shutdown();
12750        _result
12751    }
12752
12753    /// Similar to "send" but does not shutdown the channel if an error occurs.
12754    pub fn send_no_shutdown_on_err(
12755        self,
12756        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12757    ) -> Result<(), fidl::Error> {
12758        let _result = self.send_raw(result);
12759        self.drop_without_shutdown();
12760        _result
12761    }
12762
12763    fn send_raw(
12764        &self,
12765        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12766    ) -> Result<(), fidl::Error> {
12767        self.control_handle.inner.send::<fidl::encoding::ResultType<
12768            fidl::encoding::EmptyStruct,
12769            fidl_fuchsia_posix::Errno,
12770        >>(
12771            result,
12772            self.tx_id,
12773            0x29e2424b433ae1ef,
12774            fidl::encoding::DynamicFlags::empty(),
12775        )
12776    }
12777}
12778
12779#[must_use = "FIDL methods require a response to be sent"]
12780#[derive(Debug)]
12781pub struct SocketGetIpTtlResponder {
12782    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12783    tx_id: u32,
12784}
12785
12786/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12787/// if the responder is dropped without sending a response, so that the client
12788/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12789impl std::ops::Drop for SocketGetIpTtlResponder {
12790    fn drop(&mut self) {
12791        self.control_handle.shutdown();
12792        // Safety: drops once, never accessed again
12793        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12794    }
12795}
12796
12797impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
12798    type ControlHandle = SocketControlHandle;
12799
12800    fn control_handle(&self) -> &SocketControlHandle {
12801        &self.control_handle
12802    }
12803
12804    fn drop_without_shutdown(mut self) {
12805        // Safety: drops once, never accessed again due to mem::forget
12806        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12807        // Prevent Drop from running (which would shut down the channel)
12808        std::mem::forget(self);
12809    }
12810}
12811
12812impl SocketGetIpTtlResponder {
12813    /// Sends a response to the FIDL transaction.
12814    ///
12815    /// Sets the channel to shutdown if an error occurs.
12816    pub fn send(
12817        self,
12818        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12819    ) -> Result<(), fidl::Error> {
12820        let _result = self.send_raw(result);
12821        if _result.is_err() {
12822            self.control_handle.shutdown();
12823        }
12824        self.drop_without_shutdown();
12825        _result
12826    }
12827
12828    /// Similar to "send" but does not shutdown the channel if an error occurs.
12829    pub fn send_no_shutdown_on_err(
12830        self,
12831        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12832    ) -> Result<(), fidl::Error> {
12833        let _result = self.send_raw(result);
12834        self.drop_without_shutdown();
12835        _result
12836    }
12837
12838    fn send_raw(
12839        &self,
12840        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12841    ) -> Result<(), fidl::Error> {
12842        self.control_handle.inner.send::<fidl::encoding::ResultType<
12843            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
12844            fidl_fuchsia_posix::Errno,
12845        >>(
12846            result.map(|value| (value,)),
12847            self.tx_id,
12848            0x47e47fa1f24da471,
12849            fidl::encoding::DynamicFlags::empty(),
12850        )
12851    }
12852}
12853
12854#[must_use = "FIDL methods require a response to be sent"]
12855#[derive(Debug)]
12856pub struct SocketSetIpPacketInfoResponder {
12857    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12858    tx_id: u32,
12859}
12860
12861/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12862/// if the responder is dropped without sending a response, so that the client
12863/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12864impl std::ops::Drop for SocketSetIpPacketInfoResponder {
12865    fn drop(&mut self) {
12866        self.control_handle.shutdown();
12867        // Safety: drops once, never accessed again
12868        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12869    }
12870}
12871
12872impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
12873    type ControlHandle = SocketControlHandle;
12874
12875    fn control_handle(&self) -> &SocketControlHandle {
12876        &self.control_handle
12877    }
12878
12879    fn drop_without_shutdown(mut self) {
12880        // Safety: drops once, never accessed again due to mem::forget
12881        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12882        // Prevent Drop from running (which would shut down the channel)
12883        std::mem::forget(self);
12884    }
12885}
12886
12887impl SocketSetIpPacketInfoResponder {
12888    /// Sends a response to the FIDL transaction.
12889    ///
12890    /// Sets the channel to shutdown if an error occurs.
12891    pub fn send(
12892        self,
12893        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12894    ) -> Result<(), fidl::Error> {
12895        let _result = self.send_raw(result);
12896        if _result.is_err() {
12897            self.control_handle.shutdown();
12898        }
12899        self.drop_without_shutdown();
12900        _result
12901    }
12902
12903    /// Similar to "send" but does not shutdown the channel if an error occurs.
12904    pub fn send_no_shutdown_on_err(
12905        self,
12906        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12907    ) -> Result<(), fidl::Error> {
12908        let _result = self.send_raw(result);
12909        self.drop_without_shutdown();
12910        _result
12911    }
12912
12913    fn send_raw(
12914        &self,
12915        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12916    ) -> Result<(), fidl::Error> {
12917        self.control_handle.inner.send::<fidl::encoding::ResultType<
12918            fidl::encoding::EmptyStruct,
12919            fidl_fuchsia_posix::Errno,
12920        >>(
12921            result,
12922            self.tx_id,
12923            0x392d16bee20c0e16,
12924            fidl::encoding::DynamicFlags::empty(),
12925        )
12926    }
12927}
12928
12929#[must_use = "FIDL methods require a response to be sent"]
12930#[derive(Debug)]
12931pub struct SocketGetIpPacketInfoResponder {
12932    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12933    tx_id: u32,
12934}
12935
12936/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12937/// if the responder is dropped without sending a response, so that the client
12938/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12939impl std::ops::Drop for SocketGetIpPacketInfoResponder {
12940    fn drop(&mut self) {
12941        self.control_handle.shutdown();
12942        // Safety: drops once, never accessed again
12943        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12944    }
12945}
12946
12947impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
12948    type ControlHandle = SocketControlHandle;
12949
12950    fn control_handle(&self) -> &SocketControlHandle {
12951        &self.control_handle
12952    }
12953
12954    fn drop_without_shutdown(mut self) {
12955        // Safety: drops once, never accessed again due to mem::forget
12956        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12957        // Prevent Drop from running (which would shut down the channel)
12958        std::mem::forget(self);
12959    }
12960}
12961
12962impl SocketGetIpPacketInfoResponder {
12963    /// Sends a response to the FIDL transaction.
12964    ///
12965    /// Sets the channel to shutdown if an error occurs.
12966    pub fn send(
12967        self,
12968        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
12969    ) -> Result<(), fidl::Error> {
12970        let _result = self.send_raw(result);
12971        if _result.is_err() {
12972            self.control_handle.shutdown();
12973        }
12974        self.drop_without_shutdown();
12975        _result
12976    }
12977
12978    /// Similar to "send" but does not shutdown the channel if an error occurs.
12979    pub fn send_no_shutdown_on_err(
12980        self,
12981        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
12982    ) -> Result<(), fidl::Error> {
12983        let _result = self.send_raw(result);
12984        self.drop_without_shutdown();
12985        _result
12986    }
12987
12988    fn send_raw(
12989        &self,
12990        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
12991    ) -> Result<(), fidl::Error> {
12992        self.control_handle.inner.send::<fidl::encoding::ResultType<
12993            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
12994            fidl_fuchsia_posix::Errno,
12995        >>(
12996            result.map(|value| (value,)),
12997            self.tx_id,
12998            0x54b505f242280740,
12999            fidl::encoding::DynamicFlags::empty(),
13000        )
13001    }
13002}
13003
13004#[must_use = "FIDL methods require a response to be sent"]
13005#[derive(Debug)]
13006pub struct SocketSetIpReceiveTypeOfServiceResponder {
13007    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13008    tx_id: u32,
13009}
13010
13011/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13012/// if the responder is dropped without sending a response, so that the client
13013/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13014impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
13015    fn drop(&mut self) {
13016        self.control_handle.shutdown();
13017        // Safety: drops once, never accessed again
13018        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13019    }
13020}
13021
13022impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
13023    type ControlHandle = SocketControlHandle;
13024
13025    fn control_handle(&self) -> &SocketControlHandle {
13026        &self.control_handle
13027    }
13028
13029    fn drop_without_shutdown(mut self) {
13030        // Safety: drops once, never accessed again due to mem::forget
13031        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13032        // Prevent Drop from running (which would shut down the channel)
13033        std::mem::forget(self);
13034    }
13035}
13036
13037impl SocketSetIpReceiveTypeOfServiceResponder {
13038    /// Sends a response to the FIDL transaction.
13039    ///
13040    /// Sets the channel to shutdown if an error occurs.
13041    pub fn send(
13042        self,
13043        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13044    ) -> Result<(), fidl::Error> {
13045        let _result = self.send_raw(result);
13046        if _result.is_err() {
13047            self.control_handle.shutdown();
13048        }
13049        self.drop_without_shutdown();
13050        _result
13051    }
13052
13053    /// Similar to "send" but does not shutdown the channel if an error occurs.
13054    pub fn send_no_shutdown_on_err(
13055        self,
13056        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13057    ) -> Result<(), fidl::Error> {
13058        let _result = self.send_raw(result);
13059        self.drop_without_shutdown();
13060        _result
13061    }
13062
13063    fn send_raw(
13064        &self,
13065        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13066    ) -> Result<(), fidl::Error> {
13067        self.control_handle.inner.send::<fidl::encoding::ResultType<
13068            fidl::encoding::EmptyStruct,
13069            fidl_fuchsia_posix::Errno,
13070        >>(
13071            result,
13072            self.tx_id,
13073            0x6c4f6714995f84ef,
13074            fidl::encoding::DynamicFlags::empty(),
13075        )
13076    }
13077}
13078
13079#[must_use = "FIDL methods require a response to be sent"]
13080#[derive(Debug)]
13081pub struct SocketGetIpReceiveTypeOfServiceResponder {
13082    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13083    tx_id: u32,
13084}
13085
13086/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13087/// if the responder is dropped without sending a response, so that the client
13088/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13089impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13090    fn drop(&mut self) {
13091        self.control_handle.shutdown();
13092        // Safety: drops once, never accessed again
13093        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13094    }
13095}
13096
13097impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13098    type ControlHandle = SocketControlHandle;
13099
13100    fn control_handle(&self) -> &SocketControlHandle {
13101        &self.control_handle
13102    }
13103
13104    fn drop_without_shutdown(mut self) {
13105        // Safety: drops once, never accessed again due to mem::forget
13106        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13107        // Prevent Drop from running (which would shut down the channel)
13108        std::mem::forget(self);
13109    }
13110}
13111
13112impl SocketGetIpReceiveTypeOfServiceResponder {
13113    /// Sends a response to the FIDL transaction.
13114    ///
13115    /// Sets the channel to shutdown if an error occurs.
13116    pub fn send(
13117        self,
13118        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13119    ) -> Result<(), fidl::Error> {
13120        let _result = self.send_raw(result);
13121        if _result.is_err() {
13122            self.control_handle.shutdown();
13123        }
13124        self.drop_without_shutdown();
13125        _result
13126    }
13127
13128    /// Similar to "send" but does not shutdown the channel if an error occurs.
13129    pub fn send_no_shutdown_on_err(
13130        self,
13131        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13132    ) -> Result<(), fidl::Error> {
13133        let _result = self.send_raw(result);
13134        self.drop_without_shutdown();
13135        _result
13136    }
13137
13138    fn send_raw(
13139        &self,
13140        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13141    ) -> Result<(), fidl::Error> {
13142        self.control_handle.inner.send::<fidl::encoding::ResultType<
13143            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13144            fidl_fuchsia_posix::Errno,
13145        >>(
13146            result.map(|value| (value,)),
13147            self.tx_id,
13148            0x4158ba7dc2795960,
13149            fidl::encoding::DynamicFlags::empty(),
13150        )
13151    }
13152}
13153
13154#[must_use = "FIDL methods require a response to be sent"]
13155#[derive(Debug)]
13156pub struct SocketSetIpReceiveTtlResponder {
13157    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13158    tx_id: u32,
13159}
13160
13161/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13162/// if the responder is dropped without sending a response, so that the client
13163/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13164impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13165    fn drop(&mut self) {
13166        self.control_handle.shutdown();
13167        // Safety: drops once, never accessed again
13168        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13169    }
13170}
13171
13172impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13173    type ControlHandle = SocketControlHandle;
13174
13175    fn control_handle(&self) -> &SocketControlHandle {
13176        &self.control_handle
13177    }
13178
13179    fn drop_without_shutdown(mut self) {
13180        // Safety: drops once, never accessed again due to mem::forget
13181        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13182        // Prevent Drop from running (which would shut down the channel)
13183        std::mem::forget(self);
13184    }
13185}
13186
13187impl SocketSetIpReceiveTtlResponder {
13188    /// Sends a response to the FIDL transaction.
13189    ///
13190    /// Sets the channel to shutdown if an error occurs.
13191    pub fn send(
13192        self,
13193        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13194    ) -> Result<(), fidl::Error> {
13195        let _result = self.send_raw(result);
13196        if _result.is_err() {
13197            self.control_handle.shutdown();
13198        }
13199        self.drop_without_shutdown();
13200        _result
13201    }
13202
13203    /// Similar to "send" but does not shutdown the channel if an error occurs.
13204    pub fn send_no_shutdown_on_err(
13205        self,
13206        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13207    ) -> Result<(), fidl::Error> {
13208        let _result = self.send_raw(result);
13209        self.drop_without_shutdown();
13210        _result
13211    }
13212
13213    fn send_raw(
13214        &self,
13215        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13216    ) -> Result<(), fidl::Error> {
13217        self.control_handle.inner.send::<fidl::encoding::ResultType<
13218            fidl::encoding::EmptyStruct,
13219            fidl_fuchsia_posix::Errno,
13220        >>(
13221            result,
13222            self.tx_id,
13223            0x46f15be0ce0ab82b,
13224            fidl::encoding::DynamicFlags::empty(),
13225        )
13226    }
13227}
13228
13229#[must_use = "FIDL methods require a response to be sent"]
13230#[derive(Debug)]
13231pub struct SocketGetIpReceiveTtlResponder {
13232    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13233    tx_id: u32,
13234}
13235
13236/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13237/// if the responder is dropped without sending a response, so that the client
13238/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13239impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13240    fn drop(&mut self) {
13241        self.control_handle.shutdown();
13242        // Safety: drops once, never accessed again
13243        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13244    }
13245}
13246
13247impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13248    type ControlHandle = SocketControlHandle;
13249
13250    fn control_handle(&self) -> &SocketControlHandle {
13251        &self.control_handle
13252    }
13253
13254    fn drop_without_shutdown(mut self) {
13255        // Safety: drops once, never accessed again due to mem::forget
13256        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13257        // Prevent Drop from running (which would shut down the channel)
13258        std::mem::forget(self);
13259    }
13260}
13261
13262impl SocketGetIpReceiveTtlResponder {
13263    /// Sends a response to the FIDL transaction.
13264    ///
13265    /// Sets the channel to shutdown if an error occurs.
13266    pub fn send(
13267        self,
13268        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13269    ) -> Result<(), fidl::Error> {
13270        let _result = self.send_raw(result);
13271        if _result.is_err() {
13272            self.control_handle.shutdown();
13273        }
13274        self.drop_without_shutdown();
13275        _result
13276    }
13277
13278    /// Similar to "send" but does not shutdown the channel if an error occurs.
13279    pub fn send_no_shutdown_on_err(
13280        self,
13281        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13282    ) -> Result<(), fidl::Error> {
13283        let _result = self.send_raw(result);
13284        self.drop_without_shutdown();
13285        _result
13286    }
13287
13288    fn send_raw(
13289        &self,
13290        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13291    ) -> Result<(), fidl::Error> {
13292        self.control_handle.inner.send::<fidl::encoding::ResultType<
13293            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13294            fidl_fuchsia_posix::Errno,
13295        >>(
13296            result.map(|value| (value,)),
13297            self.tx_id,
13298            0x678ddd5a5dfa2eb5,
13299            fidl::encoding::DynamicFlags::empty(),
13300        )
13301    }
13302}
13303
13304#[must_use = "FIDL methods require a response to be sent"]
13305#[derive(Debug)]
13306pub struct SocketSetIpMulticastInterfaceResponder {
13307    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13308    tx_id: u32,
13309}
13310
13311/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13312/// if the responder is dropped without sending a response, so that the client
13313/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13314impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13315    fn drop(&mut self) {
13316        self.control_handle.shutdown();
13317        // Safety: drops once, never accessed again
13318        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13319    }
13320}
13321
13322impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13323    type ControlHandle = SocketControlHandle;
13324
13325    fn control_handle(&self) -> &SocketControlHandle {
13326        &self.control_handle
13327    }
13328
13329    fn drop_without_shutdown(mut self) {
13330        // Safety: drops once, never accessed again due to mem::forget
13331        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13332        // Prevent Drop from running (which would shut down the channel)
13333        std::mem::forget(self);
13334    }
13335}
13336
13337impl SocketSetIpMulticastInterfaceResponder {
13338    /// Sends a response to the FIDL transaction.
13339    ///
13340    /// Sets the channel to shutdown if an error occurs.
13341    pub fn send(
13342        self,
13343        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13344    ) -> Result<(), fidl::Error> {
13345        let _result = self.send_raw(result);
13346        if _result.is_err() {
13347            self.control_handle.shutdown();
13348        }
13349        self.drop_without_shutdown();
13350        _result
13351    }
13352
13353    /// Similar to "send" but does not shutdown the channel if an error occurs.
13354    pub fn send_no_shutdown_on_err(
13355        self,
13356        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13357    ) -> Result<(), fidl::Error> {
13358        let _result = self.send_raw(result);
13359        self.drop_without_shutdown();
13360        _result
13361    }
13362
13363    fn send_raw(
13364        &self,
13365        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13366    ) -> Result<(), fidl::Error> {
13367        self.control_handle.inner.send::<fidl::encoding::ResultType<
13368            fidl::encoding::EmptyStruct,
13369            fidl_fuchsia_posix::Errno,
13370        >>(
13371            result,
13372            self.tx_id,
13373            0x752fbfa9b12befe,
13374            fidl::encoding::DynamicFlags::empty(),
13375        )
13376    }
13377}
13378
13379#[must_use = "FIDL methods require a response to be sent"]
13380#[derive(Debug)]
13381pub struct SocketGetIpMulticastInterfaceResponder {
13382    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13383    tx_id: u32,
13384}
13385
13386/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13387/// if the responder is dropped without sending a response, so that the client
13388/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13389impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13390    fn drop(&mut self) {
13391        self.control_handle.shutdown();
13392        // Safety: drops once, never accessed again
13393        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13394    }
13395}
13396
13397impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13398    type ControlHandle = SocketControlHandle;
13399
13400    fn control_handle(&self) -> &SocketControlHandle {
13401        &self.control_handle
13402    }
13403
13404    fn drop_without_shutdown(mut self) {
13405        // Safety: drops once, never accessed again due to mem::forget
13406        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13407        // Prevent Drop from running (which would shut down the channel)
13408        std::mem::forget(self);
13409    }
13410}
13411
13412impl SocketGetIpMulticastInterfaceResponder {
13413    /// Sends a response to the FIDL transaction.
13414    ///
13415    /// Sets the channel to shutdown if an error occurs.
13416    pub fn send(
13417        self,
13418        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13419    ) -> Result<(), fidl::Error> {
13420        let _result = self.send_raw(result);
13421        if _result.is_err() {
13422            self.control_handle.shutdown();
13423        }
13424        self.drop_without_shutdown();
13425        _result
13426    }
13427
13428    /// Similar to "send" but does not shutdown the channel if an error occurs.
13429    pub fn send_no_shutdown_on_err(
13430        self,
13431        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13432    ) -> Result<(), fidl::Error> {
13433        let _result = self.send_raw(result);
13434        self.drop_without_shutdown();
13435        _result
13436    }
13437
13438    fn send_raw(
13439        &self,
13440        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13441    ) -> Result<(), fidl::Error> {
13442        self.control_handle.inner.send::<fidl::encoding::ResultType<
13443            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13444            fidl_fuchsia_posix::Errno,
13445        >>(
13446            result.map(|value| (value,)),
13447            self.tx_id,
13448            0x320bd14c4df046c4,
13449            fidl::encoding::DynamicFlags::empty(),
13450        )
13451    }
13452}
13453
13454#[must_use = "FIDL methods require a response to be sent"]
13455#[derive(Debug)]
13456pub struct SocketSetIpMulticastTtlResponder {
13457    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13458    tx_id: u32,
13459}
13460
13461/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13462/// if the responder is dropped without sending a response, so that the client
13463/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13464impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13465    fn drop(&mut self) {
13466        self.control_handle.shutdown();
13467        // Safety: drops once, never accessed again
13468        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13469    }
13470}
13471
13472impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13473    type ControlHandle = SocketControlHandle;
13474
13475    fn control_handle(&self) -> &SocketControlHandle {
13476        &self.control_handle
13477    }
13478
13479    fn drop_without_shutdown(mut self) {
13480        // Safety: drops once, never accessed again due to mem::forget
13481        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13482        // Prevent Drop from running (which would shut down the channel)
13483        std::mem::forget(self);
13484    }
13485}
13486
13487impl SocketSetIpMulticastTtlResponder {
13488    /// Sends a response to the FIDL transaction.
13489    ///
13490    /// Sets the channel to shutdown if an error occurs.
13491    pub fn send(
13492        self,
13493        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13494    ) -> Result<(), fidl::Error> {
13495        let _result = self.send_raw(result);
13496        if _result.is_err() {
13497            self.control_handle.shutdown();
13498        }
13499        self.drop_without_shutdown();
13500        _result
13501    }
13502
13503    /// Similar to "send" but does not shutdown the channel if an error occurs.
13504    pub fn send_no_shutdown_on_err(
13505        self,
13506        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13507    ) -> Result<(), fidl::Error> {
13508        let _result = self.send_raw(result);
13509        self.drop_without_shutdown();
13510        _result
13511    }
13512
13513    fn send_raw(
13514        &self,
13515        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13516    ) -> Result<(), fidl::Error> {
13517        self.control_handle.inner.send::<fidl::encoding::ResultType<
13518            fidl::encoding::EmptyStruct,
13519            fidl_fuchsia_posix::Errno,
13520        >>(
13521            result,
13522            self.tx_id,
13523            0x63134d53772916a1,
13524            fidl::encoding::DynamicFlags::empty(),
13525        )
13526    }
13527}
13528
13529#[must_use = "FIDL methods require a response to be sent"]
13530#[derive(Debug)]
13531pub struct SocketGetIpMulticastTtlResponder {
13532    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13533    tx_id: u32,
13534}
13535
13536/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13537/// if the responder is dropped without sending a response, so that the client
13538/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13539impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13540    fn drop(&mut self) {
13541        self.control_handle.shutdown();
13542        // Safety: drops once, never accessed again
13543        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13544    }
13545}
13546
13547impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13548    type ControlHandle = SocketControlHandle;
13549
13550    fn control_handle(&self) -> &SocketControlHandle {
13551        &self.control_handle
13552    }
13553
13554    fn drop_without_shutdown(mut self) {
13555        // Safety: drops once, never accessed again due to mem::forget
13556        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13557        // Prevent Drop from running (which would shut down the channel)
13558        std::mem::forget(self);
13559    }
13560}
13561
13562impl SocketGetIpMulticastTtlResponder {
13563    /// Sends a response to the FIDL transaction.
13564    ///
13565    /// Sets the channel to shutdown if an error occurs.
13566    pub fn send(
13567        self,
13568        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13569    ) -> Result<(), fidl::Error> {
13570        let _result = self.send_raw(result);
13571        if _result.is_err() {
13572            self.control_handle.shutdown();
13573        }
13574        self.drop_without_shutdown();
13575        _result
13576    }
13577
13578    /// Similar to "send" but does not shutdown the channel if an error occurs.
13579    pub fn send_no_shutdown_on_err(
13580        self,
13581        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13582    ) -> Result<(), fidl::Error> {
13583        let _result = self.send_raw(result);
13584        self.drop_without_shutdown();
13585        _result
13586    }
13587
13588    fn send_raw(
13589        &self,
13590        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13591    ) -> Result<(), fidl::Error> {
13592        self.control_handle.inner.send::<fidl::encoding::ResultType<
13593            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13594            fidl_fuchsia_posix::Errno,
13595        >>(
13596            result.map(|value| (value,)),
13597            self.tx_id,
13598            0x4665cd378f39e1a,
13599            fidl::encoding::DynamicFlags::empty(),
13600        )
13601    }
13602}
13603
13604#[must_use = "FIDL methods require a response to be sent"]
13605#[derive(Debug)]
13606pub struct SocketSetIpMulticastLoopbackResponder {
13607    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13608    tx_id: u32,
13609}
13610
13611/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13612/// if the responder is dropped without sending a response, so that the client
13613/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13614impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13615    fn drop(&mut self) {
13616        self.control_handle.shutdown();
13617        // Safety: drops once, never accessed again
13618        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13619    }
13620}
13621
13622impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13623    type ControlHandle = SocketControlHandle;
13624
13625    fn control_handle(&self) -> &SocketControlHandle {
13626        &self.control_handle
13627    }
13628
13629    fn drop_without_shutdown(mut self) {
13630        // Safety: drops once, never accessed again due to mem::forget
13631        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13632        // Prevent Drop from running (which would shut down the channel)
13633        std::mem::forget(self);
13634    }
13635}
13636
13637impl SocketSetIpMulticastLoopbackResponder {
13638    /// Sends a response to the FIDL transaction.
13639    ///
13640    /// Sets the channel to shutdown if an error occurs.
13641    pub fn send(
13642        self,
13643        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13644    ) -> Result<(), fidl::Error> {
13645        let _result = self.send_raw(result);
13646        if _result.is_err() {
13647            self.control_handle.shutdown();
13648        }
13649        self.drop_without_shutdown();
13650        _result
13651    }
13652
13653    /// Similar to "send" but does not shutdown the channel if an error occurs.
13654    pub fn send_no_shutdown_on_err(
13655        self,
13656        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13657    ) -> Result<(), fidl::Error> {
13658        let _result = self.send_raw(result);
13659        self.drop_without_shutdown();
13660        _result
13661    }
13662
13663    fn send_raw(
13664        &self,
13665        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13666    ) -> Result<(), fidl::Error> {
13667        self.control_handle.inner.send::<fidl::encoding::ResultType<
13668            fidl::encoding::EmptyStruct,
13669            fidl_fuchsia_posix::Errno,
13670        >>(
13671            result,
13672            self.tx_id,
13673            0x20c55c11f00943ea,
13674            fidl::encoding::DynamicFlags::empty(),
13675        )
13676    }
13677}
13678
13679#[must_use = "FIDL methods require a response to be sent"]
13680#[derive(Debug)]
13681pub struct SocketGetIpMulticastLoopbackResponder {
13682    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13683    tx_id: u32,
13684}
13685
13686/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13687/// if the responder is dropped without sending a response, so that the client
13688/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13689impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13690    fn drop(&mut self) {
13691        self.control_handle.shutdown();
13692        // Safety: drops once, never accessed again
13693        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13694    }
13695}
13696
13697impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13698    type ControlHandle = SocketControlHandle;
13699
13700    fn control_handle(&self) -> &SocketControlHandle {
13701        &self.control_handle
13702    }
13703
13704    fn drop_without_shutdown(mut self) {
13705        // Safety: drops once, never accessed again due to mem::forget
13706        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13707        // Prevent Drop from running (which would shut down the channel)
13708        std::mem::forget(self);
13709    }
13710}
13711
13712impl SocketGetIpMulticastLoopbackResponder {
13713    /// Sends a response to the FIDL transaction.
13714    ///
13715    /// Sets the channel to shutdown if an error occurs.
13716    pub fn send(
13717        self,
13718        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13719    ) -> Result<(), fidl::Error> {
13720        let _result = self.send_raw(result);
13721        if _result.is_err() {
13722            self.control_handle.shutdown();
13723        }
13724        self.drop_without_shutdown();
13725        _result
13726    }
13727
13728    /// Similar to "send" but does not shutdown the channel if an error occurs.
13729    pub fn send_no_shutdown_on_err(
13730        self,
13731        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13732    ) -> Result<(), fidl::Error> {
13733        let _result = self.send_raw(result);
13734        self.drop_without_shutdown();
13735        _result
13736    }
13737
13738    fn send_raw(
13739        &self,
13740        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13741    ) -> Result<(), fidl::Error> {
13742        self.control_handle.inner.send::<fidl::encoding::ResultType<
13743            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
13744            fidl_fuchsia_posix::Errno,
13745        >>(
13746            result.map(|value| (value,)),
13747            self.tx_id,
13748            0x3b6b26ff558298f2,
13749            fidl::encoding::DynamicFlags::empty(),
13750        )
13751    }
13752}
13753
13754#[must_use = "FIDL methods require a response to be sent"]
13755#[derive(Debug)]
13756pub struct SocketAddIpMembershipResponder {
13757    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13758    tx_id: u32,
13759}
13760
13761/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13762/// if the responder is dropped without sending a response, so that the client
13763/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13764impl std::ops::Drop for SocketAddIpMembershipResponder {
13765    fn drop(&mut self) {
13766        self.control_handle.shutdown();
13767        // Safety: drops once, never accessed again
13768        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13769    }
13770}
13771
13772impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
13773    type ControlHandle = SocketControlHandle;
13774
13775    fn control_handle(&self) -> &SocketControlHandle {
13776        &self.control_handle
13777    }
13778
13779    fn drop_without_shutdown(mut self) {
13780        // Safety: drops once, never accessed again due to mem::forget
13781        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13782        // Prevent Drop from running (which would shut down the channel)
13783        std::mem::forget(self);
13784    }
13785}
13786
13787impl SocketAddIpMembershipResponder {
13788    /// Sends a response to the FIDL transaction.
13789    ///
13790    /// Sets the channel to shutdown if an error occurs.
13791    pub fn send(
13792        self,
13793        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13794    ) -> Result<(), fidl::Error> {
13795        let _result = self.send_raw(result);
13796        if _result.is_err() {
13797            self.control_handle.shutdown();
13798        }
13799        self.drop_without_shutdown();
13800        _result
13801    }
13802
13803    /// Similar to "send" but does not shutdown the channel if an error occurs.
13804    pub fn send_no_shutdown_on_err(
13805        self,
13806        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13807    ) -> Result<(), fidl::Error> {
13808        let _result = self.send_raw(result);
13809        self.drop_without_shutdown();
13810        _result
13811    }
13812
13813    fn send_raw(
13814        &self,
13815        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13816    ) -> Result<(), fidl::Error> {
13817        self.control_handle.inner.send::<fidl::encoding::ResultType<
13818            fidl::encoding::EmptyStruct,
13819            fidl_fuchsia_posix::Errno,
13820        >>(
13821            result,
13822            self.tx_id,
13823            0x76bc7df115a3b4d0,
13824            fidl::encoding::DynamicFlags::empty(),
13825        )
13826    }
13827}
13828
13829#[must_use = "FIDL methods require a response to be sent"]
13830#[derive(Debug)]
13831pub struct SocketDropIpMembershipResponder {
13832    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13833    tx_id: u32,
13834}
13835
13836/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13837/// if the responder is dropped without sending a response, so that the client
13838/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13839impl std::ops::Drop for SocketDropIpMembershipResponder {
13840    fn drop(&mut self) {
13841        self.control_handle.shutdown();
13842        // Safety: drops once, never accessed again
13843        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13844    }
13845}
13846
13847impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
13848    type ControlHandle = SocketControlHandle;
13849
13850    fn control_handle(&self) -> &SocketControlHandle {
13851        &self.control_handle
13852    }
13853
13854    fn drop_without_shutdown(mut self) {
13855        // Safety: drops once, never accessed again due to mem::forget
13856        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13857        // Prevent Drop from running (which would shut down the channel)
13858        std::mem::forget(self);
13859    }
13860}
13861
13862impl SocketDropIpMembershipResponder {
13863    /// Sends a response to the FIDL transaction.
13864    ///
13865    /// Sets the channel to shutdown if an error occurs.
13866    pub fn send(
13867        self,
13868        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13869    ) -> Result<(), fidl::Error> {
13870        let _result = self.send_raw(result);
13871        if _result.is_err() {
13872            self.control_handle.shutdown();
13873        }
13874        self.drop_without_shutdown();
13875        _result
13876    }
13877
13878    /// Similar to "send" but does not shutdown the channel if an error occurs.
13879    pub fn send_no_shutdown_on_err(
13880        self,
13881        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13882    ) -> Result<(), fidl::Error> {
13883        let _result = self.send_raw(result);
13884        self.drop_without_shutdown();
13885        _result
13886    }
13887
13888    fn send_raw(
13889        &self,
13890        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13891    ) -> Result<(), fidl::Error> {
13892        self.control_handle.inner.send::<fidl::encoding::ResultType<
13893            fidl::encoding::EmptyStruct,
13894            fidl_fuchsia_posix::Errno,
13895        >>(
13896            result,
13897            self.tx_id,
13898            0x2888f3099188d03,
13899            fidl::encoding::DynamicFlags::empty(),
13900        )
13901    }
13902}
13903
13904#[must_use = "FIDL methods require a response to be sent"]
13905#[derive(Debug)]
13906pub struct SocketSetIpTransparentResponder {
13907    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13908    tx_id: u32,
13909}
13910
13911/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13912/// if the responder is dropped without sending a response, so that the client
13913/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13914impl std::ops::Drop for SocketSetIpTransparentResponder {
13915    fn drop(&mut self) {
13916        self.control_handle.shutdown();
13917        // Safety: drops once, never accessed again
13918        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13919    }
13920}
13921
13922impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
13923    type ControlHandle = SocketControlHandle;
13924
13925    fn control_handle(&self) -> &SocketControlHandle {
13926        &self.control_handle
13927    }
13928
13929    fn drop_without_shutdown(mut self) {
13930        // Safety: drops once, never accessed again due to mem::forget
13931        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13932        // Prevent Drop from running (which would shut down the channel)
13933        std::mem::forget(self);
13934    }
13935}
13936
13937impl SocketSetIpTransparentResponder {
13938    /// Sends a response to the FIDL transaction.
13939    ///
13940    /// Sets the channel to shutdown if an error occurs.
13941    pub fn send(
13942        self,
13943        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13944    ) -> Result<(), fidl::Error> {
13945        let _result = self.send_raw(result);
13946        if _result.is_err() {
13947            self.control_handle.shutdown();
13948        }
13949        self.drop_without_shutdown();
13950        _result
13951    }
13952
13953    /// Similar to "send" but does not shutdown the channel if an error occurs.
13954    pub fn send_no_shutdown_on_err(
13955        self,
13956        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13957    ) -> Result<(), fidl::Error> {
13958        let _result = self.send_raw(result);
13959        self.drop_without_shutdown();
13960        _result
13961    }
13962
13963    fn send_raw(
13964        &self,
13965        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13966    ) -> Result<(), fidl::Error> {
13967        self.control_handle.inner.send::<fidl::encoding::ResultType<
13968            fidl::encoding::EmptyStruct,
13969            fidl_fuchsia_posix::Errno,
13970        >>(
13971            result,
13972            self.tx_id,
13973            0x1ae532b0c066e3a0,
13974            fidl::encoding::DynamicFlags::empty(),
13975        )
13976    }
13977}
13978
13979#[must_use = "FIDL methods require a response to be sent"]
13980#[derive(Debug)]
13981pub struct SocketGetIpTransparentResponder {
13982    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13983    tx_id: u32,
13984}
13985
13986/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13987/// if the responder is dropped without sending a response, so that the client
13988/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13989impl std::ops::Drop for SocketGetIpTransparentResponder {
13990    fn drop(&mut self) {
13991        self.control_handle.shutdown();
13992        // Safety: drops once, never accessed again
13993        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13994    }
13995}
13996
13997impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
13998    type ControlHandle = SocketControlHandle;
13999
14000    fn control_handle(&self) -> &SocketControlHandle {
14001        &self.control_handle
14002    }
14003
14004    fn drop_without_shutdown(mut self) {
14005        // Safety: drops once, never accessed again due to mem::forget
14006        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14007        // Prevent Drop from running (which would shut down the channel)
14008        std::mem::forget(self);
14009    }
14010}
14011
14012impl SocketGetIpTransparentResponder {
14013    /// Sends a response to the FIDL transaction.
14014    ///
14015    /// Sets the channel to shutdown if an error occurs.
14016    pub fn send(
14017        self,
14018        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14019    ) -> Result<(), fidl::Error> {
14020        let _result = self.send_raw(result);
14021        if _result.is_err() {
14022            self.control_handle.shutdown();
14023        }
14024        self.drop_without_shutdown();
14025        _result
14026    }
14027
14028    /// Similar to "send" but does not shutdown the channel if an error occurs.
14029    pub fn send_no_shutdown_on_err(
14030        self,
14031        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14032    ) -> Result<(), fidl::Error> {
14033        let _result = self.send_raw(result);
14034        self.drop_without_shutdown();
14035        _result
14036    }
14037
14038    fn send_raw(
14039        &self,
14040        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14041    ) -> Result<(), fidl::Error> {
14042        self.control_handle.inner.send::<fidl::encoding::ResultType<
14043            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
14044            fidl_fuchsia_posix::Errno,
14045        >>(
14046            result.map(|value| (value,)),
14047            self.tx_id,
14048            0x51d43695962ebfb5,
14049            fidl::encoding::DynamicFlags::empty(),
14050        )
14051    }
14052}
14053
14054#[must_use = "FIDL methods require a response to be sent"]
14055#[derive(Debug)]
14056pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14057    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14058    tx_id: u32,
14059}
14060
14061/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14062/// if the responder is dropped without sending a response, so that the client
14063/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14064impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14065    fn drop(&mut self) {
14066        self.control_handle.shutdown();
14067        // Safety: drops once, never accessed again
14068        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14069    }
14070}
14071
14072impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14073    type ControlHandle = SocketControlHandle;
14074
14075    fn control_handle(&self) -> &SocketControlHandle {
14076        &self.control_handle
14077    }
14078
14079    fn drop_without_shutdown(mut self) {
14080        // Safety: drops once, never accessed again due to mem::forget
14081        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14082        // Prevent Drop from running (which would shut down the channel)
14083        std::mem::forget(self);
14084    }
14085}
14086
14087impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14088    /// Sends a response to the FIDL transaction.
14089    ///
14090    /// Sets the channel to shutdown if an error occurs.
14091    pub fn send(
14092        self,
14093        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14094    ) -> Result<(), fidl::Error> {
14095        let _result = self.send_raw(result);
14096        if _result.is_err() {
14097            self.control_handle.shutdown();
14098        }
14099        self.drop_without_shutdown();
14100        _result
14101    }
14102
14103    /// Similar to "send" but does not shutdown the channel if an error occurs.
14104    pub fn send_no_shutdown_on_err(
14105        self,
14106        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14107    ) -> Result<(), fidl::Error> {
14108        let _result = self.send_raw(result);
14109        self.drop_without_shutdown();
14110        _result
14111    }
14112
14113    fn send_raw(
14114        &self,
14115        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14116    ) -> Result<(), fidl::Error> {
14117        self.control_handle.inner.send::<fidl::encoding::ResultType<
14118            fidl::encoding::EmptyStruct,
14119            fidl_fuchsia_posix::Errno,
14120        >>(
14121            result,
14122            self.tx_id,
14123            0x4722b4ce52f7840,
14124            fidl::encoding::DynamicFlags::empty(),
14125        )
14126    }
14127}
14128
14129#[must_use = "FIDL methods require a response to be sent"]
14130#[derive(Debug)]
14131pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14132    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14133    tx_id: u32,
14134}
14135
14136/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14137/// if the responder is dropped without sending a response, so that the client
14138/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14139impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14140    fn drop(&mut self) {
14141        self.control_handle.shutdown();
14142        // Safety: drops once, never accessed again
14143        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14144    }
14145}
14146
14147impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14148    type ControlHandle = SocketControlHandle;
14149
14150    fn control_handle(&self) -> &SocketControlHandle {
14151        &self.control_handle
14152    }
14153
14154    fn drop_without_shutdown(mut self) {
14155        // Safety: drops once, never accessed again due to mem::forget
14156        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14157        // Prevent Drop from running (which would shut down the channel)
14158        std::mem::forget(self);
14159    }
14160}
14161
14162impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14163    /// Sends a response to the FIDL transaction.
14164    ///
14165    /// Sets the channel to shutdown if an error occurs.
14166    pub fn send(
14167        self,
14168        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14169    ) -> Result<(), fidl::Error> {
14170        let _result = self.send_raw(result);
14171        if _result.is_err() {
14172            self.control_handle.shutdown();
14173        }
14174        self.drop_without_shutdown();
14175        _result
14176    }
14177
14178    /// Similar to "send" but does not shutdown the channel if an error occurs.
14179    pub fn send_no_shutdown_on_err(
14180        self,
14181        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14182    ) -> Result<(), fidl::Error> {
14183        let _result = self.send_raw(result);
14184        self.drop_without_shutdown();
14185        _result
14186    }
14187
14188    fn send_raw(
14189        &self,
14190        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14191    ) -> Result<(), fidl::Error> {
14192        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14193            result.map(|value| (value,)),
14194            self.tx_id,
14195            0x2a0e7dc5d6bfdfe9,
14196            fidl::encoding::DynamicFlags::empty()
14197        )
14198    }
14199}
14200
14201#[must_use = "FIDL methods require a response to be sent"]
14202#[derive(Debug)]
14203pub struct SocketAddIpv6MembershipResponder {
14204    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14205    tx_id: u32,
14206}
14207
14208/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14209/// if the responder is dropped without sending a response, so that the client
14210/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14211impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14212    fn drop(&mut self) {
14213        self.control_handle.shutdown();
14214        // Safety: drops once, never accessed again
14215        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14216    }
14217}
14218
14219impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14220    type ControlHandle = SocketControlHandle;
14221
14222    fn control_handle(&self) -> &SocketControlHandle {
14223        &self.control_handle
14224    }
14225
14226    fn drop_without_shutdown(mut self) {
14227        // Safety: drops once, never accessed again due to mem::forget
14228        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14229        // Prevent Drop from running (which would shut down the channel)
14230        std::mem::forget(self);
14231    }
14232}
14233
14234impl SocketAddIpv6MembershipResponder {
14235    /// Sends a response to the FIDL transaction.
14236    ///
14237    /// Sets the channel to shutdown if an error occurs.
14238    pub fn send(
14239        self,
14240        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14241    ) -> Result<(), fidl::Error> {
14242        let _result = self.send_raw(result);
14243        if _result.is_err() {
14244            self.control_handle.shutdown();
14245        }
14246        self.drop_without_shutdown();
14247        _result
14248    }
14249
14250    /// Similar to "send" but does not shutdown the channel if an error occurs.
14251    pub fn send_no_shutdown_on_err(
14252        self,
14253        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14254    ) -> Result<(), fidl::Error> {
14255        let _result = self.send_raw(result);
14256        self.drop_without_shutdown();
14257        _result
14258    }
14259
14260    fn send_raw(
14261        &self,
14262        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14263    ) -> Result<(), fidl::Error> {
14264        self.control_handle.inner.send::<fidl::encoding::ResultType<
14265            fidl::encoding::EmptyStruct,
14266            fidl_fuchsia_posix::Errno,
14267        >>(
14268            result,
14269            self.tx_id,
14270            0x7c94727acb4ea4b3,
14271            fidl::encoding::DynamicFlags::empty(),
14272        )
14273    }
14274}
14275
14276#[must_use = "FIDL methods require a response to be sent"]
14277#[derive(Debug)]
14278pub struct SocketDropIpv6MembershipResponder {
14279    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14280    tx_id: u32,
14281}
14282
14283/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14284/// if the responder is dropped without sending a response, so that the client
14285/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14286impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14287    fn drop(&mut self) {
14288        self.control_handle.shutdown();
14289        // Safety: drops once, never accessed again
14290        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14291    }
14292}
14293
14294impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14295    type ControlHandle = SocketControlHandle;
14296
14297    fn control_handle(&self) -> &SocketControlHandle {
14298        &self.control_handle
14299    }
14300
14301    fn drop_without_shutdown(mut self) {
14302        // Safety: drops once, never accessed again due to mem::forget
14303        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14304        // Prevent Drop from running (which would shut down the channel)
14305        std::mem::forget(self);
14306    }
14307}
14308
14309impl SocketDropIpv6MembershipResponder {
14310    /// Sends a response to the FIDL transaction.
14311    ///
14312    /// Sets the channel to shutdown if an error occurs.
14313    pub fn send(
14314        self,
14315        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14316    ) -> Result<(), fidl::Error> {
14317        let _result = self.send_raw(result);
14318        if _result.is_err() {
14319            self.control_handle.shutdown();
14320        }
14321        self.drop_without_shutdown();
14322        _result
14323    }
14324
14325    /// Similar to "send" but does not shutdown the channel if an error occurs.
14326    pub fn send_no_shutdown_on_err(
14327        self,
14328        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14329    ) -> Result<(), fidl::Error> {
14330        let _result = self.send_raw(result);
14331        self.drop_without_shutdown();
14332        _result
14333    }
14334
14335    fn send_raw(
14336        &self,
14337        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14338    ) -> Result<(), fidl::Error> {
14339        self.control_handle.inner.send::<fidl::encoding::ResultType<
14340            fidl::encoding::EmptyStruct,
14341            fidl_fuchsia_posix::Errno,
14342        >>(
14343            result,
14344            self.tx_id,
14345            0x42104c70ccaba304,
14346            fidl::encoding::DynamicFlags::empty(),
14347        )
14348    }
14349}
14350
14351#[must_use = "FIDL methods require a response to be sent"]
14352#[derive(Debug)]
14353pub struct SocketSetIpv6MulticastInterfaceResponder {
14354    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14355    tx_id: u32,
14356}
14357
14358/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14359/// if the responder is dropped without sending a response, so that the client
14360/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14361impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14362    fn drop(&mut self) {
14363        self.control_handle.shutdown();
14364        // Safety: drops once, never accessed again
14365        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14366    }
14367}
14368
14369impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14370    type ControlHandle = SocketControlHandle;
14371
14372    fn control_handle(&self) -> &SocketControlHandle {
14373        &self.control_handle
14374    }
14375
14376    fn drop_without_shutdown(mut self) {
14377        // Safety: drops once, never accessed again due to mem::forget
14378        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14379        // Prevent Drop from running (which would shut down the channel)
14380        std::mem::forget(self);
14381    }
14382}
14383
14384impl SocketSetIpv6MulticastInterfaceResponder {
14385    /// Sends a response to the FIDL transaction.
14386    ///
14387    /// Sets the channel to shutdown if an error occurs.
14388    pub fn send(
14389        self,
14390        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14391    ) -> Result<(), fidl::Error> {
14392        let _result = self.send_raw(result);
14393        if _result.is_err() {
14394            self.control_handle.shutdown();
14395        }
14396        self.drop_without_shutdown();
14397        _result
14398    }
14399
14400    /// Similar to "send" but does not shutdown the channel if an error occurs.
14401    pub fn send_no_shutdown_on_err(
14402        self,
14403        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14404    ) -> Result<(), fidl::Error> {
14405        let _result = self.send_raw(result);
14406        self.drop_without_shutdown();
14407        _result
14408    }
14409
14410    fn send_raw(
14411        &self,
14412        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14413    ) -> Result<(), fidl::Error> {
14414        self.control_handle.inner.send::<fidl::encoding::ResultType<
14415            fidl::encoding::EmptyStruct,
14416            fidl_fuchsia_posix::Errno,
14417        >>(
14418            result,
14419            self.tx_id,
14420            0x135f76db3774ab3b,
14421            fidl::encoding::DynamicFlags::empty(),
14422        )
14423    }
14424}
14425
14426#[must_use = "FIDL methods require a response to be sent"]
14427#[derive(Debug)]
14428pub struct SocketGetIpv6MulticastInterfaceResponder {
14429    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14430    tx_id: u32,
14431}
14432
14433/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14434/// if the responder is dropped without sending a response, so that the client
14435/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14436impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14437    fn drop(&mut self) {
14438        self.control_handle.shutdown();
14439        // Safety: drops once, never accessed again
14440        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14441    }
14442}
14443
14444impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14445    type ControlHandle = SocketControlHandle;
14446
14447    fn control_handle(&self) -> &SocketControlHandle {
14448        &self.control_handle
14449    }
14450
14451    fn drop_without_shutdown(mut self) {
14452        // Safety: drops once, never accessed again due to mem::forget
14453        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14454        // Prevent Drop from running (which would shut down the channel)
14455        std::mem::forget(self);
14456    }
14457}
14458
14459impl SocketGetIpv6MulticastInterfaceResponder {
14460    /// Sends a response to the FIDL transaction.
14461    ///
14462    /// Sets the channel to shutdown if an error occurs.
14463    pub fn send(
14464        self,
14465        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14466    ) -> Result<(), fidl::Error> {
14467        let _result = self.send_raw(result);
14468        if _result.is_err() {
14469            self.control_handle.shutdown();
14470        }
14471        self.drop_without_shutdown();
14472        _result
14473    }
14474
14475    /// Similar to "send" but does not shutdown the channel if an error occurs.
14476    pub fn send_no_shutdown_on_err(
14477        self,
14478        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14479    ) -> Result<(), fidl::Error> {
14480        let _result = self.send_raw(result);
14481        self.drop_without_shutdown();
14482        _result
14483    }
14484
14485    fn send_raw(
14486        &self,
14487        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14488    ) -> Result<(), fidl::Error> {
14489        self.control_handle.inner.send::<fidl::encoding::ResultType<
14490            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14491            fidl_fuchsia_posix::Errno,
14492        >>(
14493            result.map(|value| (value,)),
14494            self.tx_id,
14495            0x1f26fcdd348f1882,
14496            fidl::encoding::DynamicFlags::empty(),
14497        )
14498    }
14499}
14500
14501#[must_use = "FIDL methods require a response to be sent"]
14502#[derive(Debug)]
14503pub struct SocketSetIpv6UnicastHopsResponder {
14504    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14505    tx_id: u32,
14506}
14507
14508/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14509/// if the responder is dropped without sending a response, so that the client
14510/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14511impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14512    fn drop(&mut self) {
14513        self.control_handle.shutdown();
14514        // Safety: drops once, never accessed again
14515        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14516    }
14517}
14518
14519impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14520    type ControlHandle = SocketControlHandle;
14521
14522    fn control_handle(&self) -> &SocketControlHandle {
14523        &self.control_handle
14524    }
14525
14526    fn drop_without_shutdown(mut self) {
14527        // Safety: drops once, never accessed again due to mem::forget
14528        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14529        // Prevent Drop from running (which would shut down the channel)
14530        std::mem::forget(self);
14531    }
14532}
14533
14534impl SocketSetIpv6UnicastHopsResponder {
14535    /// Sends a response to the FIDL transaction.
14536    ///
14537    /// Sets the channel to shutdown if an error occurs.
14538    pub fn send(
14539        self,
14540        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14541    ) -> Result<(), fidl::Error> {
14542        let _result = self.send_raw(result);
14543        if _result.is_err() {
14544            self.control_handle.shutdown();
14545        }
14546        self.drop_without_shutdown();
14547        _result
14548    }
14549
14550    /// Similar to "send" but does not shutdown the channel if an error occurs.
14551    pub fn send_no_shutdown_on_err(
14552        self,
14553        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14554    ) -> Result<(), fidl::Error> {
14555        let _result = self.send_raw(result);
14556        self.drop_without_shutdown();
14557        _result
14558    }
14559
14560    fn send_raw(
14561        &self,
14562        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14563    ) -> Result<(), fidl::Error> {
14564        self.control_handle.inner.send::<fidl::encoding::ResultType<
14565            fidl::encoding::EmptyStruct,
14566            fidl_fuchsia_posix::Errno,
14567        >>(
14568            result,
14569            self.tx_id,
14570            0x157d51e98f462859,
14571            fidl::encoding::DynamicFlags::empty(),
14572        )
14573    }
14574}
14575
14576#[must_use = "FIDL methods require a response to be sent"]
14577#[derive(Debug)]
14578pub struct SocketGetIpv6UnicastHopsResponder {
14579    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14580    tx_id: u32,
14581}
14582
14583/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14584/// if the responder is dropped without sending a response, so that the client
14585/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14586impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14587    fn drop(&mut self) {
14588        self.control_handle.shutdown();
14589        // Safety: drops once, never accessed again
14590        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14591    }
14592}
14593
14594impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14595    type ControlHandle = SocketControlHandle;
14596
14597    fn control_handle(&self) -> &SocketControlHandle {
14598        &self.control_handle
14599    }
14600
14601    fn drop_without_shutdown(mut self) {
14602        // Safety: drops once, never accessed again due to mem::forget
14603        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14604        // Prevent Drop from running (which would shut down the channel)
14605        std::mem::forget(self);
14606    }
14607}
14608
14609impl SocketGetIpv6UnicastHopsResponder {
14610    /// Sends a response to the FIDL transaction.
14611    ///
14612    /// Sets the channel to shutdown if an error occurs.
14613    pub fn send(
14614        self,
14615        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14616    ) -> Result<(), fidl::Error> {
14617        let _result = self.send_raw(result);
14618        if _result.is_err() {
14619            self.control_handle.shutdown();
14620        }
14621        self.drop_without_shutdown();
14622        _result
14623    }
14624
14625    /// Similar to "send" but does not shutdown the channel if an error occurs.
14626    pub fn send_no_shutdown_on_err(
14627        self,
14628        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14629    ) -> Result<(), fidl::Error> {
14630        let _result = self.send_raw(result);
14631        self.drop_without_shutdown();
14632        _result
14633    }
14634
14635    fn send_raw(
14636        &self,
14637        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14638    ) -> Result<(), fidl::Error> {
14639        self.control_handle.inner.send::<fidl::encoding::ResultType<
14640            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14641            fidl_fuchsia_posix::Errno,
14642        >>(
14643            result.map(|value| (value,)),
14644            self.tx_id,
14645            0x21f4641cad8bd8d2,
14646            fidl::encoding::DynamicFlags::empty(),
14647        )
14648    }
14649}
14650
14651#[must_use = "FIDL methods require a response to be sent"]
14652#[derive(Debug)]
14653pub struct SocketSetIpv6ReceiveHopLimitResponder {
14654    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14655    tx_id: u32,
14656}
14657
14658/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14659/// if the responder is dropped without sending a response, so that the client
14660/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14661impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14662    fn drop(&mut self) {
14663        self.control_handle.shutdown();
14664        // Safety: drops once, never accessed again
14665        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14666    }
14667}
14668
14669impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14670    type ControlHandle = SocketControlHandle;
14671
14672    fn control_handle(&self) -> &SocketControlHandle {
14673        &self.control_handle
14674    }
14675
14676    fn drop_without_shutdown(mut self) {
14677        // Safety: drops once, never accessed again due to mem::forget
14678        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14679        // Prevent Drop from running (which would shut down the channel)
14680        std::mem::forget(self);
14681    }
14682}
14683
14684impl SocketSetIpv6ReceiveHopLimitResponder {
14685    /// Sends a response to the FIDL transaction.
14686    ///
14687    /// Sets the channel to shutdown if an error occurs.
14688    pub fn send(
14689        self,
14690        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14691    ) -> Result<(), fidl::Error> {
14692        let _result = self.send_raw(result);
14693        if _result.is_err() {
14694            self.control_handle.shutdown();
14695        }
14696        self.drop_without_shutdown();
14697        _result
14698    }
14699
14700    /// Similar to "send" but does not shutdown the channel if an error occurs.
14701    pub fn send_no_shutdown_on_err(
14702        self,
14703        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14704    ) -> Result<(), fidl::Error> {
14705        let _result = self.send_raw(result);
14706        self.drop_without_shutdown();
14707        _result
14708    }
14709
14710    fn send_raw(
14711        &self,
14712        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14713    ) -> Result<(), fidl::Error> {
14714        self.control_handle.inner.send::<fidl::encoding::ResultType<
14715            fidl::encoding::EmptyStruct,
14716            fidl_fuchsia_posix::Errno,
14717        >>(
14718            result,
14719            self.tx_id,
14720            0x5c24808ed2e84a1e,
14721            fidl::encoding::DynamicFlags::empty(),
14722        )
14723    }
14724}
14725
14726#[must_use = "FIDL methods require a response to be sent"]
14727#[derive(Debug)]
14728pub struct SocketGetIpv6ReceiveHopLimitResponder {
14729    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14730    tx_id: u32,
14731}
14732
14733/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14734/// if the responder is dropped without sending a response, so that the client
14735/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14736impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
14737    fn drop(&mut self) {
14738        self.control_handle.shutdown();
14739        // Safety: drops once, never accessed again
14740        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14741    }
14742}
14743
14744impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
14745    type ControlHandle = SocketControlHandle;
14746
14747    fn control_handle(&self) -> &SocketControlHandle {
14748        &self.control_handle
14749    }
14750
14751    fn drop_without_shutdown(mut self) {
14752        // Safety: drops once, never accessed again due to mem::forget
14753        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14754        // Prevent Drop from running (which would shut down the channel)
14755        std::mem::forget(self);
14756    }
14757}
14758
14759impl SocketGetIpv6ReceiveHopLimitResponder {
14760    /// Sends a response to the FIDL transaction.
14761    ///
14762    /// Sets the channel to shutdown if an error occurs.
14763    pub fn send(
14764        self,
14765        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14766    ) -> Result<(), fidl::Error> {
14767        let _result = self.send_raw(result);
14768        if _result.is_err() {
14769            self.control_handle.shutdown();
14770        }
14771        self.drop_without_shutdown();
14772        _result
14773    }
14774
14775    /// Similar to "send" but does not shutdown the channel if an error occurs.
14776    pub fn send_no_shutdown_on_err(
14777        self,
14778        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14779    ) -> Result<(), fidl::Error> {
14780        let _result = self.send_raw(result);
14781        self.drop_without_shutdown();
14782        _result
14783    }
14784
14785    fn send_raw(
14786        &self,
14787        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14788    ) -> Result<(), fidl::Error> {
14789        self.control_handle.inner.send::<fidl::encoding::ResultType<
14790            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
14791            fidl_fuchsia_posix::Errno,
14792        >>(
14793            result.map(|value| (value,)),
14794            self.tx_id,
14795            0x341e06689885b4c0,
14796            fidl::encoding::DynamicFlags::empty(),
14797        )
14798    }
14799}
14800
14801#[must_use = "FIDL methods require a response to be sent"]
14802#[derive(Debug)]
14803pub struct SocketSetIpv6MulticastHopsResponder {
14804    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14805    tx_id: u32,
14806}
14807
14808/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14809/// if the responder is dropped without sending a response, so that the client
14810/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14811impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
14812    fn drop(&mut self) {
14813        self.control_handle.shutdown();
14814        // Safety: drops once, never accessed again
14815        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14816    }
14817}
14818
14819impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
14820    type ControlHandle = SocketControlHandle;
14821
14822    fn control_handle(&self) -> &SocketControlHandle {
14823        &self.control_handle
14824    }
14825
14826    fn drop_without_shutdown(mut self) {
14827        // Safety: drops once, never accessed again due to mem::forget
14828        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14829        // Prevent Drop from running (which would shut down the channel)
14830        std::mem::forget(self);
14831    }
14832}
14833
14834impl SocketSetIpv6MulticastHopsResponder {
14835    /// Sends a response to the FIDL transaction.
14836    ///
14837    /// Sets the channel to shutdown if an error occurs.
14838    pub fn send(
14839        self,
14840        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14841    ) -> Result<(), fidl::Error> {
14842        let _result = self.send_raw(result);
14843        if _result.is_err() {
14844            self.control_handle.shutdown();
14845        }
14846        self.drop_without_shutdown();
14847        _result
14848    }
14849
14850    /// Similar to "send" but does not shutdown the channel if an error occurs.
14851    pub fn send_no_shutdown_on_err(
14852        self,
14853        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14854    ) -> Result<(), fidl::Error> {
14855        let _result = self.send_raw(result);
14856        self.drop_without_shutdown();
14857        _result
14858    }
14859
14860    fn send_raw(
14861        &self,
14862        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14863    ) -> Result<(), fidl::Error> {
14864        self.control_handle.inner.send::<fidl::encoding::ResultType<
14865            fidl::encoding::EmptyStruct,
14866            fidl_fuchsia_posix::Errno,
14867        >>(
14868            result,
14869            self.tx_id,
14870            0x25b9cd4d181f82c1,
14871            fidl::encoding::DynamicFlags::empty(),
14872        )
14873    }
14874}
14875
14876#[must_use = "FIDL methods require a response to be sent"]
14877#[derive(Debug)]
14878pub struct SocketGetIpv6MulticastHopsResponder {
14879    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14880    tx_id: u32,
14881}
14882
14883/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14884/// if the responder is dropped without sending a response, so that the client
14885/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14886impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
14887    fn drop(&mut self) {
14888        self.control_handle.shutdown();
14889        // Safety: drops once, never accessed again
14890        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14891    }
14892}
14893
14894impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
14895    type ControlHandle = SocketControlHandle;
14896
14897    fn control_handle(&self) -> &SocketControlHandle {
14898        &self.control_handle
14899    }
14900
14901    fn drop_without_shutdown(mut self) {
14902        // Safety: drops once, never accessed again due to mem::forget
14903        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14904        // Prevent Drop from running (which would shut down the channel)
14905        std::mem::forget(self);
14906    }
14907}
14908
14909impl SocketGetIpv6MulticastHopsResponder {
14910    /// Sends a response to the FIDL transaction.
14911    ///
14912    /// Sets the channel to shutdown if an error occurs.
14913    pub fn send(
14914        self,
14915        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14916    ) -> Result<(), fidl::Error> {
14917        let _result = self.send_raw(result);
14918        if _result.is_err() {
14919            self.control_handle.shutdown();
14920        }
14921        self.drop_without_shutdown();
14922        _result
14923    }
14924
14925    /// Similar to "send" but does not shutdown the channel if an error occurs.
14926    pub fn send_no_shutdown_on_err(
14927        self,
14928        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14929    ) -> Result<(), fidl::Error> {
14930        let _result = self.send_raw(result);
14931        self.drop_without_shutdown();
14932        _result
14933    }
14934
14935    fn send_raw(
14936        &self,
14937        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14938    ) -> Result<(), fidl::Error> {
14939        self.control_handle.inner.send::<fidl::encoding::ResultType<
14940            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
14941            fidl_fuchsia_posix::Errno,
14942        >>(
14943            result.map(|value| (value,)),
14944            self.tx_id,
14945            0x52916948a365012a,
14946            fidl::encoding::DynamicFlags::empty(),
14947        )
14948    }
14949}
14950
14951#[must_use = "FIDL methods require a response to be sent"]
14952#[derive(Debug)]
14953pub struct SocketSetIpv6MulticastLoopbackResponder {
14954    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14955    tx_id: u32,
14956}
14957
14958/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14959/// if the responder is dropped without sending a response, so that the client
14960/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14961impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
14962    fn drop(&mut self) {
14963        self.control_handle.shutdown();
14964        // Safety: drops once, never accessed again
14965        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14966    }
14967}
14968
14969impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
14970    type ControlHandle = SocketControlHandle;
14971
14972    fn control_handle(&self) -> &SocketControlHandle {
14973        &self.control_handle
14974    }
14975
14976    fn drop_without_shutdown(mut self) {
14977        // Safety: drops once, never accessed again due to mem::forget
14978        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14979        // Prevent Drop from running (which would shut down the channel)
14980        std::mem::forget(self);
14981    }
14982}
14983
14984impl SocketSetIpv6MulticastLoopbackResponder {
14985    /// Sends a response to the FIDL transaction.
14986    ///
14987    /// Sets the channel to shutdown if an error occurs.
14988    pub fn send(
14989        self,
14990        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14991    ) -> Result<(), fidl::Error> {
14992        let _result = self.send_raw(result);
14993        if _result.is_err() {
14994            self.control_handle.shutdown();
14995        }
14996        self.drop_without_shutdown();
14997        _result
14998    }
14999
15000    /// Similar to "send" but does not shutdown the channel if an error occurs.
15001    pub fn send_no_shutdown_on_err(
15002        self,
15003        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15004    ) -> Result<(), fidl::Error> {
15005        let _result = self.send_raw(result);
15006        self.drop_without_shutdown();
15007        _result
15008    }
15009
15010    fn send_raw(
15011        &self,
15012        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15013    ) -> Result<(), fidl::Error> {
15014        self.control_handle.inner.send::<fidl::encoding::ResultType<
15015            fidl::encoding::EmptyStruct,
15016            fidl_fuchsia_posix::Errno,
15017        >>(
15018            result,
15019            self.tx_id,
15020            0x55701c409ff41b40,
15021            fidl::encoding::DynamicFlags::empty(),
15022        )
15023    }
15024}
15025
15026#[must_use = "FIDL methods require a response to be sent"]
15027#[derive(Debug)]
15028pub struct SocketGetIpv6MulticastLoopbackResponder {
15029    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15030    tx_id: u32,
15031}
15032
15033/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15034/// if the responder is dropped without sending a response, so that the client
15035/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15036impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
15037    fn drop(&mut self) {
15038        self.control_handle.shutdown();
15039        // Safety: drops once, never accessed again
15040        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15041    }
15042}
15043
15044impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
15045    type ControlHandle = SocketControlHandle;
15046
15047    fn control_handle(&self) -> &SocketControlHandle {
15048        &self.control_handle
15049    }
15050
15051    fn drop_without_shutdown(mut self) {
15052        // Safety: drops once, never accessed again due to mem::forget
15053        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15054        // Prevent Drop from running (which would shut down the channel)
15055        std::mem::forget(self);
15056    }
15057}
15058
15059impl SocketGetIpv6MulticastLoopbackResponder {
15060    /// Sends a response to the FIDL transaction.
15061    ///
15062    /// Sets the channel to shutdown if an error occurs.
15063    pub fn send(
15064        self,
15065        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15066    ) -> Result<(), fidl::Error> {
15067        let _result = self.send_raw(result);
15068        if _result.is_err() {
15069            self.control_handle.shutdown();
15070        }
15071        self.drop_without_shutdown();
15072        _result
15073    }
15074
15075    /// Similar to "send" but does not shutdown the channel if an error occurs.
15076    pub fn send_no_shutdown_on_err(
15077        self,
15078        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15079    ) -> Result<(), fidl::Error> {
15080        let _result = self.send_raw(result);
15081        self.drop_without_shutdown();
15082        _result
15083    }
15084
15085    fn send_raw(
15086        &self,
15087        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15088    ) -> Result<(), fidl::Error> {
15089        self.control_handle.inner.send::<fidl::encoding::ResultType<
15090            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15091            fidl_fuchsia_posix::Errno,
15092        >>(
15093            result.map(|value| (value,)),
15094            self.tx_id,
15095            0x4415b701fde319c3,
15096            fidl::encoding::DynamicFlags::empty(),
15097        )
15098    }
15099}
15100
15101#[must_use = "FIDL methods require a response to be sent"]
15102#[derive(Debug)]
15103pub struct SocketSetIpv6OnlyResponder {
15104    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15105    tx_id: u32,
15106}
15107
15108/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15109/// if the responder is dropped without sending a response, so that the client
15110/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15111impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15112    fn drop(&mut self) {
15113        self.control_handle.shutdown();
15114        // Safety: drops once, never accessed again
15115        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15116    }
15117}
15118
15119impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15120    type ControlHandle = SocketControlHandle;
15121
15122    fn control_handle(&self) -> &SocketControlHandle {
15123        &self.control_handle
15124    }
15125
15126    fn drop_without_shutdown(mut self) {
15127        // Safety: drops once, never accessed again due to mem::forget
15128        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15129        // Prevent Drop from running (which would shut down the channel)
15130        std::mem::forget(self);
15131    }
15132}
15133
15134impl SocketSetIpv6OnlyResponder {
15135    /// Sends a response to the FIDL transaction.
15136    ///
15137    /// Sets the channel to shutdown if an error occurs.
15138    pub fn send(
15139        self,
15140        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15141    ) -> Result<(), fidl::Error> {
15142        let _result = self.send_raw(result);
15143        if _result.is_err() {
15144            self.control_handle.shutdown();
15145        }
15146        self.drop_without_shutdown();
15147        _result
15148    }
15149
15150    /// Similar to "send" but does not shutdown the channel if an error occurs.
15151    pub fn send_no_shutdown_on_err(
15152        self,
15153        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15154    ) -> Result<(), fidl::Error> {
15155        let _result = self.send_raw(result);
15156        self.drop_without_shutdown();
15157        _result
15158    }
15159
15160    fn send_raw(
15161        &self,
15162        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15163    ) -> Result<(), fidl::Error> {
15164        self.control_handle.inner.send::<fidl::encoding::ResultType<
15165            fidl::encoding::EmptyStruct,
15166            fidl_fuchsia_posix::Errno,
15167        >>(
15168            result,
15169            self.tx_id,
15170            0x4873f1364758cbba,
15171            fidl::encoding::DynamicFlags::empty(),
15172        )
15173    }
15174}
15175
15176#[must_use = "FIDL methods require a response to be sent"]
15177#[derive(Debug)]
15178pub struct SocketGetIpv6OnlyResponder {
15179    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15180    tx_id: u32,
15181}
15182
15183/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15184/// if the responder is dropped without sending a response, so that the client
15185/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15186impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15187    fn drop(&mut self) {
15188        self.control_handle.shutdown();
15189        // Safety: drops once, never accessed again
15190        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15191    }
15192}
15193
15194impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15195    type ControlHandle = SocketControlHandle;
15196
15197    fn control_handle(&self) -> &SocketControlHandle {
15198        &self.control_handle
15199    }
15200
15201    fn drop_without_shutdown(mut self) {
15202        // Safety: drops once, never accessed again due to mem::forget
15203        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15204        // Prevent Drop from running (which would shut down the channel)
15205        std::mem::forget(self);
15206    }
15207}
15208
15209impl SocketGetIpv6OnlyResponder {
15210    /// Sends a response to the FIDL transaction.
15211    ///
15212    /// Sets the channel to shutdown if an error occurs.
15213    pub fn send(
15214        self,
15215        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15216    ) -> Result<(), fidl::Error> {
15217        let _result = self.send_raw(result);
15218        if _result.is_err() {
15219            self.control_handle.shutdown();
15220        }
15221        self.drop_without_shutdown();
15222        _result
15223    }
15224
15225    /// Similar to "send" but does not shutdown the channel if an error occurs.
15226    pub fn send_no_shutdown_on_err(
15227        self,
15228        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15229    ) -> Result<(), fidl::Error> {
15230        let _result = self.send_raw(result);
15231        self.drop_without_shutdown();
15232        _result
15233    }
15234
15235    fn send_raw(
15236        &self,
15237        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15238    ) -> Result<(), fidl::Error> {
15239        self.control_handle.inner.send::<fidl::encoding::ResultType<
15240            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15241            fidl_fuchsia_posix::Errno,
15242        >>(
15243            result.map(|value| (value,)),
15244            self.tx_id,
15245            0x4aa3340a1a26b89c,
15246            fidl::encoding::DynamicFlags::empty(),
15247        )
15248    }
15249}
15250
15251#[must_use = "FIDL methods require a response to be sent"]
15252#[derive(Debug)]
15253pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15254    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15255    tx_id: u32,
15256}
15257
15258/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15259/// if the responder is dropped without sending a response, so that the client
15260/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15261impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15262    fn drop(&mut self) {
15263        self.control_handle.shutdown();
15264        // Safety: drops once, never accessed again
15265        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15266    }
15267}
15268
15269impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15270    type ControlHandle = SocketControlHandle;
15271
15272    fn control_handle(&self) -> &SocketControlHandle {
15273        &self.control_handle
15274    }
15275
15276    fn drop_without_shutdown(mut self) {
15277        // Safety: drops once, never accessed again due to mem::forget
15278        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15279        // Prevent Drop from running (which would shut down the channel)
15280        std::mem::forget(self);
15281    }
15282}
15283
15284impl SocketSetIpv6ReceiveTrafficClassResponder {
15285    /// Sends a response to the FIDL transaction.
15286    ///
15287    /// Sets the channel to shutdown if an error occurs.
15288    pub fn send(
15289        self,
15290        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15291    ) -> Result<(), fidl::Error> {
15292        let _result = self.send_raw(result);
15293        if _result.is_err() {
15294            self.control_handle.shutdown();
15295        }
15296        self.drop_without_shutdown();
15297        _result
15298    }
15299
15300    /// Similar to "send" but does not shutdown the channel if an error occurs.
15301    pub fn send_no_shutdown_on_err(
15302        self,
15303        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15304    ) -> Result<(), fidl::Error> {
15305        let _result = self.send_raw(result);
15306        self.drop_without_shutdown();
15307        _result
15308    }
15309
15310    fn send_raw(
15311        &self,
15312        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15313    ) -> Result<(), fidl::Error> {
15314        self.control_handle.inner.send::<fidl::encoding::ResultType<
15315            fidl::encoding::EmptyStruct,
15316            fidl_fuchsia_posix::Errno,
15317        >>(
15318            result,
15319            self.tx_id,
15320            0x58f07c8788d099a0,
15321            fidl::encoding::DynamicFlags::empty(),
15322        )
15323    }
15324}
15325
15326#[must_use = "FIDL methods require a response to be sent"]
15327#[derive(Debug)]
15328pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15329    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15330    tx_id: u32,
15331}
15332
15333/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15334/// if the responder is dropped without sending a response, so that the client
15335/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15336impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15337    fn drop(&mut self) {
15338        self.control_handle.shutdown();
15339        // Safety: drops once, never accessed again
15340        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15341    }
15342}
15343
15344impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15345    type ControlHandle = SocketControlHandle;
15346
15347    fn control_handle(&self) -> &SocketControlHandle {
15348        &self.control_handle
15349    }
15350
15351    fn drop_without_shutdown(mut self) {
15352        // Safety: drops once, never accessed again due to mem::forget
15353        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15354        // Prevent Drop from running (which would shut down the channel)
15355        std::mem::forget(self);
15356    }
15357}
15358
15359impl SocketGetIpv6ReceiveTrafficClassResponder {
15360    /// Sends a response to the FIDL transaction.
15361    ///
15362    /// Sets the channel to shutdown if an error occurs.
15363    pub fn send(
15364        self,
15365        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15366    ) -> Result<(), fidl::Error> {
15367        let _result = self.send_raw(result);
15368        if _result.is_err() {
15369            self.control_handle.shutdown();
15370        }
15371        self.drop_without_shutdown();
15372        _result
15373    }
15374
15375    /// Similar to "send" but does not shutdown the channel if an error occurs.
15376    pub fn send_no_shutdown_on_err(
15377        self,
15378        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15379    ) -> Result<(), fidl::Error> {
15380        let _result = self.send_raw(result);
15381        self.drop_without_shutdown();
15382        _result
15383    }
15384
15385    fn send_raw(
15386        &self,
15387        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15388    ) -> Result<(), fidl::Error> {
15389        self.control_handle.inner.send::<fidl::encoding::ResultType<
15390            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15391            fidl_fuchsia_posix::Errno,
15392        >>(
15393            result.map(|value| (value,)),
15394            self.tx_id,
15395            0x2e334df1da553ffa,
15396            fidl::encoding::DynamicFlags::empty(),
15397        )
15398    }
15399}
15400
15401#[must_use = "FIDL methods require a response to be sent"]
15402#[derive(Debug)]
15403pub struct SocketSetIpv6TrafficClassResponder {
15404    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15405    tx_id: u32,
15406}
15407
15408/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15409/// if the responder is dropped without sending a response, so that the client
15410/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15411impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15412    fn drop(&mut self) {
15413        self.control_handle.shutdown();
15414        // Safety: drops once, never accessed again
15415        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15416    }
15417}
15418
15419impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15420    type ControlHandle = SocketControlHandle;
15421
15422    fn control_handle(&self) -> &SocketControlHandle {
15423        &self.control_handle
15424    }
15425
15426    fn drop_without_shutdown(mut self) {
15427        // Safety: drops once, never accessed again due to mem::forget
15428        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15429        // Prevent Drop from running (which would shut down the channel)
15430        std::mem::forget(self);
15431    }
15432}
15433
15434impl SocketSetIpv6TrafficClassResponder {
15435    /// Sends a response to the FIDL transaction.
15436    ///
15437    /// Sets the channel to shutdown if an error occurs.
15438    pub fn send(
15439        self,
15440        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15441    ) -> Result<(), fidl::Error> {
15442        let _result = self.send_raw(result);
15443        if _result.is_err() {
15444            self.control_handle.shutdown();
15445        }
15446        self.drop_without_shutdown();
15447        _result
15448    }
15449
15450    /// Similar to "send" but does not shutdown the channel if an error occurs.
15451    pub fn send_no_shutdown_on_err(
15452        self,
15453        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15454    ) -> Result<(), fidl::Error> {
15455        let _result = self.send_raw(result);
15456        self.drop_without_shutdown();
15457        _result
15458    }
15459
15460    fn send_raw(
15461        &self,
15462        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15463    ) -> Result<(), fidl::Error> {
15464        self.control_handle.inner.send::<fidl::encoding::ResultType<
15465            fidl::encoding::EmptyStruct,
15466            fidl_fuchsia_posix::Errno,
15467        >>(
15468            result,
15469            self.tx_id,
15470            0x6af077800c5a0b4f,
15471            fidl::encoding::DynamicFlags::empty(),
15472        )
15473    }
15474}
15475
15476#[must_use = "FIDL methods require a response to be sent"]
15477#[derive(Debug)]
15478pub struct SocketGetIpv6TrafficClassResponder {
15479    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15480    tx_id: u32,
15481}
15482
15483/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15484/// if the responder is dropped without sending a response, so that the client
15485/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15486impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15487    fn drop(&mut self) {
15488        self.control_handle.shutdown();
15489        // Safety: drops once, never accessed again
15490        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15491    }
15492}
15493
15494impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15495    type ControlHandle = SocketControlHandle;
15496
15497    fn control_handle(&self) -> &SocketControlHandle {
15498        &self.control_handle
15499    }
15500
15501    fn drop_without_shutdown(mut self) {
15502        // Safety: drops once, never accessed again due to mem::forget
15503        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15504        // Prevent Drop from running (which would shut down the channel)
15505        std::mem::forget(self);
15506    }
15507}
15508
15509impl SocketGetIpv6TrafficClassResponder {
15510    /// Sends a response to the FIDL transaction.
15511    ///
15512    /// Sets the channel to shutdown if an error occurs.
15513    pub fn send(
15514        self,
15515        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15516    ) -> Result<(), fidl::Error> {
15517        let _result = self.send_raw(result);
15518        if _result.is_err() {
15519            self.control_handle.shutdown();
15520        }
15521        self.drop_without_shutdown();
15522        _result
15523    }
15524
15525    /// Similar to "send" but does not shutdown the channel if an error occurs.
15526    pub fn send_no_shutdown_on_err(
15527        self,
15528        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15529    ) -> Result<(), fidl::Error> {
15530        let _result = self.send_raw(result);
15531        self.drop_without_shutdown();
15532        _result
15533    }
15534
15535    fn send_raw(
15536        &self,
15537        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15538    ) -> Result<(), fidl::Error> {
15539        self.control_handle.inner.send::<fidl::encoding::ResultType<
15540            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15541            fidl_fuchsia_posix::Errno,
15542        >>(
15543            result.map(|value| (value,)),
15544            self.tx_id,
15545            0x6baf6eed8fc2f04,
15546            fidl::encoding::DynamicFlags::empty(),
15547        )
15548    }
15549}
15550
15551#[must_use = "FIDL methods require a response to be sent"]
15552#[derive(Debug)]
15553pub struct SocketSetIpv6ReceivePacketInfoResponder {
15554    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15555    tx_id: u32,
15556}
15557
15558/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15559/// if the responder is dropped without sending a response, so that the client
15560/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15561impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15562    fn drop(&mut self) {
15563        self.control_handle.shutdown();
15564        // Safety: drops once, never accessed again
15565        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15566    }
15567}
15568
15569impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15570    type ControlHandle = SocketControlHandle;
15571
15572    fn control_handle(&self) -> &SocketControlHandle {
15573        &self.control_handle
15574    }
15575
15576    fn drop_without_shutdown(mut self) {
15577        // Safety: drops once, never accessed again due to mem::forget
15578        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15579        // Prevent Drop from running (which would shut down the channel)
15580        std::mem::forget(self);
15581    }
15582}
15583
15584impl SocketSetIpv6ReceivePacketInfoResponder {
15585    /// Sends a response to the FIDL transaction.
15586    ///
15587    /// Sets the channel to shutdown if an error occurs.
15588    pub fn send(
15589        self,
15590        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15591    ) -> Result<(), fidl::Error> {
15592        let _result = self.send_raw(result);
15593        if _result.is_err() {
15594            self.control_handle.shutdown();
15595        }
15596        self.drop_without_shutdown();
15597        _result
15598    }
15599
15600    /// Similar to "send" but does not shutdown the channel if an error occurs.
15601    pub fn send_no_shutdown_on_err(
15602        self,
15603        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15604    ) -> Result<(), fidl::Error> {
15605        let _result = self.send_raw(result);
15606        self.drop_without_shutdown();
15607        _result
15608    }
15609
15610    fn send_raw(
15611        &self,
15612        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15613    ) -> Result<(), fidl::Error> {
15614        self.control_handle.inner.send::<fidl::encoding::ResultType<
15615            fidl::encoding::EmptyStruct,
15616            fidl_fuchsia_posix::Errno,
15617        >>(
15618            result,
15619            self.tx_id,
15620            0x19259775b1a92768,
15621            fidl::encoding::DynamicFlags::empty(),
15622        )
15623    }
15624}
15625
15626#[must_use = "FIDL methods require a response to be sent"]
15627#[derive(Debug)]
15628pub struct SocketGetIpv6ReceivePacketInfoResponder {
15629    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15630    tx_id: u32,
15631}
15632
15633/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15634/// if the responder is dropped without sending a response, so that the client
15635/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15636impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15637    fn drop(&mut self) {
15638        self.control_handle.shutdown();
15639        // Safety: drops once, never accessed again
15640        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15641    }
15642}
15643
15644impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15645    type ControlHandle = SocketControlHandle;
15646
15647    fn control_handle(&self) -> &SocketControlHandle {
15648        &self.control_handle
15649    }
15650
15651    fn drop_without_shutdown(mut self) {
15652        // Safety: drops once, never accessed again due to mem::forget
15653        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15654        // Prevent Drop from running (which would shut down the channel)
15655        std::mem::forget(self);
15656    }
15657}
15658
15659impl SocketGetIpv6ReceivePacketInfoResponder {
15660    /// Sends a response to the FIDL transaction.
15661    ///
15662    /// Sets the channel to shutdown if an error occurs.
15663    pub fn send(
15664        self,
15665        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15666    ) -> Result<(), fidl::Error> {
15667        let _result = self.send_raw(result);
15668        if _result.is_err() {
15669            self.control_handle.shutdown();
15670        }
15671        self.drop_without_shutdown();
15672        _result
15673    }
15674
15675    /// Similar to "send" but does not shutdown the channel if an error occurs.
15676    pub fn send_no_shutdown_on_err(
15677        self,
15678        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15679    ) -> Result<(), fidl::Error> {
15680        let _result = self.send_raw(result);
15681        self.drop_without_shutdown();
15682        _result
15683    }
15684
15685    fn send_raw(
15686        &self,
15687        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15688    ) -> Result<(), fidl::Error> {
15689        self.control_handle.inner.send::<fidl::encoding::ResultType<
15690            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15691            fidl_fuchsia_posix::Errno,
15692        >>(
15693            result.map(|value| (value,)),
15694            self.tx_id,
15695            0x7acd4a2775baec75,
15696            fidl::encoding::DynamicFlags::empty(),
15697        )
15698    }
15699}
15700
15701#[must_use = "FIDL methods require a response to be sent"]
15702#[derive(Debug)]
15703pub struct SocketGetOriginalDestinationResponder {
15704    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15705    tx_id: u32,
15706}
15707
15708/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15709/// if the responder is dropped without sending a response, so that the client
15710/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15711impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15712    fn drop(&mut self) {
15713        self.control_handle.shutdown();
15714        // Safety: drops once, never accessed again
15715        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15716    }
15717}
15718
15719impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15720    type ControlHandle = SocketControlHandle;
15721
15722    fn control_handle(&self) -> &SocketControlHandle {
15723        &self.control_handle
15724    }
15725
15726    fn drop_without_shutdown(mut self) {
15727        // Safety: drops once, never accessed again due to mem::forget
15728        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15729        // Prevent Drop from running (which would shut down the channel)
15730        std::mem::forget(self);
15731    }
15732}
15733
15734impl SocketGetOriginalDestinationResponder {
15735    /// Sends a response to the FIDL transaction.
15736    ///
15737    /// Sets the channel to shutdown if an error occurs.
15738    pub fn send(
15739        self,
15740        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15741    ) -> Result<(), fidl::Error> {
15742        let _result = self.send_raw(result);
15743        if _result.is_err() {
15744            self.control_handle.shutdown();
15745        }
15746        self.drop_without_shutdown();
15747        _result
15748    }
15749
15750    /// Similar to "send" but does not shutdown the channel if an error occurs.
15751    pub fn send_no_shutdown_on_err(
15752        self,
15753        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15754    ) -> Result<(), fidl::Error> {
15755        let _result = self.send_raw(result);
15756        self.drop_without_shutdown();
15757        _result
15758    }
15759
15760    fn send_raw(
15761        &self,
15762        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15763    ) -> Result<(), fidl::Error> {
15764        self.control_handle.inner.send::<fidl::encoding::ResultType<
15765            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
15766            fidl_fuchsia_posix::Errno,
15767        >>(
15768            result.map(|value| (value,)),
15769            self.tx_id,
15770            0x38bf28f0dafdbac0,
15771            fidl::encoding::DynamicFlags::empty(),
15772        )
15773    }
15774}
15775
15776#[must_use = "FIDL methods require a response to be sent"]
15777#[derive(Debug)]
15778pub struct SocketDescribeResponder {
15779    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15780    tx_id: u32,
15781}
15782
15783/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15784/// if the responder is dropped without sending a response, so that the client
15785/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15786impl std::ops::Drop for SocketDescribeResponder {
15787    fn drop(&mut self) {
15788        self.control_handle.shutdown();
15789        // Safety: drops once, never accessed again
15790        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15791    }
15792}
15793
15794impl fidl::endpoints::Responder for SocketDescribeResponder {
15795    type ControlHandle = SocketControlHandle;
15796
15797    fn control_handle(&self) -> &SocketControlHandle {
15798        &self.control_handle
15799    }
15800
15801    fn drop_without_shutdown(mut self) {
15802        // Safety: drops once, never accessed again due to mem::forget
15803        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15804        // Prevent Drop from running (which would shut down the channel)
15805        std::mem::forget(self);
15806    }
15807}
15808
15809impl SocketDescribeResponder {
15810    /// Sends a response to the FIDL transaction.
15811    ///
15812    /// Sets the channel to shutdown if an error occurs.
15813    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15814        let _result = self.send_raw(payload);
15815        if _result.is_err() {
15816            self.control_handle.shutdown();
15817        }
15818        self.drop_without_shutdown();
15819        _result
15820    }
15821
15822    /// Similar to "send" but does not shutdown the channel if an error occurs.
15823    pub fn send_no_shutdown_on_err(
15824        self,
15825        mut payload: SocketDescribeResponse,
15826    ) -> Result<(), fidl::Error> {
15827        let _result = self.send_raw(payload);
15828        self.drop_without_shutdown();
15829        _result
15830    }
15831
15832    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15833        self.control_handle.inner.send::<SocketDescribeResponse>(
15834            &mut payload,
15835            self.tx_id,
15836            0x335706eccf54a135,
15837            fidl::encoding::DynamicFlags::empty(),
15838        )
15839    }
15840}
15841
15842#[must_use = "FIDL methods require a response to be sent"]
15843#[derive(Debug)]
15844pub struct SocketRecvMsgResponder {
15845    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15846    tx_id: u32,
15847}
15848
15849/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15850/// if the responder is dropped without sending a response, so that the client
15851/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15852impl std::ops::Drop for SocketRecvMsgResponder {
15853    fn drop(&mut self) {
15854        self.control_handle.shutdown();
15855        // Safety: drops once, never accessed again
15856        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15857    }
15858}
15859
15860impl fidl::endpoints::Responder for SocketRecvMsgResponder {
15861    type ControlHandle = SocketControlHandle;
15862
15863    fn control_handle(&self) -> &SocketControlHandle {
15864        &self.control_handle
15865    }
15866
15867    fn drop_without_shutdown(mut self) {
15868        // Safety: drops once, never accessed again due to mem::forget
15869        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15870        // Prevent Drop from running (which would shut down the channel)
15871        std::mem::forget(self);
15872    }
15873}
15874
15875impl SocketRecvMsgResponder {
15876    /// Sends a response to the FIDL transaction.
15877    ///
15878    /// Sets the channel to shutdown if an error occurs.
15879    pub fn send(
15880        self,
15881        mut result: Result<
15882            (
15883                Option<&fidl_fuchsia_net::SocketAddress>,
15884                &[u8],
15885                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
15886                u32,
15887            ),
15888            fidl_fuchsia_posix::Errno,
15889        >,
15890    ) -> Result<(), fidl::Error> {
15891        let _result = self.send_raw(result);
15892        if _result.is_err() {
15893            self.control_handle.shutdown();
15894        }
15895        self.drop_without_shutdown();
15896        _result
15897    }
15898
15899    /// Similar to "send" but does not shutdown the channel if an error occurs.
15900    pub fn send_no_shutdown_on_err(
15901        self,
15902        mut result: Result<
15903            (
15904                Option<&fidl_fuchsia_net::SocketAddress>,
15905                &[u8],
15906                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
15907                u32,
15908            ),
15909            fidl_fuchsia_posix::Errno,
15910        >,
15911    ) -> Result<(), fidl::Error> {
15912        let _result = self.send_raw(result);
15913        self.drop_without_shutdown();
15914        _result
15915    }
15916
15917    fn send_raw(
15918        &self,
15919        mut result: Result<
15920            (
15921                Option<&fidl_fuchsia_net::SocketAddress>,
15922                &[u8],
15923                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
15924                u32,
15925            ),
15926            fidl_fuchsia_posix::Errno,
15927        >,
15928    ) -> Result<(), fidl::Error> {
15929        self.control_handle.inner.send::<fidl::encoding::ResultType<
15930            SocketRecvMsgResponse,
15931            fidl_fuchsia_posix::Errno,
15932        >>(
15933            result,
15934            self.tx_id,
15935            0x1dfb695351d3aa1d,
15936            fidl::encoding::DynamicFlags::empty(),
15937        )
15938    }
15939}
15940
15941#[must_use = "FIDL methods require a response to be sent"]
15942#[derive(Debug)]
15943pub struct SocketSendMsgResponder {
15944    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15945    tx_id: u32,
15946}
15947
15948/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15949/// if the responder is dropped without sending a response, so that the client
15950/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15951impl std::ops::Drop for SocketSendMsgResponder {
15952    fn drop(&mut self) {
15953        self.control_handle.shutdown();
15954        // Safety: drops once, never accessed again
15955        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15956    }
15957}
15958
15959impl fidl::endpoints::Responder for SocketSendMsgResponder {
15960    type ControlHandle = SocketControlHandle;
15961
15962    fn control_handle(&self) -> &SocketControlHandle {
15963        &self.control_handle
15964    }
15965
15966    fn drop_without_shutdown(mut self) {
15967        // Safety: drops once, never accessed again due to mem::forget
15968        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15969        // Prevent Drop from running (which would shut down the channel)
15970        std::mem::forget(self);
15971    }
15972}
15973
15974impl SocketSendMsgResponder {
15975    /// Sends a response to the FIDL transaction.
15976    ///
15977    /// Sets the channel to shutdown if an error occurs.
15978    pub fn send(
15979        self,
15980        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15981    ) -> Result<(), fidl::Error> {
15982        let _result = self.send_raw(result);
15983        if _result.is_err() {
15984            self.control_handle.shutdown();
15985        }
15986        self.drop_without_shutdown();
15987        _result
15988    }
15989
15990    /// Similar to "send" but does not shutdown the channel if an error occurs.
15991    pub fn send_no_shutdown_on_err(
15992        self,
15993        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15994    ) -> Result<(), fidl::Error> {
15995        let _result = self.send_raw(result);
15996        self.drop_without_shutdown();
15997        _result
15998    }
15999
16000    fn send_raw(
16001        &self,
16002        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16003    ) -> Result<(), fidl::Error> {
16004        self.control_handle.inner.send::<fidl::encoding::ResultType<
16005            fidl::encoding::EmptyStruct,
16006            fidl_fuchsia_posix::Errno,
16007        >>(
16008            result,
16009            self.tx_id,
16010            0x2cf1eac9a7fc8958,
16011            fidl::encoding::DynamicFlags::empty(),
16012        )
16013    }
16014}
16015
16016#[must_use = "FIDL methods require a response to be sent"]
16017#[derive(Debug)]
16018pub struct SocketGetInfoResponder {
16019    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16020    tx_id: u32,
16021}
16022
16023/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16024/// if the responder is dropped without sending a response, so that the client
16025/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16026impl std::ops::Drop for SocketGetInfoResponder {
16027    fn drop(&mut self) {
16028        self.control_handle.shutdown();
16029        // Safety: drops once, never accessed again
16030        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16031    }
16032}
16033
16034impl fidl::endpoints::Responder for SocketGetInfoResponder {
16035    type ControlHandle = SocketControlHandle;
16036
16037    fn control_handle(&self) -> &SocketControlHandle {
16038        &self.control_handle
16039    }
16040
16041    fn drop_without_shutdown(mut self) {
16042        // Safety: drops once, never accessed again due to mem::forget
16043        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16044        // Prevent Drop from running (which would shut down the channel)
16045        std::mem::forget(self);
16046    }
16047}
16048
16049impl SocketGetInfoResponder {
16050    /// Sends a response to the FIDL transaction.
16051    ///
16052    /// Sets the channel to shutdown if an error occurs.
16053    pub fn send(
16054        self,
16055        mut result: Result<
16056            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16057            fidl_fuchsia_posix::Errno,
16058        >,
16059    ) -> Result<(), fidl::Error> {
16060        let _result = self.send_raw(result);
16061        if _result.is_err() {
16062            self.control_handle.shutdown();
16063        }
16064        self.drop_without_shutdown();
16065        _result
16066    }
16067
16068    /// Similar to "send" but does not shutdown the channel if an error occurs.
16069    pub fn send_no_shutdown_on_err(
16070        self,
16071        mut result: Result<
16072            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16073            fidl_fuchsia_posix::Errno,
16074        >,
16075    ) -> Result<(), fidl::Error> {
16076        let _result = self.send_raw(result);
16077        self.drop_without_shutdown();
16078        _result
16079    }
16080
16081    fn send_raw(
16082        &self,
16083        mut result: Result<
16084            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16085            fidl_fuchsia_posix::Errno,
16086        >,
16087    ) -> Result<(), fidl::Error> {
16088        self.control_handle.inner.send::<fidl::encoding::ResultType<
16089            SocketGetInfoResponse,
16090            fidl_fuchsia_posix::Errno,
16091        >>(
16092            result,
16093            self.tx_id,
16094            0x39676f75aec339ba,
16095            fidl::encoding::DynamicFlags::empty(),
16096        )
16097    }
16098}
16099
16100#[must_use = "FIDL methods require a response to be sent"]
16101#[derive(Debug)]
16102pub struct SocketSetIpHeaderIncludedResponder {
16103    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16104    tx_id: u32,
16105}
16106
16107/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16108/// if the responder is dropped without sending a response, so that the client
16109/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16110impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16111    fn drop(&mut self) {
16112        self.control_handle.shutdown();
16113        // Safety: drops once, never accessed again
16114        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16115    }
16116}
16117
16118impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16119    type ControlHandle = SocketControlHandle;
16120
16121    fn control_handle(&self) -> &SocketControlHandle {
16122        &self.control_handle
16123    }
16124
16125    fn drop_without_shutdown(mut self) {
16126        // Safety: drops once, never accessed again due to mem::forget
16127        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16128        // Prevent Drop from running (which would shut down the channel)
16129        std::mem::forget(self);
16130    }
16131}
16132
16133impl SocketSetIpHeaderIncludedResponder {
16134    /// Sends a response to the FIDL transaction.
16135    ///
16136    /// Sets the channel to shutdown if an error occurs.
16137    pub fn send(
16138        self,
16139        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16140    ) -> Result<(), fidl::Error> {
16141        let _result = self.send_raw(result);
16142        if _result.is_err() {
16143            self.control_handle.shutdown();
16144        }
16145        self.drop_without_shutdown();
16146        _result
16147    }
16148
16149    /// Similar to "send" but does not shutdown the channel if an error occurs.
16150    pub fn send_no_shutdown_on_err(
16151        self,
16152        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16153    ) -> Result<(), fidl::Error> {
16154        let _result = self.send_raw(result);
16155        self.drop_without_shutdown();
16156        _result
16157    }
16158
16159    fn send_raw(
16160        &self,
16161        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16162    ) -> Result<(), fidl::Error> {
16163        self.control_handle.inner.send::<fidl::encoding::ResultType<
16164            fidl::encoding::EmptyStruct,
16165            fidl_fuchsia_posix::Errno,
16166        >>(
16167            result,
16168            self.tx_id,
16169            0x5d06a606d95e8f3,
16170            fidl::encoding::DynamicFlags::empty(),
16171        )
16172    }
16173}
16174
16175#[must_use = "FIDL methods require a response to be sent"]
16176#[derive(Debug)]
16177pub struct SocketGetIpHeaderIncludedResponder {
16178    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16179    tx_id: u32,
16180}
16181
16182/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16183/// if the responder is dropped without sending a response, so that the client
16184/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16185impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16186    fn drop(&mut self) {
16187        self.control_handle.shutdown();
16188        // Safety: drops once, never accessed again
16189        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16190    }
16191}
16192
16193impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16194    type ControlHandle = SocketControlHandle;
16195
16196    fn control_handle(&self) -> &SocketControlHandle {
16197        &self.control_handle
16198    }
16199
16200    fn drop_without_shutdown(mut self) {
16201        // Safety: drops once, never accessed again due to mem::forget
16202        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16203        // Prevent Drop from running (which would shut down the channel)
16204        std::mem::forget(self);
16205    }
16206}
16207
16208impl SocketGetIpHeaderIncludedResponder {
16209    /// Sends a response to the FIDL transaction.
16210    ///
16211    /// Sets the channel to shutdown if an error occurs.
16212    pub fn send(
16213        self,
16214        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16215    ) -> Result<(), fidl::Error> {
16216        let _result = self.send_raw(result);
16217        if _result.is_err() {
16218            self.control_handle.shutdown();
16219        }
16220        self.drop_without_shutdown();
16221        _result
16222    }
16223
16224    /// Similar to "send" but does not shutdown the channel if an error occurs.
16225    pub fn send_no_shutdown_on_err(
16226        self,
16227        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16228    ) -> Result<(), fidl::Error> {
16229        let _result = self.send_raw(result);
16230        self.drop_without_shutdown();
16231        _result
16232    }
16233
16234    fn send_raw(
16235        &self,
16236        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16237    ) -> Result<(), fidl::Error> {
16238        self.control_handle.inner.send::<fidl::encoding::ResultType<
16239            SocketGetIpHeaderIncludedResponse,
16240            fidl_fuchsia_posix::Errno,
16241        >>(
16242            result.map(|value| (value,)),
16243            self.tx_id,
16244            0x76125ad1f4d175f6,
16245            fidl::encoding::DynamicFlags::empty(),
16246        )
16247    }
16248}
16249
16250#[must_use = "FIDL methods require a response to be sent"]
16251#[derive(Debug)]
16252pub struct SocketSetIcmpv6FilterResponder {
16253    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16254    tx_id: u32,
16255}
16256
16257/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16258/// if the responder is dropped without sending a response, so that the client
16259/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16260impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16261    fn drop(&mut self) {
16262        self.control_handle.shutdown();
16263        // Safety: drops once, never accessed again
16264        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16265    }
16266}
16267
16268impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16269    type ControlHandle = SocketControlHandle;
16270
16271    fn control_handle(&self) -> &SocketControlHandle {
16272        &self.control_handle
16273    }
16274
16275    fn drop_without_shutdown(mut self) {
16276        // Safety: drops once, never accessed again due to mem::forget
16277        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16278        // Prevent Drop from running (which would shut down the channel)
16279        std::mem::forget(self);
16280    }
16281}
16282
16283impl SocketSetIcmpv6FilterResponder {
16284    /// Sends a response to the FIDL transaction.
16285    ///
16286    /// Sets the channel to shutdown if an error occurs.
16287    pub fn send(
16288        self,
16289        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16290    ) -> Result<(), fidl::Error> {
16291        let _result = self.send_raw(result);
16292        if _result.is_err() {
16293            self.control_handle.shutdown();
16294        }
16295        self.drop_without_shutdown();
16296        _result
16297    }
16298
16299    /// Similar to "send" but does not shutdown the channel if an error occurs.
16300    pub fn send_no_shutdown_on_err(
16301        self,
16302        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16303    ) -> Result<(), fidl::Error> {
16304        let _result = self.send_raw(result);
16305        self.drop_without_shutdown();
16306        _result
16307    }
16308
16309    fn send_raw(
16310        &self,
16311        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16312    ) -> Result<(), fidl::Error> {
16313        self.control_handle.inner.send::<fidl::encoding::ResultType<
16314            fidl::encoding::EmptyStruct,
16315            fidl_fuchsia_posix::Errno,
16316        >>(
16317            result,
16318            self.tx_id,
16319            0x4ebea92a43ae68a9,
16320            fidl::encoding::DynamicFlags::empty(),
16321        )
16322    }
16323}
16324
16325#[must_use = "FIDL methods require a response to be sent"]
16326#[derive(Debug)]
16327pub struct SocketGetIcmpv6FilterResponder {
16328    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16329    tx_id: u32,
16330}
16331
16332/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16333/// if the responder is dropped without sending a response, so that the client
16334/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16335impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16336    fn drop(&mut self) {
16337        self.control_handle.shutdown();
16338        // Safety: drops once, never accessed again
16339        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16340    }
16341}
16342
16343impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16344    type ControlHandle = SocketControlHandle;
16345
16346    fn control_handle(&self) -> &SocketControlHandle {
16347        &self.control_handle
16348    }
16349
16350    fn drop_without_shutdown(mut self) {
16351        // Safety: drops once, never accessed again due to mem::forget
16352        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16353        // Prevent Drop from running (which would shut down the channel)
16354        std::mem::forget(self);
16355    }
16356}
16357
16358impl SocketGetIcmpv6FilterResponder {
16359    /// Sends a response to the FIDL transaction.
16360    ///
16361    /// Sets the channel to shutdown if an error occurs.
16362    pub fn send(
16363        self,
16364        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16365    ) -> Result<(), fidl::Error> {
16366        let _result = self.send_raw(result);
16367        if _result.is_err() {
16368            self.control_handle.shutdown();
16369        }
16370        self.drop_without_shutdown();
16371        _result
16372    }
16373
16374    /// Similar to "send" but does not shutdown the channel if an error occurs.
16375    pub fn send_no_shutdown_on_err(
16376        self,
16377        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16378    ) -> Result<(), fidl::Error> {
16379        let _result = self.send_raw(result);
16380        self.drop_without_shutdown();
16381        _result
16382    }
16383
16384    fn send_raw(
16385        &self,
16386        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16387    ) -> Result<(), fidl::Error> {
16388        self.control_handle.inner.send::<fidl::encoding::ResultType<
16389            SocketGetIcmpv6FilterResponse,
16390            fidl_fuchsia_posix::Errno,
16391        >>(
16392            result.map(|filter| (filter,)),
16393            self.tx_id,
16394            0x43bd4f3bc0970ace,
16395            fidl::encoding::DynamicFlags::empty(),
16396        )
16397    }
16398}
16399
16400#[must_use = "FIDL methods require a response to be sent"]
16401#[derive(Debug)]
16402pub struct SocketSetIpv6ChecksumResponder {
16403    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16404    tx_id: u32,
16405}
16406
16407/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16408/// if the responder is dropped without sending a response, so that the client
16409/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16410impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16411    fn drop(&mut self) {
16412        self.control_handle.shutdown();
16413        // Safety: drops once, never accessed again
16414        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16415    }
16416}
16417
16418impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16419    type ControlHandle = SocketControlHandle;
16420
16421    fn control_handle(&self) -> &SocketControlHandle {
16422        &self.control_handle
16423    }
16424
16425    fn drop_without_shutdown(mut self) {
16426        // Safety: drops once, never accessed again due to mem::forget
16427        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16428        // Prevent Drop from running (which would shut down the channel)
16429        std::mem::forget(self);
16430    }
16431}
16432
16433impl SocketSetIpv6ChecksumResponder {
16434    /// Sends a response to the FIDL transaction.
16435    ///
16436    /// Sets the channel to shutdown if an error occurs.
16437    pub fn send(
16438        self,
16439        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16440    ) -> Result<(), fidl::Error> {
16441        let _result = self.send_raw(result);
16442        if _result.is_err() {
16443            self.control_handle.shutdown();
16444        }
16445        self.drop_without_shutdown();
16446        _result
16447    }
16448
16449    /// Similar to "send" but does not shutdown the channel if an error occurs.
16450    pub fn send_no_shutdown_on_err(
16451        self,
16452        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16453    ) -> Result<(), fidl::Error> {
16454        let _result = self.send_raw(result);
16455        self.drop_without_shutdown();
16456        _result
16457    }
16458
16459    fn send_raw(
16460        &self,
16461        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16462    ) -> Result<(), fidl::Error> {
16463        self.control_handle.inner.send::<fidl::encoding::ResultType<
16464            fidl::encoding::EmptyStruct,
16465            fidl_fuchsia_posix::Errno,
16466        >>(
16467            result,
16468            self.tx_id,
16469            0x18b7809577199cb4,
16470            fidl::encoding::DynamicFlags::empty(),
16471        )
16472    }
16473}
16474
16475#[must_use = "FIDL methods require a response to be sent"]
16476#[derive(Debug)]
16477pub struct SocketGetIpv6ChecksumResponder {
16478    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16479    tx_id: u32,
16480}
16481
16482/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16483/// if the responder is dropped without sending a response, so that the client
16484/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16485impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16486    fn drop(&mut self) {
16487        self.control_handle.shutdown();
16488        // Safety: drops once, never accessed again
16489        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16490    }
16491}
16492
16493impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16494    type ControlHandle = SocketControlHandle;
16495
16496    fn control_handle(&self) -> &SocketControlHandle {
16497        &self.control_handle
16498    }
16499
16500    fn drop_without_shutdown(mut self) {
16501        // Safety: drops once, never accessed again due to mem::forget
16502        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16503        // Prevent Drop from running (which would shut down the channel)
16504        std::mem::forget(self);
16505    }
16506}
16507
16508impl SocketGetIpv6ChecksumResponder {
16509    /// Sends a response to the FIDL transaction.
16510    ///
16511    /// Sets the channel to shutdown if an error occurs.
16512    pub fn send(
16513        self,
16514        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16515    ) -> Result<(), fidl::Error> {
16516        let _result = self.send_raw(result);
16517        if _result.is_err() {
16518            self.control_handle.shutdown();
16519        }
16520        self.drop_without_shutdown();
16521        _result
16522    }
16523
16524    /// Similar to "send" but does not shutdown the channel if an error occurs.
16525    pub fn send_no_shutdown_on_err(
16526        self,
16527        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16528    ) -> Result<(), fidl::Error> {
16529        let _result = self.send_raw(result);
16530        self.drop_without_shutdown();
16531        _result
16532    }
16533
16534    fn send_raw(
16535        &self,
16536        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16537    ) -> Result<(), fidl::Error> {
16538        self.control_handle.inner.send::<fidl::encoding::ResultType<
16539            SocketGetIpv6ChecksumResponse,
16540            fidl_fuchsia_posix::Errno,
16541        >>(
16542            result.map(|config| (config,)),
16543            self.tx_id,
16544            0x1847bf5b2d263dd,
16545            fidl::encoding::DynamicFlags::empty(),
16546        )
16547    }
16548}
16549
16550mod internal {
16551    use super::*;
16552
16553    impl fidl::encoding::ValueTypeMarker for Empty {
16554        type Borrowed<'a> = &'a Self;
16555        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16556            value
16557        }
16558    }
16559
16560    unsafe impl fidl::encoding::TypeMarker for Empty {
16561        type Owned = Self;
16562
16563        #[inline(always)]
16564        fn inline_align(_context: fidl::encoding::Context) -> usize {
16565            1
16566        }
16567
16568        #[inline(always)]
16569        fn inline_size(_context: fidl::encoding::Context) -> usize {
16570            1
16571        }
16572    }
16573
16574    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Empty, D> for &Empty {
16575        #[inline]
16576        unsafe fn encode(
16577            self,
16578            encoder: &mut fidl::encoding::Encoder<'_, D>,
16579            offset: usize,
16580            _depth: fidl::encoding::Depth,
16581        ) -> fidl::Result<()> {
16582            encoder.debug_check_bounds::<Empty>(offset);
16583            encoder.write_num(0u8, offset);
16584            Ok(())
16585        }
16586    }
16587
16588    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Empty {
16589        #[inline(always)]
16590        fn new_empty() -> Self {
16591            Self
16592        }
16593
16594        #[inline]
16595        unsafe fn decode(
16596            &mut self,
16597            decoder: &mut fidl::encoding::Decoder<'_, D>,
16598            offset: usize,
16599            _depth: fidl::encoding::Depth,
16600        ) -> fidl::Result<()> {
16601            decoder.debug_check_bounds::<Self>(offset);
16602            match decoder.read_num::<u8>(offset) {
16603                0 => Ok(()),
16604                _ => Err(fidl::Error::Invalid),
16605            }
16606        }
16607    }
16608
16609    impl fidl::encoding::ValueTypeMarker for Icmpv6Filter {
16610        type Borrowed<'a> = &'a Self;
16611        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16612            value
16613        }
16614    }
16615
16616    unsafe impl fidl::encoding::TypeMarker for Icmpv6Filter {
16617        type Owned = Self;
16618
16619        #[inline(always)]
16620        fn inline_align(_context: fidl::encoding::Context) -> usize {
16621            4
16622        }
16623
16624        #[inline(always)]
16625        fn inline_size(_context: fidl::encoding::Context) -> usize {
16626            32
16627        }
16628        #[inline(always)]
16629        fn encode_is_copy() -> bool {
16630            true
16631        }
16632
16633        #[inline(always)]
16634        fn decode_is_copy() -> bool {
16635            true
16636        }
16637    }
16638
16639    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Icmpv6Filter, D>
16640        for &Icmpv6Filter
16641    {
16642        #[inline]
16643        unsafe fn encode(
16644            self,
16645            encoder: &mut fidl::encoding::Encoder<'_, D>,
16646            offset: usize,
16647            _depth: fidl::encoding::Depth,
16648        ) -> fidl::Result<()> {
16649            encoder.debug_check_bounds::<Icmpv6Filter>(offset);
16650            unsafe {
16651                // Copy the object into the buffer.
16652                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
16653                (buf_ptr as *mut Icmpv6Filter)
16654                    .write_unaligned((self as *const Icmpv6Filter).read());
16655                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
16656                // done second because the memcpy will write garbage to these bytes.
16657            }
16658            Ok(())
16659        }
16660    }
16661    unsafe impl<
16662            D: fidl::encoding::ResourceDialect,
16663            T0: fidl::encoding::Encode<fidl::encoding::Array<u32, 8>, D>,
16664        > fidl::encoding::Encode<Icmpv6Filter, D> for (T0,)
16665    {
16666        #[inline]
16667        unsafe fn encode(
16668            self,
16669            encoder: &mut fidl::encoding::Encoder<'_, D>,
16670            offset: usize,
16671            depth: fidl::encoding::Depth,
16672        ) -> fidl::Result<()> {
16673            encoder.debug_check_bounds::<Icmpv6Filter>(offset);
16674            // Zero out padding regions. There's no need to apply masks
16675            // because the unmasked parts will be overwritten by fields.
16676            // Write the fields.
16677            self.0.encode(encoder, offset + 0, depth)?;
16678            Ok(())
16679        }
16680    }
16681
16682    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Icmpv6Filter {
16683        #[inline(always)]
16684        fn new_empty() -> Self {
16685            Self { blocked_types: fidl::new_empty!(fidl::encoding::Array<u32, 8>, D) }
16686        }
16687
16688        #[inline]
16689        unsafe fn decode(
16690            &mut self,
16691            decoder: &mut fidl::encoding::Decoder<'_, D>,
16692            offset: usize,
16693            _depth: fidl::encoding::Depth,
16694        ) -> fidl::Result<()> {
16695            decoder.debug_check_bounds::<Self>(offset);
16696            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
16697            // Verify that padding bytes are zero.
16698            // Copy from the buffer into the object.
16699            unsafe {
16700                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 32);
16701            }
16702            Ok(())
16703        }
16704    }
16705
16706    impl fidl::encoding::ValueTypeMarker for ProviderSocketRequest {
16707        type Borrowed<'a> = &'a Self;
16708        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16709            value
16710        }
16711    }
16712
16713    unsafe impl fidl::encoding::TypeMarker for ProviderSocketRequest {
16714        type Owned = Self;
16715
16716        #[inline(always)]
16717        fn inline_align(_context: fidl::encoding::Context) -> usize {
16718            8
16719        }
16720
16721        #[inline(always)]
16722        fn inline_size(_context: fidl::encoding::Context) -> usize {
16723            24
16724        }
16725    }
16726
16727    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProviderSocketRequest, D>
16728        for &ProviderSocketRequest
16729    {
16730        #[inline]
16731        unsafe fn encode(
16732            self,
16733            encoder: &mut fidl::encoding::Encoder<'_, D>,
16734            offset: usize,
16735            _depth: fidl::encoding::Depth,
16736        ) -> fidl::Result<()> {
16737            encoder.debug_check_bounds::<ProviderSocketRequest>(offset);
16738            // Delegate to tuple encoding.
16739            fidl::encoding::Encode::<ProviderSocketRequest, D>::encode(
16740                (
16741                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(
16742                        &self.domain,
16743                    ),
16744                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16745                ),
16746                encoder,
16747                offset,
16748                _depth,
16749            )
16750        }
16751    }
16752    unsafe impl<
16753            D: fidl::encoding::ResourceDialect,
16754            T0: fidl::encoding::Encode<fidl_fuchsia_posix_socket::Domain, D>,
16755            T1: fidl::encoding::Encode<ProtocolAssociation, D>,
16756        > fidl::encoding::Encode<ProviderSocketRequest, D> for (T0, T1)
16757    {
16758        #[inline]
16759        unsafe fn encode(
16760            self,
16761            encoder: &mut fidl::encoding::Encoder<'_, D>,
16762            offset: usize,
16763            depth: fidl::encoding::Depth,
16764        ) -> fidl::Result<()> {
16765            encoder.debug_check_bounds::<ProviderSocketRequest>(offset);
16766            // Zero out padding regions. There's no need to apply masks
16767            // because the unmasked parts will be overwritten by fields.
16768            unsafe {
16769                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16770                (ptr as *mut u64).write_unaligned(0);
16771            }
16772            // Write the fields.
16773            self.0.encode(encoder, offset + 0, depth)?;
16774            self.1.encode(encoder, offset + 8, depth)?;
16775            Ok(())
16776        }
16777    }
16778
16779    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProviderSocketRequest {
16780        #[inline(always)]
16781        fn new_empty() -> Self {
16782            Self {
16783                domain: fidl::new_empty!(fidl_fuchsia_posix_socket::Domain, D),
16784                proto: fidl::new_empty!(ProtocolAssociation, D),
16785            }
16786        }
16787
16788        #[inline]
16789        unsafe fn decode(
16790            &mut self,
16791            decoder: &mut fidl::encoding::Decoder<'_, D>,
16792            offset: usize,
16793            _depth: fidl::encoding::Depth,
16794        ) -> fidl::Result<()> {
16795            decoder.debug_check_bounds::<Self>(offset);
16796            // Verify that padding bytes are zero.
16797            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16798            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16799            let mask = 0xffffffffffff0000u64;
16800            let maskedval = padval & mask;
16801            if maskedval != 0 {
16802                return Err(fidl::Error::NonZeroPadding {
16803                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16804                });
16805            }
16806            fidl::decode!(
16807                fidl_fuchsia_posix_socket::Domain,
16808                D,
16809                &mut self.domain,
16810                decoder,
16811                offset + 0,
16812                _depth
16813            )?;
16814            fidl::decode!(ProtocolAssociation, D, &mut self.proto, decoder, offset + 8, _depth)?;
16815            Ok(())
16816        }
16817    }
16818
16819    impl fidl::encoding::ValueTypeMarker for ProviderSocketWithOptionsRequest {
16820        type Borrowed<'a> = &'a Self;
16821        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
16822            value
16823        }
16824    }
16825
16826    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16827        type Owned = Self;
16828
16829        #[inline(always)]
16830        fn inline_align(_context: fidl::encoding::Context) -> usize {
16831            8
16832        }
16833
16834        #[inline(always)]
16835        fn inline_size(_context: fidl::encoding::Context) -> usize {
16836            40
16837        }
16838    }
16839
16840    unsafe impl<D: fidl::encoding::ResourceDialect>
16841        fidl::encoding::Encode<ProviderSocketWithOptionsRequest, D>
16842        for &ProviderSocketWithOptionsRequest
16843    {
16844        #[inline]
16845        unsafe fn encode(
16846            self,
16847            encoder: &mut fidl::encoding::Encoder<'_, D>,
16848            offset: usize,
16849            _depth: fidl::encoding::Depth,
16850        ) -> fidl::Result<()> {
16851            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16852            // Delegate to tuple encoding.
16853            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, D>::encode(
16854                (
16855                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16856                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16857                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ValueTypeMarker>::borrow(&self.opts),
16858                ),
16859                encoder, offset, _depth
16860            )
16861        }
16862    }
16863    unsafe impl<
16864            D: fidl::encoding::ResourceDialect,
16865            T0: fidl::encoding::Encode<fidl_fuchsia_posix_socket::Domain, D>,
16866            T1: fidl::encoding::Encode<ProtocolAssociation, D>,
16867            T2: fidl::encoding::Encode<fidl_fuchsia_posix_socket::SocketCreationOptions, D>,
16868        > fidl::encoding::Encode<ProviderSocketWithOptionsRequest, D> for (T0, T1, T2)
16869    {
16870        #[inline]
16871        unsafe fn encode(
16872            self,
16873            encoder: &mut fidl::encoding::Encoder<'_, D>,
16874            offset: usize,
16875            depth: fidl::encoding::Depth,
16876        ) -> fidl::Result<()> {
16877            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16878            // Zero out padding regions. There's no need to apply masks
16879            // because the unmasked parts will be overwritten by fields.
16880            unsafe {
16881                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16882                (ptr as *mut u64).write_unaligned(0);
16883            }
16884            // Write the fields.
16885            self.0.encode(encoder, offset + 0, depth)?;
16886            self.1.encode(encoder, offset + 8, depth)?;
16887            self.2.encode(encoder, offset + 24, depth)?;
16888            Ok(())
16889        }
16890    }
16891
16892    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
16893        for ProviderSocketWithOptionsRequest
16894    {
16895        #[inline(always)]
16896        fn new_empty() -> Self {
16897            Self {
16898                domain: fidl::new_empty!(fidl_fuchsia_posix_socket::Domain, D),
16899                proto: fidl::new_empty!(ProtocolAssociation, D),
16900                opts: fidl::new_empty!(fidl_fuchsia_posix_socket::SocketCreationOptions, D),
16901            }
16902        }
16903
16904        #[inline]
16905        unsafe fn decode(
16906            &mut self,
16907            decoder: &mut fidl::encoding::Decoder<'_, D>,
16908            offset: usize,
16909            _depth: fidl::encoding::Depth,
16910        ) -> fidl::Result<()> {
16911            decoder.debug_check_bounds::<Self>(offset);
16912            // Verify that padding bytes are zero.
16913            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16914            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16915            let mask = 0xffffffffffff0000u64;
16916            let maskedval = padval & mask;
16917            if maskedval != 0 {
16918                return Err(fidl::Error::NonZeroPadding {
16919                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16920                });
16921            }
16922            fidl::decode!(
16923                fidl_fuchsia_posix_socket::Domain,
16924                D,
16925                &mut self.domain,
16926                decoder,
16927                offset + 0,
16928                _depth
16929            )?;
16930            fidl::decode!(ProtocolAssociation, D, &mut self.proto, decoder, offset + 8, _depth)?;
16931            fidl::decode!(
16932                fidl_fuchsia_posix_socket::SocketCreationOptions,
16933                D,
16934                &mut self.opts,
16935                decoder,
16936                offset + 24,
16937                _depth
16938            )?;
16939            Ok(())
16940        }
16941    }
16942
16943    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16944        type Borrowed<'a> = &'a mut Self;
16945        fn take_or_borrow<'a>(
16946            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16947        ) -> Self::Borrowed<'a> {
16948            value
16949        }
16950    }
16951
16952    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16953        type Owned = Self;
16954
16955        #[inline(always)]
16956        fn inline_align(_context: fidl::encoding::Context) -> usize {
16957            4
16958        }
16959
16960        #[inline(always)]
16961        fn inline_size(_context: fidl::encoding::Context) -> usize {
16962            4
16963        }
16964    }
16965
16966    unsafe impl
16967        fidl::encoding::Encode<
16968            ProviderSocketWithOptionsResponse,
16969            fidl::encoding::DefaultFuchsiaResourceDialect,
16970        > for &mut ProviderSocketWithOptionsResponse
16971    {
16972        #[inline]
16973        unsafe fn encode(
16974            self,
16975            encoder: &mut fidl::encoding::Encoder<
16976                '_,
16977                fidl::encoding::DefaultFuchsiaResourceDialect,
16978            >,
16979            offset: usize,
16980            _depth: fidl::encoding::Depth,
16981        ) -> fidl::Result<()> {
16982            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16983            // Delegate to tuple encoding.
16984            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16985                (
16986                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
16987                ),
16988                encoder, offset, _depth
16989            )
16990        }
16991    }
16992    unsafe impl<
16993            T0: fidl::encoding::Encode<
16994                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16995                fidl::encoding::DefaultFuchsiaResourceDialect,
16996            >,
16997        >
16998        fidl::encoding::Encode<
16999            ProviderSocketWithOptionsResponse,
17000            fidl::encoding::DefaultFuchsiaResourceDialect,
17001        > for (T0,)
17002    {
17003        #[inline]
17004        unsafe fn encode(
17005            self,
17006            encoder: &mut fidl::encoding::Encoder<
17007                '_,
17008                fidl::encoding::DefaultFuchsiaResourceDialect,
17009            >,
17010            offset: usize,
17011            depth: fidl::encoding::Depth,
17012        ) -> fidl::Result<()> {
17013            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
17014            // Zero out padding regions. There's no need to apply masks
17015            // because the unmasked parts will be overwritten by fields.
17016            // Write the fields.
17017            self.0.encode(encoder, offset + 0, depth)?;
17018            Ok(())
17019        }
17020    }
17021
17022    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17023        for ProviderSocketWithOptionsResponse
17024    {
17025        #[inline(always)]
17026        fn new_empty() -> Self {
17027            Self {
17028                s: fidl::new_empty!(
17029                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17030                    fidl::encoding::DefaultFuchsiaResourceDialect
17031                ),
17032            }
17033        }
17034
17035        #[inline]
17036        unsafe fn decode(
17037            &mut self,
17038            decoder: &mut fidl::encoding::Decoder<
17039                '_,
17040                fidl::encoding::DefaultFuchsiaResourceDialect,
17041            >,
17042            offset: usize,
17043            _depth: fidl::encoding::Depth,
17044        ) -> fidl::Result<()> {
17045            decoder.debug_check_bounds::<Self>(offset);
17046            // Verify that padding bytes are zero.
17047            fidl::decode!(
17048                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17049                fidl::encoding::DefaultFuchsiaResourceDialect,
17050                &mut self.s,
17051                decoder,
17052                offset + 0,
17053                _depth
17054            )?;
17055            Ok(())
17056        }
17057    }
17058
17059    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
17060        type Borrowed<'a> = &'a mut Self;
17061        fn take_or_borrow<'a>(
17062            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17063        ) -> Self::Borrowed<'a> {
17064            value
17065        }
17066    }
17067
17068    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
17069        type Owned = Self;
17070
17071        #[inline(always)]
17072        fn inline_align(_context: fidl::encoding::Context) -> usize {
17073            4
17074        }
17075
17076        #[inline(always)]
17077        fn inline_size(_context: fidl::encoding::Context) -> usize {
17078            4
17079        }
17080    }
17081
17082    unsafe impl
17083        fidl::encoding::Encode<
17084            ProviderSocketResponse,
17085            fidl::encoding::DefaultFuchsiaResourceDialect,
17086        > for &mut ProviderSocketResponse
17087    {
17088        #[inline]
17089        unsafe fn encode(
17090            self,
17091            encoder: &mut fidl::encoding::Encoder<
17092                '_,
17093                fidl::encoding::DefaultFuchsiaResourceDialect,
17094            >,
17095            offset: usize,
17096            _depth: fidl::encoding::Depth,
17097        ) -> fidl::Result<()> {
17098            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17099            // Delegate to tuple encoding.
17100            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17101                (
17102                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17103                ),
17104                encoder, offset, _depth
17105            )
17106        }
17107    }
17108    unsafe impl<
17109            T0: fidl::encoding::Encode<
17110                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17111                fidl::encoding::DefaultFuchsiaResourceDialect,
17112            >,
17113        >
17114        fidl::encoding::Encode<
17115            ProviderSocketResponse,
17116            fidl::encoding::DefaultFuchsiaResourceDialect,
17117        > for (T0,)
17118    {
17119        #[inline]
17120        unsafe fn encode(
17121            self,
17122            encoder: &mut fidl::encoding::Encoder<
17123                '_,
17124                fidl::encoding::DefaultFuchsiaResourceDialect,
17125            >,
17126            offset: usize,
17127            depth: fidl::encoding::Depth,
17128        ) -> fidl::Result<()> {
17129            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17130            // Zero out padding regions. There's no need to apply masks
17131            // because the unmasked parts will be overwritten by fields.
17132            // Write the fields.
17133            self.0.encode(encoder, offset + 0, depth)?;
17134            Ok(())
17135        }
17136    }
17137
17138    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17139        for ProviderSocketResponse
17140    {
17141        #[inline(always)]
17142        fn new_empty() -> Self {
17143            Self {
17144                s: fidl::new_empty!(
17145                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17146                    fidl::encoding::DefaultFuchsiaResourceDialect
17147                ),
17148            }
17149        }
17150
17151        #[inline]
17152        unsafe fn decode(
17153            &mut self,
17154            decoder: &mut fidl::encoding::Decoder<
17155                '_,
17156                fidl::encoding::DefaultFuchsiaResourceDialect,
17157            >,
17158            offset: usize,
17159            _depth: fidl::encoding::Depth,
17160        ) -> fidl::Result<()> {
17161            decoder.debug_check_bounds::<Self>(offset);
17162            // Verify that padding bytes are zero.
17163            fidl::decode!(
17164                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17165                fidl::encoding::DefaultFuchsiaResourceDialect,
17166                &mut self.s,
17167                decoder,
17168                offset + 0,
17169                _depth
17170            )?;
17171            Ok(())
17172        }
17173    }
17174
17175    impl fidl::encoding::ValueTypeMarker for SocketRecvMsgRequest {
17176        type Borrowed<'a> = &'a Self;
17177        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17178            value
17179        }
17180    }
17181
17182    unsafe impl fidl::encoding::TypeMarker for SocketRecvMsgRequest {
17183        type Owned = Self;
17184
17185        #[inline(always)]
17186        fn inline_align(_context: fidl::encoding::Context) -> usize {
17187            4
17188        }
17189
17190        #[inline(always)]
17191        fn inline_size(_context: fidl::encoding::Context) -> usize {
17192            12
17193        }
17194    }
17195
17196    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SocketRecvMsgRequest, D>
17197        for &SocketRecvMsgRequest
17198    {
17199        #[inline]
17200        unsafe fn encode(
17201            self,
17202            encoder: &mut fidl::encoding::Encoder<'_, D>,
17203            offset: usize,
17204            _depth: fidl::encoding::Depth,
17205        ) -> fidl::Result<()> {
17206            encoder.debug_check_bounds::<SocketRecvMsgRequest>(offset);
17207            // Delegate to tuple encoding.
17208            fidl::encoding::Encode::<SocketRecvMsgRequest, D>::encode(
17209                (
17210                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.want_addr),
17211                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.data_len),
17212                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.want_control),
17213                    <fidl_fuchsia_posix_socket::RecvMsgFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.flags),
17214                ),
17215                encoder, offset, _depth
17216            )
17217        }
17218    }
17219    unsafe impl<
17220            D: fidl::encoding::ResourceDialect,
17221            T0: fidl::encoding::Encode<bool, D>,
17222            T1: fidl::encoding::Encode<u32, D>,
17223            T2: fidl::encoding::Encode<bool, D>,
17224            T3: fidl::encoding::Encode<fidl_fuchsia_posix_socket::RecvMsgFlags, D>,
17225        > fidl::encoding::Encode<SocketRecvMsgRequest, D> for (T0, T1, T2, T3)
17226    {
17227        #[inline]
17228        unsafe fn encode(
17229            self,
17230            encoder: &mut fidl::encoding::Encoder<'_, D>,
17231            offset: usize,
17232            depth: fidl::encoding::Depth,
17233        ) -> fidl::Result<()> {
17234            encoder.debug_check_bounds::<SocketRecvMsgRequest>(offset);
17235            // Zero out padding regions. There's no need to apply masks
17236            // because the unmasked parts will be overwritten by fields.
17237            unsafe {
17238                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
17239                (ptr as *mut u32).write_unaligned(0);
17240            }
17241            unsafe {
17242                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
17243                (ptr as *mut u32).write_unaligned(0);
17244            }
17245            // Write the fields.
17246            self.0.encode(encoder, offset + 0, depth)?;
17247            self.1.encode(encoder, offset + 4, depth)?;
17248            self.2.encode(encoder, offset + 8, depth)?;
17249            self.3.encode(encoder, offset + 10, depth)?;
17250            Ok(())
17251        }
17252    }
17253
17254    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SocketRecvMsgRequest {
17255        #[inline(always)]
17256        fn new_empty() -> Self {
17257            Self {
17258                want_addr: fidl::new_empty!(bool, D),
17259                data_len: fidl::new_empty!(u32, D),
17260                want_control: fidl::new_empty!(bool, D),
17261                flags: fidl::new_empty!(fidl_fuchsia_posix_socket::RecvMsgFlags, D),
17262            }
17263        }
17264
17265        #[inline]
17266        unsafe fn decode(
17267            &mut self,
17268            decoder: &mut fidl::encoding::Decoder<'_, D>,
17269            offset: usize,
17270            _depth: fidl::encoding::Depth,
17271        ) -> fidl::Result<()> {
17272            decoder.debug_check_bounds::<Self>(offset);
17273            // Verify that padding bytes are zero.
17274            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
17275            let padval = unsafe { (ptr as *const u32).read_unaligned() };
17276            let mask = 0xffffff00u32;
17277            let maskedval = padval & mask;
17278            if maskedval != 0 {
17279                return Err(fidl::Error::NonZeroPadding {
17280                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
17281                });
17282            }
17283            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
17284            let padval = unsafe { (ptr as *const u32).read_unaligned() };
17285            let mask = 0xff00u32;
17286            let maskedval = padval & mask;
17287            if maskedval != 0 {
17288                return Err(fidl::Error::NonZeroPadding {
17289                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
17290                });
17291            }
17292            fidl::decode!(bool, D, &mut self.want_addr, decoder, offset + 0, _depth)?;
17293            fidl::decode!(u32, D, &mut self.data_len, decoder, offset + 4, _depth)?;
17294            fidl::decode!(bool, D, &mut self.want_control, decoder, offset + 8, _depth)?;
17295            fidl::decode!(
17296                fidl_fuchsia_posix_socket::RecvMsgFlags,
17297                D,
17298                &mut self.flags,
17299                decoder,
17300                offset + 10,
17301                _depth
17302            )?;
17303            Ok(())
17304        }
17305    }
17306
17307    impl fidl::encoding::ValueTypeMarker for SocketSendMsgRequest {
17308        type Borrowed<'a> = &'a Self;
17309        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17310            value
17311        }
17312    }
17313
17314    unsafe impl fidl::encoding::TypeMarker for SocketSendMsgRequest {
17315        type Owned = Self;
17316
17317        #[inline(always)]
17318        fn inline_align(_context: fidl::encoding::Context) -> usize {
17319            8
17320        }
17321
17322        #[inline(always)]
17323        fn inline_size(_context: fidl::encoding::Context) -> usize {
17324            56
17325        }
17326    }
17327
17328    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SocketSendMsgRequest, D>
17329        for &SocketSendMsgRequest
17330    {
17331        #[inline]
17332        unsafe fn encode(
17333            self,
17334            encoder: &mut fidl::encoding::Encoder<'_, D>,
17335            offset: usize,
17336            _depth: fidl::encoding::Depth,
17337        ) -> fidl::Result<()> {
17338            encoder.debug_check_bounds::<SocketSendMsgRequest>(offset);
17339            // Delegate to tuple encoding.
17340            fidl::encoding::Encode::<SocketSendMsgRequest, D>::encode(
17341                (
17342                    <fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress> as fidl::encoding::ValueTypeMarker>::borrow(&self.addr),
17343                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
17344                    <fidl_fuchsia_posix_socket::NetworkSocketSendControlData as fidl::encoding::ValueTypeMarker>::borrow(&self.control),
17345                    <fidl_fuchsia_posix_socket::SendMsgFlags as fidl::encoding::ValueTypeMarker>::borrow(&self.flags),
17346                ),
17347                encoder, offset, _depth
17348            )
17349        }
17350    }
17351    unsafe impl<
17352            D: fidl::encoding::ResourceDialect,
17353            T0: fidl::encoding::Encode<
17354                fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress>,
17355                D,
17356            >,
17357            T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
17358            T2: fidl::encoding::Encode<fidl_fuchsia_posix_socket::NetworkSocketSendControlData, D>,
17359            T3: fidl::encoding::Encode<fidl_fuchsia_posix_socket::SendMsgFlags, D>,
17360        > fidl::encoding::Encode<SocketSendMsgRequest, D> for (T0, T1, T2, T3)
17361    {
17362        #[inline]
17363        unsafe fn encode(
17364            self,
17365            encoder: &mut fidl::encoding::Encoder<'_, D>,
17366            offset: usize,
17367            depth: fidl::encoding::Depth,
17368        ) -> fidl::Result<()> {
17369            encoder.debug_check_bounds::<SocketSendMsgRequest>(offset);
17370            // Zero out padding regions. There's no need to apply masks
17371            // because the unmasked parts will be overwritten by fields.
17372            unsafe {
17373                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
17374                (ptr as *mut u64).write_unaligned(0);
17375            }
17376            // Write the fields.
17377            self.0.encode(encoder, offset + 0, depth)?;
17378            self.1.encode(encoder, offset + 16, depth)?;
17379            self.2.encode(encoder, offset + 32, depth)?;
17380            self.3.encode(encoder, offset + 48, depth)?;
17381            Ok(())
17382        }
17383    }
17384
17385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SocketSendMsgRequest {
17386        #[inline(always)]
17387        fn new_empty() -> Self {
17388            Self {
17389                addr: fidl::new_empty!(
17390                    fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress>,
17391                    D
17392                ),
17393                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
17394                control: fidl::new_empty!(
17395                    fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
17396                    D
17397                ),
17398                flags: fidl::new_empty!(fidl_fuchsia_posix_socket::SendMsgFlags, D),
17399            }
17400        }
17401
17402        #[inline]
17403        unsafe fn decode(
17404            &mut self,
17405            decoder: &mut fidl::encoding::Decoder<'_, D>,
17406            offset: usize,
17407            _depth: fidl::encoding::Depth,
17408        ) -> fidl::Result<()> {
17409            decoder.debug_check_bounds::<Self>(offset);
17410            // Verify that padding bytes are zero.
17411            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
17412            let padval = unsafe { (ptr as *const u64).read_unaligned() };
17413            let mask = 0xffffffffffff0000u64;
17414            let maskedval = padval & mask;
17415            if maskedval != 0 {
17416                return Err(fidl::Error::NonZeroPadding {
17417                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
17418                });
17419            }
17420            fidl::decode!(
17421                fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress>,
17422                D,
17423                &mut self.addr,
17424                decoder,
17425                offset + 0,
17426                _depth
17427            )?;
17428            fidl::decode!(
17429                fidl::encoding::UnboundedVector<u8>,
17430                D,
17431                &mut self.data,
17432                decoder,
17433                offset + 16,
17434                _depth
17435            )?;
17436            fidl::decode!(
17437                fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
17438                D,
17439                &mut self.control,
17440                decoder,
17441                offset + 32,
17442                _depth
17443            )?;
17444            fidl::decode!(
17445                fidl_fuchsia_posix_socket::SendMsgFlags,
17446                D,
17447                &mut self.flags,
17448                decoder,
17449                offset + 48,
17450                _depth
17451            )?;
17452            Ok(())
17453        }
17454    }
17455
17456    impl fidl::encoding::ValueTypeMarker for SocketSetIcmpv6FilterRequest {
17457        type Borrowed<'a> = &'a Self;
17458        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17459            value
17460        }
17461    }
17462
17463    unsafe impl fidl::encoding::TypeMarker for SocketSetIcmpv6FilterRequest {
17464        type Owned = Self;
17465
17466        #[inline(always)]
17467        fn inline_align(_context: fidl::encoding::Context) -> usize {
17468            4
17469        }
17470
17471        #[inline(always)]
17472        fn inline_size(_context: fidl::encoding::Context) -> usize {
17473            32
17474        }
17475        #[inline(always)]
17476        fn encode_is_copy() -> bool {
17477            true
17478        }
17479
17480        #[inline(always)]
17481        fn decode_is_copy() -> bool {
17482            true
17483        }
17484    }
17485
17486    unsafe impl<D: fidl::encoding::ResourceDialect>
17487        fidl::encoding::Encode<SocketSetIcmpv6FilterRequest, D> for &SocketSetIcmpv6FilterRequest
17488    {
17489        #[inline]
17490        unsafe fn encode(
17491            self,
17492            encoder: &mut fidl::encoding::Encoder<'_, D>,
17493            offset: usize,
17494            _depth: fidl::encoding::Depth,
17495        ) -> fidl::Result<()> {
17496            encoder.debug_check_bounds::<SocketSetIcmpv6FilterRequest>(offset);
17497            unsafe {
17498                // Copy the object into the buffer.
17499                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
17500                (buf_ptr as *mut SocketSetIcmpv6FilterRequest)
17501                    .write_unaligned((self as *const SocketSetIcmpv6FilterRequest).read());
17502                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
17503                // done second because the memcpy will write garbage to these bytes.
17504            }
17505            Ok(())
17506        }
17507    }
17508    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Icmpv6Filter, D>>
17509        fidl::encoding::Encode<SocketSetIcmpv6FilterRequest, D> for (T0,)
17510    {
17511        #[inline]
17512        unsafe fn encode(
17513            self,
17514            encoder: &mut fidl::encoding::Encoder<'_, D>,
17515            offset: usize,
17516            depth: fidl::encoding::Depth,
17517        ) -> fidl::Result<()> {
17518            encoder.debug_check_bounds::<SocketSetIcmpv6FilterRequest>(offset);
17519            // Zero out padding regions. There's no need to apply masks
17520            // because the unmasked parts will be overwritten by fields.
17521            // Write the fields.
17522            self.0.encode(encoder, offset + 0, depth)?;
17523            Ok(())
17524        }
17525    }
17526
17527    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17528        for SocketSetIcmpv6FilterRequest
17529    {
17530        #[inline(always)]
17531        fn new_empty() -> Self {
17532            Self { filter: fidl::new_empty!(Icmpv6Filter, D) }
17533        }
17534
17535        #[inline]
17536        unsafe fn decode(
17537            &mut self,
17538            decoder: &mut fidl::encoding::Decoder<'_, D>,
17539            offset: usize,
17540            _depth: fidl::encoding::Depth,
17541        ) -> fidl::Result<()> {
17542            decoder.debug_check_bounds::<Self>(offset);
17543            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
17544            // Verify that padding bytes are zero.
17545            // Copy from the buffer into the object.
17546            unsafe {
17547                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 32);
17548            }
17549            Ok(())
17550        }
17551    }
17552
17553    impl fidl::encoding::ValueTypeMarker for SocketSetIpHeaderIncludedRequest {
17554        type Borrowed<'a> = &'a Self;
17555        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17556            value
17557        }
17558    }
17559
17560    unsafe impl fidl::encoding::TypeMarker for SocketSetIpHeaderIncludedRequest {
17561        type Owned = Self;
17562
17563        #[inline(always)]
17564        fn inline_align(_context: fidl::encoding::Context) -> usize {
17565            1
17566        }
17567
17568        #[inline(always)]
17569        fn inline_size(_context: fidl::encoding::Context) -> usize {
17570            1
17571        }
17572    }
17573
17574    unsafe impl<D: fidl::encoding::ResourceDialect>
17575        fidl::encoding::Encode<SocketSetIpHeaderIncludedRequest, D>
17576        for &SocketSetIpHeaderIncludedRequest
17577    {
17578        #[inline]
17579        unsafe fn encode(
17580            self,
17581            encoder: &mut fidl::encoding::Encoder<'_, D>,
17582            offset: usize,
17583            _depth: fidl::encoding::Depth,
17584        ) -> fidl::Result<()> {
17585            encoder.debug_check_bounds::<SocketSetIpHeaderIncludedRequest>(offset);
17586            // Delegate to tuple encoding.
17587            fidl::encoding::Encode::<SocketSetIpHeaderIncludedRequest, D>::encode(
17588                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
17589                encoder,
17590                offset,
17591                _depth,
17592            )
17593        }
17594    }
17595    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
17596        fidl::encoding::Encode<SocketSetIpHeaderIncludedRequest, D> for (T0,)
17597    {
17598        #[inline]
17599        unsafe fn encode(
17600            self,
17601            encoder: &mut fidl::encoding::Encoder<'_, D>,
17602            offset: usize,
17603            depth: fidl::encoding::Depth,
17604        ) -> fidl::Result<()> {
17605            encoder.debug_check_bounds::<SocketSetIpHeaderIncludedRequest>(offset);
17606            // Zero out padding regions. There's no need to apply masks
17607            // because the unmasked parts will be overwritten by fields.
17608            // Write the fields.
17609            self.0.encode(encoder, offset + 0, depth)?;
17610            Ok(())
17611        }
17612    }
17613
17614    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17615        for SocketSetIpHeaderIncludedRequest
17616    {
17617        #[inline(always)]
17618        fn new_empty() -> Self {
17619            Self { value: fidl::new_empty!(bool, D) }
17620        }
17621
17622        #[inline]
17623        unsafe fn decode(
17624            &mut self,
17625            decoder: &mut fidl::encoding::Decoder<'_, D>,
17626            offset: usize,
17627            _depth: fidl::encoding::Depth,
17628        ) -> fidl::Result<()> {
17629            decoder.debug_check_bounds::<Self>(offset);
17630            // Verify that padding bytes are zero.
17631            fidl::decode!(bool, D, &mut self.value, decoder, offset + 0, _depth)?;
17632            Ok(())
17633        }
17634    }
17635
17636    impl fidl::encoding::ValueTypeMarker for SocketSetIpv6ChecksumRequest {
17637        type Borrowed<'a> = &'a Self;
17638        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17639            value
17640        }
17641    }
17642
17643    unsafe impl fidl::encoding::TypeMarker for SocketSetIpv6ChecksumRequest {
17644        type Owned = Self;
17645
17646        #[inline(always)]
17647        fn inline_align(_context: fidl::encoding::Context) -> usize {
17648            8
17649        }
17650
17651        #[inline(always)]
17652        fn inline_size(_context: fidl::encoding::Context) -> usize {
17653            16
17654        }
17655    }
17656
17657    unsafe impl<D: fidl::encoding::ResourceDialect>
17658        fidl::encoding::Encode<SocketSetIpv6ChecksumRequest, D> for &SocketSetIpv6ChecksumRequest
17659    {
17660        #[inline]
17661        unsafe fn encode(
17662            self,
17663            encoder: &mut fidl::encoding::Encoder<'_, D>,
17664            offset: usize,
17665            _depth: fidl::encoding::Depth,
17666        ) -> fidl::Result<()> {
17667            encoder.debug_check_bounds::<SocketSetIpv6ChecksumRequest>(offset);
17668            // Delegate to tuple encoding.
17669            fidl::encoding::Encode::<SocketSetIpv6ChecksumRequest, D>::encode(
17670                (<Ipv6ChecksumConfiguration as fidl::encoding::ValueTypeMarker>::borrow(
17671                    &self.config,
17672                ),),
17673                encoder,
17674                offset,
17675                _depth,
17676            )
17677        }
17678    }
17679    unsafe impl<
17680            D: fidl::encoding::ResourceDialect,
17681            T0: fidl::encoding::Encode<Ipv6ChecksumConfiguration, D>,
17682        > fidl::encoding::Encode<SocketSetIpv6ChecksumRequest, D> for (T0,)
17683    {
17684        #[inline]
17685        unsafe fn encode(
17686            self,
17687            encoder: &mut fidl::encoding::Encoder<'_, D>,
17688            offset: usize,
17689            depth: fidl::encoding::Depth,
17690        ) -> fidl::Result<()> {
17691            encoder.debug_check_bounds::<SocketSetIpv6ChecksumRequest>(offset);
17692            // Zero out padding regions. There's no need to apply masks
17693            // because the unmasked parts will be overwritten by fields.
17694            // Write the fields.
17695            self.0.encode(encoder, offset + 0, depth)?;
17696            Ok(())
17697        }
17698    }
17699
17700    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17701        for SocketSetIpv6ChecksumRequest
17702    {
17703        #[inline(always)]
17704        fn new_empty() -> Self {
17705            Self { config: fidl::new_empty!(Ipv6ChecksumConfiguration, D) }
17706        }
17707
17708        #[inline]
17709        unsafe fn decode(
17710            &mut self,
17711            decoder: &mut fidl::encoding::Decoder<'_, D>,
17712            offset: usize,
17713            _depth: fidl::encoding::Depth,
17714        ) -> fidl::Result<()> {
17715            decoder.debug_check_bounds::<Self>(offset);
17716            // Verify that padding bytes are zero.
17717            fidl::decode!(
17718                Ipv6ChecksumConfiguration,
17719                D,
17720                &mut self.config,
17721                decoder,
17722                offset + 0,
17723                _depth
17724            )?;
17725            Ok(())
17726        }
17727    }
17728
17729    impl fidl::encoding::ValueTypeMarker for SocketGetIcmpv6FilterResponse {
17730        type Borrowed<'a> = &'a Self;
17731        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17732            value
17733        }
17734    }
17735
17736    unsafe impl fidl::encoding::TypeMarker for SocketGetIcmpv6FilterResponse {
17737        type Owned = Self;
17738
17739        #[inline(always)]
17740        fn inline_align(_context: fidl::encoding::Context) -> usize {
17741            4
17742        }
17743
17744        #[inline(always)]
17745        fn inline_size(_context: fidl::encoding::Context) -> usize {
17746            32
17747        }
17748        #[inline(always)]
17749        fn encode_is_copy() -> bool {
17750            true
17751        }
17752
17753        #[inline(always)]
17754        fn decode_is_copy() -> bool {
17755            true
17756        }
17757    }
17758
17759    unsafe impl<D: fidl::encoding::ResourceDialect>
17760        fidl::encoding::Encode<SocketGetIcmpv6FilterResponse, D>
17761        for &SocketGetIcmpv6FilterResponse
17762    {
17763        #[inline]
17764        unsafe fn encode(
17765            self,
17766            encoder: &mut fidl::encoding::Encoder<'_, D>,
17767            offset: usize,
17768            _depth: fidl::encoding::Depth,
17769        ) -> fidl::Result<()> {
17770            encoder.debug_check_bounds::<SocketGetIcmpv6FilterResponse>(offset);
17771            unsafe {
17772                // Copy the object into the buffer.
17773                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
17774                (buf_ptr as *mut SocketGetIcmpv6FilterResponse)
17775                    .write_unaligned((self as *const SocketGetIcmpv6FilterResponse).read());
17776                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
17777                // done second because the memcpy will write garbage to these bytes.
17778            }
17779            Ok(())
17780        }
17781    }
17782    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Icmpv6Filter, D>>
17783        fidl::encoding::Encode<SocketGetIcmpv6FilterResponse, D> for (T0,)
17784    {
17785        #[inline]
17786        unsafe fn encode(
17787            self,
17788            encoder: &mut fidl::encoding::Encoder<'_, D>,
17789            offset: usize,
17790            depth: fidl::encoding::Depth,
17791        ) -> fidl::Result<()> {
17792            encoder.debug_check_bounds::<SocketGetIcmpv6FilterResponse>(offset);
17793            // Zero out padding regions. There's no need to apply masks
17794            // because the unmasked parts will be overwritten by fields.
17795            // Write the fields.
17796            self.0.encode(encoder, offset + 0, depth)?;
17797            Ok(())
17798        }
17799    }
17800
17801    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
17802        for SocketGetIcmpv6FilterResponse
17803    {
17804        #[inline(always)]
17805        fn new_empty() -> Self {
17806            Self { filter: fidl::new_empty!(Icmpv6Filter, D) }
17807        }
17808
17809        #[inline]
17810        unsafe fn decode(
17811            &mut self,
17812            decoder: &mut fidl::encoding::Decoder<'_, D>,
17813            offset: usize,
17814            _depth: fidl::encoding::Depth,
17815        ) -> fidl::Result<()> {
17816            decoder.debug_check_bounds::<Self>(offset);
17817            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
17818            // Verify that padding bytes are zero.
17819            // Copy from the buffer into the object.
17820            unsafe {
17821                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 32);
17822            }
17823            Ok(())
17824        }
17825    }
17826
17827    impl fidl::encoding::ValueTypeMarker for SocketGetInfoResponse {
17828        type Borrowed<'a> = &'a Self;
17829        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17830            value
17831        }
17832    }
17833
17834    unsafe impl fidl::encoding::TypeMarker for SocketGetInfoResponse {
17835        type Owned = Self;
17836
17837        #[inline(always)]
17838        fn inline_align(_context: fidl::encoding::Context) -> usize {
17839            8
17840        }
17841
17842        #[inline(always)]
17843        fn inline_size(_context: fidl::encoding::Context) -> usize {
17844            24
17845        }
17846    }
17847
17848    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SocketGetInfoResponse, D>
17849        for &SocketGetInfoResponse
17850    {
17851        #[inline]
17852        unsafe fn encode(
17853            self,
17854            encoder: &mut fidl::encoding::Encoder<'_, D>,
17855            offset: usize,
17856            _depth: fidl::encoding::Depth,
17857        ) -> fidl::Result<()> {
17858            encoder.debug_check_bounds::<SocketGetInfoResponse>(offset);
17859            // Delegate to tuple encoding.
17860            fidl::encoding::Encode::<SocketGetInfoResponse, D>::encode(
17861                (
17862                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(
17863                        &self.domain,
17864                    ),
17865                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
17866                ),
17867                encoder,
17868                offset,
17869                _depth,
17870            )
17871        }
17872    }
17873    unsafe impl<
17874            D: fidl::encoding::ResourceDialect,
17875            T0: fidl::encoding::Encode<fidl_fuchsia_posix_socket::Domain, D>,
17876            T1: fidl::encoding::Encode<ProtocolAssociation, D>,
17877        > fidl::encoding::Encode<SocketGetInfoResponse, D> for (T0, T1)
17878    {
17879        #[inline]
17880        unsafe fn encode(
17881            self,
17882            encoder: &mut fidl::encoding::Encoder<'_, D>,
17883            offset: usize,
17884            depth: fidl::encoding::Depth,
17885        ) -> fidl::Result<()> {
17886            encoder.debug_check_bounds::<SocketGetInfoResponse>(offset);
17887            // Zero out padding regions. There's no need to apply masks
17888            // because the unmasked parts will be overwritten by fields.
17889            unsafe {
17890                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
17891                (ptr as *mut u64).write_unaligned(0);
17892            }
17893            // Write the fields.
17894            self.0.encode(encoder, offset + 0, depth)?;
17895            self.1.encode(encoder, offset + 8, depth)?;
17896            Ok(())
17897        }
17898    }
17899
17900    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SocketGetInfoResponse {
17901        #[inline(always)]
17902        fn new_empty() -> Self {
17903            Self {
17904                domain: fidl::new_empty!(fidl_fuchsia_posix_socket::Domain, D),
17905                proto: fidl::new_empty!(ProtocolAssociation, D),
17906            }
17907        }
17908
17909        #[inline]
17910        unsafe fn decode(
17911            &mut self,
17912            decoder: &mut fidl::encoding::Decoder<'_, D>,
17913            offset: usize,
17914            _depth: fidl::encoding::Depth,
17915        ) -> fidl::Result<()> {
17916            decoder.debug_check_bounds::<Self>(offset);
17917            // Verify that padding bytes are zero.
17918            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
17919            let padval = unsafe { (ptr as *const u64).read_unaligned() };
17920            let mask = 0xffffffffffff0000u64;
17921            let maskedval = padval & mask;
17922            if maskedval != 0 {
17923                return Err(fidl::Error::NonZeroPadding {
17924                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
17925                });
17926            }
17927            fidl::decode!(
17928                fidl_fuchsia_posix_socket::Domain,
17929                D,
17930                &mut self.domain,
17931                decoder,
17932                offset + 0,
17933                _depth
17934            )?;
17935            fidl::decode!(ProtocolAssociation, D, &mut self.proto, decoder, offset + 8, _depth)?;
17936            Ok(())
17937        }
17938    }
17939
17940    impl fidl::encoding::ValueTypeMarker for SocketGetIpHeaderIncludedResponse {
17941        type Borrowed<'a> = &'a Self;
17942        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
17943            value
17944        }
17945    }
17946
17947    unsafe impl fidl::encoding::TypeMarker for SocketGetIpHeaderIncludedResponse {
17948        type Owned = Self;
17949
17950        #[inline(always)]
17951        fn inline_align(_context: fidl::encoding::Context) -> usize {
17952            1
17953        }
17954
17955        #[inline(always)]
17956        fn inline_size(_context: fidl::encoding::Context) -> usize {
17957            1
17958        }
17959    }
17960
17961    unsafe impl<D: fidl::encoding::ResourceDialect>
17962        fidl::encoding::Encode<SocketGetIpHeaderIncludedResponse, D>
17963        for &SocketGetIpHeaderIncludedResponse
17964    {
17965        #[inline]
17966        unsafe fn encode(
17967            self,
17968            encoder: &mut fidl::encoding::Encoder<'_, D>,
17969            offset: usize,
17970            _depth: fidl::encoding::Depth,
17971        ) -> fidl::Result<()> {
17972            encoder.debug_check_bounds::<SocketGetIpHeaderIncludedResponse>(offset);
17973            // Delegate to tuple encoding.
17974            fidl::encoding::Encode::<SocketGetIpHeaderIncludedResponse, D>::encode(
17975                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.value),),
17976                encoder,
17977                offset,
17978                _depth,
17979            )
17980        }
17981    }
17982    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
17983        fidl::encoding::Encode<SocketGetIpHeaderIncludedResponse, D> for (T0,)
17984    {
17985        #[inline]
17986        unsafe fn encode(
17987            self,
17988            encoder: &mut fidl::encoding::Encoder<'_, D>,
17989            offset: usize,
17990            depth: fidl::encoding::Depth,
17991        ) -> fidl::Result<()> {
17992            encoder.debug_check_bounds::<SocketGetIpHeaderIncludedResponse>(offset);
17993            // Zero out padding regions. There's no need to apply masks
17994            // because the unmasked parts will be overwritten by fields.
17995            // Write the fields.
17996            self.0.encode(encoder, offset + 0, depth)?;
17997            Ok(())
17998        }
17999    }
18000
18001    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
18002        for SocketGetIpHeaderIncludedResponse
18003    {
18004        #[inline(always)]
18005        fn new_empty() -> Self {
18006            Self { value: fidl::new_empty!(bool, D) }
18007        }
18008
18009        #[inline]
18010        unsafe fn decode(
18011            &mut self,
18012            decoder: &mut fidl::encoding::Decoder<'_, D>,
18013            offset: usize,
18014            _depth: fidl::encoding::Depth,
18015        ) -> fidl::Result<()> {
18016            decoder.debug_check_bounds::<Self>(offset);
18017            // Verify that padding bytes are zero.
18018            fidl::decode!(bool, D, &mut self.value, decoder, offset + 0, _depth)?;
18019            Ok(())
18020        }
18021    }
18022
18023    impl fidl::encoding::ValueTypeMarker for SocketGetIpv6ChecksumResponse {
18024        type Borrowed<'a> = &'a Self;
18025        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18026            value
18027        }
18028    }
18029
18030    unsafe impl fidl::encoding::TypeMarker for SocketGetIpv6ChecksumResponse {
18031        type Owned = Self;
18032
18033        #[inline(always)]
18034        fn inline_align(_context: fidl::encoding::Context) -> usize {
18035            8
18036        }
18037
18038        #[inline(always)]
18039        fn inline_size(_context: fidl::encoding::Context) -> usize {
18040            16
18041        }
18042    }
18043
18044    unsafe impl<D: fidl::encoding::ResourceDialect>
18045        fidl::encoding::Encode<SocketGetIpv6ChecksumResponse, D>
18046        for &SocketGetIpv6ChecksumResponse
18047    {
18048        #[inline]
18049        unsafe fn encode(
18050            self,
18051            encoder: &mut fidl::encoding::Encoder<'_, D>,
18052            offset: usize,
18053            _depth: fidl::encoding::Depth,
18054        ) -> fidl::Result<()> {
18055            encoder.debug_check_bounds::<SocketGetIpv6ChecksumResponse>(offset);
18056            // Delegate to tuple encoding.
18057            fidl::encoding::Encode::<SocketGetIpv6ChecksumResponse, D>::encode(
18058                (<Ipv6ChecksumConfiguration as fidl::encoding::ValueTypeMarker>::borrow(
18059                    &self.config,
18060                ),),
18061                encoder,
18062                offset,
18063                _depth,
18064            )
18065        }
18066    }
18067    unsafe impl<
18068            D: fidl::encoding::ResourceDialect,
18069            T0: fidl::encoding::Encode<Ipv6ChecksumConfiguration, D>,
18070        > fidl::encoding::Encode<SocketGetIpv6ChecksumResponse, D> for (T0,)
18071    {
18072        #[inline]
18073        unsafe fn encode(
18074            self,
18075            encoder: &mut fidl::encoding::Encoder<'_, D>,
18076            offset: usize,
18077            depth: fidl::encoding::Depth,
18078        ) -> fidl::Result<()> {
18079            encoder.debug_check_bounds::<SocketGetIpv6ChecksumResponse>(offset);
18080            // Zero out padding regions. There's no need to apply masks
18081            // because the unmasked parts will be overwritten by fields.
18082            // Write the fields.
18083            self.0.encode(encoder, offset + 0, depth)?;
18084            Ok(())
18085        }
18086    }
18087
18088    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
18089        for SocketGetIpv6ChecksumResponse
18090    {
18091        #[inline(always)]
18092        fn new_empty() -> Self {
18093            Self { config: fidl::new_empty!(Ipv6ChecksumConfiguration, D) }
18094        }
18095
18096        #[inline]
18097        unsafe fn decode(
18098            &mut self,
18099            decoder: &mut fidl::encoding::Decoder<'_, D>,
18100            offset: usize,
18101            _depth: fidl::encoding::Depth,
18102        ) -> fidl::Result<()> {
18103            decoder.debug_check_bounds::<Self>(offset);
18104            // Verify that padding bytes are zero.
18105            fidl::decode!(
18106                Ipv6ChecksumConfiguration,
18107                D,
18108                &mut self.config,
18109                decoder,
18110                offset + 0,
18111                _depth
18112            )?;
18113            Ok(())
18114        }
18115    }
18116
18117    impl fidl::encoding::ValueTypeMarker for SocketRecvMsgResponse {
18118        type Borrowed<'a> = &'a Self;
18119        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18120            value
18121        }
18122    }
18123
18124    unsafe impl fidl::encoding::TypeMarker for SocketRecvMsgResponse {
18125        type Owned = Self;
18126
18127        #[inline(always)]
18128        fn inline_align(_context: fidl::encoding::Context) -> usize {
18129            8
18130        }
18131
18132        #[inline(always)]
18133        fn inline_size(_context: fidl::encoding::Context) -> usize {
18134            56
18135        }
18136    }
18137
18138    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SocketRecvMsgResponse, D>
18139        for &SocketRecvMsgResponse
18140    {
18141        #[inline]
18142        unsafe fn encode(
18143            self,
18144            encoder: &mut fidl::encoding::Encoder<'_, D>,
18145            offset: usize,
18146            _depth: fidl::encoding::Depth,
18147        ) -> fidl::Result<()> {
18148            encoder.debug_check_bounds::<SocketRecvMsgResponse>(offset);
18149            // Delegate to tuple encoding.
18150            fidl::encoding::Encode::<SocketRecvMsgResponse, D>::encode(
18151                (
18152                    <fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress> as fidl::encoding::ValueTypeMarker>::borrow(&self.addr),
18153                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
18154                    <fidl_fuchsia_posix_socket::NetworkSocketRecvControlData as fidl::encoding::ValueTypeMarker>::borrow(&self.control),
18155                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.truncated),
18156                ),
18157                encoder, offset, _depth
18158            )
18159        }
18160    }
18161    unsafe impl<
18162            D: fidl::encoding::ResourceDialect,
18163            T0: fidl::encoding::Encode<
18164                fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress>,
18165                D,
18166            >,
18167            T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
18168            T2: fidl::encoding::Encode<fidl_fuchsia_posix_socket::NetworkSocketRecvControlData, D>,
18169            T3: fidl::encoding::Encode<u32, D>,
18170        > fidl::encoding::Encode<SocketRecvMsgResponse, D> for (T0, T1, T2, T3)
18171    {
18172        #[inline]
18173        unsafe fn encode(
18174            self,
18175            encoder: &mut fidl::encoding::Encoder<'_, D>,
18176            offset: usize,
18177            depth: fidl::encoding::Depth,
18178        ) -> fidl::Result<()> {
18179            encoder.debug_check_bounds::<SocketRecvMsgResponse>(offset);
18180            // Zero out padding regions. There's no need to apply masks
18181            // because the unmasked parts will be overwritten by fields.
18182            unsafe {
18183                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(48);
18184                (ptr as *mut u64).write_unaligned(0);
18185            }
18186            // Write the fields.
18187            self.0.encode(encoder, offset + 0, depth)?;
18188            self.1.encode(encoder, offset + 16, depth)?;
18189            self.2.encode(encoder, offset + 32, depth)?;
18190            self.3.encode(encoder, offset + 48, depth)?;
18191            Ok(())
18192        }
18193    }
18194
18195    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SocketRecvMsgResponse {
18196        #[inline(always)]
18197        fn new_empty() -> Self {
18198            Self {
18199                addr: fidl::new_empty!(
18200                    fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress>,
18201                    D
18202                ),
18203                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
18204                control: fidl::new_empty!(
18205                    fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
18206                    D
18207                ),
18208                truncated: fidl::new_empty!(u32, D),
18209            }
18210        }
18211
18212        #[inline]
18213        unsafe fn decode(
18214            &mut self,
18215            decoder: &mut fidl::encoding::Decoder<'_, D>,
18216            offset: usize,
18217            _depth: fidl::encoding::Depth,
18218        ) -> fidl::Result<()> {
18219            decoder.debug_check_bounds::<Self>(offset);
18220            // Verify that padding bytes are zero.
18221            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(48) };
18222            let padval = unsafe { (ptr as *const u64).read_unaligned() };
18223            let mask = 0xffffffff00000000u64;
18224            let maskedval = padval & mask;
18225            if maskedval != 0 {
18226                return Err(fidl::Error::NonZeroPadding {
18227                    padding_start: offset + 48 + ((mask as u64).trailing_zeros() / 8) as usize,
18228                });
18229            }
18230            fidl::decode!(
18231                fidl::encoding::OptionalUnion<fidl_fuchsia_net::SocketAddress>,
18232                D,
18233                &mut self.addr,
18234                decoder,
18235                offset + 0,
18236                _depth
18237            )?;
18238            fidl::decode!(
18239                fidl::encoding::UnboundedVector<u8>,
18240                D,
18241                &mut self.data,
18242                decoder,
18243                offset + 16,
18244                _depth
18245            )?;
18246            fidl::decode!(
18247                fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
18248                D,
18249                &mut self.control,
18250                decoder,
18251                offset + 32,
18252                _depth
18253            )?;
18254            fidl::decode!(u32, D, &mut self.truncated, decoder, offset + 48, _depth)?;
18255            Ok(())
18256        }
18257    }
18258
18259    impl SocketDescribeResponse {
18260        #[inline(always)]
18261        fn max_ordinal_present(&self) -> u64 {
18262            if let Some(_) = self.event {
18263                return 1;
18264            }
18265            0
18266        }
18267    }
18268
18269    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
18270        type Borrowed<'a> = &'a mut Self;
18271        fn take_or_borrow<'a>(
18272            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
18273        ) -> Self::Borrowed<'a> {
18274            value
18275        }
18276    }
18277
18278    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
18279        type Owned = Self;
18280
18281        #[inline(always)]
18282        fn inline_align(_context: fidl::encoding::Context) -> usize {
18283            8
18284        }
18285
18286        #[inline(always)]
18287        fn inline_size(_context: fidl::encoding::Context) -> usize {
18288            16
18289        }
18290    }
18291
18292    unsafe impl
18293        fidl::encoding::Encode<
18294            SocketDescribeResponse,
18295            fidl::encoding::DefaultFuchsiaResourceDialect,
18296        > for &mut SocketDescribeResponse
18297    {
18298        unsafe fn encode(
18299            self,
18300            encoder: &mut fidl::encoding::Encoder<
18301                '_,
18302                fidl::encoding::DefaultFuchsiaResourceDialect,
18303            >,
18304            offset: usize,
18305            mut depth: fidl::encoding::Depth,
18306        ) -> fidl::Result<()> {
18307            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
18308            // Vector header
18309            let max_ordinal: u64 = self.max_ordinal_present();
18310            encoder.write_num(max_ordinal, offset);
18311            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
18312            // Calling encoder.out_of_line_offset(0) is not allowed.
18313            if max_ordinal == 0 {
18314                return Ok(());
18315            }
18316            depth.increment()?;
18317            let envelope_size = 8;
18318            let bytes_len = max_ordinal as usize * envelope_size;
18319            #[allow(unused_variables)]
18320            let offset = encoder.out_of_line_offset(bytes_len);
18321            let mut _prev_end_offset: usize = 0;
18322            if 1 > max_ordinal {
18323                return Ok(());
18324            }
18325
18326            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
18327            // are envelope_size bytes.
18328            let cur_offset: usize = (1 - 1) * envelope_size;
18329
18330            // Zero reserved fields.
18331            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
18332
18333            // Safety:
18334            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
18335            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
18336            //   envelope_size bytes, there is always sufficient room.
18337            fidl::encoding::encode_in_envelope_optional::<
18338                fidl::encoding::HandleType<
18339                    fidl::EventPair,
18340                    { fidl::ObjectType::EVENTPAIR.into_raw() },
18341                    2147483648,
18342                >,
18343                fidl::encoding::DefaultFuchsiaResourceDialect,
18344            >(
18345                self.event.as_mut().map(
18346                    <fidl::encoding::HandleType<
18347                        fidl::EventPair,
18348                        { fidl::ObjectType::EVENTPAIR.into_raw() },
18349                        2147483648,
18350                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
18351                ),
18352                encoder,
18353                offset + cur_offset,
18354                depth,
18355            )?;
18356
18357            _prev_end_offset = cur_offset + envelope_size;
18358
18359            Ok(())
18360        }
18361    }
18362
18363    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
18364        for SocketDescribeResponse
18365    {
18366        #[inline(always)]
18367        fn new_empty() -> Self {
18368            Self::default()
18369        }
18370
18371        unsafe fn decode(
18372            &mut self,
18373            decoder: &mut fidl::encoding::Decoder<
18374                '_,
18375                fidl::encoding::DefaultFuchsiaResourceDialect,
18376            >,
18377            offset: usize,
18378            mut depth: fidl::encoding::Depth,
18379        ) -> fidl::Result<()> {
18380            decoder.debug_check_bounds::<Self>(offset);
18381            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
18382                None => return Err(fidl::Error::NotNullable),
18383                Some(len) => len,
18384            };
18385            // Calling decoder.out_of_line_offset(0) is not allowed.
18386            if len == 0 {
18387                return Ok(());
18388            };
18389            depth.increment()?;
18390            let envelope_size = 8;
18391            let bytes_len = len * envelope_size;
18392            let offset = decoder.out_of_line_offset(bytes_len)?;
18393            // Decode the envelope for each type.
18394            let mut _next_ordinal_to_read = 0;
18395            let mut next_offset = offset;
18396            let end_offset = offset + bytes_len;
18397            _next_ordinal_to_read += 1;
18398            if next_offset >= end_offset {
18399                return Ok(());
18400            }
18401
18402            // Decode unknown envelopes for gaps in ordinals.
18403            while _next_ordinal_to_read < 1 {
18404                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18405                _next_ordinal_to_read += 1;
18406                next_offset += envelope_size;
18407            }
18408
18409            let next_out_of_line = decoder.next_out_of_line();
18410            let handles_before = decoder.remaining_handles();
18411            if let Some((inlined, num_bytes, num_handles)) =
18412                fidl::encoding::decode_envelope_header(decoder, next_offset)?
18413            {
18414                let member_inline_size = <fidl::encoding::HandleType<
18415                    fidl::EventPair,
18416                    { fidl::ObjectType::EVENTPAIR.into_raw() },
18417                    2147483648,
18418                > as fidl::encoding::TypeMarker>::inline_size(
18419                    decoder.context
18420                );
18421                if inlined != (member_inline_size <= 4) {
18422                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
18423                }
18424                let inner_offset;
18425                let mut inner_depth = depth.clone();
18426                if inlined {
18427                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
18428                    inner_offset = next_offset;
18429                } else {
18430                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18431                    inner_depth.increment()?;
18432                }
18433                let val_ref =
18434                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
18435                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
18436                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
18437                {
18438                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
18439                }
18440                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18441                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18442                }
18443            }
18444
18445            next_offset += envelope_size;
18446
18447            // Decode the remaining unknown envelopes.
18448            while next_offset < end_offset {
18449                _next_ordinal_to_read += 1;
18450                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
18451                next_offset += envelope_size;
18452            }
18453
18454            Ok(())
18455        }
18456    }
18457
18458    impl fidl::encoding::ValueTypeMarker for Ipv6ChecksumConfiguration {
18459        type Borrowed<'a> = &'a Self;
18460        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18461            value
18462        }
18463    }
18464
18465    unsafe impl fidl::encoding::TypeMarker for Ipv6ChecksumConfiguration {
18466        type Owned = Self;
18467
18468        #[inline(always)]
18469        fn inline_align(_context: fidl::encoding::Context) -> usize {
18470            8
18471        }
18472
18473        #[inline(always)]
18474        fn inline_size(_context: fidl::encoding::Context) -> usize {
18475            16
18476        }
18477    }
18478
18479    unsafe impl<D: fidl::encoding::ResourceDialect>
18480        fidl::encoding::Encode<Ipv6ChecksumConfiguration, D> for &Ipv6ChecksumConfiguration
18481    {
18482        #[inline]
18483        unsafe fn encode(
18484            self,
18485            encoder: &mut fidl::encoding::Encoder<'_, D>,
18486            offset: usize,
18487            _depth: fidl::encoding::Depth,
18488        ) -> fidl::Result<()> {
18489            encoder.debug_check_bounds::<Ipv6ChecksumConfiguration>(offset);
18490            encoder.write_num::<u64>(self.ordinal(), offset);
18491            match self {
18492                Ipv6ChecksumConfiguration::Disabled(ref val) => {
18493                    fidl::encoding::encode_in_envelope::<Empty, D>(
18494                        <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
18495                        encoder,
18496                        offset + 8,
18497                        _depth,
18498                    )
18499                }
18500                Ipv6ChecksumConfiguration::Offset(ref val) => {
18501                    fidl::encoding::encode_in_envelope::<i32, D>(
18502                        <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
18503                        encoder,
18504                        offset + 8,
18505                        _depth,
18506                    )
18507                }
18508            }
18509        }
18510    }
18511
18512    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
18513        for Ipv6ChecksumConfiguration
18514    {
18515        #[inline(always)]
18516        fn new_empty() -> Self {
18517            Self::Disabled(fidl::new_empty!(Empty, D))
18518        }
18519
18520        #[inline]
18521        unsafe fn decode(
18522            &mut self,
18523            decoder: &mut fidl::encoding::Decoder<'_, D>,
18524            offset: usize,
18525            mut depth: fidl::encoding::Depth,
18526        ) -> fidl::Result<()> {
18527            decoder.debug_check_bounds::<Self>(offset);
18528            #[allow(unused_variables)]
18529            let next_out_of_line = decoder.next_out_of_line();
18530            let handles_before = decoder.remaining_handles();
18531            let (ordinal, inlined, num_bytes, num_handles) =
18532                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
18533
18534            let member_inline_size = match ordinal {
18535                1 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
18536                2 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
18537                _ => return Err(fidl::Error::UnknownUnionTag),
18538            };
18539
18540            if inlined != (member_inline_size <= 4) {
18541                return Err(fidl::Error::InvalidInlineBitInEnvelope);
18542            }
18543            let _inner_offset;
18544            if inlined {
18545                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
18546                _inner_offset = offset + 8;
18547            } else {
18548                depth.increment()?;
18549                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18550            }
18551            match ordinal {
18552                1 => {
18553                    #[allow(irrefutable_let_patterns)]
18554                    if let Ipv6ChecksumConfiguration::Disabled(_) = self {
18555                        // Do nothing, read the value into the object
18556                    } else {
18557                        // Initialize `self` to the right variant
18558                        *self = Ipv6ChecksumConfiguration::Disabled(fidl::new_empty!(Empty, D));
18559                    }
18560                    #[allow(irrefutable_let_patterns)]
18561                    if let Ipv6ChecksumConfiguration::Disabled(ref mut val) = self {
18562                        fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
18563                    } else {
18564                        unreachable!()
18565                    }
18566                }
18567                2 => {
18568                    #[allow(irrefutable_let_patterns)]
18569                    if let Ipv6ChecksumConfiguration::Offset(_) = self {
18570                        // Do nothing, read the value into the object
18571                    } else {
18572                        // Initialize `self` to the right variant
18573                        *self = Ipv6ChecksumConfiguration::Offset(fidl::new_empty!(i32, D));
18574                    }
18575                    #[allow(irrefutable_let_patterns)]
18576                    if let Ipv6ChecksumConfiguration::Offset(ref mut val) = self {
18577                        fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
18578                    } else {
18579                        unreachable!()
18580                    }
18581                }
18582                ordinal => panic!("unexpected ordinal {:?}", ordinal),
18583            }
18584            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
18585                return Err(fidl::Error::InvalidNumBytesInEnvelope);
18586            }
18587            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18588                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18589            }
18590            Ok(())
18591        }
18592    }
18593
18594    impl fidl::encoding::ValueTypeMarker for ProtocolAssociation {
18595        type Borrowed<'a> = &'a Self;
18596        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
18597            value
18598        }
18599    }
18600
18601    unsafe impl fidl::encoding::TypeMarker for ProtocolAssociation {
18602        type Owned = Self;
18603
18604        #[inline(always)]
18605        fn inline_align(_context: fidl::encoding::Context) -> usize {
18606            8
18607        }
18608
18609        #[inline(always)]
18610        fn inline_size(_context: fidl::encoding::Context) -> usize {
18611            16
18612        }
18613    }
18614
18615    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProtocolAssociation, D>
18616        for &ProtocolAssociation
18617    {
18618        #[inline]
18619        unsafe fn encode(
18620            self,
18621            encoder: &mut fidl::encoding::Encoder<'_, D>,
18622            offset: usize,
18623            _depth: fidl::encoding::Depth,
18624        ) -> fidl::Result<()> {
18625            encoder.debug_check_bounds::<ProtocolAssociation>(offset);
18626            encoder.write_num::<u64>(self.ordinal(), offset);
18627            match self {
18628                ProtocolAssociation::Unassociated(ref val) => {
18629                    fidl::encoding::encode_in_envelope::<Empty, D>(
18630                        <Empty as fidl::encoding::ValueTypeMarker>::borrow(val),
18631                        encoder,
18632                        offset + 8,
18633                        _depth,
18634                    )
18635                }
18636                ProtocolAssociation::Associated(ref val) => {
18637                    fidl::encoding::encode_in_envelope::<u8, D>(
18638                        <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
18639                        encoder,
18640                        offset + 8,
18641                        _depth,
18642                    )
18643                }
18644            }
18645        }
18646    }
18647
18648    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtocolAssociation {
18649        #[inline(always)]
18650        fn new_empty() -> Self {
18651            Self::Unassociated(fidl::new_empty!(Empty, D))
18652        }
18653
18654        #[inline]
18655        unsafe fn decode(
18656            &mut self,
18657            decoder: &mut fidl::encoding::Decoder<'_, D>,
18658            offset: usize,
18659            mut depth: fidl::encoding::Depth,
18660        ) -> fidl::Result<()> {
18661            decoder.debug_check_bounds::<Self>(offset);
18662            #[allow(unused_variables)]
18663            let next_out_of_line = decoder.next_out_of_line();
18664            let handles_before = decoder.remaining_handles();
18665            let (ordinal, inlined, num_bytes, num_handles) =
18666                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
18667
18668            let member_inline_size = match ordinal {
18669                1 => <Empty as fidl::encoding::TypeMarker>::inline_size(decoder.context),
18670                2 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
18671                _ => return Err(fidl::Error::UnknownUnionTag),
18672            };
18673
18674            if inlined != (member_inline_size <= 4) {
18675                return Err(fidl::Error::InvalidInlineBitInEnvelope);
18676            }
18677            let _inner_offset;
18678            if inlined {
18679                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
18680                _inner_offset = offset + 8;
18681            } else {
18682                depth.increment()?;
18683                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
18684            }
18685            match ordinal {
18686                1 => {
18687                    #[allow(irrefutable_let_patterns)]
18688                    if let ProtocolAssociation::Unassociated(_) = self {
18689                        // Do nothing, read the value into the object
18690                    } else {
18691                        // Initialize `self` to the right variant
18692                        *self = ProtocolAssociation::Unassociated(fidl::new_empty!(Empty, D));
18693                    }
18694                    #[allow(irrefutable_let_patterns)]
18695                    if let ProtocolAssociation::Unassociated(ref mut val) = self {
18696                        fidl::decode!(Empty, D, val, decoder, _inner_offset, depth)?;
18697                    } else {
18698                        unreachable!()
18699                    }
18700                }
18701                2 => {
18702                    #[allow(irrefutable_let_patterns)]
18703                    if let ProtocolAssociation::Associated(_) = self {
18704                        // Do nothing, read the value into the object
18705                    } else {
18706                        // Initialize `self` to the right variant
18707                        *self = ProtocolAssociation::Associated(fidl::new_empty!(u8, D));
18708                    }
18709                    #[allow(irrefutable_let_patterns)]
18710                    if let ProtocolAssociation::Associated(ref mut val) = self {
18711                        fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
18712                    } else {
18713                        unreachable!()
18714                    }
18715                }
18716                ordinal => panic!("unexpected ordinal {:?}", ordinal),
18717            }
18718            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
18719                return Err(fidl::Error::InvalidNumBytesInEnvelope);
18720            }
18721            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
18722                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
18723            }
18724            Ok(())
18725        }
18726    }
18727}