fidl_fuchsia_posix_socket_raw/
fidl_fuchsia_posix_socket_raw.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_posix_socket_raw__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct ProviderSocketWithOptionsRequest {
16    pub domain: fidl_fuchsia_posix_socket::Domain,
17    pub proto: ProtocolAssociation,
18    pub opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
19}
20
21impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
22    for ProviderSocketWithOptionsRequest
23{
24}
25
26#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
27pub struct ProviderSocketWithOptionsResponse {
28    pub s: fidl::endpoints::ClientEnd<SocketMarker>,
29}
30
31impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
32    for ProviderSocketWithOptionsResponse
33{
34}
35
36#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
37pub struct ProviderSocketResponse {
38    pub s: fidl::endpoints::ClientEnd<SocketMarker>,
39}
40
41impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for ProviderSocketResponse {}
42
43#[derive(Debug, Default, PartialEq)]
44pub struct SocketDescribeResponse {
45    /// Signals additional information about the state of the socket such as
46    /// readiness or shutdown-ness.
47    pub event: Option<fidl::EventPair>,
48    #[doc(hidden)]
49    pub __source_breaking: fidl::marker::SourceBreaking,
50}
51
52impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for SocketDescribeResponse {}
53
54#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
55pub struct ProviderMarker;
56
57impl fidl::endpoints::ProtocolMarker for ProviderMarker {
58    type Proxy = ProviderProxy;
59    type RequestStream = ProviderRequestStream;
60    #[cfg(target_os = "fuchsia")]
61    type SynchronousProxy = ProviderSynchronousProxy;
62
63    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Provider";
64}
65impl fidl::endpoints::DiscoverableProtocolMarker for ProviderMarker {}
66pub type ProviderSocketResult =
67    Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>;
68pub type ProviderSocketWithOptionsResult =
69    Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>;
70
71pub trait ProviderProxyInterface: Send + Sync {
72    type SocketResponseFut: std::future::Future<Output = Result<ProviderSocketResult, fidl::Error>>
73        + Send;
74    fn r#socket(
75        &self,
76        domain: fidl_fuchsia_posix_socket::Domain,
77        proto: &ProtocolAssociation,
78    ) -> Self::SocketResponseFut;
79    type SocketWithOptionsResponseFut: std::future::Future<Output = Result<ProviderSocketWithOptionsResult, fidl::Error>>
80        + Send;
81    fn r#socket_with_options(
82        &self,
83        domain: fidl_fuchsia_posix_socket::Domain,
84        proto: &ProtocolAssociation,
85        opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
86    ) -> Self::SocketWithOptionsResponseFut;
87}
88#[derive(Debug)]
89#[cfg(target_os = "fuchsia")]
90pub struct ProviderSynchronousProxy {
91    client: fidl::client::sync::Client,
92}
93
94#[cfg(target_os = "fuchsia")]
95impl fidl::endpoints::SynchronousProxy for ProviderSynchronousProxy {
96    type Proxy = ProviderProxy;
97    type Protocol = ProviderMarker;
98
99    fn from_channel(inner: fidl::Channel) -> Self {
100        Self::new(inner)
101    }
102
103    fn into_channel(self) -> fidl::Channel {
104        self.client.into_channel()
105    }
106
107    fn as_channel(&self) -> &fidl::Channel {
108        self.client.as_channel()
109    }
110}
111
112#[cfg(target_os = "fuchsia")]
113impl ProviderSynchronousProxy {
114    pub fn new(channel: fidl::Channel) -> Self {
115        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
116        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
117    }
118
119    pub fn into_channel(self) -> fidl::Channel {
120        self.client.into_channel()
121    }
122
123    /// Waits until an event arrives and returns it. It is safe for other
124    /// threads to make concurrent requests while waiting for an event.
125    pub fn wait_for_event(
126        &self,
127        deadline: zx::MonotonicInstant,
128    ) -> Result<ProviderEvent, fidl::Error> {
129        ProviderEvent::decode(self.client.wait_for_event(deadline)?)
130    }
131
132    /// Requests a raw socket.
133    pub fn r#socket(
134        &self,
135        mut domain: fidl_fuchsia_posix_socket::Domain,
136        mut proto: &ProtocolAssociation,
137        ___deadline: zx::MonotonicInstant,
138    ) -> Result<ProviderSocketResult, fidl::Error> {
139        let _response =
140            self.client.send_query::<ProviderSocketRequest, fidl::encoding::ResultType<
141                ProviderSocketResponse,
142                fidl_fuchsia_posix::Errno,
143            >>(
144                (domain, proto),
145                0xdfa6a591ab48fd1,
146                fidl::encoding::DynamicFlags::empty(),
147                ___deadline,
148            )?;
149        Ok(_response.map(|x| x.s))
150    }
151
152    /// Requests a raw socket with creation options.
153    pub fn r#socket_with_options(
154        &self,
155        mut domain: fidl_fuchsia_posix_socket::Domain,
156        mut proto: &ProtocolAssociation,
157        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
158        ___deadline: zx::MonotonicInstant,
159    ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
160        let _response =
161            self.client.send_query::<ProviderSocketWithOptionsRequest, fidl::encoding::ResultType<
162                ProviderSocketWithOptionsResponse,
163                fidl_fuchsia_posix::Errno,
164            >>(
165                (domain, proto, &mut opts),
166                0x34cd6e7e82c46f85,
167                fidl::encoding::DynamicFlags::empty(),
168                ___deadline,
169            )?;
170        Ok(_response.map(|x| x.s))
171    }
172}
173
174#[cfg(target_os = "fuchsia")]
175impl From<ProviderSynchronousProxy> for zx::Handle {
176    fn from(value: ProviderSynchronousProxy) -> Self {
177        value.into_channel().into()
178    }
179}
180
181#[cfg(target_os = "fuchsia")]
182impl From<fidl::Channel> for ProviderSynchronousProxy {
183    fn from(value: fidl::Channel) -> Self {
184        Self::new(value)
185    }
186}
187
188#[cfg(target_os = "fuchsia")]
189impl fidl::endpoints::FromClient for ProviderSynchronousProxy {
190    type Protocol = ProviderMarker;
191
192    fn from_client(value: fidl::endpoints::ClientEnd<ProviderMarker>) -> Self {
193        Self::new(value.into_channel())
194    }
195}
196
197#[derive(Debug, Clone)]
198pub struct ProviderProxy {
199    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
200}
201
202impl fidl::endpoints::Proxy for ProviderProxy {
203    type Protocol = ProviderMarker;
204
205    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
206        Self::new(inner)
207    }
208
209    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
210        self.client.into_channel().map_err(|client| Self { client })
211    }
212
213    fn as_channel(&self) -> &::fidl::AsyncChannel {
214        self.client.as_channel()
215    }
216}
217
218impl ProviderProxy {
219    /// Create a new Proxy for fuchsia.posix.socket.raw/Provider.
220    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
221        let protocol_name = <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
222        Self { client: fidl::client::Client::new(channel, protocol_name) }
223    }
224
225    /// Get a Stream of events from the remote end of the protocol.
226    ///
227    /// # Panics
228    ///
229    /// Panics if the event stream was already taken.
230    pub fn take_event_stream(&self) -> ProviderEventStream {
231        ProviderEventStream { event_receiver: self.client.take_event_receiver() }
232    }
233
234    /// Requests a raw socket.
235    pub fn r#socket(
236        &self,
237        mut domain: fidl_fuchsia_posix_socket::Domain,
238        mut proto: &ProtocolAssociation,
239    ) -> fidl::client::QueryResponseFut<
240        ProviderSocketResult,
241        fidl::encoding::DefaultFuchsiaResourceDialect,
242    > {
243        ProviderProxyInterface::r#socket(self, domain, proto)
244    }
245
246    /// Requests a raw socket with creation options.
247    pub fn r#socket_with_options(
248        &self,
249        mut domain: fidl_fuchsia_posix_socket::Domain,
250        mut proto: &ProtocolAssociation,
251        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
252    ) -> fidl::client::QueryResponseFut<
253        ProviderSocketWithOptionsResult,
254        fidl::encoding::DefaultFuchsiaResourceDialect,
255    > {
256        ProviderProxyInterface::r#socket_with_options(self, domain, proto, opts)
257    }
258}
259
260impl ProviderProxyInterface for ProviderProxy {
261    type SocketResponseFut = fidl::client::QueryResponseFut<
262        ProviderSocketResult,
263        fidl::encoding::DefaultFuchsiaResourceDialect,
264    >;
265    fn r#socket(
266        &self,
267        mut domain: fidl_fuchsia_posix_socket::Domain,
268        mut proto: &ProtocolAssociation,
269    ) -> Self::SocketResponseFut {
270        fn _decode(
271            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
272        ) -> Result<ProviderSocketResult, fidl::Error> {
273            let _response = fidl::client::decode_transaction_body::<
274                fidl::encoding::ResultType<ProviderSocketResponse, fidl_fuchsia_posix::Errno>,
275                fidl::encoding::DefaultFuchsiaResourceDialect,
276                0xdfa6a591ab48fd1,
277            >(_buf?)?;
278            Ok(_response.map(|x| x.s))
279        }
280        self.client.send_query_and_decode::<ProviderSocketRequest, ProviderSocketResult>(
281            (domain, proto),
282            0xdfa6a591ab48fd1,
283            fidl::encoding::DynamicFlags::empty(),
284            _decode,
285        )
286    }
287
288    type SocketWithOptionsResponseFut = fidl::client::QueryResponseFut<
289        ProviderSocketWithOptionsResult,
290        fidl::encoding::DefaultFuchsiaResourceDialect,
291    >;
292    fn r#socket_with_options(
293        &self,
294        mut domain: fidl_fuchsia_posix_socket::Domain,
295        mut proto: &ProtocolAssociation,
296        mut opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
297    ) -> Self::SocketWithOptionsResponseFut {
298        fn _decode(
299            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
300        ) -> Result<ProviderSocketWithOptionsResult, fidl::Error> {
301            let _response = fidl::client::decode_transaction_body::<
302                fidl::encoding::ResultType<
303                    ProviderSocketWithOptionsResponse,
304                    fidl_fuchsia_posix::Errno,
305                >,
306                fidl::encoding::DefaultFuchsiaResourceDialect,
307                0x34cd6e7e82c46f85,
308            >(_buf?)?;
309            Ok(_response.map(|x| x.s))
310        }
311        self.client.send_query_and_decode::<
312            ProviderSocketWithOptionsRequest,
313            ProviderSocketWithOptionsResult,
314        >(
315            (domain, proto, &mut opts,),
316            0x34cd6e7e82c46f85,
317            fidl::encoding::DynamicFlags::empty(),
318            _decode,
319        )
320    }
321}
322
323pub struct ProviderEventStream {
324    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
325}
326
327impl std::marker::Unpin for ProviderEventStream {}
328
329impl futures::stream::FusedStream for ProviderEventStream {
330    fn is_terminated(&self) -> bool {
331        self.event_receiver.is_terminated()
332    }
333}
334
335impl futures::Stream for ProviderEventStream {
336    type Item = Result<ProviderEvent, fidl::Error>;
337
338    fn poll_next(
339        mut self: std::pin::Pin<&mut Self>,
340        cx: &mut std::task::Context<'_>,
341    ) -> std::task::Poll<Option<Self::Item>> {
342        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
343            &mut self.event_receiver,
344            cx
345        )?) {
346            Some(buf) => std::task::Poll::Ready(Some(ProviderEvent::decode(buf))),
347            None => std::task::Poll::Ready(None),
348        }
349    }
350}
351
352#[derive(Debug)]
353pub enum ProviderEvent {}
354
355impl ProviderEvent {
356    /// Decodes a message buffer as a [`ProviderEvent`].
357    fn decode(
358        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
359    ) -> Result<ProviderEvent, fidl::Error> {
360        let (bytes, _handles) = buf.split_mut();
361        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
362        debug_assert_eq!(tx_header.tx_id, 0);
363        match tx_header.ordinal {
364            _ => Err(fidl::Error::UnknownOrdinal {
365                ordinal: tx_header.ordinal,
366                protocol_name: <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
367            }),
368        }
369    }
370}
371
372/// A Stream of incoming requests for fuchsia.posix.socket.raw/Provider.
373pub struct ProviderRequestStream {
374    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
375    is_terminated: bool,
376}
377
378impl std::marker::Unpin for ProviderRequestStream {}
379
380impl futures::stream::FusedStream for ProviderRequestStream {
381    fn is_terminated(&self) -> bool {
382        self.is_terminated
383    }
384}
385
386impl fidl::endpoints::RequestStream for ProviderRequestStream {
387    type Protocol = ProviderMarker;
388    type ControlHandle = ProviderControlHandle;
389
390    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
391        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
392    }
393
394    fn control_handle(&self) -> Self::ControlHandle {
395        ProviderControlHandle { inner: self.inner.clone() }
396    }
397
398    fn into_inner(
399        self,
400    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
401    {
402        (self.inner, self.is_terminated)
403    }
404
405    fn from_inner(
406        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
407        is_terminated: bool,
408    ) -> Self {
409        Self { inner, is_terminated }
410    }
411}
412
413impl futures::Stream for ProviderRequestStream {
414    type Item = Result<ProviderRequest, fidl::Error>;
415
416    fn poll_next(
417        mut self: std::pin::Pin<&mut Self>,
418        cx: &mut std::task::Context<'_>,
419    ) -> std::task::Poll<Option<Self::Item>> {
420        let this = &mut *self;
421        if this.inner.check_shutdown(cx) {
422            this.is_terminated = true;
423            return std::task::Poll::Ready(None);
424        }
425        if this.is_terminated {
426            panic!("polled ProviderRequestStream after completion");
427        }
428        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
429            |bytes, handles| {
430                match this.inner.channel().read_etc(cx, bytes, handles) {
431                    std::task::Poll::Ready(Ok(())) => {}
432                    std::task::Poll::Pending => return std::task::Poll::Pending,
433                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
434                        this.is_terminated = true;
435                        return std::task::Poll::Ready(None);
436                    }
437                    std::task::Poll::Ready(Err(e)) => {
438                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
439                            e.into(),
440                        ))));
441                    }
442                }
443
444                // A message has been received from the channel
445                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
446
447                std::task::Poll::Ready(Some(match header.ordinal {
448                    0xdfa6a591ab48fd1 => {
449                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
450                        let mut req = fidl::new_empty!(
451                            ProviderSocketRequest,
452                            fidl::encoding::DefaultFuchsiaResourceDialect
453                        );
454                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketRequest>(&header, _body_bytes, handles, &mut req)?;
455                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
456                        Ok(ProviderRequest::Socket {
457                            domain: req.domain,
458                            proto: req.proto,
459
460                            responder: ProviderSocketResponder {
461                                control_handle: std::mem::ManuallyDrop::new(control_handle),
462                                tx_id: header.tx_id,
463                            },
464                        })
465                    }
466                    0x34cd6e7e82c46f85 => {
467                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
468                        let mut req = fidl::new_empty!(
469                            ProviderSocketWithOptionsRequest,
470                            fidl::encoding::DefaultFuchsiaResourceDialect
471                        );
472                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<ProviderSocketWithOptionsRequest>(&header, _body_bytes, handles, &mut req)?;
473                        let control_handle = ProviderControlHandle { inner: this.inner.clone() };
474                        Ok(ProviderRequest::SocketWithOptions {
475                            domain: req.domain,
476                            proto: req.proto,
477                            opts: req.opts,
478
479                            responder: ProviderSocketWithOptionsResponder {
480                                control_handle: std::mem::ManuallyDrop::new(control_handle),
481                                tx_id: header.tx_id,
482                            },
483                        })
484                    }
485                    _ => Err(fidl::Error::UnknownOrdinal {
486                        ordinal: header.ordinal,
487                        protocol_name:
488                            <ProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
489                    }),
490                }))
491            },
492        )
493    }
494}
495
496/// A raw network socket provider.
497#[derive(Debug)]
498pub enum ProviderRequest {
499    /// Requests a raw socket.
500    Socket {
501        domain: fidl_fuchsia_posix_socket::Domain,
502        proto: ProtocolAssociation,
503        responder: ProviderSocketResponder,
504    },
505    /// Requests a raw socket with creation options.
506    SocketWithOptions {
507        domain: fidl_fuchsia_posix_socket::Domain,
508        proto: ProtocolAssociation,
509        opts: fidl_fuchsia_posix_socket::SocketCreationOptions,
510        responder: ProviderSocketWithOptionsResponder,
511    },
512}
513
514impl ProviderRequest {
515    #[allow(irrefutable_let_patterns)]
516    pub fn into_socket(
517        self,
518    ) -> Option<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation, ProviderSocketResponder)>
519    {
520        if let ProviderRequest::Socket { domain, proto, responder } = self {
521            Some((domain, proto, responder))
522        } else {
523            None
524        }
525    }
526
527    #[allow(irrefutable_let_patterns)]
528    pub fn into_socket_with_options(
529        self,
530    ) -> Option<(
531        fidl_fuchsia_posix_socket::Domain,
532        ProtocolAssociation,
533        fidl_fuchsia_posix_socket::SocketCreationOptions,
534        ProviderSocketWithOptionsResponder,
535    )> {
536        if let ProviderRequest::SocketWithOptions { domain, proto, opts, responder } = self {
537            Some((domain, proto, opts, responder))
538        } else {
539            None
540        }
541    }
542
543    /// Name of the method defined in FIDL
544    pub fn method_name(&self) -> &'static str {
545        match *self {
546            ProviderRequest::Socket { .. } => "socket",
547            ProviderRequest::SocketWithOptions { .. } => "socket_with_options",
548        }
549    }
550}
551
552#[derive(Debug, Clone)]
553pub struct ProviderControlHandle {
554    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
555}
556
557impl fidl::endpoints::ControlHandle for ProviderControlHandle {
558    fn shutdown(&self) {
559        self.inner.shutdown()
560    }
561    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
562        self.inner.shutdown_with_epitaph(status)
563    }
564
565    fn is_closed(&self) -> bool {
566        self.inner.channel().is_closed()
567    }
568    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
569        self.inner.channel().on_closed()
570    }
571
572    #[cfg(target_os = "fuchsia")]
573    fn signal_peer(
574        &self,
575        clear_mask: zx::Signals,
576        set_mask: zx::Signals,
577    ) -> Result<(), zx_status::Status> {
578        use fidl::Peered;
579        self.inner.channel().signal_peer(clear_mask, set_mask)
580    }
581}
582
583impl ProviderControlHandle {}
584
585#[must_use = "FIDL methods require a response to be sent"]
586#[derive(Debug)]
587pub struct ProviderSocketResponder {
588    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
589    tx_id: u32,
590}
591
592/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
593/// if the responder is dropped without sending a response, so that the client
594/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
595impl std::ops::Drop for ProviderSocketResponder {
596    fn drop(&mut self) {
597        self.control_handle.shutdown();
598        // Safety: drops once, never accessed again
599        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
600    }
601}
602
603impl fidl::endpoints::Responder for ProviderSocketResponder {
604    type ControlHandle = ProviderControlHandle;
605
606    fn control_handle(&self) -> &ProviderControlHandle {
607        &self.control_handle
608    }
609
610    fn drop_without_shutdown(mut self) {
611        // Safety: drops once, never accessed again due to mem::forget
612        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
613        // Prevent Drop from running (which would shut down the channel)
614        std::mem::forget(self);
615    }
616}
617
618impl ProviderSocketResponder {
619    /// Sends a response to the FIDL transaction.
620    ///
621    /// Sets the channel to shutdown if an error occurs.
622    pub fn send(
623        self,
624        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
625    ) -> Result<(), fidl::Error> {
626        let _result = self.send_raw(result);
627        if _result.is_err() {
628            self.control_handle.shutdown();
629        }
630        self.drop_without_shutdown();
631        _result
632    }
633
634    /// Similar to "send" but does not shutdown the channel if an error occurs.
635    pub fn send_no_shutdown_on_err(
636        self,
637        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
638    ) -> Result<(), fidl::Error> {
639        let _result = self.send_raw(result);
640        self.drop_without_shutdown();
641        _result
642    }
643
644    fn send_raw(
645        &self,
646        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
647    ) -> Result<(), fidl::Error> {
648        self.control_handle.inner.send::<fidl::encoding::ResultType<
649            ProviderSocketResponse,
650            fidl_fuchsia_posix::Errno,
651        >>(
652            result.map(|s| (s,)),
653            self.tx_id,
654            0xdfa6a591ab48fd1,
655            fidl::encoding::DynamicFlags::empty(),
656        )
657    }
658}
659
660#[must_use = "FIDL methods require a response to be sent"]
661#[derive(Debug)]
662pub struct ProviderSocketWithOptionsResponder {
663    control_handle: std::mem::ManuallyDrop<ProviderControlHandle>,
664    tx_id: u32,
665}
666
667/// Set the the channel to be shutdown (see [`ProviderControlHandle::shutdown`])
668/// if the responder is dropped without sending a response, so that the client
669/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
670impl std::ops::Drop for ProviderSocketWithOptionsResponder {
671    fn drop(&mut self) {
672        self.control_handle.shutdown();
673        // Safety: drops once, never accessed again
674        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
675    }
676}
677
678impl fidl::endpoints::Responder for ProviderSocketWithOptionsResponder {
679    type ControlHandle = ProviderControlHandle;
680
681    fn control_handle(&self) -> &ProviderControlHandle {
682        &self.control_handle
683    }
684
685    fn drop_without_shutdown(mut self) {
686        // Safety: drops once, never accessed again due to mem::forget
687        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
688        // Prevent Drop from running (which would shut down the channel)
689        std::mem::forget(self);
690    }
691}
692
693impl ProviderSocketWithOptionsResponder {
694    /// Sends a response to the FIDL transaction.
695    ///
696    /// Sets the channel to shutdown if an error occurs.
697    pub fn send(
698        self,
699        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
700    ) -> Result<(), fidl::Error> {
701        let _result = self.send_raw(result);
702        if _result.is_err() {
703            self.control_handle.shutdown();
704        }
705        self.drop_without_shutdown();
706        _result
707    }
708
709    /// Similar to "send" but does not shutdown the channel if an error occurs.
710    pub fn send_no_shutdown_on_err(
711        self,
712        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
713    ) -> Result<(), fidl::Error> {
714        let _result = self.send_raw(result);
715        self.drop_without_shutdown();
716        _result
717    }
718
719    fn send_raw(
720        &self,
721        mut result: Result<fidl::endpoints::ClientEnd<SocketMarker>, fidl_fuchsia_posix::Errno>,
722    ) -> Result<(), fidl::Error> {
723        self.control_handle.inner.send::<fidl::encoding::ResultType<
724            ProviderSocketWithOptionsResponse,
725            fidl_fuchsia_posix::Errno,
726        >>(
727            result.map(|s| (s,)),
728            self.tx_id,
729            0x34cd6e7e82c46f85,
730            fidl::encoding::DynamicFlags::empty(),
731        )
732    }
733}
734
735#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
736pub struct SocketMarker;
737
738impl fidl::endpoints::ProtocolMarker for SocketMarker {
739    type Proxy = SocketProxy;
740    type RequestStream = SocketRequestStream;
741    #[cfg(target_os = "fuchsia")]
742    type SynchronousProxy = SocketSynchronousProxy;
743
744    const DEBUG_NAME: &'static str = "fuchsia.posix.socket.raw.Socket";
745}
746impl fidl::endpoints::DiscoverableProtocolMarker for SocketMarker {}
747pub type SocketRecvMsgResult = Result<
748    (
749        Option<Box<fidl_fuchsia_net::SocketAddress>>,
750        Vec<u8>,
751        fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
752        u32,
753    ),
754    fidl_fuchsia_posix::Errno,
755>;
756pub type SocketSendMsgResult = Result<(), fidl_fuchsia_posix::Errno>;
757pub type SocketGetInfoResult =
758    Result<(fidl_fuchsia_posix_socket::Domain, ProtocolAssociation), fidl_fuchsia_posix::Errno>;
759pub type SocketSetIpHeaderIncludedResult = Result<(), fidl_fuchsia_posix::Errno>;
760pub type SocketGetIpHeaderIncludedResult = Result<bool, fidl_fuchsia_posix::Errno>;
761pub type SocketSetIcmpv6FilterResult = Result<(), fidl_fuchsia_posix::Errno>;
762pub type SocketGetIcmpv6FilterResult = Result<Icmpv6Filter, fidl_fuchsia_posix::Errno>;
763pub type SocketSetIpv6ChecksumResult = Result<(), fidl_fuchsia_posix::Errno>;
764pub type SocketGetIpv6ChecksumResult = Result<Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>;
765
766pub trait SocketProxyInterface: Send + Sync {
767    fn r#clone(
768        &self,
769        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
770    ) -> Result<(), fidl::Error>;
771    type CloseResponseFut: std::future::Future<
772            Output = Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error>,
773        > + Send;
774    fn r#close(&self) -> Self::CloseResponseFut;
775    type QueryResponseFut: std::future::Future<Output = Result<Vec<u8>, fidl::Error>> + Send;
776    fn r#query(&self) -> Self::QueryResponseFut;
777    type SetReuseAddressResponseFut: std::future::Future<
778            Output = Result<
779                fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
780                fidl::Error,
781            >,
782        > + Send;
783    fn r#set_reuse_address(&self, value: bool) -> Self::SetReuseAddressResponseFut;
784    type GetReuseAddressResponseFut: std::future::Future<
785            Output = Result<
786                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
787                fidl::Error,
788            >,
789        > + Send;
790    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut;
791    type GetErrorResponseFut: std::future::Future<
792            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error>,
793        > + Send;
794    fn r#get_error(&self) -> Self::GetErrorResponseFut;
795    type SetBroadcastResponseFut: std::future::Future<
796            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error>,
797        > + Send;
798    fn r#set_broadcast(&self, value: bool) -> Self::SetBroadcastResponseFut;
799    type GetBroadcastResponseFut: std::future::Future<
800            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error>,
801        > + Send;
802    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut;
803    type SetSendBufferResponseFut: std::future::Future<
804            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error>,
805        > + Send;
806    fn r#set_send_buffer(&self, value_bytes: u64) -> Self::SetSendBufferResponseFut;
807    type GetSendBufferResponseFut: std::future::Future<
808            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error>,
809        > + Send;
810    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut;
811    type SetReceiveBufferResponseFut: std::future::Future<
812            Output = Result<
813                fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
814                fidl::Error,
815            >,
816        > + Send;
817    fn r#set_receive_buffer(&self, value_bytes: u64) -> Self::SetReceiveBufferResponseFut;
818    type GetReceiveBufferResponseFut: std::future::Future<
819            Output = Result<
820                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
821                fidl::Error,
822            >,
823        > + Send;
824    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut;
825    type SetKeepAliveResponseFut: std::future::Future<
826            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error>,
827        > + Send;
828    fn r#set_keep_alive(&self, value: bool) -> Self::SetKeepAliveResponseFut;
829    type GetKeepAliveResponseFut: std::future::Future<
830            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error>,
831        > + Send;
832    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut;
833    type SetOutOfBandInlineResponseFut: std::future::Future<
834            Output = Result<
835                fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
836                fidl::Error,
837            >,
838        > + Send;
839    fn r#set_out_of_band_inline(&self, value: bool) -> Self::SetOutOfBandInlineResponseFut;
840    type GetOutOfBandInlineResponseFut: std::future::Future<
841            Output = Result<
842                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
843                fidl::Error,
844            >,
845        > + Send;
846    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut;
847    type SetNoCheckResponseFut: std::future::Future<
848            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error>,
849        > + Send;
850    fn r#set_no_check(&self, value: bool) -> Self::SetNoCheckResponseFut;
851    type GetNoCheckResponseFut: std::future::Future<
852            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error>,
853        > + Send;
854    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut;
855    type SetLingerResponseFut: std::future::Future<
856            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error>,
857        > + Send;
858    fn r#set_linger(&self, linger: bool, length_secs: u32) -> Self::SetLingerResponseFut;
859    type GetLingerResponseFut: std::future::Future<
860            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error>,
861        > + Send;
862    fn r#get_linger(&self) -> Self::GetLingerResponseFut;
863    type SetReusePortResponseFut: std::future::Future<
864            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error>,
865        > + Send;
866    fn r#set_reuse_port(&self, value: bool) -> Self::SetReusePortResponseFut;
867    type GetReusePortResponseFut: std::future::Future<
868            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
869        > + Send;
870    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
871    type GetAcceptConnResponseFut: std::future::Future<
872            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
873        > + Send;
874    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
875    type SetBindToDeviceResponseFut: std::future::Future<
876            Output = Result<
877                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
878                fidl::Error,
879            >,
880        > + Send;
881    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
882    type GetBindToDeviceResponseFut: std::future::Future<
883            Output = Result<
884                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
885                fidl::Error,
886            >,
887        > + Send;
888    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
889    type SetBindToInterfaceIndexResponseFut: std::future::Future<
890            Output = Result<
891                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
892                fidl::Error,
893            >,
894        > + Send;
895    fn r#set_bind_to_interface_index(&self, value: u64)
896    -> Self::SetBindToInterfaceIndexResponseFut;
897    type GetBindToInterfaceIndexResponseFut: std::future::Future<
898            Output = Result<
899                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
900                fidl::Error,
901            >,
902        > + Send;
903    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
904    type SetTimestampResponseFut: std::future::Future<
905            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
906        > + Send;
907    fn r#set_timestamp(
908        &self,
909        value: fidl_fuchsia_posix_socket::TimestampOption,
910    ) -> Self::SetTimestampResponseFut;
911    type GetTimestampResponseFut: std::future::Future<
912            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
913        > + Send;
914    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
915    type SetMarkResponseFut: std::future::Future<
916            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
917        > + Send;
918    fn r#set_mark(
919        &self,
920        domain: fidl_fuchsia_net::MarkDomain,
921        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
922    ) -> Self::SetMarkResponseFut;
923    type GetMarkResponseFut: std::future::Future<
924            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
925        > + Send;
926    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
927    type GetCookieResponseFut: std::future::Future<
928            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error>,
929        > + Send;
930    fn r#get_cookie(&self) -> Self::GetCookieResponseFut;
931    type BindResponseFut: std::future::Future<
932            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
933        > + Send;
934    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
935    type ConnectResponseFut: std::future::Future<
936            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
937        > + Send;
938    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
939    type DisconnectResponseFut: std::future::Future<
940            Output = Result<
941                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
942                fidl::Error,
943            >,
944        > + Send;
945    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
946    type GetSockNameResponseFut: std::future::Future<
947            Output = Result<
948                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
949                fidl::Error,
950            >,
951        > + Send;
952    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
953    type GetPeerNameResponseFut: std::future::Future<
954            Output = Result<
955                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
956                fidl::Error,
957            >,
958        > + Send;
959    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
960    type ShutdownResponseFut: std::future::Future<
961            Output = Result<
962                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
963                fidl::Error,
964            >,
965        > + Send;
966    fn r#shutdown(
967        &self,
968        mode: fidl_fuchsia_posix_socket::ShutdownMode,
969    ) -> Self::ShutdownResponseFut;
970    type SetIpTypeOfServiceResponseFut: std::future::Future<
971            Output = Result<
972                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
973                fidl::Error,
974            >,
975        > + Send;
976    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
977    type GetIpTypeOfServiceResponseFut: std::future::Future<
978            Output = Result<
979                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
980                fidl::Error,
981            >,
982        > + Send;
983    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
984    type SetIpTtlResponseFut: std::future::Future<
985            Output = Result<
986                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
987                fidl::Error,
988            >,
989        > + Send;
990    fn r#set_ip_ttl(
991        &self,
992        value: &fidl_fuchsia_posix_socket::OptionalUint8,
993    ) -> Self::SetIpTtlResponseFut;
994    type GetIpTtlResponseFut: std::future::Future<
995            Output = Result<
996                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
997                fidl::Error,
998            >,
999        > + Send;
1000    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1001    type SetIpPacketInfoResponseFut: std::future::Future<
1002            Output = Result<
1003                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1004                fidl::Error,
1005            >,
1006        > + Send;
1007    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1008    type GetIpPacketInfoResponseFut: std::future::Future<
1009            Output = Result<
1010                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1011                fidl::Error,
1012            >,
1013        > + Send;
1014    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1015    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1016            Output = Result<
1017                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1018                fidl::Error,
1019            >,
1020        > + Send;
1021    fn r#set_ip_receive_type_of_service(
1022        &self,
1023        value: bool,
1024    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1025    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1026            Output = Result<
1027                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1028                fidl::Error,
1029            >,
1030        > + Send;
1031    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1032    type SetIpReceiveTtlResponseFut: std::future::Future<
1033            Output = Result<
1034                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1035                fidl::Error,
1036            >,
1037        > + Send;
1038    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1039    type GetIpReceiveTtlResponseFut: std::future::Future<
1040            Output = Result<
1041                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1042                fidl::Error,
1043            >,
1044        > + Send;
1045    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1046    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1047            Output = Result<
1048                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1049                fidl::Error,
1050            >,
1051        > + Send;
1052    fn r#set_ip_multicast_interface(
1053        &self,
1054        iface: u64,
1055        address: &fidl_fuchsia_net::Ipv4Address,
1056    ) -> Self::SetIpMulticastInterfaceResponseFut;
1057    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1058            Output = Result<
1059                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1060                fidl::Error,
1061            >,
1062        > + Send;
1063    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1064    type SetIpMulticastTtlResponseFut: std::future::Future<
1065            Output = Result<
1066                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1067                fidl::Error,
1068            >,
1069        > + Send;
1070    fn r#set_ip_multicast_ttl(
1071        &self,
1072        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1073    ) -> Self::SetIpMulticastTtlResponseFut;
1074    type GetIpMulticastTtlResponseFut: std::future::Future<
1075            Output = Result<
1076                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1077                fidl::Error,
1078            >,
1079        > + Send;
1080    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1081    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1082            Output = Result<
1083                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1084                fidl::Error,
1085            >,
1086        > + Send;
1087    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1088    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1089            Output = Result<
1090                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1091                fidl::Error,
1092            >,
1093        > + Send;
1094    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1095    type AddIpMembershipResponseFut: std::future::Future<
1096            Output = Result<
1097                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1098                fidl::Error,
1099            >,
1100        > + Send;
1101    fn r#add_ip_membership(
1102        &self,
1103        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1104    ) -> Self::AddIpMembershipResponseFut;
1105    type DropIpMembershipResponseFut: std::future::Future<
1106            Output = Result<
1107                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1108                fidl::Error,
1109            >,
1110        > + Send;
1111    fn r#drop_ip_membership(
1112        &self,
1113        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1114    ) -> Self::DropIpMembershipResponseFut;
1115    type SetIpTransparentResponseFut: std::future::Future<
1116            Output = Result<
1117                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1118                fidl::Error,
1119            >,
1120        > + Send;
1121    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1122    type GetIpTransparentResponseFut: std::future::Future<
1123            Output = Result<
1124                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1125                fidl::Error,
1126            >,
1127        > + Send;
1128    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1129    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1130    fn r#set_ip_receive_original_destination_address(
1131        &self,
1132        value: bool,
1133    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1134    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1135    fn r#get_ip_receive_original_destination_address(
1136        &self,
1137    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1138    type AddIpv6MembershipResponseFut: std::future::Future<
1139            Output = Result<
1140                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1141                fidl::Error,
1142            >,
1143        > + Send;
1144    fn r#add_ipv6_membership(
1145        &self,
1146        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1147    ) -> Self::AddIpv6MembershipResponseFut;
1148    type DropIpv6MembershipResponseFut: std::future::Future<
1149            Output = Result<
1150                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1151                fidl::Error,
1152            >,
1153        > + Send;
1154    fn r#drop_ipv6_membership(
1155        &self,
1156        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1157    ) -> Self::DropIpv6MembershipResponseFut;
1158    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1159            Output = Result<
1160                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1161                fidl::Error,
1162            >,
1163        > + Send;
1164    fn r#set_ipv6_multicast_interface(
1165        &self,
1166        value: u64,
1167    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1168    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1169            Output = Result<
1170                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1171                fidl::Error,
1172            >,
1173        > + Send;
1174    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1175    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1176            Output = Result<
1177                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1178                fidl::Error,
1179            >,
1180        > + Send;
1181    fn r#set_ipv6_unicast_hops(
1182        &self,
1183        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1184    ) -> Self::SetIpv6UnicastHopsResponseFut;
1185    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1186            Output = Result<
1187                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1188                fidl::Error,
1189            >,
1190        > + Send;
1191    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1192    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1193            Output = Result<
1194                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1195                fidl::Error,
1196            >,
1197        > + Send;
1198    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1199    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1200            Output = Result<
1201                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1202                fidl::Error,
1203            >,
1204        > + Send;
1205    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1206    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1207            Output = Result<
1208                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1209                fidl::Error,
1210            >,
1211        > + Send;
1212    fn r#set_ipv6_multicast_hops(
1213        &self,
1214        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1215    ) -> Self::SetIpv6MulticastHopsResponseFut;
1216    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1217            Output = Result<
1218                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1219                fidl::Error,
1220            >,
1221        > + Send;
1222    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1223    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1224            Output = Result<
1225                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1226                fidl::Error,
1227            >,
1228        > + Send;
1229    fn r#set_ipv6_multicast_loopback(
1230        &self,
1231        value: bool,
1232    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1233    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1234            Output = Result<
1235                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1236                fidl::Error,
1237            >,
1238        > + Send;
1239    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1240    type SetIpv6OnlyResponseFut: std::future::Future<
1241            Output = Result<
1242                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1243                fidl::Error,
1244            >,
1245        > + Send;
1246    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1247    type GetIpv6OnlyResponseFut: std::future::Future<
1248            Output = Result<
1249                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1250                fidl::Error,
1251            >,
1252        > + Send;
1253    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1254    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1255            Output = Result<
1256                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1257                fidl::Error,
1258            >,
1259        > + Send;
1260    fn r#set_ipv6_receive_traffic_class(
1261        &self,
1262        value: bool,
1263    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1264    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1265            Output = Result<
1266                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1267                fidl::Error,
1268            >,
1269        > + Send;
1270    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1271    type SetIpv6TrafficClassResponseFut: std::future::Future<
1272            Output = Result<
1273                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1274                fidl::Error,
1275            >,
1276        > + Send;
1277    fn r#set_ipv6_traffic_class(
1278        &self,
1279        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1280    ) -> Self::SetIpv6TrafficClassResponseFut;
1281    type GetIpv6TrafficClassResponseFut: std::future::Future<
1282            Output = Result<
1283                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1284                fidl::Error,
1285            >,
1286        > + Send;
1287    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1288    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1289            Output = Result<
1290                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1291                fidl::Error,
1292            >,
1293        > + Send;
1294    fn r#set_ipv6_receive_packet_info(
1295        &self,
1296        value: bool,
1297    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1298    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1299            Output = Result<
1300                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1301                fidl::Error,
1302            >,
1303        > + Send;
1304    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1305    type GetOriginalDestinationResponseFut: std::future::Future<
1306            Output = Result<
1307                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1308                fidl::Error,
1309            >,
1310        > + Send;
1311    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1312    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1313        + Send;
1314    fn r#describe(&self) -> Self::DescribeResponseFut;
1315    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1316        + Send;
1317    fn r#recv_msg(
1318        &self,
1319        want_addr: bool,
1320        data_len: u32,
1321        want_control: bool,
1322        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1323    ) -> Self::RecvMsgResponseFut;
1324    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1325        + Send;
1326    fn r#send_msg(
1327        &self,
1328        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1329        data: &[u8],
1330        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1331        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1332    ) -> Self::SendMsgResponseFut;
1333    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1334        + Send;
1335    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1336    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1337        + Send;
1338    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1339    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1340        + Send;
1341    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1342    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1343        + Send;
1344    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1345    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1346        + Send;
1347    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1348    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1349        + Send;
1350    fn r#set_ipv6_checksum(
1351        &self,
1352        config: &Ipv6ChecksumConfiguration,
1353    ) -> Self::SetIpv6ChecksumResponseFut;
1354    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1355        + Send;
1356    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1357}
1358#[derive(Debug)]
1359#[cfg(target_os = "fuchsia")]
1360pub struct SocketSynchronousProxy {
1361    client: fidl::client::sync::Client,
1362}
1363
1364#[cfg(target_os = "fuchsia")]
1365impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1366    type Proxy = SocketProxy;
1367    type Protocol = SocketMarker;
1368
1369    fn from_channel(inner: fidl::Channel) -> Self {
1370        Self::new(inner)
1371    }
1372
1373    fn into_channel(self) -> fidl::Channel {
1374        self.client.into_channel()
1375    }
1376
1377    fn as_channel(&self) -> &fidl::Channel {
1378        self.client.as_channel()
1379    }
1380}
1381
1382#[cfg(target_os = "fuchsia")]
1383impl SocketSynchronousProxy {
1384    pub fn new(channel: fidl::Channel) -> Self {
1385        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1386        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1387    }
1388
1389    pub fn into_channel(self) -> fidl::Channel {
1390        self.client.into_channel()
1391    }
1392
1393    /// Waits until an event arrives and returns it. It is safe for other
1394    /// threads to make concurrent requests while waiting for an event.
1395    pub fn wait_for_event(
1396        &self,
1397        deadline: zx::MonotonicInstant,
1398    ) -> Result<SocketEvent, fidl::Error> {
1399        SocketEvent::decode(self.client.wait_for_event(deadline)?)
1400    }
1401
1402    pub fn r#clone(
1403        &self,
1404        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1405    ) -> Result<(), fidl::Error> {
1406        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1407            (request,),
1408            0x20d8a7aba2168a79,
1409            fidl::encoding::DynamicFlags::empty(),
1410        )
1411    }
1412
1413    /// Terminates the connection.
1414    ///
1415    /// After calling `Close`, the client must not send any other requests.
1416    ///
1417    /// Servers, after sending the status response, should close the connection
1418    /// regardless of status and without sending an epitaph.
1419    ///
1420    /// Closing the client end of the channel should be semantically equivalent
1421    /// to calling `Close` without knowing when the close has completed or its
1422    /// status.
1423    pub fn r#close(
1424        &self,
1425        ___deadline: zx::MonotonicInstant,
1426    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1427        let _response = self.client.send_query::<
1428            fidl::encoding::EmptyPayload,
1429            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1430        >(
1431            (),
1432            0x5ac5d459ad7f657e,
1433            fidl::encoding::DynamicFlags::empty(),
1434            ___deadline,
1435        )?;
1436        Ok(_response.map(|x| x))
1437    }
1438
1439    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1440        let _response = self.client.send_query::<
1441            fidl::encoding::EmptyPayload,
1442            fidl_fuchsia_unknown::QueryableQueryResponse,
1443        >(
1444            (),
1445            0x2658edee9decfc06,
1446            fidl::encoding::DynamicFlags::empty(),
1447            ___deadline,
1448        )?;
1449        Ok(_response.protocol)
1450    }
1451
1452    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1453    pub fn r#set_reuse_address(
1454        &self,
1455        mut value: bool,
1456        ___deadline: zx::MonotonicInstant,
1457    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1458        let _response = self.client.send_query::<
1459            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1460            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1461        >(
1462            (value,),
1463            0x1fd74ee8b9a4a876,
1464            fidl::encoding::DynamicFlags::empty(),
1465            ___deadline,
1466        )?;
1467        Ok(_response.map(|x| x))
1468    }
1469
1470    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1471    pub fn r#get_reuse_address(
1472        &self,
1473        ___deadline: zx::MonotonicInstant,
1474    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1475        let _response = self
1476            .client
1477            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1478                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1479                fidl_fuchsia_posix::Errno,
1480            >>(
1481                (), 0x67b7206b8d1bc0a5, fidl::encoding::DynamicFlags::empty(), ___deadline
1482            )?;
1483        Ok(_response.map(|x| x.value))
1484    }
1485
1486    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1487    /// Returns the last error if there is an error set on the socket.
1488    pub fn r#get_error(
1489        &self,
1490        ___deadline: zx::MonotonicInstant,
1491    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1492        let _response =
1493            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1494                fidl::encoding::EmptyStruct,
1495                fidl_fuchsia_posix::Errno,
1496            >>(
1497                (),
1498                0x5aad39b33e5f6ebb,
1499                fidl::encoding::DynamicFlags::empty(),
1500                ___deadline,
1501            )?;
1502        Ok(_response.map(|x| x))
1503    }
1504
1505    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1506    pub fn r#set_broadcast(
1507        &self,
1508        mut value: bool,
1509        ___deadline: zx::MonotonicInstant,
1510    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1511        let _response = self.client.send_query::<
1512            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1513            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1514        >(
1515            (value,),
1516            0x6023e081ce3cd947,
1517            fidl::encoding::DynamicFlags::empty(),
1518            ___deadline,
1519        )?;
1520        Ok(_response.map(|x| x))
1521    }
1522
1523    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1524    pub fn r#get_broadcast(
1525        &self,
1526        ___deadline: zx::MonotonicInstant,
1527    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1528        let _response = self
1529            .client
1530            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1531                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1532                fidl_fuchsia_posix::Errno,
1533            >>(
1534                (), 0x68796fc556f9780d, fidl::encoding::DynamicFlags::empty(), ___deadline
1535            )?;
1536        Ok(_response.map(|x| x.value))
1537    }
1538
1539    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1540    pub fn r#set_send_buffer(
1541        &self,
1542        mut value_bytes: u64,
1543        ___deadline: zx::MonotonicInstant,
1544    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1545        let _response = self.client.send_query::<
1546            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1547            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1548        >(
1549            (value_bytes,),
1550            0x756eac32d73a7a70,
1551            fidl::encoding::DynamicFlags::empty(),
1552            ___deadline,
1553        )?;
1554        Ok(_response.map(|x| x))
1555    }
1556
1557    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1558    pub fn r#get_send_buffer(
1559        &self,
1560        ___deadline: zx::MonotonicInstant,
1561    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1562        let _response = self
1563            .client
1564            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1565                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1566                fidl_fuchsia_posix::Errno,
1567            >>(
1568                (), 0x78a52fd9c7b2410b, fidl::encoding::DynamicFlags::empty(), ___deadline
1569            )?;
1570        Ok(_response.map(|x| x.value_bytes))
1571    }
1572
1573    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1574    pub fn r#set_receive_buffer(
1575        &self,
1576        mut value_bytes: u64,
1577        ___deadline: zx::MonotonicInstant,
1578    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1579        let _response = self.client.send_query::<
1580            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1581            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1582        >(
1583            (value_bytes,),
1584            0x6b0cf2f1919c7001,
1585            fidl::encoding::DynamicFlags::empty(),
1586            ___deadline,
1587        )?;
1588        Ok(_response.map(|x| x))
1589    }
1590
1591    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1592    pub fn r#get_receive_buffer(
1593        &self,
1594        ___deadline: zx::MonotonicInstant,
1595    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1596        let _response = self
1597            .client
1598            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1599                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1600                fidl_fuchsia_posix::Errno,
1601            >>(
1602                (), 0x14c1a4b64f709e5c, fidl::encoding::DynamicFlags::empty(), ___deadline
1603            )?;
1604        Ok(_response.map(|x| x.value_bytes))
1605    }
1606
1607    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1608    pub fn r#set_keep_alive(
1609        &self,
1610        mut value: bool,
1611        ___deadline: zx::MonotonicInstant,
1612    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1613        let _response = self.client.send_query::<
1614            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1615            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1616        >(
1617            (value,),
1618            0x572df8f0b920d2c7,
1619            fidl::encoding::DynamicFlags::empty(),
1620            ___deadline,
1621        )?;
1622        Ok(_response.map(|x| x))
1623    }
1624
1625    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1626    pub fn r#get_keep_alive(
1627        &self,
1628        ___deadline: zx::MonotonicInstant,
1629    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1630        let _response = self
1631            .client
1632            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1633                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1634                fidl_fuchsia_posix::Errno,
1635            >>(
1636                (), 0x2dd29d3215f2c9d2, fidl::encoding::DynamicFlags::empty(), ___deadline
1637            )?;
1638        Ok(_response.map(|x| x.value))
1639    }
1640
1641    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1642    pub fn r#set_out_of_band_inline(
1643        &self,
1644        mut value: bool,
1645        ___deadline: zx::MonotonicInstant,
1646    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1647        let _response = self.client.send_query::<
1648            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1649            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1650        >(
1651            (value,),
1652            0x3ecb49968bee439,
1653            fidl::encoding::DynamicFlags::empty(),
1654            ___deadline,
1655        )?;
1656        Ok(_response.map(|x| x))
1657    }
1658
1659    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1660    pub fn r#get_out_of_band_inline(
1661        &self,
1662        ___deadline: zx::MonotonicInstant,
1663    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1664        let _response = self
1665            .client
1666            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1667                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1668                fidl_fuchsia_posix::Errno,
1669            >>(
1670                (), 0x348c1ab3aeca1745, fidl::encoding::DynamicFlags::empty(), ___deadline
1671            )?;
1672        Ok(_response.map(|x| x.value))
1673    }
1674
1675    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1676    pub fn r#set_no_check(
1677        &self,
1678        mut value: bool,
1679        ___deadline: zx::MonotonicInstant,
1680    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1681        let _response = self.client.send_query::<
1682            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1683            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1684        >(
1685            (value,),
1686            0x6bbf00c53a4c78c2,
1687            fidl::encoding::DynamicFlags::empty(),
1688            ___deadline,
1689        )?;
1690        Ok(_response.map(|x| x))
1691    }
1692
1693    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1694    pub fn r#get_no_check(
1695        &self,
1696        ___deadline: zx::MonotonicInstant,
1697    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1698        let _response = self
1699            .client
1700            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1701                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1702                fidl_fuchsia_posix::Errno,
1703            >>(
1704                (), 0x2cd4249286417694, fidl::encoding::DynamicFlags::empty(), ___deadline
1705            )?;
1706        Ok(_response.map(|x| x.value))
1707    }
1708
1709    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1710    pub fn r#set_linger(
1711        &self,
1712        mut linger: bool,
1713        mut length_secs: u32,
1714        ___deadline: zx::MonotonicInstant,
1715    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1716        let _response = self.client.send_query::<
1717            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1718            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1719        >(
1720            (linger, length_secs,),
1721            0x45386351246e998e,
1722            fidl::encoding::DynamicFlags::empty(),
1723            ___deadline,
1724        )?;
1725        Ok(_response.map(|x| x))
1726    }
1727
1728    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1729    pub fn r#get_linger(
1730        &self,
1731        ___deadline: zx::MonotonicInstant,
1732    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1733        let _response = self
1734            .client
1735            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1736                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1737                fidl_fuchsia_posix::Errno,
1738            >>(
1739                (), 0x48eb20fc5ccb0e45, fidl::encoding::DynamicFlags::empty(), ___deadline
1740            )?;
1741        Ok(_response.map(|x| (x.linger, x.length_secs)))
1742    }
1743
1744    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1745    pub fn r#set_reuse_port(
1746        &self,
1747        mut value: bool,
1748        ___deadline: zx::MonotonicInstant,
1749    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1750        let _response = self.client.send_query::<
1751            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1752            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1753        >(
1754            (value,),
1755            0x24dd3e5cb36d9ccb,
1756            fidl::encoding::DynamicFlags::empty(),
1757            ___deadline,
1758        )?;
1759        Ok(_response.map(|x| x))
1760    }
1761
1762    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1763    pub fn r#get_reuse_port(
1764        &self,
1765        ___deadline: zx::MonotonicInstant,
1766    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1767        let _response = self
1768            .client
1769            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1770                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1771                fidl_fuchsia_posix::Errno,
1772            >>(
1773                (), 0x7a112c1ab54ff828, fidl::encoding::DynamicFlags::empty(), ___deadline
1774            )?;
1775        Ok(_response.map(|x| x.value))
1776    }
1777
1778    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1779    pub fn r#get_accept_conn(
1780        &self,
1781        ___deadline: zx::MonotonicInstant,
1782    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1783        let _response = self
1784            .client
1785            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1786                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1787                fidl_fuchsia_posix::Errno,
1788            >>(
1789                (), 0x67ce6db6c2ec8966, fidl::encoding::DynamicFlags::empty(), ___deadline
1790            )?;
1791        Ok(_response.map(|x| x.value))
1792    }
1793
1794    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1795    pub fn r#set_bind_to_device(
1796        &self,
1797        mut value: &str,
1798        ___deadline: zx::MonotonicInstant,
1799    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1800        let _response = self.client.send_query::<
1801            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1802            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1803        >(
1804            (value,),
1805            0x2118b483f28aafc4,
1806            fidl::encoding::DynamicFlags::empty(),
1807            ___deadline,
1808        )?;
1809        Ok(_response.map(|x| x))
1810    }
1811
1812    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1813    pub fn r#get_bind_to_device(
1814        &self,
1815        ___deadline: zx::MonotonicInstant,
1816    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1817        let _response = self
1818            .client
1819            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1820                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1821                fidl_fuchsia_posix::Errno,
1822            >>(
1823                (), 0x1ab1fbf0ef7906c8, fidl::encoding::DynamicFlags::empty(), ___deadline
1824            )?;
1825        Ok(_response.map(|x| x.value))
1826    }
1827
1828    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1829    /// If `value` is 0, this clears the bound interface.
1830    pub fn r#set_bind_to_interface_index(
1831        &self,
1832        mut value: u64,
1833        ___deadline: zx::MonotonicInstant,
1834    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1835    {
1836        let _response = self.client.send_query::<
1837            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1838            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1839        >(
1840            (value,),
1841            0x6e387a0def00821,
1842            fidl::encoding::DynamicFlags::empty(),
1843            ___deadline,
1844        )?;
1845        Ok(_response.map(|x| x))
1846    }
1847
1848    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1849    pub fn r#get_bind_to_interface_index(
1850        &self,
1851        ___deadline: zx::MonotonicInstant,
1852    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
1853    {
1854        let _response = self
1855            .client
1856            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1857                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
1858                fidl_fuchsia_posix::Errno,
1859            >>(
1860                (), 0x59c31dd3e3078295, fidl::encoding::DynamicFlags::empty(), ___deadline
1861            )?;
1862        Ok(_response.map(|x| x.value))
1863    }
1864
1865    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1866    pub fn r#set_timestamp(
1867        &self,
1868        mut value: fidl_fuchsia_posix_socket::TimestampOption,
1869        ___deadline: zx::MonotonicInstant,
1870    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
1871        let _response = self.client.send_query::<
1872            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
1873            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1874        >(
1875            (value,),
1876            0x285d6516c263d839,
1877            fidl::encoding::DynamicFlags::empty(),
1878            ___deadline,
1879        )?;
1880        Ok(_response.map(|x| x))
1881    }
1882
1883    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1884    pub fn r#get_timestamp(
1885        &self,
1886        ___deadline: zx::MonotonicInstant,
1887    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
1888        let _response = self
1889            .client
1890            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1891                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
1892                fidl_fuchsia_posix::Errno,
1893            >>(
1894                (), 0x49f2fffbbcc2bd27, fidl::encoding::DynamicFlags::empty(), ___deadline
1895            )?;
1896        Ok(_response.map(|x| x.value))
1897    }
1898
1899    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1900    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1901    /// mark can be set independently in each domain.
1902    pub fn r#set_mark(
1903        &self,
1904        mut domain: fidl_fuchsia_net::MarkDomain,
1905        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1906        ___deadline: zx::MonotonicInstant,
1907    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
1908        let _response = self.client.send_query::<
1909            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
1910            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1911        >(
1912            (domain, mark,),
1913            0x6ead6de09f653236,
1914            fidl::encoding::DynamicFlags::empty(),
1915            ___deadline,
1916        )?;
1917        Ok(_response.map(|x| x))
1918    }
1919
1920    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1921    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1922    /// mark can be retrieved independently in each domain.
1923    pub fn r#get_mark(
1924        &self,
1925        mut domain: fidl_fuchsia_net::MarkDomain,
1926        ___deadline: zx::MonotonicInstant,
1927    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
1928        let _response = self.client.send_query::<
1929            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
1930            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
1931        >(
1932            (domain,),
1933            0x57a2752c61d93d47,
1934            fidl::encoding::DynamicFlags::empty(),
1935            ___deadline,
1936        )?;
1937        Ok(_response.map(|x| x.mark))
1938    }
1939
1940    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
1941    pub fn r#get_cookie(
1942        &self,
1943        ___deadline: zx::MonotonicInstant,
1944    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
1945        let _response = self
1946            .client
1947            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1948                fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
1949                fidl_fuchsia_posix::Errno,
1950            >>(
1951                (), 0x2c2f47fd8f924e52, fidl::encoding::DynamicFlags::empty(), ___deadline
1952            )?;
1953        Ok(_response.map(|x| x.value))
1954    }
1955
1956    /// Sets the local address used for the socket.
1957    pub fn r#bind(
1958        &self,
1959        mut addr: &fidl_fuchsia_net::SocketAddress,
1960        ___deadline: zx::MonotonicInstant,
1961    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
1962        let _response = self.client.send_query::<
1963            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
1964            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1965        >(
1966            (addr,),
1967            0x4bc6400ae92125d,
1968            fidl::encoding::DynamicFlags::empty(),
1969            ___deadline,
1970        )?;
1971        Ok(_response.map(|x| x))
1972    }
1973
1974    /// Initiates a connection to a remote address.
1975    pub fn r#connect(
1976        &self,
1977        mut addr: &fidl_fuchsia_net::SocketAddress,
1978        ___deadline: zx::MonotonicInstant,
1979    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
1980        let _response = self.client.send_query::<
1981            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
1982            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1983        >(
1984            (addr,),
1985            0x5f05f19bfdd38871,
1986            fidl::encoding::DynamicFlags::empty(),
1987            ___deadline,
1988        )?;
1989        Ok(_response.map(|x| x))
1990    }
1991
1992    /// Clears connection information from this socket.
1993    pub fn r#disconnect(
1994        &self,
1995        ___deadline: zx::MonotonicInstant,
1996    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
1997        let _response =
1998            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1999                fidl::encoding::EmptyStruct,
2000                fidl_fuchsia_posix::Errno,
2001            >>(
2002                (),
2003                0x74e63b91f7b29b2,
2004                fidl::encoding::DynamicFlags::empty(),
2005                ___deadline,
2006            )?;
2007        Ok(_response.map(|x| x))
2008    }
2009
2010    /// Retrieves the local socket address.
2011    pub fn r#get_sock_name(
2012        &self,
2013        ___deadline: zx::MonotonicInstant,
2014    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2015        let _response = self
2016            .client
2017            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2018                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2019                fidl_fuchsia_posix::Errno,
2020            >>(
2021                (), 0x475f23f84a1a4f85, fidl::encoding::DynamicFlags::empty(), ___deadline
2022            )?;
2023        Ok(_response.map(|x| x.addr))
2024    }
2025
2026    /// Retrieves the remote socket address.
2027    pub fn r#get_peer_name(
2028        &self,
2029        ___deadline: zx::MonotonicInstant,
2030    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2031        let _response = self
2032            .client
2033            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2034                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2035                fidl_fuchsia_posix::Errno,
2036            >>(
2037                (), 0x1ffecf4bd5b6432e, fidl::encoding::DynamicFlags::empty(), ___deadline
2038            )?;
2039        Ok(_response.map(|x| x.addr))
2040    }
2041
2042    /// Shuts down part of the socket.
2043    pub fn r#shutdown(
2044        &self,
2045        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2046        ___deadline: zx::MonotonicInstant,
2047    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2048        let _response = self.client.send_query::<
2049            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2050            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2051        >(
2052            (mode,),
2053            0x247f38b6db68c336,
2054            fidl::encoding::DynamicFlags::empty(),
2055            ___deadline,
2056        )?;
2057        Ok(_response.map(|x| x))
2058    }
2059
2060    /// Set `SOL_IP` -> `IP_TOS`.
2061    pub fn r#set_ip_type_of_service(
2062        &self,
2063        mut value: u8,
2064        ___deadline: zx::MonotonicInstant,
2065    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2066    {
2067        let _response = self.client.send_query::<
2068            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2069            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2070        >(
2071            (value,),
2072            0x995c600475b6d46,
2073            fidl::encoding::DynamicFlags::empty(),
2074            ___deadline,
2075        )?;
2076        Ok(_response.map(|x| x))
2077    }
2078
2079    /// Get `SOL_IP` -> `IP_TOS`.
2080    pub fn r#get_ip_type_of_service(
2081        &self,
2082        ___deadline: zx::MonotonicInstant,
2083    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2084    {
2085        let _response = self
2086            .client
2087            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2088                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2089                fidl_fuchsia_posix::Errno,
2090            >>(
2091                (), 0x3814a04259f75fcb, fidl::encoding::DynamicFlags::empty(), ___deadline
2092            )?;
2093        Ok(_response.map(|x| x.value))
2094    }
2095
2096    /// Set `SOL_IP` -> `IP_TTL`.
2097    pub fn r#set_ip_ttl(
2098        &self,
2099        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2100        ___deadline: zx::MonotonicInstant,
2101    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2102        let _response = self.client.send_query::<
2103            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2104            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2105        >(
2106            (value,),
2107            0x29e2424b433ae1ef,
2108            fidl::encoding::DynamicFlags::empty(),
2109            ___deadline,
2110        )?;
2111        Ok(_response.map(|x| x))
2112    }
2113
2114    /// Get `SOL_IP` -> `IP_TTL`.
2115    pub fn r#get_ip_ttl(
2116        &self,
2117        ___deadline: zx::MonotonicInstant,
2118    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2119        let _response = self
2120            .client
2121            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2122                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2123                fidl_fuchsia_posix::Errno,
2124            >>(
2125                (), 0x47e47fa1f24da471, fidl::encoding::DynamicFlags::empty(), ___deadline
2126            )?;
2127        Ok(_response.map(|x| x.value))
2128    }
2129
2130    /// Set `SOL_IP` -> `IP_PKTINFO`.
2131    pub fn r#set_ip_packet_info(
2132        &self,
2133        mut value: bool,
2134        ___deadline: zx::MonotonicInstant,
2135    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2136    {
2137        let _response = self.client.send_query::<
2138            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2139            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2140        >(
2141            (value,),
2142            0x392d16bee20c0e16,
2143            fidl::encoding::DynamicFlags::empty(),
2144            ___deadline,
2145        )?;
2146        Ok(_response.map(|x| x))
2147    }
2148
2149    /// Get `SOL_IP` -> `IP_PKTINFO`.
2150    pub fn r#get_ip_packet_info(
2151        &self,
2152        ___deadline: zx::MonotonicInstant,
2153    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2154    {
2155        let _response = self
2156            .client
2157            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2158                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2159                fidl_fuchsia_posix::Errno,
2160            >>(
2161                (), 0x54b505f242280740, fidl::encoding::DynamicFlags::empty(), ___deadline
2162            )?;
2163        Ok(_response.map(|x| x.value))
2164    }
2165
2166    /// Set `SOL_IP` -> `IP_RECVTOS`.
2167    pub fn r#set_ip_receive_type_of_service(
2168        &self,
2169        mut value: bool,
2170        ___deadline: zx::MonotonicInstant,
2171    ) -> Result<
2172        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2173        fidl::Error,
2174    > {
2175        let _response = self.client.send_query::<
2176            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2177            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2178        >(
2179            (value,),
2180            0x6c4f6714995f84ef,
2181            fidl::encoding::DynamicFlags::empty(),
2182            ___deadline,
2183        )?;
2184        Ok(_response.map(|x| x))
2185    }
2186
2187    /// Get `SOL_IP` -> `IP_RECVTOS`.
2188    pub fn r#get_ip_receive_type_of_service(
2189        &self,
2190        ___deadline: zx::MonotonicInstant,
2191    ) -> Result<
2192        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2193        fidl::Error,
2194    > {
2195        let _response = self
2196            .client
2197            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2198                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2199                fidl_fuchsia_posix::Errno,
2200            >>(
2201                (), 0x4158ba7dc2795960, fidl::encoding::DynamicFlags::empty(), ___deadline
2202            )?;
2203        Ok(_response.map(|x| x.value))
2204    }
2205
2206    /// Set `SOL_IP` -> `IP_RECVTTL`.
2207    pub fn r#set_ip_receive_ttl(
2208        &self,
2209        mut value: bool,
2210        ___deadline: zx::MonotonicInstant,
2211    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2212    {
2213        let _response = self.client.send_query::<
2214            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2215            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2216        >(
2217            (value,),
2218            0x46f15be0ce0ab82b,
2219            fidl::encoding::DynamicFlags::empty(),
2220            ___deadline,
2221        )?;
2222        Ok(_response.map(|x| x))
2223    }
2224
2225    /// Get `SOL_IP` -> `IP_RECVTTL`.
2226    pub fn r#get_ip_receive_ttl(
2227        &self,
2228        ___deadline: zx::MonotonicInstant,
2229    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2230    {
2231        let _response = self
2232            .client
2233            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2234                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2235                fidl_fuchsia_posix::Errno,
2236            >>(
2237                (), 0x678ddd5a5dfa2eb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2238            )?;
2239        Ok(_response.map(|x| x.value))
2240    }
2241
2242    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2243    pub fn r#set_ip_multicast_interface(
2244        &self,
2245        mut iface: u64,
2246        mut address: &fidl_fuchsia_net::Ipv4Address,
2247        ___deadline: zx::MonotonicInstant,
2248    ) -> Result<
2249        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2250        fidl::Error,
2251    > {
2252        let _response = self.client.send_query::<
2253            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2254            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2255        >(
2256            (iface, address,),
2257            0x752fbfa9b12befe,
2258            fidl::encoding::DynamicFlags::empty(),
2259            ___deadline,
2260        )?;
2261        Ok(_response.map(|x| x))
2262    }
2263
2264    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2265    pub fn r#get_ip_multicast_interface(
2266        &self,
2267        ___deadline: zx::MonotonicInstant,
2268    ) -> Result<
2269        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2270        fidl::Error,
2271    > {
2272        let _response = self
2273            .client
2274            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2275                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2276                fidl_fuchsia_posix::Errno,
2277            >>(
2278                (), 0x320bd14c4df046c4, fidl::encoding::DynamicFlags::empty(), ___deadline
2279            )?;
2280        Ok(_response.map(|x| x.value))
2281    }
2282
2283    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2284    pub fn r#set_ip_multicast_ttl(
2285        &self,
2286        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2287        ___deadline: zx::MonotonicInstant,
2288    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2289    {
2290        let _response = self.client.send_query::<
2291            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2292            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2293        >(
2294            (value,),
2295            0x63134d53772916a1,
2296            fidl::encoding::DynamicFlags::empty(),
2297            ___deadline,
2298        )?;
2299        Ok(_response.map(|x| x))
2300    }
2301
2302    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2303    pub fn r#get_ip_multicast_ttl(
2304        &self,
2305        ___deadline: zx::MonotonicInstant,
2306    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2307    {
2308        let _response = self
2309            .client
2310            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2311                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2312                fidl_fuchsia_posix::Errno,
2313            >>(
2314                (), 0x4665cd378f39e1a, fidl::encoding::DynamicFlags::empty(), ___deadline
2315            )?;
2316        Ok(_response.map(|x| x.value))
2317    }
2318
2319    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2320    pub fn r#set_ip_multicast_loopback(
2321        &self,
2322        mut value: bool,
2323        ___deadline: zx::MonotonicInstant,
2324    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2325    {
2326        let _response = self.client.send_query::<
2327            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2328            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2329        >(
2330            (value,),
2331            0x20c55c11f00943ea,
2332            fidl::encoding::DynamicFlags::empty(),
2333            ___deadline,
2334        )?;
2335        Ok(_response.map(|x| x))
2336    }
2337
2338    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2339    pub fn r#get_ip_multicast_loopback(
2340        &self,
2341        ___deadline: zx::MonotonicInstant,
2342    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2343    {
2344        let _response = self
2345            .client
2346            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2347                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2348                fidl_fuchsia_posix::Errno,
2349            >>(
2350                (), 0x3b6b26ff558298f2, fidl::encoding::DynamicFlags::empty(), ___deadline
2351            )?;
2352        Ok(_response.map(|x| x.value))
2353    }
2354
2355    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2356    pub fn r#add_ip_membership(
2357        &self,
2358        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2359        ___deadline: zx::MonotonicInstant,
2360    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2361    {
2362        let _response = self.client.send_query::<
2363            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2364            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2365        >(
2366            (membership,),
2367            0x76bc7df115a3b4d0,
2368            fidl::encoding::DynamicFlags::empty(),
2369            ___deadline,
2370        )?;
2371        Ok(_response.map(|x| x))
2372    }
2373
2374    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2375    pub fn r#drop_ip_membership(
2376        &self,
2377        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2378        ___deadline: zx::MonotonicInstant,
2379    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2380    {
2381        let _response = self.client.send_query::<
2382            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2383            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2384        >(
2385            (membership,),
2386            0x2888f3099188d03,
2387            fidl::encoding::DynamicFlags::empty(),
2388            ___deadline,
2389        )?;
2390        Ok(_response.map(|x| x))
2391    }
2392
2393    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2394    pub fn r#set_ip_transparent(
2395        &self,
2396        mut value: bool,
2397        ___deadline: zx::MonotonicInstant,
2398    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2399    {
2400        let _response = self.client.send_query::<
2401            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2402            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2403        >(
2404            (value,),
2405            0x1ae532b0c066e3a0,
2406            fidl::encoding::DynamicFlags::empty(),
2407            ___deadline,
2408        )?;
2409        Ok(_response.map(|x| x))
2410    }
2411
2412    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2413    pub fn r#get_ip_transparent(
2414        &self,
2415        ___deadline: zx::MonotonicInstant,
2416    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2417    {
2418        let _response = self
2419            .client
2420            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2421                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2422                fidl_fuchsia_posix::Errno,
2423            >>(
2424                (), 0x51d43695962ebfb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2425            )?;
2426        Ok(_response.map(|x| x.value))
2427    }
2428
2429    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2430    pub fn r#set_ip_receive_original_destination_address(
2431        &self,
2432        mut value: bool,
2433        ___deadline: zx::MonotonicInstant,
2434    ) -> Result<
2435        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2436        fidl::Error,
2437    > {
2438        let _response = self.client.send_query::<
2439            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2440            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2441        >(
2442            (value,),
2443            0x4722b4ce52f7840,
2444            fidl::encoding::DynamicFlags::empty(),
2445            ___deadline,
2446        )?;
2447        Ok(_response.map(|x| x))
2448    }
2449
2450    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2451    pub fn r#get_ip_receive_original_destination_address(
2452        &self,
2453        ___deadline: zx::MonotonicInstant,
2454    ) -> Result<
2455        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2456        fidl::Error,
2457    > {
2458        let _response = self.client.send_query::<
2459            fidl::encoding::EmptyPayload,
2460            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2461        >(
2462            (),
2463            0x2a0e7dc5d6bfdfe9,
2464            fidl::encoding::DynamicFlags::empty(),
2465            ___deadline,
2466        )?;
2467        Ok(_response.map(|x| x.value))
2468    }
2469
2470    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2471    pub fn r#add_ipv6_membership(
2472        &self,
2473        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2474        ___deadline: zx::MonotonicInstant,
2475    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2476    {
2477        let _response = self.client.send_query::<
2478            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2479            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2480        >(
2481            (membership,),
2482            0x7c94727acb4ea4b3,
2483            fidl::encoding::DynamicFlags::empty(),
2484            ___deadline,
2485        )?;
2486        Ok(_response.map(|x| x))
2487    }
2488
2489    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2490    pub fn r#drop_ipv6_membership(
2491        &self,
2492        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2493        ___deadline: zx::MonotonicInstant,
2494    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2495    {
2496        let _response = self.client.send_query::<
2497            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2498            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2499        >(
2500            (membership,),
2501            0x42104c70ccaba304,
2502            fidl::encoding::DynamicFlags::empty(),
2503            ___deadline,
2504        )?;
2505        Ok(_response.map(|x| x))
2506    }
2507
2508    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2509    pub fn r#set_ipv6_multicast_interface(
2510        &self,
2511        mut value: u64,
2512        ___deadline: zx::MonotonicInstant,
2513    ) -> Result<
2514        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2515        fidl::Error,
2516    > {
2517        let _response = self.client.send_query::<
2518            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2519            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2520        >(
2521            (value,),
2522            0x135f76db3774ab3b,
2523            fidl::encoding::DynamicFlags::empty(),
2524            ___deadline,
2525        )?;
2526        Ok(_response.map(|x| x))
2527    }
2528
2529    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2530    pub fn r#get_ipv6_multicast_interface(
2531        &self,
2532        ___deadline: zx::MonotonicInstant,
2533    ) -> Result<
2534        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2535        fidl::Error,
2536    > {
2537        let _response = self
2538            .client
2539            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2540                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2541                fidl_fuchsia_posix::Errno,
2542            >>(
2543                (), 0x1f26fcdd348f1882, fidl::encoding::DynamicFlags::empty(), ___deadline
2544            )?;
2545        Ok(_response.map(|x| x.value))
2546    }
2547
2548    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2549    pub fn r#set_ipv6_unicast_hops(
2550        &self,
2551        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2552        ___deadline: zx::MonotonicInstant,
2553    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2554    {
2555        let _response = self.client.send_query::<
2556            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2557            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2558        >(
2559            (value,),
2560            0x157d51e98f462859,
2561            fidl::encoding::DynamicFlags::empty(),
2562            ___deadline,
2563        )?;
2564        Ok(_response.map(|x| x))
2565    }
2566
2567    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2568    pub fn r#get_ipv6_unicast_hops(
2569        &self,
2570        ___deadline: zx::MonotonicInstant,
2571    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2572    {
2573        let _response = self
2574            .client
2575            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2576                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2577                fidl_fuchsia_posix::Errno,
2578            >>(
2579                (), 0x21f4641cad8bd8d2, fidl::encoding::DynamicFlags::empty(), ___deadline
2580            )?;
2581        Ok(_response.map(|x| x.value))
2582    }
2583
2584    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2585    pub fn r#set_ipv6_receive_hop_limit(
2586        &self,
2587        mut value: bool,
2588        ___deadline: zx::MonotonicInstant,
2589    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2590    {
2591        let _response = self.client.send_query::<
2592            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2593            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2594        >(
2595            (value,),
2596            0x5c24808ed2e84a1e,
2597            fidl::encoding::DynamicFlags::empty(),
2598            ___deadline,
2599        )?;
2600        Ok(_response.map(|x| x))
2601    }
2602
2603    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2604    pub fn r#get_ipv6_receive_hop_limit(
2605        &self,
2606        ___deadline: zx::MonotonicInstant,
2607    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2608    {
2609        let _response = self
2610            .client
2611            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2612                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2613                fidl_fuchsia_posix::Errno,
2614            >>(
2615                (), 0x341e06689885b4c0, fidl::encoding::DynamicFlags::empty(), ___deadline
2616            )?;
2617        Ok(_response.map(|x| x.value))
2618    }
2619
2620    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2621    pub fn r#set_ipv6_multicast_hops(
2622        &self,
2623        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2624        ___deadline: zx::MonotonicInstant,
2625    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2626    {
2627        let _response = self.client.send_query::<
2628            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2629            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2630        >(
2631            (value,),
2632            0x25b9cd4d181f82c1,
2633            fidl::encoding::DynamicFlags::empty(),
2634            ___deadline,
2635        )?;
2636        Ok(_response.map(|x| x))
2637    }
2638
2639    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2640    pub fn r#get_ipv6_multicast_hops(
2641        &self,
2642        ___deadline: zx::MonotonicInstant,
2643    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2644    {
2645        let _response = self
2646            .client
2647            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2648                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2649                fidl_fuchsia_posix::Errno,
2650            >>(
2651                (), 0x52916948a365012a, fidl::encoding::DynamicFlags::empty(), ___deadline
2652            )?;
2653        Ok(_response.map(|x| x.value))
2654    }
2655
2656    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2657    pub fn r#set_ipv6_multicast_loopback(
2658        &self,
2659        mut value: bool,
2660        ___deadline: zx::MonotonicInstant,
2661    ) -> Result<
2662        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2663        fidl::Error,
2664    > {
2665        let _response = self.client.send_query::<
2666            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2667            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2668        >(
2669            (value,),
2670            0x55701c409ff41b40,
2671            fidl::encoding::DynamicFlags::empty(),
2672            ___deadline,
2673        )?;
2674        Ok(_response.map(|x| x))
2675    }
2676
2677    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2678    pub fn r#get_ipv6_multicast_loopback(
2679        &self,
2680        ___deadline: zx::MonotonicInstant,
2681    ) -> Result<
2682        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2683        fidl::Error,
2684    > {
2685        let _response = self
2686            .client
2687            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2688                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2689                fidl_fuchsia_posix::Errno,
2690            >>(
2691                (), 0x4415b701fde319c3, fidl::encoding::DynamicFlags::empty(), ___deadline
2692            )?;
2693        Ok(_response.map(|x| x.value))
2694    }
2695
2696    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2697    pub fn r#set_ipv6_only(
2698        &self,
2699        mut value: bool,
2700        ___deadline: zx::MonotonicInstant,
2701    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2702        let _response = self.client.send_query::<
2703            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2704            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2705        >(
2706            (value,),
2707            0x4873f1364758cbba,
2708            fidl::encoding::DynamicFlags::empty(),
2709            ___deadline,
2710        )?;
2711        Ok(_response.map(|x| x))
2712    }
2713
2714    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2715    pub fn r#get_ipv6_only(
2716        &self,
2717        ___deadline: zx::MonotonicInstant,
2718    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2719        let _response = self
2720            .client
2721            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2722                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2723                fidl_fuchsia_posix::Errno,
2724            >>(
2725                (), 0x4aa3340a1a26b89c, fidl::encoding::DynamicFlags::empty(), ___deadline
2726            )?;
2727        Ok(_response.map(|x| x.value))
2728    }
2729
2730    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2731    pub fn r#set_ipv6_receive_traffic_class(
2732        &self,
2733        mut value: bool,
2734        ___deadline: zx::MonotonicInstant,
2735    ) -> Result<
2736        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2737        fidl::Error,
2738    > {
2739        let _response = self.client.send_query::<
2740            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2741            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2742        >(
2743            (value,),
2744            0x58f07c8788d099a0,
2745            fidl::encoding::DynamicFlags::empty(),
2746            ___deadline,
2747        )?;
2748        Ok(_response.map(|x| x))
2749    }
2750
2751    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2752    pub fn r#get_ipv6_receive_traffic_class(
2753        &self,
2754        ___deadline: zx::MonotonicInstant,
2755    ) -> Result<
2756        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2757        fidl::Error,
2758    > {
2759        let _response = self
2760            .client
2761            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2762                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2763                fidl_fuchsia_posix::Errno,
2764            >>(
2765                (), 0x2e334df1da553ffa, fidl::encoding::DynamicFlags::empty(), ___deadline
2766            )?;
2767        Ok(_response.map(|x| x.value))
2768    }
2769
2770    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2771    pub fn r#set_ipv6_traffic_class(
2772        &self,
2773        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2774        ___deadline: zx::MonotonicInstant,
2775    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2776    {
2777        let _response = self.client.send_query::<
2778            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2779            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2780        >(
2781            (value,),
2782            0x6af077800c5a0b4f,
2783            fidl::encoding::DynamicFlags::empty(),
2784            ___deadline,
2785        )?;
2786        Ok(_response.map(|x| x))
2787    }
2788
2789    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2790    pub fn r#get_ipv6_traffic_class(
2791        &self,
2792        ___deadline: zx::MonotonicInstant,
2793    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2794    {
2795        let _response = self
2796            .client
2797            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2798                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2799                fidl_fuchsia_posix::Errno,
2800            >>(
2801                (), 0x6baf6eed8fc2f04, fidl::encoding::DynamicFlags::empty(), ___deadline
2802            )?;
2803        Ok(_response.map(|x| x.value))
2804    }
2805
2806    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2807    pub fn r#set_ipv6_receive_packet_info(
2808        &self,
2809        mut value: bool,
2810        ___deadline: zx::MonotonicInstant,
2811    ) -> Result<
2812        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2813        fidl::Error,
2814    > {
2815        let _response = self.client.send_query::<
2816            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2817            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2818        >(
2819            (value,),
2820            0x19259775b1a92768,
2821            fidl::encoding::DynamicFlags::empty(),
2822            ___deadline,
2823        )?;
2824        Ok(_response.map(|x| x))
2825    }
2826
2827    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2828    pub fn r#get_ipv6_receive_packet_info(
2829        &self,
2830        ___deadline: zx::MonotonicInstant,
2831    ) -> Result<
2832        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2833        fidl::Error,
2834    > {
2835        let _response = self
2836            .client
2837            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2838                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2839                fidl_fuchsia_posix::Errno,
2840            >>(
2841                (), 0x7acd4a2775baec75, fidl::encoding::DynamicFlags::empty(), ___deadline
2842            )?;
2843        Ok(_response.map(|x| x.value))
2844    }
2845
2846    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2847    pub fn r#get_original_destination(
2848        &self,
2849        ___deadline: zx::MonotonicInstant,
2850    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2851    {
2852        let _response = self
2853            .client
2854            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2855                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
2856                fidl_fuchsia_posix::Errno,
2857            >>(
2858                (), 0x38bf28f0dafdbac0, fidl::encoding::DynamicFlags::empty(), ___deadline
2859            )?;
2860        Ok(_response.map(|x| x.value))
2861    }
2862
2863    pub fn r#describe(
2864        &self,
2865        ___deadline: zx::MonotonicInstant,
2866    ) -> Result<SocketDescribeResponse, fidl::Error> {
2867        let _response =
2868            self.client.send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
2869                (),
2870                0x335706eccf54a135,
2871                fidl::encoding::DynamicFlags::empty(),
2872                ___deadline,
2873            )?;
2874        Ok(_response)
2875    }
2876
2877    /// Receives a message from the socket.
2878    ///
2879    /// + request `want_addr` request message's source address information to
2880    ///   be returned.
2881    /// + request `data_len` the maximum allowed length of the response data
2882    ///   buffer.
2883    /// + request `want_control` request ancillary data to be returned.
2884    /// + request `flags` flags for the receive request.
2885    /// - response `addr` the message's source address information, if
2886    ///   requested.
2887    /// - response `data` the message.
2888    /// - response `control` control messages, if requested.
2889    /// - response `truncated` indicates whether or not the returned message
2890    ///   was truncated.
2891    pub fn r#recv_msg(
2892        &self,
2893        mut want_addr: bool,
2894        mut data_len: u32,
2895        mut want_control: bool,
2896        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
2897        ___deadline: zx::MonotonicInstant,
2898    ) -> Result<SocketRecvMsgResult, fidl::Error> {
2899        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
2900            SocketRecvMsgResponse,
2901            fidl_fuchsia_posix::Errno,
2902        >>(
2903            (want_addr, data_len, want_control, flags),
2904            0x1dfb695351d3aa1d,
2905            fidl::encoding::DynamicFlags::empty(),
2906            ___deadline,
2907        )?;
2908        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
2909    }
2910
2911    /// Sends a message on the socket.
2912    ///
2913    /// + request `addr` the address to send the message to. If unset, will
2914    ///   send to the connected peer.
2915    /// + request `data` the message.
2916    /// + request `control` ancillary data.
2917    /// + request `flags` flags for the send request.
2918    pub fn r#send_msg(
2919        &self,
2920        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
2921        mut data: &[u8],
2922        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
2923        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
2924        ___deadline: zx::MonotonicInstant,
2925    ) -> Result<SocketSendMsgResult, fidl::Error> {
2926        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
2927            fidl::encoding::EmptyStruct,
2928            fidl_fuchsia_posix::Errno,
2929        >>(
2930            (addr, data, control, flags),
2931            0x2cf1eac9a7fc8958,
2932            fidl::encoding::DynamicFlags::empty(),
2933            ___deadline,
2934        )?;
2935        Ok(_response.map(|x| x))
2936    }
2937
2938    /// Retrieves creation information from the socket.
2939    ///
2940    /// - response `domain` the socket's associated domain.
2941    /// - response `proto` the socket's associated protocol.
2942    pub fn r#get_info(
2943        &self,
2944        ___deadline: zx::MonotonicInstant,
2945    ) -> Result<SocketGetInfoResult, fidl::Error> {
2946        let _response =
2947            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2948                SocketGetInfoResponse,
2949                fidl_fuchsia_posix::Errno,
2950            >>(
2951                (),
2952                0x39676f75aec339ba,
2953                fidl::encoding::DynamicFlags::empty(),
2954                ___deadline,
2955            )?;
2956        Ok(_response.map(|x| (x.domain, x.proto)))
2957    }
2958
2959    /// Set `SOL_IP` -> `IP_HDRINCL`.
2960    pub fn r#set_ip_header_included(
2961        &self,
2962        mut value: bool,
2963        ___deadline: zx::MonotonicInstant,
2964    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
2965        let _response =
2966            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
2967                fidl::encoding::EmptyStruct,
2968                fidl_fuchsia_posix::Errno,
2969            >>(
2970                (value,),
2971                0x5d06a606d95e8f3,
2972                fidl::encoding::DynamicFlags::empty(),
2973                ___deadline,
2974            )?;
2975        Ok(_response.map(|x| x))
2976    }
2977
2978    /// Get `SOL_IP` -> `IP_HDRINCL`.
2979    pub fn r#get_ip_header_included(
2980        &self,
2981        ___deadline: zx::MonotonicInstant,
2982    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
2983        let _response = self
2984            .client
2985            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2986                SocketGetIpHeaderIncludedResponse,
2987                fidl_fuchsia_posix::Errno,
2988            >>(
2989                (), 0x76125ad1f4d175f6, fidl::encoding::DynamicFlags::empty(), ___deadline
2990            )?;
2991        Ok(_response.map(|x| x.value))
2992    }
2993
2994    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
2995    pub fn r#set_icmpv6_filter(
2996        &self,
2997        mut filter: &Icmpv6Filter,
2998        ___deadline: zx::MonotonicInstant,
2999    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3000        let _response =
3001            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3002                fidl::encoding::EmptyStruct,
3003                fidl_fuchsia_posix::Errno,
3004            >>(
3005                (filter,),
3006                0x4ebea92a43ae68a9,
3007                fidl::encoding::DynamicFlags::empty(),
3008                ___deadline,
3009            )?;
3010        Ok(_response.map(|x| x))
3011    }
3012
3013    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3014    pub fn r#get_icmpv6_filter(
3015        &self,
3016        ___deadline: zx::MonotonicInstant,
3017    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3018        let _response =
3019            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3020                SocketGetIcmpv6FilterResponse,
3021                fidl_fuchsia_posix::Errno,
3022            >>(
3023                (),
3024                0x43bd4f3bc0970ace,
3025                fidl::encoding::DynamicFlags::empty(),
3026                ___deadline,
3027            )?;
3028        Ok(_response.map(|x| x.filter))
3029    }
3030
3031    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3032    pub fn r#set_ipv6_checksum(
3033        &self,
3034        mut config: &Ipv6ChecksumConfiguration,
3035        ___deadline: zx::MonotonicInstant,
3036    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3037        let _response =
3038            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3039                fidl::encoding::EmptyStruct,
3040                fidl_fuchsia_posix::Errno,
3041            >>(
3042                (config,),
3043                0x18b7809577199cb4,
3044                fidl::encoding::DynamicFlags::empty(),
3045                ___deadline,
3046            )?;
3047        Ok(_response.map(|x| x))
3048    }
3049
3050    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3051    pub fn r#get_ipv6_checksum(
3052        &self,
3053        ___deadline: zx::MonotonicInstant,
3054    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3055        let _response =
3056            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3057                SocketGetIpv6ChecksumResponse,
3058                fidl_fuchsia_posix::Errno,
3059            >>(
3060                (),
3061                0x1847bf5b2d263dd,
3062                fidl::encoding::DynamicFlags::empty(),
3063                ___deadline,
3064            )?;
3065        Ok(_response.map(|x| x.config))
3066    }
3067}
3068
3069#[cfg(target_os = "fuchsia")]
3070impl From<SocketSynchronousProxy> for zx::Handle {
3071    fn from(value: SocketSynchronousProxy) -> Self {
3072        value.into_channel().into()
3073    }
3074}
3075
3076#[cfg(target_os = "fuchsia")]
3077impl From<fidl::Channel> for SocketSynchronousProxy {
3078    fn from(value: fidl::Channel) -> Self {
3079        Self::new(value)
3080    }
3081}
3082
3083#[cfg(target_os = "fuchsia")]
3084impl fidl::endpoints::FromClient for SocketSynchronousProxy {
3085    type Protocol = SocketMarker;
3086
3087    fn from_client(value: fidl::endpoints::ClientEnd<SocketMarker>) -> Self {
3088        Self::new(value.into_channel())
3089    }
3090}
3091
3092#[derive(Debug, Clone)]
3093pub struct SocketProxy {
3094    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3095}
3096
3097impl fidl::endpoints::Proxy for SocketProxy {
3098    type Protocol = SocketMarker;
3099
3100    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3101        Self::new(inner)
3102    }
3103
3104    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3105        self.client.into_channel().map_err(|client| Self { client })
3106    }
3107
3108    fn as_channel(&self) -> &::fidl::AsyncChannel {
3109        self.client.as_channel()
3110    }
3111}
3112
3113impl SocketProxy {
3114    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3115    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3116        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3117        Self { client: fidl::client::Client::new(channel, protocol_name) }
3118    }
3119
3120    /// Get a Stream of events from the remote end of the protocol.
3121    ///
3122    /// # Panics
3123    ///
3124    /// Panics if the event stream was already taken.
3125    pub fn take_event_stream(&self) -> SocketEventStream {
3126        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3127    }
3128
3129    pub fn r#clone(
3130        &self,
3131        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3132    ) -> Result<(), fidl::Error> {
3133        SocketProxyInterface::r#clone(self, request)
3134    }
3135
3136    /// Terminates the connection.
3137    ///
3138    /// After calling `Close`, the client must not send any other requests.
3139    ///
3140    /// Servers, after sending the status response, should close the connection
3141    /// regardless of status and without sending an epitaph.
3142    ///
3143    /// Closing the client end of the channel should be semantically equivalent
3144    /// to calling `Close` without knowing when the close has completed or its
3145    /// status.
3146    pub fn r#close(
3147        &self,
3148    ) -> fidl::client::QueryResponseFut<
3149        fidl_fuchsia_unknown::CloseableCloseResult,
3150        fidl::encoding::DefaultFuchsiaResourceDialect,
3151    > {
3152        SocketProxyInterface::r#close(self)
3153    }
3154
3155    pub fn r#query(
3156        &self,
3157    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3158    {
3159        SocketProxyInterface::r#query(self)
3160    }
3161
3162    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3163    pub fn r#set_reuse_address(
3164        &self,
3165        mut value: bool,
3166    ) -> fidl::client::QueryResponseFut<
3167        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3168        fidl::encoding::DefaultFuchsiaResourceDialect,
3169    > {
3170        SocketProxyInterface::r#set_reuse_address(self, value)
3171    }
3172
3173    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3174    pub fn r#get_reuse_address(
3175        &self,
3176    ) -> fidl::client::QueryResponseFut<
3177        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3178        fidl::encoding::DefaultFuchsiaResourceDialect,
3179    > {
3180        SocketProxyInterface::r#get_reuse_address(self)
3181    }
3182
3183    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3184    /// Returns the last error if there is an error set on the socket.
3185    pub fn r#get_error(
3186        &self,
3187    ) -> fidl::client::QueryResponseFut<
3188        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3189        fidl::encoding::DefaultFuchsiaResourceDialect,
3190    > {
3191        SocketProxyInterface::r#get_error(self)
3192    }
3193
3194    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3195    pub fn r#set_broadcast(
3196        &self,
3197        mut value: bool,
3198    ) -> fidl::client::QueryResponseFut<
3199        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3200        fidl::encoding::DefaultFuchsiaResourceDialect,
3201    > {
3202        SocketProxyInterface::r#set_broadcast(self, value)
3203    }
3204
3205    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3206    pub fn r#get_broadcast(
3207        &self,
3208    ) -> fidl::client::QueryResponseFut<
3209        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3210        fidl::encoding::DefaultFuchsiaResourceDialect,
3211    > {
3212        SocketProxyInterface::r#get_broadcast(self)
3213    }
3214
3215    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3216    pub fn r#set_send_buffer(
3217        &self,
3218        mut value_bytes: u64,
3219    ) -> fidl::client::QueryResponseFut<
3220        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3221        fidl::encoding::DefaultFuchsiaResourceDialect,
3222    > {
3223        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3224    }
3225
3226    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3227    pub fn r#get_send_buffer(
3228        &self,
3229    ) -> fidl::client::QueryResponseFut<
3230        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3231        fidl::encoding::DefaultFuchsiaResourceDialect,
3232    > {
3233        SocketProxyInterface::r#get_send_buffer(self)
3234    }
3235
3236    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3237    pub fn r#set_receive_buffer(
3238        &self,
3239        mut value_bytes: u64,
3240    ) -> fidl::client::QueryResponseFut<
3241        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3242        fidl::encoding::DefaultFuchsiaResourceDialect,
3243    > {
3244        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3245    }
3246
3247    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3248    pub fn r#get_receive_buffer(
3249        &self,
3250    ) -> fidl::client::QueryResponseFut<
3251        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3252        fidl::encoding::DefaultFuchsiaResourceDialect,
3253    > {
3254        SocketProxyInterface::r#get_receive_buffer(self)
3255    }
3256
3257    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3258    pub fn r#set_keep_alive(
3259        &self,
3260        mut value: bool,
3261    ) -> fidl::client::QueryResponseFut<
3262        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3263        fidl::encoding::DefaultFuchsiaResourceDialect,
3264    > {
3265        SocketProxyInterface::r#set_keep_alive(self, value)
3266    }
3267
3268    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3269    pub fn r#get_keep_alive(
3270        &self,
3271    ) -> fidl::client::QueryResponseFut<
3272        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3273        fidl::encoding::DefaultFuchsiaResourceDialect,
3274    > {
3275        SocketProxyInterface::r#get_keep_alive(self)
3276    }
3277
3278    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3279    pub fn r#set_out_of_band_inline(
3280        &self,
3281        mut value: bool,
3282    ) -> fidl::client::QueryResponseFut<
3283        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3284        fidl::encoding::DefaultFuchsiaResourceDialect,
3285    > {
3286        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3287    }
3288
3289    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3290    pub fn r#get_out_of_band_inline(
3291        &self,
3292    ) -> fidl::client::QueryResponseFut<
3293        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3294        fidl::encoding::DefaultFuchsiaResourceDialect,
3295    > {
3296        SocketProxyInterface::r#get_out_of_band_inline(self)
3297    }
3298
3299    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3300    pub fn r#set_no_check(
3301        &self,
3302        mut value: bool,
3303    ) -> fidl::client::QueryResponseFut<
3304        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3305        fidl::encoding::DefaultFuchsiaResourceDialect,
3306    > {
3307        SocketProxyInterface::r#set_no_check(self, value)
3308    }
3309
3310    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3311    pub fn r#get_no_check(
3312        &self,
3313    ) -> fidl::client::QueryResponseFut<
3314        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3315        fidl::encoding::DefaultFuchsiaResourceDialect,
3316    > {
3317        SocketProxyInterface::r#get_no_check(self)
3318    }
3319
3320    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3321    pub fn r#set_linger(
3322        &self,
3323        mut linger: bool,
3324        mut length_secs: u32,
3325    ) -> fidl::client::QueryResponseFut<
3326        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3327        fidl::encoding::DefaultFuchsiaResourceDialect,
3328    > {
3329        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3330    }
3331
3332    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3333    pub fn r#get_linger(
3334        &self,
3335    ) -> fidl::client::QueryResponseFut<
3336        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3337        fidl::encoding::DefaultFuchsiaResourceDialect,
3338    > {
3339        SocketProxyInterface::r#get_linger(self)
3340    }
3341
3342    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3343    pub fn r#set_reuse_port(
3344        &self,
3345        mut value: bool,
3346    ) -> fidl::client::QueryResponseFut<
3347        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3348        fidl::encoding::DefaultFuchsiaResourceDialect,
3349    > {
3350        SocketProxyInterface::r#set_reuse_port(self, value)
3351    }
3352
3353    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
3354    pub fn r#get_reuse_port(
3355        &self,
3356    ) -> fidl::client::QueryResponseFut<
3357        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
3358        fidl::encoding::DefaultFuchsiaResourceDialect,
3359    > {
3360        SocketProxyInterface::r#get_reuse_port(self)
3361    }
3362
3363    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
3364    pub fn r#get_accept_conn(
3365        &self,
3366    ) -> fidl::client::QueryResponseFut<
3367        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
3368        fidl::encoding::DefaultFuchsiaResourceDialect,
3369    > {
3370        SocketProxyInterface::r#get_accept_conn(self)
3371    }
3372
3373    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3374    pub fn r#set_bind_to_device(
3375        &self,
3376        mut value: &str,
3377    ) -> fidl::client::QueryResponseFut<
3378        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
3379        fidl::encoding::DefaultFuchsiaResourceDialect,
3380    > {
3381        SocketProxyInterface::r#set_bind_to_device(self, value)
3382    }
3383
3384    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3385    pub fn r#get_bind_to_device(
3386        &self,
3387    ) -> fidl::client::QueryResponseFut<
3388        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
3389        fidl::encoding::DefaultFuchsiaResourceDialect,
3390    > {
3391        SocketProxyInterface::r#get_bind_to_device(self)
3392    }
3393
3394    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3395    /// If `value` is 0, this clears the bound interface.
3396    pub fn r#set_bind_to_interface_index(
3397        &self,
3398        mut value: u64,
3399    ) -> fidl::client::QueryResponseFut<
3400        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
3401        fidl::encoding::DefaultFuchsiaResourceDialect,
3402    > {
3403        SocketProxyInterface::r#set_bind_to_interface_index(self, value)
3404    }
3405
3406    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3407    pub fn r#get_bind_to_interface_index(
3408        &self,
3409    ) -> fidl::client::QueryResponseFut<
3410        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
3411        fidl::encoding::DefaultFuchsiaResourceDialect,
3412    > {
3413        SocketProxyInterface::r#get_bind_to_interface_index(self)
3414    }
3415
3416    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3417    pub fn r#set_timestamp(
3418        &self,
3419        mut value: fidl_fuchsia_posix_socket::TimestampOption,
3420    ) -> fidl::client::QueryResponseFut<
3421        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
3422        fidl::encoding::DefaultFuchsiaResourceDialect,
3423    > {
3424        SocketProxyInterface::r#set_timestamp(self, value)
3425    }
3426
3427    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3428    pub fn r#get_timestamp(
3429        &self,
3430    ) -> fidl::client::QueryResponseFut<
3431        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
3432        fidl::encoding::DefaultFuchsiaResourceDialect,
3433    > {
3434        SocketProxyInterface::r#get_timestamp(self)
3435    }
3436
3437    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3438    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3439    /// mark can be set independently in each domain.
3440    pub fn r#set_mark(
3441        &self,
3442        mut domain: fidl_fuchsia_net::MarkDomain,
3443        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
3444    ) -> fidl::client::QueryResponseFut<
3445        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
3446        fidl::encoding::DefaultFuchsiaResourceDialect,
3447    > {
3448        SocketProxyInterface::r#set_mark(self, domain, mark)
3449    }
3450
3451    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3452    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3453    /// mark can be retrieved independently in each domain.
3454    pub fn r#get_mark(
3455        &self,
3456        mut domain: fidl_fuchsia_net::MarkDomain,
3457    ) -> fidl::client::QueryResponseFut<
3458        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
3459        fidl::encoding::DefaultFuchsiaResourceDialect,
3460    > {
3461        SocketProxyInterface::r#get_mark(self, domain)
3462    }
3463
3464    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
3465    pub fn r#get_cookie(
3466        &self,
3467    ) -> fidl::client::QueryResponseFut<
3468        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
3469        fidl::encoding::DefaultFuchsiaResourceDialect,
3470    > {
3471        SocketProxyInterface::r#get_cookie(self)
3472    }
3473
3474    /// Sets the local address used for the socket.
3475    pub fn r#bind(
3476        &self,
3477        mut addr: &fidl_fuchsia_net::SocketAddress,
3478    ) -> fidl::client::QueryResponseFut<
3479        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
3480        fidl::encoding::DefaultFuchsiaResourceDialect,
3481    > {
3482        SocketProxyInterface::r#bind(self, addr)
3483    }
3484
3485    /// Initiates a connection to a remote address.
3486    pub fn r#connect(
3487        &self,
3488        mut addr: &fidl_fuchsia_net::SocketAddress,
3489    ) -> fidl::client::QueryResponseFut<
3490        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
3491        fidl::encoding::DefaultFuchsiaResourceDialect,
3492    > {
3493        SocketProxyInterface::r#connect(self, addr)
3494    }
3495
3496    /// Clears connection information from this socket.
3497    pub fn r#disconnect(
3498        &self,
3499    ) -> fidl::client::QueryResponseFut<
3500        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
3501        fidl::encoding::DefaultFuchsiaResourceDialect,
3502    > {
3503        SocketProxyInterface::r#disconnect(self)
3504    }
3505
3506    /// Retrieves the local socket address.
3507    pub fn r#get_sock_name(
3508        &self,
3509    ) -> fidl::client::QueryResponseFut<
3510        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
3511        fidl::encoding::DefaultFuchsiaResourceDialect,
3512    > {
3513        SocketProxyInterface::r#get_sock_name(self)
3514    }
3515
3516    /// Retrieves the remote socket address.
3517    pub fn r#get_peer_name(
3518        &self,
3519    ) -> fidl::client::QueryResponseFut<
3520        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
3521        fidl::encoding::DefaultFuchsiaResourceDialect,
3522    > {
3523        SocketProxyInterface::r#get_peer_name(self)
3524    }
3525
3526    /// Shuts down part of the socket.
3527    pub fn r#shutdown(
3528        &self,
3529        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
3530    ) -> fidl::client::QueryResponseFut<
3531        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
3532        fidl::encoding::DefaultFuchsiaResourceDialect,
3533    > {
3534        SocketProxyInterface::r#shutdown(self, mode)
3535    }
3536
3537    /// Set `SOL_IP` -> `IP_TOS`.
3538    pub fn r#set_ip_type_of_service(
3539        &self,
3540        mut value: u8,
3541    ) -> fidl::client::QueryResponseFut<
3542        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
3543        fidl::encoding::DefaultFuchsiaResourceDialect,
3544    > {
3545        SocketProxyInterface::r#set_ip_type_of_service(self, value)
3546    }
3547
3548    /// Get `SOL_IP` -> `IP_TOS`.
3549    pub fn r#get_ip_type_of_service(
3550        &self,
3551    ) -> fidl::client::QueryResponseFut<
3552        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
3553        fidl::encoding::DefaultFuchsiaResourceDialect,
3554    > {
3555        SocketProxyInterface::r#get_ip_type_of_service(self)
3556    }
3557
3558    /// Set `SOL_IP` -> `IP_TTL`.
3559    pub fn r#set_ip_ttl(
3560        &self,
3561        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3562    ) -> fidl::client::QueryResponseFut<
3563        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
3564        fidl::encoding::DefaultFuchsiaResourceDialect,
3565    > {
3566        SocketProxyInterface::r#set_ip_ttl(self, value)
3567    }
3568
3569    /// Get `SOL_IP` -> `IP_TTL`.
3570    pub fn r#get_ip_ttl(
3571        &self,
3572    ) -> fidl::client::QueryResponseFut<
3573        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
3574        fidl::encoding::DefaultFuchsiaResourceDialect,
3575    > {
3576        SocketProxyInterface::r#get_ip_ttl(self)
3577    }
3578
3579    /// Set `SOL_IP` -> `IP_PKTINFO`.
3580    pub fn r#set_ip_packet_info(
3581        &self,
3582        mut value: bool,
3583    ) -> fidl::client::QueryResponseFut<
3584        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
3585        fidl::encoding::DefaultFuchsiaResourceDialect,
3586    > {
3587        SocketProxyInterface::r#set_ip_packet_info(self, value)
3588    }
3589
3590    /// Get `SOL_IP` -> `IP_PKTINFO`.
3591    pub fn r#get_ip_packet_info(
3592        &self,
3593    ) -> fidl::client::QueryResponseFut<
3594        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
3595        fidl::encoding::DefaultFuchsiaResourceDialect,
3596    > {
3597        SocketProxyInterface::r#get_ip_packet_info(self)
3598    }
3599
3600    /// Set `SOL_IP` -> `IP_RECVTOS`.
3601    pub fn r#set_ip_receive_type_of_service(
3602        &self,
3603        mut value: bool,
3604    ) -> fidl::client::QueryResponseFut<
3605        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
3606        fidl::encoding::DefaultFuchsiaResourceDialect,
3607    > {
3608        SocketProxyInterface::r#set_ip_receive_type_of_service(self, value)
3609    }
3610
3611    /// Get `SOL_IP` -> `IP_RECVTOS`.
3612    pub fn r#get_ip_receive_type_of_service(
3613        &self,
3614    ) -> fidl::client::QueryResponseFut<
3615        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
3616        fidl::encoding::DefaultFuchsiaResourceDialect,
3617    > {
3618        SocketProxyInterface::r#get_ip_receive_type_of_service(self)
3619    }
3620
3621    /// Set `SOL_IP` -> `IP_RECVTTL`.
3622    pub fn r#set_ip_receive_ttl(
3623        &self,
3624        mut value: bool,
3625    ) -> fidl::client::QueryResponseFut<
3626        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
3627        fidl::encoding::DefaultFuchsiaResourceDialect,
3628    > {
3629        SocketProxyInterface::r#set_ip_receive_ttl(self, value)
3630    }
3631
3632    /// Get `SOL_IP` -> `IP_RECVTTL`.
3633    pub fn r#get_ip_receive_ttl(
3634        &self,
3635    ) -> fidl::client::QueryResponseFut<
3636        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
3637        fidl::encoding::DefaultFuchsiaResourceDialect,
3638    > {
3639        SocketProxyInterface::r#get_ip_receive_ttl(self)
3640    }
3641
3642    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
3643    pub fn r#set_ip_multicast_interface(
3644        &self,
3645        mut iface: u64,
3646        mut address: &fidl_fuchsia_net::Ipv4Address,
3647    ) -> fidl::client::QueryResponseFut<
3648        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
3649        fidl::encoding::DefaultFuchsiaResourceDialect,
3650    > {
3651        SocketProxyInterface::r#set_ip_multicast_interface(self, iface, address)
3652    }
3653
3654    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
3655    pub fn r#get_ip_multicast_interface(
3656        &self,
3657    ) -> fidl::client::QueryResponseFut<
3658        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
3659        fidl::encoding::DefaultFuchsiaResourceDialect,
3660    > {
3661        SocketProxyInterface::r#get_ip_multicast_interface(self)
3662    }
3663
3664    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
3665    pub fn r#set_ip_multicast_ttl(
3666        &self,
3667        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3668    ) -> fidl::client::QueryResponseFut<
3669        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
3670        fidl::encoding::DefaultFuchsiaResourceDialect,
3671    > {
3672        SocketProxyInterface::r#set_ip_multicast_ttl(self, value)
3673    }
3674
3675    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
3676    pub fn r#get_ip_multicast_ttl(
3677        &self,
3678    ) -> fidl::client::QueryResponseFut<
3679        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
3680        fidl::encoding::DefaultFuchsiaResourceDialect,
3681    > {
3682        SocketProxyInterface::r#get_ip_multicast_ttl(self)
3683    }
3684
3685    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
3686    pub fn r#set_ip_multicast_loopback(
3687        &self,
3688        mut value: bool,
3689    ) -> fidl::client::QueryResponseFut<
3690        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
3691        fidl::encoding::DefaultFuchsiaResourceDialect,
3692    > {
3693        SocketProxyInterface::r#set_ip_multicast_loopback(self, value)
3694    }
3695
3696    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
3697    pub fn r#get_ip_multicast_loopback(
3698        &self,
3699    ) -> fidl::client::QueryResponseFut<
3700        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
3701        fidl::encoding::DefaultFuchsiaResourceDialect,
3702    > {
3703        SocketProxyInterface::r#get_ip_multicast_loopback(self)
3704    }
3705
3706    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
3707    pub fn r#add_ip_membership(
3708        &self,
3709        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3710    ) -> fidl::client::QueryResponseFut<
3711        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
3712        fidl::encoding::DefaultFuchsiaResourceDialect,
3713    > {
3714        SocketProxyInterface::r#add_ip_membership(self, membership)
3715    }
3716
3717    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
3718    pub fn r#drop_ip_membership(
3719        &self,
3720        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3721    ) -> fidl::client::QueryResponseFut<
3722        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
3723        fidl::encoding::DefaultFuchsiaResourceDialect,
3724    > {
3725        SocketProxyInterface::r#drop_ip_membership(self, membership)
3726    }
3727
3728    /// Set `SOL_IP` -> `IP_TRANSPARENT`
3729    pub fn r#set_ip_transparent(
3730        &self,
3731        mut value: bool,
3732    ) -> fidl::client::QueryResponseFut<
3733        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
3734        fidl::encoding::DefaultFuchsiaResourceDialect,
3735    > {
3736        SocketProxyInterface::r#set_ip_transparent(self, value)
3737    }
3738
3739    /// Get `SOL_IP` -> `IP_TRANSPARENT`
3740    pub fn r#get_ip_transparent(
3741        &self,
3742    ) -> fidl::client::QueryResponseFut<
3743        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
3744        fidl::encoding::DefaultFuchsiaResourceDialect,
3745    > {
3746        SocketProxyInterface::r#get_ip_transparent(self)
3747    }
3748
3749    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
3750    pub fn r#set_ip_receive_original_destination_address(
3751        &self,
3752        mut value: bool,
3753    ) -> fidl::client::QueryResponseFut<
3754        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
3755        fidl::encoding::DefaultFuchsiaResourceDialect,
3756    > {
3757        SocketProxyInterface::r#set_ip_receive_original_destination_address(self, value)
3758    }
3759
3760    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
3761    pub fn r#get_ip_receive_original_destination_address(
3762        &self,
3763    ) -> fidl::client::QueryResponseFut<
3764        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
3765        fidl::encoding::DefaultFuchsiaResourceDialect,
3766    > {
3767        SocketProxyInterface::r#get_ip_receive_original_destination_address(self)
3768    }
3769
3770    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
3771    pub fn r#add_ipv6_membership(
3772        &self,
3773        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3774    ) -> fidl::client::QueryResponseFut<
3775        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
3776        fidl::encoding::DefaultFuchsiaResourceDialect,
3777    > {
3778        SocketProxyInterface::r#add_ipv6_membership(self, membership)
3779    }
3780
3781    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
3782    pub fn r#drop_ipv6_membership(
3783        &self,
3784        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3785    ) -> fidl::client::QueryResponseFut<
3786        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
3787        fidl::encoding::DefaultFuchsiaResourceDialect,
3788    > {
3789        SocketProxyInterface::r#drop_ipv6_membership(self, membership)
3790    }
3791
3792    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3793    pub fn r#set_ipv6_multicast_interface(
3794        &self,
3795        mut value: u64,
3796    ) -> fidl::client::QueryResponseFut<
3797        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
3798        fidl::encoding::DefaultFuchsiaResourceDialect,
3799    > {
3800        SocketProxyInterface::r#set_ipv6_multicast_interface(self, value)
3801    }
3802
3803    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3804    pub fn r#get_ipv6_multicast_interface(
3805        &self,
3806    ) -> fidl::client::QueryResponseFut<
3807        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
3808        fidl::encoding::DefaultFuchsiaResourceDialect,
3809    > {
3810        SocketProxyInterface::r#get_ipv6_multicast_interface(self)
3811    }
3812
3813    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3814    pub fn r#set_ipv6_unicast_hops(
3815        &self,
3816        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3817    ) -> fidl::client::QueryResponseFut<
3818        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
3819        fidl::encoding::DefaultFuchsiaResourceDialect,
3820    > {
3821        SocketProxyInterface::r#set_ipv6_unicast_hops(self, value)
3822    }
3823
3824    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3825    pub fn r#get_ipv6_unicast_hops(
3826        &self,
3827    ) -> fidl::client::QueryResponseFut<
3828        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
3829        fidl::encoding::DefaultFuchsiaResourceDialect,
3830    > {
3831        SocketProxyInterface::r#get_ipv6_unicast_hops(self)
3832    }
3833
3834    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3835    pub fn r#set_ipv6_receive_hop_limit(
3836        &self,
3837        mut value: bool,
3838    ) -> fidl::client::QueryResponseFut<
3839        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
3840        fidl::encoding::DefaultFuchsiaResourceDialect,
3841    > {
3842        SocketProxyInterface::r#set_ipv6_receive_hop_limit(self, value)
3843    }
3844
3845    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3846    pub fn r#get_ipv6_receive_hop_limit(
3847        &self,
3848    ) -> fidl::client::QueryResponseFut<
3849        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
3850        fidl::encoding::DefaultFuchsiaResourceDialect,
3851    > {
3852        SocketProxyInterface::r#get_ipv6_receive_hop_limit(self)
3853    }
3854
3855    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3856    pub fn r#set_ipv6_multicast_hops(
3857        &self,
3858        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3859    ) -> fidl::client::QueryResponseFut<
3860        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
3861        fidl::encoding::DefaultFuchsiaResourceDialect,
3862    > {
3863        SocketProxyInterface::r#set_ipv6_multicast_hops(self, value)
3864    }
3865
3866    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3867    pub fn r#get_ipv6_multicast_hops(
3868        &self,
3869    ) -> fidl::client::QueryResponseFut<
3870        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
3871        fidl::encoding::DefaultFuchsiaResourceDialect,
3872    > {
3873        SocketProxyInterface::r#get_ipv6_multicast_hops(self)
3874    }
3875
3876    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3877    pub fn r#set_ipv6_multicast_loopback(
3878        &self,
3879        mut value: bool,
3880    ) -> fidl::client::QueryResponseFut<
3881        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
3882        fidl::encoding::DefaultFuchsiaResourceDialect,
3883    > {
3884        SocketProxyInterface::r#set_ipv6_multicast_loopback(self, value)
3885    }
3886
3887    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3888    pub fn r#get_ipv6_multicast_loopback(
3889        &self,
3890    ) -> fidl::client::QueryResponseFut<
3891        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
3892        fidl::encoding::DefaultFuchsiaResourceDialect,
3893    > {
3894        SocketProxyInterface::r#get_ipv6_multicast_loopback(self)
3895    }
3896
3897    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
3898    pub fn r#set_ipv6_only(
3899        &self,
3900        mut value: bool,
3901    ) -> fidl::client::QueryResponseFut<
3902        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
3903        fidl::encoding::DefaultFuchsiaResourceDialect,
3904    > {
3905        SocketProxyInterface::r#set_ipv6_only(self, value)
3906    }
3907
3908    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
3909    pub fn r#get_ipv6_only(
3910        &self,
3911    ) -> fidl::client::QueryResponseFut<
3912        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
3913        fidl::encoding::DefaultFuchsiaResourceDialect,
3914    > {
3915        SocketProxyInterface::r#get_ipv6_only(self)
3916    }
3917
3918    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
3919    pub fn r#set_ipv6_receive_traffic_class(
3920        &self,
3921        mut value: bool,
3922    ) -> fidl::client::QueryResponseFut<
3923        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
3924        fidl::encoding::DefaultFuchsiaResourceDialect,
3925    > {
3926        SocketProxyInterface::r#set_ipv6_receive_traffic_class(self, value)
3927    }
3928
3929    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
3930    pub fn r#get_ipv6_receive_traffic_class(
3931        &self,
3932    ) -> fidl::client::QueryResponseFut<
3933        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
3934        fidl::encoding::DefaultFuchsiaResourceDialect,
3935    > {
3936        SocketProxyInterface::r#get_ipv6_receive_traffic_class(self)
3937    }
3938
3939    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
3940    pub fn r#set_ipv6_traffic_class(
3941        &self,
3942        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3943    ) -> fidl::client::QueryResponseFut<
3944        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
3945        fidl::encoding::DefaultFuchsiaResourceDialect,
3946    > {
3947        SocketProxyInterface::r#set_ipv6_traffic_class(self, value)
3948    }
3949
3950    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
3951    pub fn r#get_ipv6_traffic_class(
3952        &self,
3953    ) -> fidl::client::QueryResponseFut<
3954        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
3955        fidl::encoding::DefaultFuchsiaResourceDialect,
3956    > {
3957        SocketProxyInterface::r#get_ipv6_traffic_class(self)
3958    }
3959
3960    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
3961    pub fn r#set_ipv6_receive_packet_info(
3962        &self,
3963        mut value: bool,
3964    ) -> fidl::client::QueryResponseFut<
3965        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
3966        fidl::encoding::DefaultFuchsiaResourceDialect,
3967    > {
3968        SocketProxyInterface::r#set_ipv6_receive_packet_info(self, value)
3969    }
3970
3971    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
3972    pub fn r#get_ipv6_receive_packet_info(
3973        &self,
3974    ) -> fidl::client::QueryResponseFut<
3975        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
3976        fidl::encoding::DefaultFuchsiaResourceDialect,
3977    > {
3978        SocketProxyInterface::r#get_ipv6_receive_packet_info(self)
3979    }
3980
3981    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
3982    pub fn r#get_original_destination(
3983        &self,
3984    ) -> fidl::client::QueryResponseFut<
3985        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
3986        fidl::encoding::DefaultFuchsiaResourceDialect,
3987    > {
3988        SocketProxyInterface::r#get_original_destination(self)
3989    }
3990
3991    pub fn r#describe(
3992        &self,
3993    ) -> fidl::client::QueryResponseFut<
3994        SocketDescribeResponse,
3995        fidl::encoding::DefaultFuchsiaResourceDialect,
3996    > {
3997        SocketProxyInterface::r#describe(self)
3998    }
3999
4000    /// Receives a message from the socket.
4001    ///
4002    /// + request `want_addr` request message's source address information to
4003    ///   be returned.
4004    /// + request `data_len` the maximum allowed length of the response data
4005    ///   buffer.
4006    /// + request `want_control` request ancillary data to be returned.
4007    /// + request `flags` flags for the receive request.
4008    /// - response `addr` the message's source address information, if
4009    ///   requested.
4010    /// - response `data` the message.
4011    /// - response `control` control messages, if requested.
4012    /// - response `truncated` indicates whether or not the returned message
4013    ///   was truncated.
4014    pub fn r#recv_msg(
4015        &self,
4016        mut want_addr: bool,
4017        mut data_len: u32,
4018        mut want_control: bool,
4019        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
4020    ) -> fidl::client::QueryResponseFut<
4021        SocketRecvMsgResult,
4022        fidl::encoding::DefaultFuchsiaResourceDialect,
4023    > {
4024        SocketProxyInterface::r#recv_msg(self, want_addr, data_len, want_control, flags)
4025    }
4026
4027    /// Sends a message on the socket.
4028    ///
4029    /// + request `addr` the address to send the message to. If unset, will
4030    ///   send to the connected peer.
4031    /// + request `data` the message.
4032    /// + request `control` ancillary data.
4033    /// + request `flags` flags for the send request.
4034    pub fn r#send_msg(
4035        &self,
4036        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
4037        mut data: &[u8],
4038        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
4039        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
4040    ) -> fidl::client::QueryResponseFut<
4041        SocketSendMsgResult,
4042        fidl::encoding::DefaultFuchsiaResourceDialect,
4043    > {
4044        SocketProxyInterface::r#send_msg(self, addr, data, control, flags)
4045    }
4046
4047    /// Retrieves creation information from the socket.
4048    ///
4049    /// - response `domain` the socket's associated domain.
4050    /// - response `proto` the socket's associated protocol.
4051    pub fn r#get_info(
4052        &self,
4053    ) -> fidl::client::QueryResponseFut<
4054        SocketGetInfoResult,
4055        fidl::encoding::DefaultFuchsiaResourceDialect,
4056    > {
4057        SocketProxyInterface::r#get_info(self)
4058    }
4059
4060    /// Set `SOL_IP` -> `IP_HDRINCL`.
4061    pub fn r#set_ip_header_included(
4062        &self,
4063        mut value: bool,
4064    ) -> fidl::client::QueryResponseFut<
4065        SocketSetIpHeaderIncludedResult,
4066        fidl::encoding::DefaultFuchsiaResourceDialect,
4067    > {
4068        SocketProxyInterface::r#set_ip_header_included(self, value)
4069    }
4070
4071    /// Get `SOL_IP` -> `IP_HDRINCL`.
4072    pub fn r#get_ip_header_included(
4073        &self,
4074    ) -> fidl::client::QueryResponseFut<
4075        SocketGetIpHeaderIncludedResult,
4076        fidl::encoding::DefaultFuchsiaResourceDialect,
4077    > {
4078        SocketProxyInterface::r#get_ip_header_included(self)
4079    }
4080
4081    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
4082    pub fn r#set_icmpv6_filter(
4083        &self,
4084        mut filter: &Icmpv6Filter,
4085    ) -> fidl::client::QueryResponseFut<
4086        SocketSetIcmpv6FilterResult,
4087        fidl::encoding::DefaultFuchsiaResourceDialect,
4088    > {
4089        SocketProxyInterface::r#set_icmpv6_filter(self, filter)
4090    }
4091
4092    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
4093    pub fn r#get_icmpv6_filter(
4094        &self,
4095    ) -> fidl::client::QueryResponseFut<
4096        SocketGetIcmpv6FilterResult,
4097        fidl::encoding::DefaultFuchsiaResourceDialect,
4098    > {
4099        SocketProxyInterface::r#get_icmpv6_filter(self)
4100    }
4101
4102    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
4103    pub fn r#set_ipv6_checksum(
4104        &self,
4105        mut config: &Ipv6ChecksumConfiguration,
4106    ) -> fidl::client::QueryResponseFut<
4107        SocketSetIpv6ChecksumResult,
4108        fidl::encoding::DefaultFuchsiaResourceDialect,
4109    > {
4110        SocketProxyInterface::r#set_ipv6_checksum(self, config)
4111    }
4112
4113    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
4114    pub fn r#get_ipv6_checksum(
4115        &self,
4116    ) -> fidl::client::QueryResponseFut<
4117        SocketGetIpv6ChecksumResult,
4118        fidl::encoding::DefaultFuchsiaResourceDialect,
4119    > {
4120        SocketProxyInterface::r#get_ipv6_checksum(self)
4121    }
4122}
4123
4124impl SocketProxyInterface for SocketProxy {
4125    fn r#clone(
4126        &self,
4127        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
4128    ) -> Result<(), fidl::Error> {
4129        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
4130            (request,),
4131            0x20d8a7aba2168a79,
4132            fidl::encoding::DynamicFlags::empty(),
4133        )
4134    }
4135
4136    type CloseResponseFut = fidl::client::QueryResponseFut<
4137        fidl_fuchsia_unknown::CloseableCloseResult,
4138        fidl::encoding::DefaultFuchsiaResourceDialect,
4139    >;
4140    fn r#close(&self) -> Self::CloseResponseFut {
4141        fn _decode(
4142            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4143        ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
4144            let _response = fidl::client::decode_transaction_body::<
4145                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
4146                fidl::encoding::DefaultFuchsiaResourceDialect,
4147                0x5ac5d459ad7f657e,
4148            >(_buf?)?;
4149            Ok(_response.map(|x| x))
4150        }
4151        self.client.send_query_and_decode::<
4152            fidl::encoding::EmptyPayload,
4153            fidl_fuchsia_unknown::CloseableCloseResult,
4154        >(
4155            (),
4156            0x5ac5d459ad7f657e,
4157            fidl::encoding::DynamicFlags::empty(),
4158            _decode,
4159        )
4160    }
4161
4162    type QueryResponseFut =
4163        fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
4164    fn r#query(&self) -> Self::QueryResponseFut {
4165        fn _decode(
4166            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4167        ) -> Result<Vec<u8>, fidl::Error> {
4168            let _response = fidl::client::decode_transaction_body::<
4169                fidl_fuchsia_unknown::QueryableQueryResponse,
4170                fidl::encoding::DefaultFuchsiaResourceDialect,
4171                0x2658edee9decfc06,
4172            >(_buf?)?;
4173            Ok(_response.protocol)
4174        }
4175        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<u8>>(
4176            (),
4177            0x2658edee9decfc06,
4178            fidl::encoding::DynamicFlags::empty(),
4179            _decode,
4180        )
4181    }
4182
4183    type SetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4184        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4185        fidl::encoding::DefaultFuchsiaResourceDialect,
4186    >;
4187    fn r#set_reuse_address(&self, mut value: bool) -> Self::SetReuseAddressResponseFut {
4188        fn _decode(
4189            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4190        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error>
4191        {
4192            let _response = fidl::client::decode_transaction_body::<
4193                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4194                fidl::encoding::DefaultFuchsiaResourceDialect,
4195                0x1fd74ee8b9a4a876,
4196            >(_buf?)?;
4197            Ok(_response.map(|x| x))
4198        }
4199        self.client.send_query_and_decode::<
4200            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
4201            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4202        >(
4203            (value,),
4204            0x1fd74ee8b9a4a876,
4205            fidl::encoding::DynamicFlags::empty(),
4206            _decode,
4207        )
4208    }
4209
4210    type GetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4211        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4212        fidl::encoding::DefaultFuchsiaResourceDialect,
4213    >;
4214    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut {
4215        fn _decode(
4216            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4217        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error>
4218        {
4219            let _response = fidl::client::decode_transaction_body::<
4220                fidl::encoding::ResultType<
4221                    fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
4222                    fidl_fuchsia_posix::Errno,
4223                >,
4224                fidl::encoding::DefaultFuchsiaResourceDialect,
4225                0x67b7206b8d1bc0a5,
4226            >(_buf?)?;
4227            Ok(_response.map(|x| x.value))
4228        }
4229        self.client.send_query_and_decode::<
4230            fidl::encoding::EmptyPayload,
4231            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4232        >(
4233            (),
4234            0x67b7206b8d1bc0a5,
4235            fidl::encoding::DynamicFlags::empty(),
4236            _decode,
4237        )
4238    }
4239
4240    type GetErrorResponseFut = fidl::client::QueryResponseFut<
4241        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4242        fidl::encoding::DefaultFuchsiaResourceDialect,
4243    >;
4244    fn r#get_error(&self) -> Self::GetErrorResponseFut {
4245        fn _decode(
4246            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4247        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
4248            let _response = fidl::client::decode_transaction_body::<
4249                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4250                fidl::encoding::DefaultFuchsiaResourceDialect,
4251                0x5aad39b33e5f6ebb,
4252            >(_buf?)?;
4253            Ok(_response.map(|x| x))
4254        }
4255        self.client.send_query_and_decode::<
4256            fidl::encoding::EmptyPayload,
4257            fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4258        >(
4259            (),
4260            0x5aad39b33e5f6ebb,
4261            fidl::encoding::DynamicFlags::empty(),
4262            _decode,
4263        )
4264    }
4265
4266    type SetBroadcastResponseFut = fidl::client::QueryResponseFut<
4267        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4268        fidl::encoding::DefaultFuchsiaResourceDialect,
4269    >;
4270    fn r#set_broadcast(&self, mut value: bool) -> Self::SetBroadcastResponseFut {
4271        fn _decode(
4272            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4273        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
4274            let _response = fidl::client::decode_transaction_body::<
4275                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4276                fidl::encoding::DefaultFuchsiaResourceDialect,
4277                0x6023e081ce3cd947,
4278            >(_buf?)?;
4279            Ok(_response.map(|x| x))
4280        }
4281        self.client.send_query_and_decode::<
4282            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
4283            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4284        >(
4285            (value,),
4286            0x6023e081ce3cd947,
4287            fidl::encoding::DynamicFlags::empty(),
4288            _decode,
4289        )
4290    }
4291
4292    type GetBroadcastResponseFut = fidl::client::QueryResponseFut<
4293        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4294        fidl::encoding::DefaultFuchsiaResourceDialect,
4295    >;
4296    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut {
4297        fn _decode(
4298            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4299        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
4300            let _response = fidl::client::decode_transaction_body::<
4301                fidl::encoding::ResultType<
4302                    fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
4303                    fidl_fuchsia_posix::Errno,
4304                >,
4305                fidl::encoding::DefaultFuchsiaResourceDialect,
4306                0x68796fc556f9780d,
4307            >(_buf?)?;
4308            Ok(_response.map(|x| x.value))
4309        }
4310        self.client.send_query_and_decode::<
4311            fidl::encoding::EmptyPayload,
4312            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4313        >(
4314            (),
4315            0x68796fc556f9780d,
4316            fidl::encoding::DynamicFlags::empty(),
4317            _decode,
4318        )
4319    }
4320
4321    type SetSendBufferResponseFut = fidl::client::QueryResponseFut<
4322        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4323        fidl::encoding::DefaultFuchsiaResourceDialect,
4324    >;
4325    fn r#set_send_buffer(&self, mut value_bytes: u64) -> Self::SetSendBufferResponseFut {
4326        fn _decode(
4327            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4328        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
4329            let _response = fidl::client::decode_transaction_body::<
4330                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4331                fidl::encoding::DefaultFuchsiaResourceDialect,
4332                0x756eac32d73a7a70,
4333            >(_buf?)?;
4334            Ok(_response.map(|x| x))
4335        }
4336        self.client.send_query_and_decode::<
4337            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
4338            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4339        >(
4340            (value_bytes,),
4341            0x756eac32d73a7a70,
4342            fidl::encoding::DynamicFlags::empty(),
4343            _decode,
4344        )
4345    }
4346
4347    type GetSendBufferResponseFut = fidl::client::QueryResponseFut<
4348        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4349        fidl::encoding::DefaultFuchsiaResourceDialect,
4350    >;
4351    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut {
4352        fn _decode(
4353            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4354        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
4355            let _response = fidl::client::decode_transaction_body::<
4356                fidl::encoding::ResultType<
4357                    fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
4358                    fidl_fuchsia_posix::Errno,
4359                >,
4360                fidl::encoding::DefaultFuchsiaResourceDialect,
4361                0x78a52fd9c7b2410b,
4362            >(_buf?)?;
4363            Ok(_response.map(|x| x.value_bytes))
4364        }
4365        self.client.send_query_and_decode::<
4366            fidl::encoding::EmptyPayload,
4367            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4368        >(
4369            (),
4370            0x78a52fd9c7b2410b,
4371            fidl::encoding::DynamicFlags::empty(),
4372            _decode,
4373        )
4374    }
4375
4376    type SetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4377        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4378        fidl::encoding::DefaultFuchsiaResourceDialect,
4379    >;
4380    fn r#set_receive_buffer(&self, mut value_bytes: u64) -> Self::SetReceiveBufferResponseFut {
4381        fn _decode(
4382            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4383        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error>
4384        {
4385            let _response = fidl::client::decode_transaction_body::<
4386                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4387                fidl::encoding::DefaultFuchsiaResourceDialect,
4388                0x6b0cf2f1919c7001,
4389            >(_buf?)?;
4390            Ok(_response.map(|x| x))
4391        }
4392        self.client.send_query_and_decode::<
4393            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
4394            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4395        >(
4396            (value_bytes,),
4397            0x6b0cf2f1919c7001,
4398            fidl::encoding::DynamicFlags::empty(),
4399            _decode,
4400        )
4401    }
4402
4403    type GetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4404        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4405        fidl::encoding::DefaultFuchsiaResourceDialect,
4406    >;
4407    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut {
4408        fn _decode(
4409            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4410        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error>
4411        {
4412            let _response = fidl::client::decode_transaction_body::<
4413                fidl::encoding::ResultType<
4414                    fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
4415                    fidl_fuchsia_posix::Errno,
4416                >,
4417                fidl::encoding::DefaultFuchsiaResourceDialect,
4418                0x14c1a4b64f709e5c,
4419            >(_buf?)?;
4420            Ok(_response.map(|x| x.value_bytes))
4421        }
4422        self.client.send_query_and_decode::<
4423            fidl::encoding::EmptyPayload,
4424            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4425        >(
4426            (),
4427            0x14c1a4b64f709e5c,
4428            fidl::encoding::DynamicFlags::empty(),
4429            _decode,
4430        )
4431    }
4432
4433    type SetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4434        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4435        fidl::encoding::DefaultFuchsiaResourceDialect,
4436    >;
4437    fn r#set_keep_alive(&self, mut value: bool) -> Self::SetKeepAliveResponseFut {
4438        fn _decode(
4439            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4440        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
4441            let _response = fidl::client::decode_transaction_body::<
4442                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4443                fidl::encoding::DefaultFuchsiaResourceDialect,
4444                0x572df8f0b920d2c7,
4445            >(_buf?)?;
4446            Ok(_response.map(|x| x))
4447        }
4448        self.client.send_query_and_decode::<
4449            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
4450            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4451        >(
4452            (value,),
4453            0x572df8f0b920d2c7,
4454            fidl::encoding::DynamicFlags::empty(),
4455            _decode,
4456        )
4457    }
4458
4459    type GetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4460        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4461        fidl::encoding::DefaultFuchsiaResourceDialect,
4462    >;
4463    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut {
4464        fn _decode(
4465            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4466        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
4467            let _response = fidl::client::decode_transaction_body::<
4468                fidl::encoding::ResultType<
4469                    fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
4470                    fidl_fuchsia_posix::Errno,
4471                >,
4472                fidl::encoding::DefaultFuchsiaResourceDialect,
4473                0x2dd29d3215f2c9d2,
4474            >(_buf?)?;
4475            Ok(_response.map(|x| x.value))
4476        }
4477        self.client.send_query_and_decode::<
4478            fidl::encoding::EmptyPayload,
4479            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4480        >(
4481            (),
4482            0x2dd29d3215f2c9d2,
4483            fidl::encoding::DynamicFlags::empty(),
4484            _decode,
4485        )
4486    }
4487
4488    type SetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4489        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4490        fidl::encoding::DefaultFuchsiaResourceDialect,
4491    >;
4492    fn r#set_out_of_band_inline(&self, mut value: bool) -> Self::SetOutOfBandInlineResponseFut {
4493        fn _decode(
4494            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4495        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error>
4496        {
4497            let _response = fidl::client::decode_transaction_body::<
4498                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4499                fidl::encoding::DefaultFuchsiaResourceDialect,
4500                0x3ecb49968bee439,
4501            >(_buf?)?;
4502            Ok(_response.map(|x| x))
4503        }
4504        self.client.send_query_and_decode::<
4505            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
4506            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4507        >(
4508            (value,),
4509            0x3ecb49968bee439,
4510            fidl::encoding::DynamicFlags::empty(),
4511            _decode,
4512        )
4513    }
4514
4515    type GetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4516        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4517        fidl::encoding::DefaultFuchsiaResourceDialect,
4518    >;
4519    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut {
4520        fn _decode(
4521            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4522        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error>
4523        {
4524            let _response = fidl::client::decode_transaction_body::<
4525                fidl::encoding::ResultType<
4526                    fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
4527                    fidl_fuchsia_posix::Errno,
4528                >,
4529                fidl::encoding::DefaultFuchsiaResourceDialect,
4530                0x348c1ab3aeca1745,
4531            >(_buf?)?;
4532            Ok(_response.map(|x| x.value))
4533        }
4534        self.client.send_query_and_decode::<
4535            fidl::encoding::EmptyPayload,
4536            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4537        >(
4538            (),
4539            0x348c1ab3aeca1745,
4540            fidl::encoding::DynamicFlags::empty(),
4541            _decode,
4542        )
4543    }
4544
4545    type SetNoCheckResponseFut = fidl::client::QueryResponseFut<
4546        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4547        fidl::encoding::DefaultFuchsiaResourceDialect,
4548    >;
4549    fn r#set_no_check(&self, mut value: bool) -> Self::SetNoCheckResponseFut {
4550        fn _decode(
4551            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4552        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
4553            let _response = fidl::client::decode_transaction_body::<
4554                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4555                fidl::encoding::DefaultFuchsiaResourceDialect,
4556                0x6bbf00c53a4c78c2,
4557            >(_buf?)?;
4558            Ok(_response.map(|x| x))
4559        }
4560        self.client.send_query_and_decode::<
4561            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
4562            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4563        >(
4564            (value,),
4565            0x6bbf00c53a4c78c2,
4566            fidl::encoding::DynamicFlags::empty(),
4567            _decode,
4568        )
4569    }
4570
4571    type GetNoCheckResponseFut = fidl::client::QueryResponseFut<
4572        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4573        fidl::encoding::DefaultFuchsiaResourceDialect,
4574    >;
4575    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut {
4576        fn _decode(
4577            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4578        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
4579            let _response = fidl::client::decode_transaction_body::<
4580                fidl::encoding::ResultType<
4581                    fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
4582                    fidl_fuchsia_posix::Errno,
4583                >,
4584                fidl::encoding::DefaultFuchsiaResourceDialect,
4585                0x2cd4249286417694,
4586            >(_buf?)?;
4587            Ok(_response.map(|x| x.value))
4588        }
4589        self.client.send_query_and_decode::<
4590            fidl::encoding::EmptyPayload,
4591            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4592        >(
4593            (),
4594            0x2cd4249286417694,
4595            fidl::encoding::DynamicFlags::empty(),
4596            _decode,
4597        )
4598    }
4599
4600    type SetLingerResponseFut = fidl::client::QueryResponseFut<
4601        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4602        fidl::encoding::DefaultFuchsiaResourceDialect,
4603    >;
4604    fn r#set_linger(&self, mut linger: bool, mut length_secs: u32) -> Self::SetLingerResponseFut {
4605        fn _decode(
4606            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4607        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
4608            let _response = fidl::client::decode_transaction_body::<
4609                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4610                fidl::encoding::DefaultFuchsiaResourceDialect,
4611                0x45386351246e998e,
4612            >(_buf?)?;
4613            Ok(_response.map(|x| x))
4614        }
4615        self.client.send_query_and_decode::<
4616            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
4617            fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4618        >(
4619            (linger, length_secs,),
4620            0x45386351246e998e,
4621            fidl::encoding::DynamicFlags::empty(),
4622            _decode,
4623        )
4624    }
4625
4626    type GetLingerResponseFut = fidl::client::QueryResponseFut<
4627        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4628        fidl::encoding::DefaultFuchsiaResourceDialect,
4629    >;
4630    fn r#get_linger(&self) -> Self::GetLingerResponseFut {
4631        fn _decode(
4632            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4633        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
4634            let _response = fidl::client::decode_transaction_body::<
4635                fidl::encoding::ResultType<
4636                    fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
4637                    fidl_fuchsia_posix::Errno,
4638                >,
4639                fidl::encoding::DefaultFuchsiaResourceDialect,
4640                0x48eb20fc5ccb0e45,
4641            >(_buf?)?;
4642            Ok(_response.map(|x| (x.linger, x.length_secs)))
4643        }
4644        self.client.send_query_and_decode::<
4645            fidl::encoding::EmptyPayload,
4646            fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4647        >(
4648            (),
4649            0x48eb20fc5ccb0e45,
4650            fidl::encoding::DynamicFlags::empty(),
4651            _decode,
4652        )
4653    }
4654
4655    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4656        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4657        fidl::encoding::DefaultFuchsiaResourceDialect,
4658    >;
4659    fn r#set_reuse_port(&self, mut value: bool) -> Self::SetReusePortResponseFut {
4660        fn _decode(
4661            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4662        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4663            let _response = fidl::client::decode_transaction_body::<
4664                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4665                fidl::encoding::DefaultFuchsiaResourceDialect,
4666                0x24dd3e5cb36d9ccb,
4667            >(_buf?)?;
4668            Ok(_response.map(|x| x))
4669        }
4670        self.client.send_query_and_decode::<
4671            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4672            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4673        >(
4674            (value,),
4675            0x24dd3e5cb36d9ccb,
4676            fidl::encoding::DynamicFlags::empty(),
4677            _decode,
4678        )
4679    }
4680
4681    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4682        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4683        fidl::encoding::DefaultFuchsiaResourceDialect,
4684    >;
4685    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4686        fn _decode(
4687            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4688        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4689            let _response = fidl::client::decode_transaction_body::<
4690                fidl::encoding::ResultType<
4691                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4692                    fidl_fuchsia_posix::Errno,
4693                >,
4694                fidl::encoding::DefaultFuchsiaResourceDialect,
4695                0x7a112c1ab54ff828,
4696            >(_buf?)?;
4697            Ok(_response.map(|x| x.value))
4698        }
4699        self.client.send_query_and_decode::<
4700            fidl::encoding::EmptyPayload,
4701            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4702        >(
4703            (),
4704            0x7a112c1ab54ff828,
4705            fidl::encoding::DynamicFlags::empty(),
4706            _decode,
4707        )
4708    }
4709
4710    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4711        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4712        fidl::encoding::DefaultFuchsiaResourceDialect,
4713    >;
4714    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4715        fn _decode(
4716            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4717        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4718            let _response = fidl::client::decode_transaction_body::<
4719                fidl::encoding::ResultType<
4720                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4721                    fidl_fuchsia_posix::Errno,
4722                >,
4723                fidl::encoding::DefaultFuchsiaResourceDialect,
4724                0x67ce6db6c2ec8966,
4725            >(_buf?)?;
4726            Ok(_response.map(|x| x.value))
4727        }
4728        self.client.send_query_and_decode::<
4729            fidl::encoding::EmptyPayload,
4730            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4731        >(
4732            (),
4733            0x67ce6db6c2ec8966,
4734            fidl::encoding::DynamicFlags::empty(),
4735            _decode,
4736        )
4737    }
4738
4739    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4740        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4741        fidl::encoding::DefaultFuchsiaResourceDialect,
4742    >;
4743    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4744        fn _decode(
4745            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4746        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4747        {
4748            let _response = fidl::client::decode_transaction_body::<
4749                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4750                fidl::encoding::DefaultFuchsiaResourceDialect,
4751                0x2118b483f28aafc4,
4752            >(_buf?)?;
4753            Ok(_response.map(|x| x))
4754        }
4755        self.client.send_query_and_decode::<
4756            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4757            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4758        >(
4759            (value,),
4760            0x2118b483f28aafc4,
4761            fidl::encoding::DynamicFlags::empty(),
4762            _decode,
4763        )
4764    }
4765
4766    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4767        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4768        fidl::encoding::DefaultFuchsiaResourceDialect,
4769    >;
4770    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4771        fn _decode(
4772            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4773        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4774        {
4775            let _response = fidl::client::decode_transaction_body::<
4776                fidl::encoding::ResultType<
4777                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4778                    fidl_fuchsia_posix::Errno,
4779                >,
4780                fidl::encoding::DefaultFuchsiaResourceDialect,
4781                0x1ab1fbf0ef7906c8,
4782            >(_buf?)?;
4783            Ok(_response.map(|x| x.value))
4784        }
4785        self.client.send_query_and_decode::<
4786            fidl::encoding::EmptyPayload,
4787            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4788        >(
4789            (),
4790            0x1ab1fbf0ef7906c8,
4791            fidl::encoding::DynamicFlags::empty(),
4792            _decode,
4793        )
4794    }
4795
4796    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4797        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4798        fidl::encoding::DefaultFuchsiaResourceDialect,
4799    >;
4800    fn r#set_bind_to_interface_index(
4801        &self,
4802        mut value: u64,
4803    ) -> Self::SetBindToInterfaceIndexResponseFut {
4804        fn _decode(
4805            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4806        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
4807        {
4808            let _response = fidl::client::decode_transaction_body::<
4809                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4810                fidl::encoding::DefaultFuchsiaResourceDialect,
4811                0x6e387a0def00821,
4812            >(_buf?)?;
4813            Ok(_response.map(|x| x))
4814        }
4815        self.client.send_query_and_decode::<
4816            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
4817            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4818        >(
4819            (value,),
4820            0x6e387a0def00821,
4821            fidl::encoding::DynamicFlags::empty(),
4822            _decode,
4823        )
4824    }
4825
4826    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4827        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4828        fidl::encoding::DefaultFuchsiaResourceDialect,
4829    >;
4830    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
4831        fn _decode(
4832            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4833        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
4834        {
4835            let _response = fidl::client::decode_transaction_body::<
4836                fidl::encoding::ResultType<
4837                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
4838                    fidl_fuchsia_posix::Errno,
4839                >,
4840                fidl::encoding::DefaultFuchsiaResourceDialect,
4841                0x59c31dd3e3078295,
4842            >(_buf?)?;
4843            Ok(_response.map(|x| x.value))
4844        }
4845        self.client.send_query_and_decode::<
4846            fidl::encoding::EmptyPayload,
4847            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4848        >(
4849            (),
4850            0x59c31dd3e3078295,
4851            fidl::encoding::DynamicFlags::empty(),
4852            _decode,
4853        )
4854    }
4855
4856    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
4857        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4858        fidl::encoding::DefaultFuchsiaResourceDialect,
4859    >;
4860    fn r#set_timestamp(
4861        &self,
4862        mut value: fidl_fuchsia_posix_socket::TimestampOption,
4863    ) -> Self::SetTimestampResponseFut {
4864        fn _decode(
4865            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4866        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
4867            let _response = fidl::client::decode_transaction_body::<
4868                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4869                fidl::encoding::DefaultFuchsiaResourceDialect,
4870                0x285d6516c263d839,
4871            >(_buf?)?;
4872            Ok(_response.map(|x| x))
4873        }
4874        self.client.send_query_and_decode::<
4875            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
4876            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4877        >(
4878            (value,),
4879            0x285d6516c263d839,
4880            fidl::encoding::DynamicFlags::empty(),
4881            _decode,
4882        )
4883    }
4884
4885    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
4886        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4887        fidl::encoding::DefaultFuchsiaResourceDialect,
4888    >;
4889    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
4890        fn _decode(
4891            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4892        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
4893            let _response = fidl::client::decode_transaction_body::<
4894                fidl::encoding::ResultType<
4895                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
4896                    fidl_fuchsia_posix::Errno,
4897                >,
4898                fidl::encoding::DefaultFuchsiaResourceDialect,
4899                0x49f2fffbbcc2bd27,
4900            >(_buf?)?;
4901            Ok(_response.map(|x| x.value))
4902        }
4903        self.client.send_query_and_decode::<
4904            fidl::encoding::EmptyPayload,
4905            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4906        >(
4907            (),
4908            0x49f2fffbbcc2bd27,
4909            fidl::encoding::DynamicFlags::empty(),
4910            _decode,
4911        )
4912    }
4913
4914    type SetMarkResponseFut = fidl::client::QueryResponseFut<
4915        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
4916        fidl::encoding::DefaultFuchsiaResourceDialect,
4917    >;
4918    fn r#set_mark(
4919        &self,
4920        mut domain: fidl_fuchsia_net::MarkDomain,
4921        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
4922    ) -> Self::SetMarkResponseFut {
4923        fn _decode(
4924            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4925        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
4926            let _response = fidl::client::decode_transaction_body::<
4927                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4928                fidl::encoding::DefaultFuchsiaResourceDialect,
4929                0x6ead6de09f653236,
4930            >(_buf?)?;
4931            Ok(_response.map(|x| x))
4932        }
4933        self.client.send_query_and_decode::<
4934            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
4935            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
4936        >(
4937            (domain, mark,),
4938            0x6ead6de09f653236,
4939            fidl::encoding::DynamicFlags::empty(),
4940            _decode,
4941        )
4942    }
4943
4944    type GetMarkResponseFut = fidl::client::QueryResponseFut<
4945        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
4946        fidl::encoding::DefaultFuchsiaResourceDialect,
4947    >;
4948    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
4949        fn _decode(
4950            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4951        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
4952            let _response = fidl::client::decode_transaction_body::<
4953                fidl::encoding::ResultType<
4954                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
4955                    fidl_fuchsia_posix::Errno,
4956                >,
4957                fidl::encoding::DefaultFuchsiaResourceDialect,
4958                0x57a2752c61d93d47,
4959            >(_buf?)?;
4960            Ok(_response.map(|x| x.mark))
4961        }
4962        self.client.send_query_and_decode::<
4963            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
4964            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
4965        >(
4966            (domain,),
4967            0x57a2752c61d93d47,
4968            fidl::encoding::DynamicFlags::empty(),
4969            _decode,
4970        )
4971    }
4972
4973    type GetCookieResponseFut = fidl::client::QueryResponseFut<
4974        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
4975        fidl::encoding::DefaultFuchsiaResourceDialect,
4976    >;
4977    fn r#get_cookie(&self) -> Self::GetCookieResponseFut {
4978        fn _decode(
4979            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4980        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
4981            let _response = fidl::client::decode_transaction_body::<
4982                fidl::encoding::ResultType<
4983                    fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
4984                    fidl_fuchsia_posix::Errno,
4985                >,
4986                fidl::encoding::DefaultFuchsiaResourceDialect,
4987                0x2c2f47fd8f924e52,
4988            >(_buf?)?;
4989            Ok(_response.map(|x| x.value))
4990        }
4991        self.client.send_query_and_decode::<
4992            fidl::encoding::EmptyPayload,
4993            fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
4994        >(
4995            (),
4996            0x2c2f47fd8f924e52,
4997            fidl::encoding::DynamicFlags::empty(),
4998            _decode,
4999        )
5000    }
5001
5002    type BindResponseFut = fidl::client::QueryResponseFut<
5003        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5004        fidl::encoding::DefaultFuchsiaResourceDialect,
5005    >;
5006    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5007        fn _decode(
5008            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5009        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5010            let _response = fidl::client::decode_transaction_body::<
5011                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5012                fidl::encoding::DefaultFuchsiaResourceDialect,
5013                0x4bc6400ae92125d,
5014            >(_buf?)?;
5015            Ok(_response.map(|x| x))
5016        }
5017        self.client.send_query_and_decode::<
5018            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5019            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5020        >(
5021            (addr,),
5022            0x4bc6400ae92125d,
5023            fidl::encoding::DynamicFlags::empty(),
5024            _decode,
5025        )
5026    }
5027
5028    type ConnectResponseFut = fidl::client::QueryResponseFut<
5029        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5030        fidl::encoding::DefaultFuchsiaResourceDialect,
5031    >;
5032    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5033        fn _decode(
5034            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5035        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5036        {
5037            let _response = fidl::client::decode_transaction_body::<
5038                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5039                fidl::encoding::DefaultFuchsiaResourceDialect,
5040                0x5f05f19bfdd38871,
5041            >(_buf?)?;
5042            Ok(_response.map(|x| x))
5043        }
5044        self.client.send_query_and_decode::<
5045            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5046            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5047        >(
5048            (addr,),
5049            0x5f05f19bfdd38871,
5050            fidl::encoding::DynamicFlags::empty(),
5051            _decode,
5052        )
5053    }
5054
5055    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5056        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5057        fidl::encoding::DefaultFuchsiaResourceDialect,
5058    >;
5059    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5060        fn _decode(
5061            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5062        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5063        {
5064            let _response = fidl::client::decode_transaction_body::<
5065                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5066                fidl::encoding::DefaultFuchsiaResourceDialect,
5067                0x74e63b91f7b29b2,
5068            >(_buf?)?;
5069            Ok(_response.map(|x| x))
5070        }
5071        self.client.send_query_and_decode::<
5072            fidl::encoding::EmptyPayload,
5073            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5074        >(
5075            (),
5076            0x74e63b91f7b29b2,
5077            fidl::encoding::DynamicFlags::empty(),
5078            _decode,
5079        )
5080    }
5081
5082    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5083        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5084        fidl::encoding::DefaultFuchsiaResourceDialect,
5085    >;
5086    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5087        fn _decode(
5088            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5089        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5090        {
5091            let _response = fidl::client::decode_transaction_body::<
5092                fidl::encoding::ResultType<
5093                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5094                    fidl_fuchsia_posix::Errno,
5095                >,
5096                fidl::encoding::DefaultFuchsiaResourceDialect,
5097                0x475f23f84a1a4f85,
5098            >(_buf?)?;
5099            Ok(_response.map(|x| x.addr))
5100        }
5101        self.client.send_query_and_decode::<
5102            fidl::encoding::EmptyPayload,
5103            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5104        >(
5105            (),
5106            0x475f23f84a1a4f85,
5107            fidl::encoding::DynamicFlags::empty(),
5108            _decode,
5109        )
5110    }
5111
5112    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5113        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5114        fidl::encoding::DefaultFuchsiaResourceDialect,
5115    >;
5116    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5117        fn _decode(
5118            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5119        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5120        {
5121            let _response = fidl::client::decode_transaction_body::<
5122                fidl::encoding::ResultType<
5123                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5124                    fidl_fuchsia_posix::Errno,
5125                >,
5126                fidl::encoding::DefaultFuchsiaResourceDialect,
5127                0x1ffecf4bd5b6432e,
5128            >(_buf?)?;
5129            Ok(_response.map(|x| x.addr))
5130        }
5131        self.client.send_query_and_decode::<
5132            fidl::encoding::EmptyPayload,
5133            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5134        >(
5135            (),
5136            0x1ffecf4bd5b6432e,
5137            fidl::encoding::DynamicFlags::empty(),
5138            _decode,
5139        )
5140    }
5141
5142    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5143        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5144        fidl::encoding::DefaultFuchsiaResourceDialect,
5145    >;
5146    fn r#shutdown(
5147        &self,
5148        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5149    ) -> Self::ShutdownResponseFut {
5150        fn _decode(
5151            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5152        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5153        {
5154            let _response = fidl::client::decode_transaction_body::<
5155                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5156                fidl::encoding::DefaultFuchsiaResourceDialect,
5157                0x247f38b6db68c336,
5158            >(_buf?)?;
5159            Ok(_response.map(|x| x))
5160        }
5161        self.client.send_query_and_decode::<
5162            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5163            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5164        >(
5165            (mode,),
5166            0x247f38b6db68c336,
5167            fidl::encoding::DynamicFlags::empty(),
5168            _decode,
5169        )
5170    }
5171
5172    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5173        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5174        fidl::encoding::DefaultFuchsiaResourceDialect,
5175    >;
5176    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5177        fn _decode(
5178            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5179        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5180        {
5181            let _response = fidl::client::decode_transaction_body::<
5182                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5183                fidl::encoding::DefaultFuchsiaResourceDialect,
5184                0x995c600475b6d46,
5185            >(_buf?)?;
5186            Ok(_response.map(|x| x))
5187        }
5188        self.client.send_query_and_decode::<
5189            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5190            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5191        >(
5192            (value,),
5193            0x995c600475b6d46,
5194            fidl::encoding::DynamicFlags::empty(),
5195            _decode,
5196        )
5197    }
5198
5199    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5200        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5201        fidl::encoding::DefaultFuchsiaResourceDialect,
5202    >;
5203    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5204        fn _decode(
5205            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5206        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5207        {
5208            let _response = fidl::client::decode_transaction_body::<
5209                fidl::encoding::ResultType<
5210                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5211                    fidl_fuchsia_posix::Errno,
5212                >,
5213                fidl::encoding::DefaultFuchsiaResourceDialect,
5214                0x3814a04259f75fcb,
5215            >(_buf?)?;
5216            Ok(_response.map(|x| x.value))
5217        }
5218        self.client.send_query_and_decode::<
5219            fidl::encoding::EmptyPayload,
5220            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5221        >(
5222            (),
5223            0x3814a04259f75fcb,
5224            fidl::encoding::DynamicFlags::empty(),
5225            _decode,
5226        )
5227    }
5228
5229    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5230        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5231        fidl::encoding::DefaultFuchsiaResourceDialect,
5232    >;
5233    fn r#set_ip_ttl(
5234        &self,
5235        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5236    ) -> Self::SetIpTtlResponseFut {
5237        fn _decode(
5238            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5239        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5240        {
5241            let _response = fidl::client::decode_transaction_body::<
5242                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5243                fidl::encoding::DefaultFuchsiaResourceDialect,
5244                0x29e2424b433ae1ef,
5245            >(_buf?)?;
5246            Ok(_response.map(|x| x))
5247        }
5248        self.client.send_query_and_decode::<
5249            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5250            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5251        >(
5252            (value,),
5253            0x29e2424b433ae1ef,
5254            fidl::encoding::DynamicFlags::empty(),
5255            _decode,
5256        )
5257    }
5258
5259    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5260        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5261        fidl::encoding::DefaultFuchsiaResourceDialect,
5262    >;
5263    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5264        fn _decode(
5265            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5266        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5267        {
5268            let _response = fidl::client::decode_transaction_body::<
5269                fidl::encoding::ResultType<
5270                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5271                    fidl_fuchsia_posix::Errno,
5272                >,
5273                fidl::encoding::DefaultFuchsiaResourceDialect,
5274                0x47e47fa1f24da471,
5275            >(_buf?)?;
5276            Ok(_response.map(|x| x.value))
5277        }
5278        self.client.send_query_and_decode::<
5279            fidl::encoding::EmptyPayload,
5280            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5281        >(
5282            (),
5283            0x47e47fa1f24da471,
5284            fidl::encoding::DynamicFlags::empty(),
5285            _decode,
5286        )
5287    }
5288
5289    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5290        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5291        fidl::encoding::DefaultFuchsiaResourceDialect,
5292    >;
5293    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5294        fn _decode(
5295            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5296        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5297        {
5298            let _response = fidl::client::decode_transaction_body::<
5299                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5300                fidl::encoding::DefaultFuchsiaResourceDialect,
5301                0x392d16bee20c0e16,
5302            >(_buf?)?;
5303            Ok(_response.map(|x| x))
5304        }
5305        self.client.send_query_and_decode::<
5306            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5307            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5308        >(
5309            (value,),
5310            0x392d16bee20c0e16,
5311            fidl::encoding::DynamicFlags::empty(),
5312            _decode,
5313        )
5314    }
5315
5316    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5317        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5318        fidl::encoding::DefaultFuchsiaResourceDialect,
5319    >;
5320    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5321        fn _decode(
5322            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5323        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5324        {
5325            let _response = fidl::client::decode_transaction_body::<
5326                fidl::encoding::ResultType<
5327                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5328                    fidl_fuchsia_posix::Errno,
5329                >,
5330                fidl::encoding::DefaultFuchsiaResourceDialect,
5331                0x54b505f242280740,
5332            >(_buf?)?;
5333            Ok(_response.map(|x| x.value))
5334        }
5335        self.client.send_query_and_decode::<
5336            fidl::encoding::EmptyPayload,
5337            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5338        >(
5339            (),
5340            0x54b505f242280740,
5341            fidl::encoding::DynamicFlags::empty(),
5342            _decode,
5343        )
5344    }
5345
5346    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5347        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5348        fidl::encoding::DefaultFuchsiaResourceDialect,
5349    >;
5350    fn r#set_ip_receive_type_of_service(
5351        &self,
5352        mut value: bool,
5353    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5354        fn _decode(
5355            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5356        ) -> Result<
5357            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5358            fidl::Error,
5359        > {
5360            let _response = fidl::client::decode_transaction_body::<
5361                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5362                fidl::encoding::DefaultFuchsiaResourceDialect,
5363                0x6c4f6714995f84ef,
5364            >(_buf?)?;
5365            Ok(_response.map(|x| x))
5366        }
5367        self.client.send_query_and_decode::<
5368            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5369            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5370        >(
5371            (value,),
5372            0x6c4f6714995f84ef,
5373            fidl::encoding::DynamicFlags::empty(),
5374            _decode,
5375        )
5376    }
5377
5378    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5379        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5380        fidl::encoding::DefaultFuchsiaResourceDialect,
5381    >;
5382    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5383        fn _decode(
5384            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5385        ) -> Result<
5386            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5387            fidl::Error,
5388        > {
5389            let _response = fidl::client::decode_transaction_body::<
5390                fidl::encoding::ResultType<
5391                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5392                    fidl_fuchsia_posix::Errno,
5393                >,
5394                fidl::encoding::DefaultFuchsiaResourceDialect,
5395                0x4158ba7dc2795960,
5396            >(_buf?)?;
5397            Ok(_response.map(|x| x.value))
5398        }
5399        self.client.send_query_and_decode::<
5400            fidl::encoding::EmptyPayload,
5401            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5402        >(
5403            (),
5404            0x4158ba7dc2795960,
5405            fidl::encoding::DynamicFlags::empty(),
5406            _decode,
5407        )
5408    }
5409
5410    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5411        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5412        fidl::encoding::DefaultFuchsiaResourceDialect,
5413    >;
5414    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5415        fn _decode(
5416            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5417        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5418        {
5419            let _response = fidl::client::decode_transaction_body::<
5420                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5421                fidl::encoding::DefaultFuchsiaResourceDialect,
5422                0x46f15be0ce0ab82b,
5423            >(_buf?)?;
5424            Ok(_response.map(|x| x))
5425        }
5426        self.client.send_query_and_decode::<
5427            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5428            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5429        >(
5430            (value,),
5431            0x46f15be0ce0ab82b,
5432            fidl::encoding::DynamicFlags::empty(),
5433            _decode,
5434        )
5435    }
5436
5437    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5438        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5439        fidl::encoding::DefaultFuchsiaResourceDialect,
5440    >;
5441    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5442        fn _decode(
5443            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5444        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5445        {
5446            let _response = fidl::client::decode_transaction_body::<
5447                fidl::encoding::ResultType<
5448                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5449                    fidl_fuchsia_posix::Errno,
5450                >,
5451                fidl::encoding::DefaultFuchsiaResourceDialect,
5452                0x678ddd5a5dfa2eb5,
5453            >(_buf?)?;
5454            Ok(_response.map(|x| x.value))
5455        }
5456        self.client.send_query_and_decode::<
5457            fidl::encoding::EmptyPayload,
5458            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5459        >(
5460            (),
5461            0x678ddd5a5dfa2eb5,
5462            fidl::encoding::DynamicFlags::empty(),
5463            _decode,
5464        )
5465    }
5466
5467    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5468        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5469        fidl::encoding::DefaultFuchsiaResourceDialect,
5470    >;
5471    fn r#set_ip_multicast_interface(
5472        &self,
5473        mut iface: u64,
5474        mut address: &fidl_fuchsia_net::Ipv4Address,
5475    ) -> Self::SetIpMulticastInterfaceResponseFut {
5476        fn _decode(
5477            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5478        ) -> Result<
5479            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5480            fidl::Error,
5481        > {
5482            let _response = fidl::client::decode_transaction_body::<
5483                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5484                fidl::encoding::DefaultFuchsiaResourceDialect,
5485                0x752fbfa9b12befe,
5486            >(_buf?)?;
5487            Ok(_response.map(|x| x))
5488        }
5489        self.client.send_query_and_decode::<
5490            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5491            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5492        >(
5493            (iface, address,),
5494            0x752fbfa9b12befe,
5495            fidl::encoding::DynamicFlags::empty(),
5496            _decode,
5497        )
5498    }
5499
5500    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5501        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5502        fidl::encoding::DefaultFuchsiaResourceDialect,
5503    >;
5504    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5505        fn _decode(
5506            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5507        ) -> Result<
5508            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5509            fidl::Error,
5510        > {
5511            let _response = fidl::client::decode_transaction_body::<
5512                fidl::encoding::ResultType<
5513                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5514                    fidl_fuchsia_posix::Errno,
5515                >,
5516                fidl::encoding::DefaultFuchsiaResourceDialect,
5517                0x320bd14c4df046c4,
5518            >(_buf?)?;
5519            Ok(_response.map(|x| x.value))
5520        }
5521        self.client.send_query_and_decode::<
5522            fidl::encoding::EmptyPayload,
5523            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5524        >(
5525            (),
5526            0x320bd14c4df046c4,
5527            fidl::encoding::DynamicFlags::empty(),
5528            _decode,
5529        )
5530    }
5531
5532    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5533        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5534        fidl::encoding::DefaultFuchsiaResourceDialect,
5535    >;
5536    fn r#set_ip_multicast_ttl(
5537        &self,
5538        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5539    ) -> Self::SetIpMulticastTtlResponseFut {
5540        fn _decode(
5541            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5542        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5543        {
5544            let _response = fidl::client::decode_transaction_body::<
5545                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5546                fidl::encoding::DefaultFuchsiaResourceDialect,
5547                0x63134d53772916a1,
5548            >(_buf?)?;
5549            Ok(_response.map(|x| x))
5550        }
5551        self.client.send_query_and_decode::<
5552            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5553            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5554        >(
5555            (value,),
5556            0x63134d53772916a1,
5557            fidl::encoding::DynamicFlags::empty(),
5558            _decode,
5559        )
5560    }
5561
5562    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5563        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5564        fidl::encoding::DefaultFuchsiaResourceDialect,
5565    >;
5566    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5567        fn _decode(
5568            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5569        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5570        {
5571            let _response = fidl::client::decode_transaction_body::<
5572                fidl::encoding::ResultType<
5573                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5574                    fidl_fuchsia_posix::Errno,
5575                >,
5576                fidl::encoding::DefaultFuchsiaResourceDialect,
5577                0x4665cd378f39e1a,
5578            >(_buf?)?;
5579            Ok(_response.map(|x| x.value))
5580        }
5581        self.client.send_query_and_decode::<
5582            fidl::encoding::EmptyPayload,
5583            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5584        >(
5585            (),
5586            0x4665cd378f39e1a,
5587            fidl::encoding::DynamicFlags::empty(),
5588            _decode,
5589        )
5590    }
5591
5592    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5593        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5594        fidl::encoding::DefaultFuchsiaResourceDialect,
5595    >;
5596    fn r#set_ip_multicast_loopback(
5597        &self,
5598        mut value: bool,
5599    ) -> Self::SetIpMulticastLoopbackResponseFut {
5600        fn _decode(
5601            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5602        ) -> Result<
5603            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5604            fidl::Error,
5605        > {
5606            let _response = fidl::client::decode_transaction_body::<
5607                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5608                fidl::encoding::DefaultFuchsiaResourceDialect,
5609                0x20c55c11f00943ea,
5610            >(_buf?)?;
5611            Ok(_response.map(|x| x))
5612        }
5613        self.client.send_query_and_decode::<
5614            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5615            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5616        >(
5617            (value,),
5618            0x20c55c11f00943ea,
5619            fidl::encoding::DynamicFlags::empty(),
5620            _decode,
5621        )
5622    }
5623
5624    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5625        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5626        fidl::encoding::DefaultFuchsiaResourceDialect,
5627    >;
5628    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5629        fn _decode(
5630            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5631        ) -> Result<
5632            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5633            fidl::Error,
5634        > {
5635            let _response = fidl::client::decode_transaction_body::<
5636                fidl::encoding::ResultType<
5637                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5638                    fidl_fuchsia_posix::Errno,
5639                >,
5640                fidl::encoding::DefaultFuchsiaResourceDialect,
5641                0x3b6b26ff558298f2,
5642            >(_buf?)?;
5643            Ok(_response.map(|x| x.value))
5644        }
5645        self.client.send_query_and_decode::<
5646            fidl::encoding::EmptyPayload,
5647            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5648        >(
5649            (),
5650            0x3b6b26ff558298f2,
5651            fidl::encoding::DynamicFlags::empty(),
5652            _decode,
5653        )
5654    }
5655
5656    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5657        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5658        fidl::encoding::DefaultFuchsiaResourceDialect,
5659    >;
5660    fn r#add_ip_membership(
5661        &self,
5662        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5663    ) -> Self::AddIpMembershipResponseFut {
5664        fn _decode(
5665            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5666        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5667        {
5668            let _response = fidl::client::decode_transaction_body::<
5669                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5670                fidl::encoding::DefaultFuchsiaResourceDialect,
5671                0x76bc7df115a3b4d0,
5672            >(_buf?)?;
5673            Ok(_response.map(|x| x))
5674        }
5675        self.client.send_query_and_decode::<
5676            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5677            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5678        >(
5679            (membership,),
5680            0x76bc7df115a3b4d0,
5681            fidl::encoding::DynamicFlags::empty(),
5682            _decode,
5683        )
5684    }
5685
5686    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5687        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5688        fidl::encoding::DefaultFuchsiaResourceDialect,
5689    >;
5690    fn r#drop_ip_membership(
5691        &self,
5692        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5693    ) -> Self::DropIpMembershipResponseFut {
5694        fn _decode(
5695            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5696        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5697        {
5698            let _response = fidl::client::decode_transaction_body::<
5699                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5700                fidl::encoding::DefaultFuchsiaResourceDialect,
5701                0x2888f3099188d03,
5702            >(_buf?)?;
5703            Ok(_response.map(|x| x))
5704        }
5705        self.client.send_query_and_decode::<
5706            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5707            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5708        >(
5709            (membership,),
5710            0x2888f3099188d03,
5711            fidl::encoding::DynamicFlags::empty(),
5712            _decode,
5713        )
5714    }
5715
5716    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5717        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5718        fidl::encoding::DefaultFuchsiaResourceDialect,
5719    >;
5720    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5721        fn _decode(
5722            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5723        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5724        {
5725            let _response = fidl::client::decode_transaction_body::<
5726                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5727                fidl::encoding::DefaultFuchsiaResourceDialect,
5728                0x1ae532b0c066e3a0,
5729            >(_buf?)?;
5730            Ok(_response.map(|x| x))
5731        }
5732        self.client.send_query_and_decode::<
5733            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5734            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5735        >(
5736            (value,),
5737            0x1ae532b0c066e3a0,
5738            fidl::encoding::DynamicFlags::empty(),
5739            _decode,
5740        )
5741    }
5742
5743    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5744        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5745        fidl::encoding::DefaultFuchsiaResourceDialect,
5746    >;
5747    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5748        fn _decode(
5749            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5750        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5751        {
5752            let _response = fidl::client::decode_transaction_body::<
5753                fidl::encoding::ResultType<
5754                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5755                    fidl_fuchsia_posix::Errno,
5756                >,
5757                fidl::encoding::DefaultFuchsiaResourceDialect,
5758                0x51d43695962ebfb5,
5759            >(_buf?)?;
5760            Ok(_response.map(|x| x.value))
5761        }
5762        self.client.send_query_and_decode::<
5763            fidl::encoding::EmptyPayload,
5764            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5765        >(
5766            (),
5767            0x51d43695962ebfb5,
5768            fidl::encoding::DynamicFlags::empty(),
5769            _decode,
5770        )
5771    }
5772
5773    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5774        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5775        fidl::encoding::DefaultFuchsiaResourceDialect,
5776    >;
5777    fn r#set_ip_receive_original_destination_address(
5778        &self,
5779        mut value: bool,
5780    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5781        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5782            let _response = fidl::client::decode_transaction_body::<
5783                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5784                fidl::encoding::DefaultFuchsiaResourceDialect,
5785                0x4722b4ce52f7840,
5786            >(_buf?)?;
5787            Ok(_response.map(|x| x))
5788        }
5789        self.client.send_query_and_decode::<
5790            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5791            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5792        >(
5793            (value,),
5794            0x4722b4ce52f7840,
5795            fidl::encoding::DynamicFlags::empty(),
5796            _decode,
5797        )
5798    }
5799
5800    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5801        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5802        fidl::encoding::DefaultFuchsiaResourceDialect,
5803    >;
5804    fn r#get_ip_receive_original_destination_address(
5805        &self,
5806    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
5807        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5808            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
5809            Ok(_response.map(|x| x.value))
5810        }
5811        self.client.send_query_and_decode::<
5812            fidl::encoding::EmptyPayload,
5813            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5814        >(
5815            (),
5816            0x2a0e7dc5d6bfdfe9,
5817            fidl::encoding::DynamicFlags::empty(),
5818            _decode,
5819        )
5820    }
5821
5822    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5823        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5824        fidl::encoding::DefaultFuchsiaResourceDialect,
5825    >;
5826    fn r#add_ipv6_membership(
5827        &self,
5828        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5829    ) -> Self::AddIpv6MembershipResponseFut {
5830        fn _decode(
5831            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5832        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
5833        {
5834            let _response = fidl::client::decode_transaction_body::<
5835                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5836                fidl::encoding::DefaultFuchsiaResourceDialect,
5837                0x7c94727acb4ea4b3,
5838            >(_buf?)?;
5839            Ok(_response.map(|x| x))
5840        }
5841        self.client.send_query_and_decode::<
5842            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
5843            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5844        >(
5845            (membership,),
5846            0x7c94727acb4ea4b3,
5847            fidl::encoding::DynamicFlags::empty(),
5848            _decode,
5849        )
5850    }
5851
5852    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5853        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5854        fidl::encoding::DefaultFuchsiaResourceDialect,
5855    >;
5856    fn r#drop_ipv6_membership(
5857        &self,
5858        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5859    ) -> Self::DropIpv6MembershipResponseFut {
5860        fn _decode(
5861            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5862        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
5863        {
5864            let _response = fidl::client::decode_transaction_body::<
5865                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5866                fidl::encoding::DefaultFuchsiaResourceDialect,
5867                0x42104c70ccaba304,
5868            >(_buf?)?;
5869            Ok(_response.map(|x| x))
5870        }
5871        self.client.send_query_and_decode::<
5872            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
5873            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5874        >(
5875            (membership,),
5876            0x42104c70ccaba304,
5877            fidl::encoding::DynamicFlags::empty(),
5878            _decode,
5879        )
5880    }
5881
5882    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5883        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5884        fidl::encoding::DefaultFuchsiaResourceDialect,
5885    >;
5886    fn r#set_ipv6_multicast_interface(
5887        &self,
5888        mut value: u64,
5889    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
5890        fn _decode(
5891            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5892        ) -> Result<
5893            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5894            fidl::Error,
5895        > {
5896            let _response = fidl::client::decode_transaction_body::<
5897                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5898                fidl::encoding::DefaultFuchsiaResourceDialect,
5899                0x135f76db3774ab3b,
5900            >(_buf?)?;
5901            Ok(_response.map(|x| x))
5902        }
5903        self.client.send_query_and_decode::<
5904            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
5905            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5906        >(
5907            (value,),
5908            0x135f76db3774ab3b,
5909            fidl::encoding::DynamicFlags::empty(),
5910            _decode,
5911        )
5912    }
5913
5914    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5915        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5916        fidl::encoding::DefaultFuchsiaResourceDialect,
5917    >;
5918    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
5919        fn _decode(
5920            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5921        ) -> Result<
5922            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5923            fidl::Error,
5924        > {
5925            let _response = fidl::client::decode_transaction_body::<
5926                fidl::encoding::ResultType<
5927                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
5928                    fidl_fuchsia_posix::Errno,
5929                >,
5930                fidl::encoding::DefaultFuchsiaResourceDialect,
5931                0x1f26fcdd348f1882,
5932            >(_buf?)?;
5933            Ok(_response.map(|x| x.value))
5934        }
5935        self.client.send_query_and_decode::<
5936            fidl::encoding::EmptyPayload,
5937            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5938        >(
5939            (),
5940            0x1f26fcdd348f1882,
5941            fidl::encoding::DynamicFlags::empty(),
5942            _decode,
5943        )
5944    }
5945
5946    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
5947        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
5948        fidl::encoding::DefaultFuchsiaResourceDialect,
5949    >;
5950    fn r#set_ipv6_unicast_hops(
5951        &self,
5952        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5953    ) -> Self::SetIpv6UnicastHopsResponseFut {
5954        fn _decode(
5955            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5956        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
5957        {
5958            let _response = fidl::client::decode_transaction_body::<
5959                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5960                fidl::encoding::DefaultFuchsiaResourceDialect,
5961                0x157d51e98f462859,
5962            >(_buf?)?;
5963            Ok(_response.map(|x| x))
5964        }
5965        self.client.send_query_and_decode::<
5966            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
5967            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
5968        >(
5969            (value,),
5970            0x157d51e98f462859,
5971            fidl::encoding::DynamicFlags::empty(),
5972            _decode,
5973        )
5974    }
5975
5976    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
5977        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
5978        fidl::encoding::DefaultFuchsiaResourceDialect,
5979    >;
5980    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
5981        fn _decode(
5982            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5983        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
5984        {
5985            let _response = fidl::client::decode_transaction_body::<
5986                fidl::encoding::ResultType<
5987                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
5988                    fidl_fuchsia_posix::Errno,
5989                >,
5990                fidl::encoding::DefaultFuchsiaResourceDialect,
5991                0x21f4641cad8bd8d2,
5992            >(_buf?)?;
5993            Ok(_response.map(|x| x.value))
5994        }
5995        self.client.send_query_and_decode::<
5996            fidl::encoding::EmptyPayload,
5997            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
5998        >(
5999            (),
6000            0x21f4641cad8bd8d2,
6001            fidl::encoding::DynamicFlags::empty(),
6002            _decode,
6003        )
6004    }
6005
6006    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6007        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6008        fidl::encoding::DefaultFuchsiaResourceDialect,
6009    >;
6010    fn r#set_ipv6_receive_hop_limit(
6011        &self,
6012        mut value: bool,
6013    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6014        fn _decode(
6015            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6016        ) -> Result<
6017            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6018            fidl::Error,
6019        > {
6020            let _response = fidl::client::decode_transaction_body::<
6021                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6022                fidl::encoding::DefaultFuchsiaResourceDialect,
6023                0x5c24808ed2e84a1e,
6024            >(_buf?)?;
6025            Ok(_response.map(|x| x))
6026        }
6027        self.client.send_query_and_decode::<
6028            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6029            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6030        >(
6031            (value,),
6032            0x5c24808ed2e84a1e,
6033            fidl::encoding::DynamicFlags::empty(),
6034            _decode,
6035        )
6036    }
6037
6038    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6039        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6040        fidl::encoding::DefaultFuchsiaResourceDialect,
6041    >;
6042    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6043        fn _decode(
6044            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6045        ) -> Result<
6046            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6047            fidl::Error,
6048        > {
6049            let _response = fidl::client::decode_transaction_body::<
6050                fidl::encoding::ResultType<
6051                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6052                    fidl_fuchsia_posix::Errno,
6053                >,
6054                fidl::encoding::DefaultFuchsiaResourceDialect,
6055                0x341e06689885b4c0,
6056            >(_buf?)?;
6057            Ok(_response.map(|x| x.value))
6058        }
6059        self.client.send_query_and_decode::<
6060            fidl::encoding::EmptyPayload,
6061            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6062        >(
6063            (),
6064            0x341e06689885b4c0,
6065            fidl::encoding::DynamicFlags::empty(),
6066            _decode,
6067        )
6068    }
6069
6070    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6071        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6072        fidl::encoding::DefaultFuchsiaResourceDialect,
6073    >;
6074    fn r#set_ipv6_multicast_hops(
6075        &self,
6076        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6077    ) -> Self::SetIpv6MulticastHopsResponseFut {
6078        fn _decode(
6079            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6080        ) -> Result<
6081            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6082            fidl::Error,
6083        > {
6084            let _response = fidl::client::decode_transaction_body::<
6085                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6086                fidl::encoding::DefaultFuchsiaResourceDialect,
6087                0x25b9cd4d181f82c1,
6088            >(_buf?)?;
6089            Ok(_response.map(|x| x))
6090        }
6091        self.client.send_query_and_decode::<
6092            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6093            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6094        >(
6095            (value,),
6096            0x25b9cd4d181f82c1,
6097            fidl::encoding::DynamicFlags::empty(),
6098            _decode,
6099        )
6100    }
6101
6102    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6103        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6104        fidl::encoding::DefaultFuchsiaResourceDialect,
6105    >;
6106    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6107        fn _decode(
6108            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6109        ) -> Result<
6110            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6111            fidl::Error,
6112        > {
6113            let _response = fidl::client::decode_transaction_body::<
6114                fidl::encoding::ResultType<
6115                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6116                    fidl_fuchsia_posix::Errno,
6117                >,
6118                fidl::encoding::DefaultFuchsiaResourceDialect,
6119                0x52916948a365012a,
6120            >(_buf?)?;
6121            Ok(_response.map(|x| x.value))
6122        }
6123        self.client.send_query_and_decode::<
6124            fidl::encoding::EmptyPayload,
6125            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6126        >(
6127            (),
6128            0x52916948a365012a,
6129            fidl::encoding::DynamicFlags::empty(),
6130            _decode,
6131        )
6132    }
6133
6134    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6135        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6136        fidl::encoding::DefaultFuchsiaResourceDialect,
6137    >;
6138    fn r#set_ipv6_multicast_loopback(
6139        &self,
6140        mut value: bool,
6141    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6142        fn _decode(
6143            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6144        ) -> Result<
6145            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6146            fidl::Error,
6147        > {
6148            let _response = fidl::client::decode_transaction_body::<
6149                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6150                fidl::encoding::DefaultFuchsiaResourceDialect,
6151                0x55701c409ff41b40,
6152            >(_buf?)?;
6153            Ok(_response.map(|x| x))
6154        }
6155        self.client.send_query_and_decode::<
6156            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6157            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6158        >(
6159            (value,),
6160            0x55701c409ff41b40,
6161            fidl::encoding::DynamicFlags::empty(),
6162            _decode,
6163        )
6164    }
6165
6166    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6167        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6168        fidl::encoding::DefaultFuchsiaResourceDialect,
6169    >;
6170    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6171        fn _decode(
6172            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6173        ) -> Result<
6174            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6175            fidl::Error,
6176        > {
6177            let _response = fidl::client::decode_transaction_body::<
6178                fidl::encoding::ResultType<
6179                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6180                    fidl_fuchsia_posix::Errno,
6181                >,
6182                fidl::encoding::DefaultFuchsiaResourceDialect,
6183                0x4415b701fde319c3,
6184            >(_buf?)?;
6185            Ok(_response.map(|x| x.value))
6186        }
6187        self.client.send_query_and_decode::<
6188            fidl::encoding::EmptyPayload,
6189            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6190        >(
6191            (),
6192            0x4415b701fde319c3,
6193            fidl::encoding::DynamicFlags::empty(),
6194            _decode,
6195        )
6196    }
6197
6198    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6199        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6200        fidl::encoding::DefaultFuchsiaResourceDialect,
6201    >;
6202    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6203        fn _decode(
6204            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6205        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error>
6206        {
6207            let _response = fidl::client::decode_transaction_body::<
6208                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6209                fidl::encoding::DefaultFuchsiaResourceDialect,
6210                0x4873f1364758cbba,
6211            >(_buf?)?;
6212            Ok(_response.map(|x| x))
6213        }
6214        self.client.send_query_and_decode::<
6215            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6216            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6217        >(
6218            (value,),
6219            0x4873f1364758cbba,
6220            fidl::encoding::DynamicFlags::empty(),
6221            _decode,
6222        )
6223    }
6224
6225    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6226        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6227        fidl::encoding::DefaultFuchsiaResourceDialect,
6228    >;
6229    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6230        fn _decode(
6231            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6232        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6233        {
6234            let _response = fidl::client::decode_transaction_body::<
6235                fidl::encoding::ResultType<
6236                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6237                    fidl_fuchsia_posix::Errno,
6238                >,
6239                fidl::encoding::DefaultFuchsiaResourceDialect,
6240                0x4aa3340a1a26b89c,
6241            >(_buf?)?;
6242            Ok(_response.map(|x| x.value))
6243        }
6244        self.client.send_query_and_decode::<
6245            fidl::encoding::EmptyPayload,
6246            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6247        >(
6248            (),
6249            0x4aa3340a1a26b89c,
6250            fidl::encoding::DynamicFlags::empty(),
6251            _decode,
6252        )
6253    }
6254
6255    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6256        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6257        fidl::encoding::DefaultFuchsiaResourceDialect,
6258    >;
6259    fn r#set_ipv6_receive_traffic_class(
6260        &self,
6261        mut value: bool,
6262    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6263        fn _decode(
6264            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6265        ) -> Result<
6266            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6267            fidl::Error,
6268        > {
6269            let _response = fidl::client::decode_transaction_body::<
6270                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6271                fidl::encoding::DefaultFuchsiaResourceDialect,
6272                0x58f07c8788d099a0,
6273            >(_buf?)?;
6274            Ok(_response.map(|x| x))
6275        }
6276        self.client.send_query_and_decode::<
6277            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6278            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6279        >(
6280            (value,),
6281            0x58f07c8788d099a0,
6282            fidl::encoding::DynamicFlags::empty(),
6283            _decode,
6284        )
6285    }
6286
6287    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6288        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6289        fidl::encoding::DefaultFuchsiaResourceDialect,
6290    >;
6291    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6292        fn _decode(
6293            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6294        ) -> Result<
6295            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6296            fidl::Error,
6297        > {
6298            let _response = fidl::client::decode_transaction_body::<
6299                fidl::encoding::ResultType<
6300                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6301                    fidl_fuchsia_posix::Errno,
6302                >,
6303                fidl::encoding::DefaultFuchsiaResourceDialect,
6304                0x2e334df1da553ffa,
6305            >(_buf?)?;
6306            Ok(_response.map(|x| x.value))
6307        }
6308        self.client.send_query_and_decode::<
6309            fidl::encoding::EmptyPayload,
6310            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6311        >(
6312            (),
6313            0x2e334df1da553ffa,
6314            fidl::encoding::DynamicFlags::empty(),
6315            _decode,
6316        )
6317    }
6318
6319    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6320        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6321        fidl::encoding::DefaultFuchsiaResourceDialect,
6322    >;
6323    fn r#set_ipv6_traffic_class(
6324        &self,
6325        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6326    ) -> Self::SetIpv6TrafficClassResponseFut {
6327        fn _decode(
6328            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6329        ) -> Result<
6330            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6331            fidl::Error,
6332        > {
6333            let _response = fidl::client::decode_transaction_body::<
6334                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6335                fidl::encoding::DefaultFuchsiaResourceDialect,
6336                0x6af077800c5a0b4f,
6337            >(_buf?)?;
6338            Ok(_response.map(|x| x))
6339        }
6340        self.client.send_query_and_decode::<
6341            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6342            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6343        >(
6344            (value,),
6345            0x6af077800c5a0b4f,
6346            fidl::encoding::DynamicFlags::empty(),
6347            _decode,
6348        )
6349    }
6350
6351    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6352        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6353        fidl::encoding::DefaultFuchsiaResourceDialect,
6354    >;
6355    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6356        fn _decode(
6357            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6358        ) -> Result<
6359            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6360            fidl::Error,
6361        > {
6362            let _response = fidl::client::decode_transaction_body::<
6363                fidl::encoding::ResultType<
6364                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6365                    fidl_fuchsia_posix::Errno,
6366                >,
6367                fidl::encoding::DefaultFuchsiaResourceDialect,
6368                0x6baf6eed8fc2f04,
6369            >(_buf?)?;
6370            Ok(_response.map(|x| x.value))
6371        }
6372        self.client.send_query_and_decode::<
6373            fidl::encoding::EmptyPayload,
6374            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6375        >(
6376            (),
6377            0x6baf6eed8fc2f04,
6378            fidl::encoding::DynamicFlags::empty(),
6379            _decode,
6380        )
6381    }
6382
6383    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6384        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6385        fidl::encoding::DefaultFuchsiaResourceDialect,
6386    >;
6387    fn r#set_ipv6_receive_packet_info(
6388        &self,
6389        mut value: bool,
6390    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6391        fn _decode(
6392            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6393        ) -> Result<
6394            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6395            fidl::Error,
6396        > {
6397            let _response = fidl::client::decode_transaction_body::<
6398                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6399                fidl::encoding::DefaultFuchsiaResourceDialect,
6400                0x19259775b1a92768,
6401            >(_buf?)?;
6402            Ok(_response.map(|x| x))
6403        }
6404        self.client.send_query_and_decode::<
6405            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6406            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6407        >(
6408            (value,),
6409            0x19259775b1a92768,
6410            fidl::encoding::DynamicFlags::empty(),
6411            _decode,
6412        )
6413    }
6414
6415    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6416        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6417        fidl::encoding::DefaultFuchsiaResourceDialect,
6418    >;
6419    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6420        fn _decode(
6421            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6422        ) -> Result<
6423            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6424            fidl::Error,
6425        > {
6426            let _response = fidl::client::decode_transaction_body::<
6427                fidl::encoding::ResultType<
6428                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6429                    fidl_fuchsia_posix::Errno,
6430                >,
6431                fidl::encoding::DefaultFuchsiaResourceDialect,
6432                0x7acd4a2775baec75,
6433            >(_buf?)?;
6434            Ok(_response.map(|x| x.value))
6435        }
6436        self.client.send_query_and_decode::<
6437            fidl::encoding::EmptyPayload,
6438            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6439        >(
6440            (),
6441            0x7acd4a2775baec75,
6442            fidl::encoding::DynamicFlags::empty(),
6443            _decode,
6444        )
6445    }
6446
6447    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6448        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6449        fidl::encoding::DefaultFuchsiaResourceDialect,
6450    >;
6451    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6452        fn _decode(
6453            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6454        ) -> Result<
6455            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6456            fidl::Error,
6457        > {
6458            let _response = fidl::client::decode_transaction_body::<
6459                fidl::encoding::ResultType<
6460                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6461                    fidl_fuchsia_posix::Errno,
6462                >,
6463                fidl::encoding::DefaultFuchsiaResourceDialect,
6464                0x38bf28f0dafdbac0,
6465            >(_buf?)?;
6466            Ok(_response.map(|x| x.value))
6467        }
6468        self.client.send_query_and_decode::<
6469            fidl::encoding::EmptyPayload,
6470            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6471        >(
6472            (),
6473            0x38bf28f0dafdbac0,
6474            fidl::encoding::DynamicFlags::empty(),
6475            _decode,
6476        )
6477    }
6478
6479    type DescribeResponseFut = fidl::client::QueryResponseFut<
6480        SocketDescribeResponse,
6481        fidl::encoding::DefaultFuchsiaResourceDialect,
6482    >;
6483    fn r#describe(&self) -> Self::DescribeResponseFut {
6484        fn _decode(
6485            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6486        ) -> Result<SocketDescribeResponse, fidl::Error> {
6487            let _response = fidl::client::decode_transaction_body::<
6488                SocketDescribeResponse,
6489                fidl::encoding::DefaultFuchsiaResourceDialect,
6490                0x335706eccf54a135,
6491            >(_buf?)?;
6492            Ok(_response)
6493        }
6494        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6495            (),
6496            0x335706eccf54a135,
6497            fidl::encoding::DynamicFlags::empty(),
6498            _decode,
6499        )
6500    }
6501
6502    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6503        SocketRecvMsgResult,
6504        fidl::encoding::DefaultFuchsiaResourceDialect,
6505    >;
6506    fn r#recv_msg(
6507        &self,
6508        mut want_addr: bool,
6509        mut data_len: u32,
6510        mut want_control: bool,
6511        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6512    ) -> Self::RecvMsgResponseFut {
6513        fn _decode(
6514            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6515        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6516            let _response = fidl::client::decode_transaction_body::<
6517                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6518                fidl::encoding::DefaultFuchsiaResourceDialect,
6519                0x1dfb695351d3aa1d,
6520            >(_buf?)?;
6521            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6522        }
6523        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6524            (want_addr, data_len, want_control, flags),
6525            0x1dfb695351d3aa1d,
6526            fidl::encoding::DynamicFlags::empty(),
6527            _decode,
6528        )
6529    }
6530
6531    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6532        SocketSendMsgResult,
6533        fidl::encoding::DefaultFuchsiaResourceDialect,
6534    >;
6535    fn r#send_msg(
6536        &self,
6537        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6538        mut data: &[u8],
6539        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6540        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6541    ) -> Self::SendMsgResponseFut {
6542        fn _decode(
6543            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6544        ) -> Result<SocketSendMsgResult, fidl::Error> {
6545            let _response = fidl::client::decode_transaction_body::<
6546                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6547                fidl::encoding::DefaultFuchsiaResourceDialect,
6548                0x2cf1eac9a7fc8958,
6549            >(_buf?)?;
6550            Ok(_response.map(|x| x))
6551        }
6552        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6553            (addr, data, control, flags),
6554            0x2cf1eac9a7fc8958,
6555            fidl::encoding::DynamicFlags::empty(),
6556            _decode,
6557        )
6558    }
6559
6560    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6561        SocketGetInfoResult,
6562        fidl::encoding::DefaultFuchsiaResourceDialect,
6563    >;
6564    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6565        fn _decode(
6566            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6567        ) -> Result<SocketGetInfoResult, fidl::Error> {
6568            let _response = fidl::client::decode_transaction_body::<
6569                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6570                fidl::encoding::DefaultFuchsiaResourceDialect,
6571                0x39676f75aec339ba,
6572            >(_buf?)?;
6573            Ok(_response.map(|x| (x.domain, x.proto)))
6574        }
6575        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6576            (),
6577            0x39676f75aec339ba,
6578            fidl::encoding::DynamicFlags::empty(),
6579            _decode,
6580        )
6581    }
6582
6583    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6584        SocketSetIpHeaderIncludedResult,
6585        fidl::encoding::DefaultFuchsiaResourceDialect,
6586    >;
6587    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6588        fn _decode(
6589            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6590        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6591            let _response = fidl::client::decode_transaction_body::<
6592                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6593                fidl::encoding::DefaultFuchsiaResourceDialect,
6594                0x5d06a606d95e8f3,
6595            >(_buf?)?;
6596            Ok(_response.map(|x| x))
6597        }
6598        self.client.send_query_and_decode::<
6599            SocketSetIpHeaderIncludedRequest,
6600            SocketSetIpHeaderIncludedResult,
6601        >(
6602            (value,),
6603            0x5d06a606d95e8f3,
6604            fidl::encoding::DynamicFlags::empty(),
6605            _decode,
6606        )
6607    }
6608
6609    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6610        SocketGetIpHeaderIncludedResult,
6611        fidl::encoding::DefaultFuchsiaResourceDialect,
6612    >;
6613    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6614        fn _decode(
6615            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6616        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6617            let _response = fidl::client::decode_transaction_body::<
6618                fidl::encoding::ResultType<
6619                    SocketGetIpHeaderIncludedResponse,
6620                    fidl_fuchsia_posix::Errno,
6621                >,
6622                fidl::encoding::DefaultFuchsiaResourceDialect,
6623                0x76125ad1f4d175f6,
6624            >(_buf?)?;
6625            Ok(_response.map(|x| x.value))
6626        }
6627        self.client
6628            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6629                (),
6630                0x76125ad1f4d175f6,
6631                fidl::encoding::DynamicFlags::empty(),
6632                _decode,
6633            )
6634    }
6635
6636    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6637        SocketSetIcmpv6FilterResult,
6638        fidl::encoding::DefaultFuchsiaResourceDialect,
6639    >;
6640    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6641        fn _decode(
6642            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6643        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6644            let _response = fidl::client::decode_transaction_body::<
6645                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6646                fidl::encoding::DefaultFuchsiaResourceDialect,
6647                0x4ebea92a43ae68a9,
6648            >(_buf?)?;
6649            Ok(_response.map(|x| x))
6650        }
6651        self.client
6652            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6653                (filter,),
6654                0x4ebea92a43ae68a9,
6655                fidl::encoding::DynamicFlags::empty(),
6656                _decode,
6657            )
6658    }
6659
6660    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6661        SocketGetIcmpv6FilterResult,
6662        fidl::encoding::DefaultFuchsiaResourceDialect,
6663    >;
6664    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6665        fn _decode(
6666            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6667        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6668            let _response = fidl::client::decode_transaction_body::<
6669                fidl::encoding::ResultType<
6670                    SocketGetIcmpv6FilterResponse,
6671                    fidl_fuchsia_posix::Errno,
6672                >,
6673                fidl::encoding::DefaultFuchsiaResourceDialect,
6674                0x43bd4f3bc0970ace,
6675            >(_buf?)?;
6676            Ok(_response.map(|x| x.filter))
6677        }
6678        self.client
6679            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6680                (),
6681                0x43bd4f3bc0970ace,
6682                fidl::encoding::DynamicFlags::empty(),
6683                _decode,
6684            )
6685    }
6686
6687    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6688        SocketSetIpv6ChecksumResult,
6689        fidl::encoding::DefaultFuchsiaResourceDialect,
6690    >;
6691    fn r#set_ipv6_checksum(
6692        &self,
6693        mut config: &Ipv6ChecksumConfiguration,
6694    ) -> Self::SetIpv6ChecksumResponseFut {
6695        fn _decode(
6696            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6697        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6698            let _response = fidl::client::decode_transaction_body::<
6699                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6700                fidl::encoding::DefaultFuchsiaResourceDialect,
6701                0x18b7809577199cb4,
6702            >(_buf?)?;
6703            Ok(_response.map(|x| x))
6704        }
6705        self.client
6706            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6707                (config,),
6708                0x18b7809577199cb4,
6709                fidl::encoding::DynamicFlags::empty(),
6710                _decode,
6711            )
6712    }
6713
6714    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6715        SocketGetIpv6ChecksumResult,
6716        fidl::encoding::DefaultFuchsiaResourceDialect,
6717    >;
6718    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6719        fn _decode(
6720            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6721        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6722            let _response = fidl::client::decode_transaction_body::<
6723                fidl::encoding::ResultType<
6724                    SocketGetIpv6ChecksumResponse,
6725                    fidl_fuchsia_posix::Errno,
6726                >,
6727                fidl::encoding::DefaultFuchsiaResourceDialect,
6728                0x1847bf5b2d263dd,
6729            >(_buf?)?;
6730            Ok(_response.map(|x| x.config))
6731        }
6732        self.client
6733            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6734                (),
6735                0x1847bf5b2d263dd,
6736                fidl::encoding::DynamicFlags::empty(),
6737                _decode,
6738            )
6739    }
6740}
6741
6742pub struct SocketEventStream {
6743    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6744}
6745
6746impl std::marker::Unpin for SocketEventStream {}
6747
6748impl futures::stream::FusedStream for SocketEventStream {
6749    fn is_terminated(&self) -> bool {
6750        self.event_receiver.is_terminated()
6751    }
6752}
6753
6754impl futures::Stream for SocketEventStream {
6755    type Item = Result<SocketEvent, fidl::Error>;
6756
6757    fn poll_next(
6758        mut self: std::pin::Pin<&mut Self>,
6759        cx: &mut std::task::Context<'_>,
6760    ) -> std::task::Poll<Option<Self::Item>> {
6761        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6762            &mut self.event_receiver,
6763            cx
6764        )?) {
6765            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6766            None => std::task::Poll::Ready(None),
6767        }
6768    }
6769}
6770
6771#[derive(Debug)]
6772pub enum SocketEvent {}
6773
6774impl SocketEvent {
6775    /// Decodes a message buffer as a [`SocketEvent`].
6776    fn decode(
6777        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6778    ) -> Result<SocketEvent, fidl::Error> {
6779        let (bytes, _handles) = buf.split_mut();
6780        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6781        debug_assert_eq!(tx_header.tx_id, 0);
6782        match tx_header.ordinal {
6783            _ => Err(fidl::Error::UnknownOrdinal {
6784                ordinal: tx_header.ordinal,
6785                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6786            }),
6787        }
6788    }
6789}
6790
6791/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6792pub struct SocketRequestStream {
6793    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6794    is_terminated: bool,
6795}
6796
6797impl std::marker::Unpin for SocketRequestStream {}
6798
6799impl futures::stream::FusedStream for SocketRequestStream {
6800    fn is_terminated(&self) -> bool {
6801        self.is_terminated
6802    }
6803}
6804
6805impl fidl::endpoints::RequestStream for SocketRequestStream {
6806    type Protocol = SocketMarker;
6807    type ControlHandle = SocketControlHandle;
6808
6809    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6810        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6811    }
6812
6813    fn control_handle(&self) -> Self::ControlHandle {
6814        SocketControlHandle { inner: self.inner.clone() }
6815    }
6816
6817    fn into_inner(
6818        self,
6819    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
6820    {
6821        (self.inner, self.is_terminated)
6822    }
6823
6824    fn from_inner(
6825        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6826        is_terminated: bool,
6827    ) -> Self {
6828        Self { inner, is_terminated }
6829    }
6830}
6831
6832impl futures::Stream for SocketRequestStream {
6833    type Item = Result<SocketRequest, fidl::Error>;
6834
6835    fn poll_next(
6836        mut self: std::pin::Pin<&mut Self>,
6837        cx: &mut std::task::Context<'_>,
6838    ) -> std::task::Poll<Option<Self::Item>> {
6839        let this = &mut *self;
6840        if this.inner.check_shutdown(cx) {
6841            this.is_terminated = true;
6842            return std::task::Poll::Ready(None);
6843        }
6844        if this.is_terminated {
6845            panic!("polled SocketRequestStream after completion");
6846        }
6847        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
6848            |bytes, handles| {
6849                match this.inner.channel().read_etc(cx, bytes, handles) {
6850                    std::task::Poll::Ready(Ok(())) => {}
6851                    std::task::Poll::Pending => return std::task::Poll::Pending,
6852                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
6853                        this.is_terminated = true;
6854                        return std::task::Poll::Ready(None);
6855                    }
6856                    std::task::Poll::Ready(Err(e)) => {
6857                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
6858                            e.into(),
6859                        ))));
6860                    }
6861                }
6862
6863                // A message has been received from the channel
6864                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6865
6866                std::task::Poll::Ready(Some(match header.ordinal {
6867                    0x20d8a7aba2168a79 => {
6868                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6869                        let mut req = fidl::new_empty!(
6870                            fidl_fuchsia_unknown::CloneableCloneRequest,
6871                            fidl::encoding::DefaultFuchsiaResourceDialect
6872                        );
6873                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
6874                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6875                        Ok(SocketRequest::Clone { request: req.request, control_handle })
6876                    }
6877                    0x5ac5d459ad7f657e => {
6878                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6879                        let mut req = fidl::new_empty!(
6880                            fidl::encoding::EmptyPayload,
6881                            fidl::encoding::DefaultFuchsiaResourceDialect
6882                        );
6883                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6884                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6885                        Ok(SocketRequest::Close {
6886                            responder: SocketCloseResponder {
6887                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6888                                tx_id: header.tx_id,
6889                            },
6890                        })
6891                    }
6892                    0x2658edee9decfc06 => {
6893                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6894                        let mut req = fidl::new_empty!(
6895                            fidl::encoding::EmptyPayload,
6896                            fidl::encoding::DefaultFuchsiaResourceDialect
6897                        );
6898                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6899                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6900                        Ok(SocketRequest::Query {
6901                            responder: SocketQueryResponder {
6902                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6903                                tx_id: header.tx_id,
6904                            },
6905                        })
6906                    }
6907                    0x1fd74ee8b9a4a876 => {
6908                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6909                        let mut req = fidl::new_empty!(
6910                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
6911                            fidl::encoding::DefaultFuchsiaResourceDialect
6912                        );
6913                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
6914                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6915                        Ok(SocketRequest::SetReuseAddress {
6916                            value: req.value,
6917
6918                            responder: SocketSetReuseAddressResponder {
6919                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6920                                tx_id: header.tx_id,
6921                            },
6922                        })
6923                    }
6924                    0x67b7206b8d1bc0a5 => {
6925                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6926                        let mut req = fidl::new_empty!(
6927                            fidl::encoding::EmptyPayload,
6928                            fidl::encoding::DefaultFuchsiaResourceDialect
6929                        );
6930                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6931                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6932                        Ok(SocketRequest::GetReuseAddress {
6933                            responder: SocketGetReuseAddressResponder {
6934                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6935                                tx_id: header.tx_id,
6936                            },
6937                        })
6938                    }
6939                    0x5aad39b33e5f6ebb => {
6940                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6941                        let mut req = fidl::new_empty!(
6942                            fidl::encoding::EmptyPayload,
6943                            fidl::encoding::DefaultFuchsiaResourceDialect
6944                        );
6945                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6946                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6947                        Ok(SocketRequest::GetError {
6948                            responder: SocketGetErrorResponder {
6949                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6950                                tx_id: header.tx_id,
6951                            },
6952                        })
6953                    }
6954                    0x6023e081ce3cd947 => {
6955                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6956                        let mut req = fidl::new_empty!(
6957                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
6958                            fidl::encoding::DefaultFuchsiaResourceDialect
6959                        );
6960                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
6961                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6962                        Ok(SocketRequest::SetBroadcast {
6963                            value: req.value,
6964
6965                            responder: SocketSetBroadcastResponder {
6966                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6967                                tx_id: header.tx_id,
6968                            },
6969                        })
6970                    }
6971                    0x68796fc556f9780d => {
6972                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6973                        let mut req = fidl::new_empty!(
6974                            fidl::encoding::EmptyPayload,
6975                            fidl::encoding::DefaultFuchsiaResourceDialect
6976                        );
6977                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6978                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6979                        Ok(SocketRequest::GetBroadcast {
6980                            responder: SocketGetBroadcastResponder {
6981                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6982                                tx_id: header.tx_id,
6983                            },
6984                        })
6985                    }
6986                    0x756eac32d73a7a70 => {
6987                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6988                        let mut req = fidl::new_empty!(
6989                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
6990                            fidl::encoding::DefaultFuchsiaResourceDialect
6991                        );
6992                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
6993                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6994                        Ok(SocketRequest::SetSendBuffer {
6995                            value_bytes: req.value_bytes,
6996
6997                            responder: SocketSetSendBufferResponder {
6998                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6999                                tx_id: header.tx_id,
7000                            },
7001                        })
7002                    }
7003                    0x78a52fd9c7b2410b => {
7004                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7005                        let mut req = fidl::new_empty!(
7006                            fidl::encoding::EmptyPayload,
7007                            fidl::encoding::DefaultFuchsiaResourceDialect
7008                        );
7009                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7010                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7011                        Ok(SocketRequest::GetSendBuffer {
7012                            responder: SocketGetSendBufferResponder {
7013                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7014                                tx_id: header.tx_id,
7015                            },
7016                        })
7017                    }
7018                    0x6b0cf2f1919c7001 => {
7019                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7020                        let mut req = fidl::new_empty!(
7021                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7022                            fidl::encoding::DefaultFuchsiaResourceDialect
7023                        );
7024                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7025                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7026                        Ok(SocketRequest::SetReceiveBuffer {
7027                            value_bytes: req.value_bytes,
7028
7029                            responder: SocketSetReceiveBufferResponder {
7030                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7031                                tx_id: header.tx_id,
7032                            },
7033                        })
7034                    }
7035                    0x14c1a4b64f709e5c => {
7036                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7037                        let mut req = fidl::new_empty!(
7038                            fidl::encoding::EmptyPayload,
7039                            fidl::encoding::DefaultFuchsiaResourceDialect
7040                        );
7041                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7042                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7043                        Ok(SocketRequest::GetReceiveBuffer {
7044                            responder: SocketGetReceiveBufferResponder {
7045                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7046                                tx_id: header.tx_id,
7047                            },
7048                        })
7049                    }
7050                    0x572df8f0b920d2c7 => {
7051                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7052                        let mut req = fidl::new_empty!(
7053                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7054                            fidl::encoding::DefaultFuchsiaResourceDialect
7055                        );
7056                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7057                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7058                        Ok(SocketRequest::SetKeepAlive {
7059                            value: req.value,
7060
7061                            responder: SocketSetKeepAliveResponder {
7062                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7063                                tx_id: header.tx_id,
7064                            },
7065                        })
7066                    }
7067                    0x2dd29d3215f2c9d2 => {
7068                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7069                        let mut req = fidl::new_empty!(
7070                            fidl::encoding::EmptyPayload,
7071                            fidl::encoding::DefaultFuchsiaResourceDialect
7072                        );
7073                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7074                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7075                        Ok(SocketRequest::GetKeepAlive {
7076                            responder: SocketGetKeepAliveResponder {
7077                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7078                                tx_id: header.tx_id,
7079                            },
7080                        })
7081                    }
7082                    0x3ecb49968bee439 => {
7083                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7084                        let mut req = fidl::new_empty!(
7085                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7086                            fidl::encoding::DefaultFuchsiaResourceDialect
7087                        );
7088                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7089                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7090                        Ok(SocketRequest::SetOutOfBandInline {
7091                            value: req.value,
7092
7093                            responder: SocketSetOutOfBandInlineResponder {
7094                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7095                                tx_id: header.tx_id,
7096                            },
7097                        })
7098                    }
7099                    0x348c1ab3aeca1745 => {
7100                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7101                        let mut req = fidl::new_empty!(
7102                            fidl::encoding::EmptyPayload,
7103                            fidl::encoding::DefaultFuchsiaResourceDialect
7104                        );
7105                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7106                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7107                        Ok(SocketRequest::GetOutOfBandInline {
7108                            responder: SocketGetOutOfBandInlineResponder {
7109                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7110                                tx_id: header.tx_id,
7111                            },
7112                        })
7113                    }
7114                    0x6bbf00c53a4c78c2 => {
7115                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7116                        let mut req = fidl::new_empty!(
7117                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7118                            fidl::encoding::DefaultFuchsiaResourceDialect
7119                        );
7120                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7121                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7122                        Ok(SocketRequest::SetNoCheck {
7123                            value: req.value,
7124
7125                            responder: SocketSetNoCheckResponder {
7126                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7127                                tx_id: header.tx_id,
7128                            },
7129                        })
7130                    }
7131                    0x2cd4249286417694 => {
7132                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7133                        let mut req = fidl::new_empty!(
7134                            fidl::encoding::EmptyPayload,
7135                            fidl::encoding::DefaultFuchsiaResourceDialect
7136                        );
7137                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7138                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7139                        Ok(SocketRequest::GetNoCheck {
7140                            responder: SocketGetNoCheckResponder {
7141                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7142                                tx_id: header.tx_id,
7143                            },
7144                        })
7145                    }
7146                    0x45386351246e998e => {
7147                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7148                        let mut req = fidl::new_empty!(
7149                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7150                            fidl::encoding::DefaultFuchsiaResourceDialect
7151                        );
7152                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7153                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7154                        Ok(SocketRequest::SetLinger {
7155                            linger: req.linger,
7156                            length_secs: req.length_secs,
7157
7158                            responder: SocketSetLingerResponder {
7159                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7160                                tx_id: header.tx_id,
7161                            },
7162                        })
7163                    }
7164                    0x48eb20fc5ccb0e45 => {
7165                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7166                        let mut req = fidl::new_empty!(
7167                            fidl::encoding::EmptyPayload,
7168                            fidl::encoding::DefaultFuchsiaResourceDialect
7169                        );
7170                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7171                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7172                        Ok(SocketRequest::GetLinger {
7173                            responder: SocketGetLingerResponder {
7174                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7175                                tx_id: header.tx_id,
7176                            },
7177                        })
7178                    }
7179                    0x24dd3e5cb36d9ccb => {
7180                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7181                        let mut req = fidl::new_empty!(
7182                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7183                            fidl::encoding::DefaultFuchsiaResourceDialect
7184                        );
7185                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7186                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7187                        Ok(SocketRequest::SetReusePort {
7188                            value: req.value,
7189
7190                            responder: SocketSetReusePortResponder {
7191                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7192                                tx_id: header.tx_id,
7193                            },
7194                        })
7195                    }
7196                    0x7a112c1ab54ff828 => {
7197                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7198                        let mut req = fidl::new_empty!(
7199                            fidl::encoding::EmptyPayload,
7200                            fidl::encoding::DefaultFuchsiaResourceDialect
7201                        );
7202                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7203                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7204                        Ok(SocketRequest::GetReusePort {
7205                            responder: SocketGetReusePortResponder {
7206                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7207                                tx_id: header.tx_id,
7208                            },
7209                        })
7210                    }
7211                    0x67ce6db6c2ec8966 => {
7212                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7213                        let mut req = fidl::new_empty!(
7214                            fidl::encoding::EmptyPayload,
7215                            fidl::encoding::DefaultFuchsiaResourceDialect
7216                        );
7217                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7218                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7219                        Ok(SocketRequest::GetAcceptConn {
7220                            responder: SocketGetAcceptConnResponder {
7221                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7222                                tx_id: header.tx_id,
7223                            },
7224                        })
7225                    }
7226                    0x2118b483f28aafc4 => {
7227                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7228                        let mut req = fidl::new_empty!(
7229                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7230                            fidl::encoding::DefaultFuchsiaResourceDialect
7231                        );
7232                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7233                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7234                        Ok(SocketRequest::SetBindToDevice {
7235                            value: req.value,
7236
7237                            responder: SocketSetBindToDeviceResponder {
7238                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7239                                tx_id: header.tx_id,
7240                            },
7241                        })
7242                    }
7243                    0x1ab1fbf0ef7906c8 => {
7244                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7245                        let mut req = fidl::new_empty!(
7246                            fidl::encoding::EmptyPayload,
7247                            fidl::encoding::DefaultFuchsiaResourceDialect
7248                        );
7249                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7250                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7251                        Ok(SocketRequest::GetBindToDevice {
7252                            responder: SocketGetBindToDeviceResponder {
7253                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7254                                tx_id: header.tx_id,
7255                            },
7256                        })
7257                    }
7258                    0x6e387a0def00821 => {
7259                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7260                        let mut req = fidl::new_empty!(
7261                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7262                            fidl::encoding::DefaultFuchsiaResourceDialect
7263                        );
7264                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7265                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7266                        Ok(SocketRequest::SetBindToInterfaceIndex {
7267                            value: req.value,
7268
7269                            responder: SocketSetBindToInterfaceIndexResponder {
7270                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7271                                tx_id: header.tx_id,
7272                            },
7273                        })
7274                    }
7275                    0x59c31dd3e3078295 => {
7276                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7277                        let mut req = fidl::new_empty!(
7278                            fidl::encoding::EmptyPayload,
7279                            fidl::encoding::DefaultFuchsiaResourceDialect
7280                        );
7281                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7282                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7283                        Ok(SocketRequest::GetBindToInterfaceIndex {
7284                            responder: SocketGetBindToInterfaceIndexResponder {
7285                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7286                                tx_id: header.tx_id,
7287                            },
7288                        })
7289                    }
7290                    0x285d6516c263d839 => {
7291                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7292                        let mut req = fidl::new_empty!(
7293                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7294                            fidl::encoding::DefaultFuchsiaResourceDialect
7295                        );
7296                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7297                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7298                        Ok(SocketRequest::SetTimestamp {
7299                            value: req.value,
7300
7301                            responder: SocketSetTimestampResponder {
7302                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7303                                tx_id: header.tx_id,
7304                            },
7305                        })
7306                    }
7307                    0x49f2fffbbcc2bd27 => {
7308                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7309                        let mut req = fidl::new_empty!(
7310                            fidl::encoding::EmptyPayload,
7311                            fidl::encoding::DefaultFuchsiaResourceDialect
7312                        );
7313                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7314                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7315                        Ok(SocketRequest::GetTimestamp {
7316                            responder: SocketGetTimestampResponder {
7317                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7318                                tx_id: header.tx_id,
7319                            },
7320                        })
7321                    }
7322                    0x6ead6de09f653236 => {
7323                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7324                        let mut req = fidl::new_empty!(
7325                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7326                            fidl::encoding::DefaultFuchsiaResourceDialect
7327                        );
7328                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7329                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7330                        Ok(SocketRequest::SetMark {
7331                            domain: req.domain,
7332                            mark: req.mark,
7333
7334                            responder: SocketSetMarkResponder {
7335                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7336                                tx_id: header.tx_id,
7337                            },
7338                        })
7339                    }
7340                    0x57a2752c61d93d47 => {
7341                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7342                        let mut req = fidl::new_empty!(
7343                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7344                            fidl::encoding::DefaultFuchsiaResourceDialect
7345                        );
7346                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7347                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7348                        Ok(SocketRequest::GetMark {
7349                            domain: req.domain,
7350
7351                            responder: SocketGetMarkResponder {
7352                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7353                                tx_id: header.tx_id,
7354                            },
7355                        })
7356                    }
7357                    0x2c2f47fd8f924e52 => {
7358                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7359                        let mut req = fidl::new_empty!(
7360                            fidl::encoding::EmptyPayload,
7361                            fidl::encoding::DefaultFuchsiaResourceDialect
7362                        );
7363                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7364                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7365                        Ok(SocketRequest::GetCookie {
7366                            responder: SocketGetCookieResponder {
7367                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7368                                tx_id: header.tx_id,
7369                            },
7370                        })
7371                    }
7372                    0x4bc6400ae92125d => {
7373                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7374                        let mut req = fidl::new_empty!(
7375                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7376                            fidl::encoding::DefaultFuchsiaResourceDialect
7377                        );
7378                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7379                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7380                        Ok(SocketRequest::Bind {
7381                            addr: req.addr,
7382
7383                            responder: SocketBindResponder {
7384                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7385                                tx_id: header.tx_id,
7386                            },
7387                        })
7388                    }
7389                    0x5f05f19bfdd38871 => {
7390                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7391                        let mut req = fidl::new_empty!(
7392                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7393                            fidl::encoding::DefaultFuchsiaResourceDialect
7394                        );
7395                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7396                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7397                        Ok(SocketRequest::Connect {
7398                            addr: req.addr,
7399
7400                            responder: SocketConnectResponder {
7401                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7402                                tx_id: header.tx_id,
7403                            },
7404                        })
7405                    }
7406                    0x74e63b91f7b29b2 => {
7407                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7408                        let mut req = fidl::new_empty!(
7409                            fidl::encoding::EmptyPayload,
7410                            fidl::encoding::DefaultFuchsiaResourceDialect
7411                        );
7412                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7413                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7414                        Ok(SocketRequest::Disconnect {
7415                            responder: SocketDisconnectResponder {
7416                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7417                                tx_id: header.tx_id,
7418                            },
7419                        })
7420                    }
7421                    0x475f23f84a1a4f85 => {
7422                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7423                        let mut req = fidl::new_empty!(
7424                            fidl::encoding::EmptyPayload,
7425                            fidl::encoding::DefaultFuchsiaResourceDialect
7426                        );
7427                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7428                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7429                        Ok(SocketRequest::GetSockName {
7430                            responder: SocketGetSockNameResponder {
7431                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7432                                tx_id: header.tx_id,
7433                            },
7434                        })
7435                    }
7436                    0x1ffecf4bd5b6432e => {
7437                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7438                        let mut req = fidl::new_empty!(
7439                            fidl::encoding::EmptyPayload,
7440                            fidl::encoding::DefaultFuchsiaResourceDialect
7441                        );
7442                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7443                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7444                        Ok(SocketRequest::GetPeerName {
7445                            responder: SocketGetPeerNameResponder {
7446                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7447                                tx_id: header.tx_id,
7448                            },
7449                        })
7450                    }
7451                    0x247f38b6db68c336 => {
7452                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7453                        let mut req = fidl::new_empty!(
7454                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7455                            fidl::encoding::DefaultFuchsiaResourceDialect
7456                        );
7457                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7458                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7459                        Ok(SocketRequest::Shutdown {
7460                            mode: req.mode,
7461
7462                            responder: SocketShutdownResponder {
7463                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7464                                tx_id: header.tx_id,
7465                            },
7466                        })
7467                    }
7468                    0x995c600475b6d46 => {
7469                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7470                        let mut req = fidl::new_empty!(
7471                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7472                            fidl::encoding::DefaultFuchsiaResourceDialect
7473                        );
7474                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7475                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7476                        Ok(SocketRequest::SetIpTypeOfService {
7477                            value: req.value,
7478
7479                            responder: SocketSetIpTypeOfServiceResponder {
7480                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7481                                tx_id: header.tx_id,
7482                            },
7483                        })
7484                    }
7485                    0x3814a04259f75fcb => {
7486                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7487                        let mut req = fidl::new_empty!(
7488                            fidl::encoding::EmptyPayload,
7489                            fidl::encoding::DefaultFuchsiaResourceDialect
7490                        );
7491                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7492                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7493                        Ok(SocketRequest::GetIpTypeOfService {
7494                            responder: SocketGetIpTypeOfServiceResponder {
7495                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7496                                tx_id: header.tx_id,
7497                            },
7498                        })
7499                    }
7500                    0x29e2424b433ae1ef => {
7501                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7502                        let mut req = fidl::new_empty!(
7503                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7504                            fidl::encoding::DefaultFuchsiaResourceDialect
7505                        );
7506                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7507                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7508                        Ok(SocketRequest::SetIpTtl {
7509                            value: req.value,
7510
7511                            responder: SocketSetIpTtlResponder {
7512                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7513                                tx_id: header.tx_id,
7514                            },
7515                        })
7516                    }
7517                    0x47e47fa1f24da471 => {
7518                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7519                        let mut req = fidl::new_empty!(
7520                            fidl::encoding::EmptyPayload,
7521                            fidl::encoding::DefaultFuchsiaResourceDialect
7522                        );
7523                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7524                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7525                        Ok(SocketRequest::GetIpTtl {
7526                            responder: SocketGetIpTtlResponder {
7527                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7528                                tx_id: header.tx_id,
7529                            },
7530                        })
7531                    }
7532                    0x392d16bee20c0e16 => {
7533                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7534                        let mut req = fidl::new_empty!(
7535                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7536                            fidl::encoding::DefaultFuchsiaResourceDialect
7537                        );
7538                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7539                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7540                        Ok(SocketRequest::SetIpPacketInfo {
7541                            value: req.value,
7542
7543                            responder: SocketSetIpPacketInfoResponder {
7544                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7545                                tx_id: header.tx_id,
7546                            },
7547                        })
7548                    }
7549                    0x54b505f242280740 => {
7550                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7551                        let mut req = fidl::new_empty!(
7552                            fidl::encoding::EmptyPayload,
7553                            fidl::encoding::DefaultFuchsiaResourceDialect
7554                        );
7555                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7556                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7557                        Ok(SocketRequest::GetIpPacketInfo {
7558                            responder: SocketGetIpPacketInfoResponder {
7559                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7560                                tx_id: header.tx_id,
7561                            },
7562                        })
7563                    }
7564                    0x6c4f6714995f84ef => {
7565                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7566                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7567                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7568                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7569                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7570                            value: req.value,
7571
7572                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7573                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7574                                tx_id: header.tx_id,
7575                            },
7576                        })
7577                    }
7578                    0x4158ba7dc2795960 => {
7579                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7580                        let mut req = fidl::new_empty!(
7581                            fidl::encoding::EmptyPayload,
7582                            fidl::encoding::DefaultFuchsiaResourceDialect
7583                        );
7584                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7585                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7586                        Ok(SocketRequest::GetIpReceiveTypeOfService {
7587                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7588                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7589                                tx_id: header.tx_id,
7590                            },
7591                        })
7592                    }
7593                    0x46f15be0ce0ab82b => {
7594                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7595                        let mut req = fidl::new_empty!(
7596                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7597                            fidl::encoding::DefaultFuchsiaResourceDialect
7598                        );
7599                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7600                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7601                        Ok(SocketRequest::SetIpReceiveTtl {
7602                            value: req.value,
7603
7604                            responder: SocketSetIpReceiveTtlResponder {
7605                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7606                                tx_id: header.tx_id,
7607                            },
7608                        })
7609                    }
7610                    0x678ddd5a5dfa2eb5 => {
7611                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7612                        let mut req = fidl::new_empty!(
7613                            fidl::encoding::EmptyPayload,
7614                            fidl::encoding::DefaultFuchsiaResourceDialect
7615                        );
7616                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7617                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7618                        Ok(SocketRequest::GetIpReceiveTtl {
7619                            responder: SocketGetIpReceiveTtlResponder {
7620                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7621                                tx_id: header.tx_id,
7622                            },
7623                        })
7624                    }
7625                    0x752fbfa9b12befe => {
7626                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7627                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7628                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7629                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7630                        Ok(SocketRequest::SetIpMulticastInterface {
7631                            iface: req.iface,
7632                            address: req.address,
7633
7634                            responder: SocketSetIpMulticastInterfaceResponder {
7635                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7636                                tx_id: header.tx_id,
7637                            },
7638                        })
7639                    }
7640                    0x320bd14c4df046c4 => {
7641                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7642                        let mut req = fidl::new_empty!(
7643                            fidl::encoding::EmptyPayload,
7644                            fidl::encoding::DefaultFuchsiaResourceDialect
7645                        );
7646                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7647                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7648                        Ok(SocketRequest::GetIpMulticastInterface {
7649                            responder: SocketGetIpMulticastInterfaceResponder {
7650                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7651                                tx_id: header.tx_id,
7652                            },
7653                        })
7654                    }
7655                    0x63134d53772916a1 => {
7656                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7657                        let mut req = fidl::new_empty!(
7658                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7659                            fidl::encoding::DefaultFuchsiaResourceDialect
7660                        );
7661                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7662                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7663                        Ok(SocketRequest::SetIpMulticastTtl {
7664                            value: req.value,
7665
7666                            responder: SocketSetIpMulticastTtlResponder {
7667                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7668                                tx_id: header.tx_id,
7669                            },
7670                        })
7671                    }
7672                    0x4665cd378f39e1a => {
7673                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7674                        let mut req = fidl::new_empty!(
7675                            fidl::encoding::EmptyPayload,
7676                            fidl::encoding::DefaultFuchsiaResourceDialect
7677                        );
7678                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7679                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7680                        Ok(SocketRequest::GetIpMulticastTtl {
7681                            responder: SocketGetIpMulticastTtlResponder {
7682                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7683                                tx_id: header.tx_id,
7684                            },
7685                        })
7686                    }
7687                    0x20c55c11f00943ea => {
7688                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7689                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7690                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7691                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7692                        Ok(SocketRequest::SetIpMulticastLoopback {
7693                            value: req.value,
7694
7695                            responder: SocketSetIpMulticastLoopbackResponder {
7696                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7697                                tx_id: header.tx_id,
7698                            },
7699                        })
7700                    }
7701                    0x3b6b26ff558298f2 => {
7702                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7703                        let mut req = fidl::new_empty!(
7704                            fidl::encoding::EmptyPayload,
7705                            fidl::encoding::DefaultFuchsiaResourceDialect
7706                        );
7707                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7708                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7709                        Ok(SocketRequest::GetIpMulticastLoopback {
7710                            responder: SocketGetIpMulticastLoopbackResponder {
7711                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7712                                tx_id: header.tx_id,
7713                            },
7714                        })
7715                    }
7716                    0x76bc7df115a3b4d0 => {
7717                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7718                        let mut req = fidl::new_empty!(
7719                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7720                            fidl::encoding::DefaultFuchsiaResourceDialect
7721                        );
7722                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7723                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7724                        Ok(SocketRequest::AddIpMembership {
7725                            membership: req.membership,
7726
7727                            responder: SocketAddIpMembershipResponder {
7728                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7729                                tx_id: header.tx_id,
7730                            },
7731                        })
7732                    }
7733                    0x2888f3099188d03 => {
7734                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7735                        let mut req = fidl::new_empty!(
7736                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7737                            fidl::encoding::DefaultFuchsiaResourceDialect
7738                        );
7739                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7740                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7741                        Ok(SocketRequest::DropIpMembership {
7742                            membership: req.membership,
7743
7744                            responder: SocketDropIpMembershipResponder {
7745                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7746                                tx_id: header.tx_id,
7747                            },
7748                        })
7749                    }
7750                    0x1ae532b0c066e3a0 => {
7751                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7752                        let mut req = fidl::new_empty!(
7753                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7754                            fidl::encoding::DefaultFuchsiaResourceDialect
7755                        );
7756                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7757                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7758                        Ok(SocketRequest::SetIpTransparent {
7759                            value: req.value,
7760
7761                            responder: SocketSetIpTransparentResponder {
7762                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7763                                tx_id: header.tx_id,
7764                            },
7765                        })
7766                    }
7767                    0x51d43695962ebfb5 => {
7768                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7769                        let mut req = fidl::new_empty!(
7770                            fidl::encoding::EmptyPayload,
7771                            fidl::encoding::DefaultFuchsiaResourceDialect
7772                        );
7773                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7774                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7775                        Ok(SocketRequest::GetIpTransparent {
7776                            responder: SocketGetIpTransparentResponder {
7777                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7778                                tx_id: header.tx_id,
7779                            },
7780                        })
7781                    }
7782                    0x4722b4ce52f7840 => {
7783                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7784                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7785                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7786                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7787                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7788                            value: req.value,
7789
7790                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
7791                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7792                                tx_id: header.tx_id,
7793                            },
7794                        })
7795                    }
7796                    0x2a0e7dc5d6bfdfe9 => {
7797                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7798                        let mut req = fidl::new_empty!(
7799                            fidl::encoding::EmptyPayload,
7800                            fidl::encoding::DefaultFuchsiaResourceDialect
7801                        );
7802                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7803                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7804                        Ok(SocketRequest::GetIpReceiveOriginalDestinationAddress {
7805                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
7806                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7807                                tx_id: header.tx_id,
7808                            },
7809                        })
7810                    }
7811                    0x7c94727acb4ea4b3 => {
7812                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7813                        let mut req = fidl::new_empty!(
7814                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
7815                            fidl::encoding::DefaultFuchsiaResourceDialect
7816                        );
7817                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7818                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7819                        Ok(SocketRequest::AddIpv6Membership {
7820                            membership: req.membership,
7821
7822                            responder: SocketAddIpv6MembershipResponder {
7823                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7824                                tx_id: header.tx_id,
7825                            },
7826                        })
7827                    }
7828                    0x42104c70ccaba304 => {
7829                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7830                        let mut req = fidl::new_empty!(
7831                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
7832                            fidl::encoding::DefaultFuchsiaResourceDialect
7833                        );
7834                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7835                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7836                        Ok(SocketRequest::DropIpv6Membership {
7837                            membership: req.membership,
7838
7839                            responder: SocketDropIpv6MembershipResponder {
7840                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7841                                tx_id: header.tx_id,
7842                            },
7843                        })
7844                    }
7845                    0x135f76db3774ab3b => {
7846                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7847                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7848                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7849                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7850                        Ok(SocketRequest::SetIpv6MulticastInterface {
7851                            value: req.value,
7852
7853                            responder: SocketSetIpv6MulticastInterfaceResponder {
7854                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7855                                tx_id: header.tx_id,
7856                            },
7857                        })
7858                    }
7859                    0x1f26fcdd348f1882 => {
7860                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7861                        let mut req = fidl::new_empty!(
7862                            fidl::encoding::EmptyPayload,
7863                            fidl::encoding::DefaultFuchsiaResourceDialect
7864                        );
7865                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7866                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7867                        Ok(SocketRequest::GetIpv6MulticastInterface {
7868                            responder: SocketGetIpv6MulticastInterfaceResponder {
7869                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7870                                tx_id: header.tx_id,
7871                            },
7872                        })
7873                    }
7874                    0x157d51e98f462859 => {
7875                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7876                        let mut req = fidl::new_empty!(
7877                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
7878                            fidl::encoding::DefaultFuchsiaResourceDialect
7879                        );
7880                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
7881                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7882                        Ok(SocketRequest::SetIpv6UnicastHops {
7883                            value: req.value,
7884
7885                            responder: SocketSetIpv6UnicastHopsResponder {
7886                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7887                                tx_id: header.tx_id,
7888                            },
7889                        })
7890                    }
7891                    0x21f4641cad8bd8d2 => {
7892                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7893                        let mut req = fidl::new_empty!(
7894                            fidl::encoding::EmptyPayload,
7895                            fidl::encoding::DefaultFuchsiaResourceDialect
7896                        );
7897                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7898                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7899                        Ok(SocketRequest::GetIpv6UnicastHops {
7900                            responder: SocketGetIpv6UnicastHopsResponder {
7901                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7902                                tx_id: header.tx_id,
7903                            },
7904                        })
7905                    }
7906                    0x5c24808ed2e84a1e => {
7907                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7908                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7909                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
7910                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7911                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
7912                            value: req.value,
7913
7914                            responder: SocketSetIpv6ReceiveHopLimitResponder {
7915                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7916                                tx_id: header.tx_id,
7917                            },
7918                        })
7919                    }
7920                    0x341e06689885b4c0 => {
7921                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7922                        let mut req = fidl::new_empty!(
7923                            fidl::encoding::EmptyPayload,
7924                            fidl::encoding::DefaultFuchsiaResourceDialect
7925                        );
7926                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7927                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7928                        Ok(SocketRequest::GetIpv6ReceiveHopLimit {
7929                            responder: SocketGetIpv6ReceiveHopLimitResponder {
7930                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7931                                tx_id: header.tx_id,
7932                            },
7933                        })
7934                    }
7935                    0x25b9cd4d181f82c1 => {
7936                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7937                        let mut req = fidl::new_empty!(
7938                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
7939                            fidl::encoding::DefaultFuchsiaResourceDialect
7940                        );
7941                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
7942                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7943                        Ok(SocketRequest::SetIpv6MulticastHops {
7944                            value: req.value,
7945
7946                            responder: SocketSetIpv6MulticastHopsResponder {
7947                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7948                                tx_id: header.tx_id,
7949                            },
7950                        })
7951                    }
7952                    0x52916948a365012a => {
7953                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7954                        let mut req = fidl::new_empty!(
7955                            fidl::encoding::EmptyPayload,
7956                            fidl::encoding::DefaultFuchsiaResourceDialect
7957                        );
7958                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7959                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7960                        Ok(SocketRequest::GetIpv6MulticastHops {
7961                            responder: SocketGetIpv6MulticastHopsResponder {
7962                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7963                                tx_id: header.tx_id,
7964                            },
7965                        })
7966                    }
7967                    0x55701c409ff41b40 => {
7968                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7969                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7970                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7971                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7972                        Ok(SocketRequest::SetIpv6MulticastLoopback {
7973                            value: req.value,
7974
7975                            responder: SocketSetIpv6MulticastLoopbackResponder {
7976                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7977                                tx_id: header.tx_id,
7978                            },
7979                        })
7980                    }
7981                    0x4415b701fde319c3 => {
7982                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7983                        let mut req = fidl::new_empty!(
7984                            fidl::encoding::EmptyPayload,
7985                            fidl::encoding::DefaultFuchsiaResourceDialect
7986                        );
7987                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7988                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7989                        Ok(SocketRequest::GetIpv6MulticastLoopback {
7990                            responder: SocketGetIpv6MulticastLoopbackResponder {
7991                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7992                                tx_id: header.tx_id,
7993                            },
7994                        })
7995                    }
7996                    0x4873f1364758cbba => {
7997                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7998                        let mut req = fidl::new_empty!(
7999                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8000                            fidl::encoding::DefaultFuchsiaResourceDialect
8001                        );
8002                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8003                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8004                        Ok(SocketRequest::SetIpv6Only {
8005                            value: req.value,
8006
8007                            responder: SocketSetIpv6OnlyResponder {
8008                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8009                                tx_id: header.tx_id,
8010                            },
8011                        })
8012                    }
8013                    0x4aa3340a1a26b89c => {
8014                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8015                        let mut req = fidl::new_empty!(
8016                            fidl::encoding::EmptyPayload,
8017                            fidl::encoding::DefaultFuchsiaResourceDialect
8018                        );
8019                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8020                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8021                        Ok(SocketRequest::GetIpv6Only {
8022                            responder: SocketGetIpv6OnlyResponder {
8023                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8024                                tx_id: header.tx_id,
8025                            },
8026                        })
8027                    }
8028                    0x58f07c8788d099a0 => {
8029                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8030                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8031                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8032                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8033                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8034                            value: req.value,
8035
8036                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8037                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8038                                tx_id: header.tx_id,
8039                            },
8040                        })
8041                    }
8042                    0x2e334df1da553ffa => {
8043                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8044                        let mut req = fidl::new_empty!(
8045                            fidl::encoding::EmptyPayload,
8046                            fidl::encoding::DefaultFuchsiaResourceDialect
8047                        );
8048                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8049                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8050                        Ok(SocketRequest::GetIpv6ReceiveTrafficClass {
8051                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8052                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8053                                tx_id: header.tx_id,
8054                            },
8055                        })
8056                    }
8057                    0x6af077800c5a0b4f => {
8058                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8059                        let mut req = fidl::new_empty!(
8060                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8061                            fidl::encoding::DefaultFuchsiaResourceDialect
8062                        );
8063                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8064                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8065                        Ok(SocketRequest::SetIpv6TrafficClass {
8066                            value: req.value,
8067
8068                            responder: SocketSetIpv6TrafficClassResponder {
8069                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8070                                tx_id: header.tx_id,
8071                            },
8072                        })
8073                    }
8074                    0x6baf6eed8fc2f04 => {
8075                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8076                        let mut req = fidl::new_empty!(
8077                            fidl::encoding::EmptyPayload,
8078                            fidl::encoding::DefaultFuchsiaResourceDialect
8079                        );
8080                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8081                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8082                        Ok(SocketRequest::GetIpv6TrafficClass {
8083                            responder: SocketGetIpv6TrafficClassResponder {
8084                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8085                                tx_id: header.tx_id,
8086                            },
8087                        })
8088                    }
8089                    0x19259775b1a92768 => {
8090                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8091                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8092                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8093                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8094                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8095                            value: req.value,
8096
8097                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8098                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8099                                tx_id: header.tx_id,
8100                            },
8101                        })
8102                    }
8103                    0x7acd4a2775baec75 => {
8104                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8105                        let mut req = fidl::new_empty!(
8106                            fidl::encoding::EmptyPayload,
8107                            fidl::encoding::DefaultFuchsiaResourceDialect
8108                        );
8109                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8110                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8111                        Ok(SocketRequest::GetIpv6ReceivePacketInfo {
8112                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8113                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8114                                tx_id: header.tx_id,
8115                            },
8116                        })
8117                    }
8118                    0x38bf28f0dafdbac0 => {
8119                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8120                        let mut req = fidl::new_empty!(
8121                            fidl::encoding::EmptyPayload,
8122                            fidl::encoding::DefaultFuchsiaResourceDialect
8123                        );
8124                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8125                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8126                        Ok(SocketRequest::GetOriginalDestination {
8127                            responder: SocketGetOriginalDestinationResponder {
8128                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8129                                tx_id: header.tx_id,
8130                            },
8131                        })
8132                    }
8133                    0x335706eccf54a135 => {
8134                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8135                        let mut req = fidl::new_empty!(
8136                            fidl::encoding::EmptyPayload,
8137                            fidl::encoding::DefaultFuchsiaResourceDialect
8138                        );
8139                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8140                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8141                        Ok(SocketRequest::Describe {
8142                            responder: SocketDescribeResponder {
8143                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8144                                tx_id: header.tx_id,
8145                            },
8146                        })
8147                    }
8148                    0x1dfb695351d3aa1d => {
8149                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8150                        let mut req = fidl::new_empty!(
8151                            SocketRecvMsgRequest,
8152                            fidl::encoding::DefaultFuchsiaResourceDialect
8153                        );
8154                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8155                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8156                        Ok(SocketRequest::RecvMsg {
8157                            want_addr: req.want_addr,
8158                            data_len: req.data_len,
8159                            want_control: req.want_control,
8160                            flags: req.flags,
8161
8162                            responder: SocketRecvMsgResponder {
8163                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8164                                tx_id: header.tx_id,
8165                            },
8166                        })
8167                    }
8168                    0x2cf1eac9a7fc8958 => {
8169                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8170                        let mut req = fidl::new_empty!(
8171                            SocketSendMsgRequest,
8172                            fidl::encoding::DefaultFuchsiaResourceDialect
8173                        );
8174                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8175                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8176                        Ok(SocketRequest::SendMsg {
8177                            addr: req.addr,
8178                            data: req.data,
8179                            control: req.control,
8180                            flags: req.flags,
8181
8182                            responder: SocketSendMsgResponder {
8183                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8184                                tx_id: header.tx_id,
8185                            },
8186                        })
8187                    }
8188                    0x39676f75aec339ba => {
8189                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8190                        let mut req = fidl::new_empty!(
8191                            fidl::encoding::EmptyPayload,
8192                            fidl::encoding::DefaultFuchsiaResourceDialect
8193                        );
8194                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8195                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8196                        Ok(SocketRequest::GetInfo {
8197                            responder: SocketGetInfoResponder {
8198                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8199                                tx_id: header.tx_id,
8200                            },
8201                        })
8202                    }
8203                    0x5d06a606d95e8f3 => {
8204                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8205                        let mut req = fidl::new_empty!(
8206                            SocketSetIpHeaderIncludedRequest,
8207                            fidl::encoding::DefaultFuchsiaResourceDialect
8208                        );
8209                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8210                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8211                        Ok(SocketRequest::SetIpHeaderIncluded {
8212                            value: req.value,
8213
8214                            responder: SocketSetIpHeaderIncludedResponder {
8215                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8216                                tx_id: header.tx_id,
8217                            },
8218                        })
8219                    }
8220                    0x76125ad1f4d175f6 => {
8221                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8222                        let mut req = fidl::new_empty!(
8223                            fidl::encoding::EmptyPayload,
8224                            fidl::encoding::DefaultFuchsiaResourceDialect
8225                        );
8226                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8227                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8228                        Ok(SocketRequest::GetIpHeaderIncluded {
8229                            responder: SocketGetIpHeaderIncludedResponder {
8230                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8231                                tx_id: header.tx_id,
8232                            },
8233                        })
8234                    }
8235                    0x4ebea92a43ae68a9 => {
8236                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8237                        let mut req = fidl::new_empty!(
8238                            SocketSetIcmpv6FilterRequest,
8239                            fidl::encoding::DefaultFuchsiaResourceDialect
8240                        );
8241                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8242                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8243                        Ok(SocketRequest::SetIcmpv6Filter {
8244                            filter: req.filter,
8245
8246                            responder: SocketSetIcmpv6FilterResponder {
8247                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8248                                tx_id: header.tx_id,
8249                            },
8250                        })
8251                    }
8252                    0x43bd4f3bc0970ace => {
8253                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8254                        let mut req = fidl::new_empty!(
8255                            fidl::encoding::EmptyPayload,
8256                            fidl::encoding::DefaultFuchsiaResourceDialect
8257                        );
8258                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8259                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8260                        Ok(SocketRequest::GetIcmpv6Filter {
8261                            responder: SocketGetIcmpv6FilterResponder {
8262                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8263                                tx_id: header.tx_id,
8264                            },
8265                        })
8266                    }
8267                    0x18b7809577199cb4 => {
8268                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8269                        let mut req = fidl::new_empty!(
8270                            SocketSetIpv6ChecksumRequest,
8271                            fidl::encoding::DefaultFuchsiaResourceDialect
8272                        );
8273                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8274                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8275                        Ok(SocketRequest::SetIpv6Checksum {
8276                            config: req.config,
8277
8278                            responder: SocketSetIpv6ChecksumResponder {
8279                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8280                                tx_id: header.tx_id,
8281                            },
8282                        })
8283                    }
8284                    0x1847bf5b2d263dd => {
8285                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8286                        let mut req = fidl::new_empty!(
8287                            fidl::encoding::EmptyPayload,
8288                            fidl::encoding::DefaultFuchsiaResourceDialect
8289                        );
8290                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8291                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8292                        Ok(SocketRequest::GetIpv6Checksum {
8293                            responder: SocketGetIpv6ChecksumResponder {
8294                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8295                                tx_id: header.tx_id,
8296                            },
8297                        })
8298                    }
8299                    _ => Err(fidl::Error::UnknownOrdinal {
8300                        ordinal: header.ordinal,
8301                        protocol_name:
8302                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8303                    }),
8304                }))
8305            },
8306        )
8307    }
8308}
8309
8310/// A raw network socket.
8311///
8312/// Once a socket has been retrieved from a provider, this interface is then
8313/// used to further configure and use the socket. This interface is essentially
8314/// POSIX.
8315///
8316/// All methods on this type are nonblocking; their exact behaviors match their
8317/// Linux counterparts.
8318///
8319/// *Warning:* This protocol is not yet ready for direct use by clients.
8320/// Instead, clients should use the BSD sockets API to interact with sockets.
8321/// We plan to change this protocol substantially and clients that couple
8322/// directly to this protocol will make those changes more difficult.
8323#[derive(Debug)]
8324pub enum SocketRequest {
8325    Clone {
8326        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8327        control_handle: SocketControlHandle,
8328    },
8329    /// Terminates the connection.
8330    ///
8331    /// After calling `Close`, the client must not send any other requests.
8332    ///
8333    /// Servers, after sending the status response, should close the connection
8334    /// regardless of status and without sending an epitaph.
8335    ///
8336    /// Closing the client end of the channel should be semantically equivalent
8337    /// to calling `Close` without knowing when the close has completed or its
8338    /// status.
8339    Close {
8340        responder: SocketCloseResponder,
8341    },
8342    Query {
8343        responder: SocketQueryResponder,
8344    },
8345    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8346    SetReuseAddress {
8347        value: bool,
8348        responder: SocketSetReuseAddressResponder,
8349    },
8350    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8351    GetReuseAddress {
8352        responder: SocketGetReuseAddressResponder,
8353    },
8354    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8355    /// Returns the last error if there is an error set on the socket.
8356    GetError {
8357        responder: SocketGetErrorResponder,
8358    },
8359    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8360    SetBroadcast {
8361        value: bool,
8362        responder: SocketSetBroadcastResponder,
8363    },
8364    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8365    GetBroadcast {
8366        responder: SocketGetBroadcastResponder,
8367    },
8368    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8369    SetSendBuffer {
8370        value_bytes: u64,
8371        responder: SocketSetSendBufferResponder,
8372    },
8373    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8374    GetSendBuffer {
8375        responder: SocketGetSendBufferResponder,
8376    },
8377    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8378    SetReceiveBuffer {
8379        value_bytes: u64,
8380        responder: SocketSetReceiveBufferResponder,
8381    },
8382    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8383    GetReceiveBuffer {
8384        responder: SocketGetReceiveBufferResponder,
8385    },
8386    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8387    SetKeepAlive {
8388        value: bool,
8389        responder: SocketSetKeepAliveResponder,
8390    },
8391    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8392    GetKeepAlive {
8393        responder: SocketGetKeepAliveResponder,
8394    },
8395    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8396    SetOutOfBandInline {
8397        value: bool,
8398        responder: SocketSetOutOfBandInlineResponder,
8399    },
8400    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8401    GetOutOfBandInline {
8402        responder: SocketGetOutOfBandInlineResponder,
8403    },
8404    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8405    SetNoCheck {
8406        value: bool,
8407        responder: SocketSetNoCheckResponder,
8408    },
8409    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8410    GetNoCheck {
8411        responder: SocketGetNoCheckResponder,
8412    },
8413    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8414    SetLinger {
8415        linger: bool,
8416        length_secs: u32,
8417        responder: SocketSetLingerResponder,
8418    },
8419    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8420    GetLinger {
8421        responder: SocketGetLingerResponder,
8422    },
8423    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8424    SetReusePort {
8425        value: bool,
8426        responder: SocketSetReusePortResponder,
8427    },
8428    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8429    GetReusePort {
8430        responder: SocketGetReusePortResponder,
8431    },
8432    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8433    GetAcceptConn {
8434        responder: SocketGetAcceptConnResponder,
8435    },
8436    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8437    SetBindToDevice {
8438        value: String,
8439        responder: SocketSetBindToDeviceResponder,
8440    },
8441    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8442    GetBindToDevice {
8443        responder: SocketGetBindToDeviceResponder,
8444    },
8445    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8446    /// If `value` is 0, this clears the bound interface.
8447    SetBindToInterfaceIndex {
8448        value: u64,
8449        responder: SocketSetBindToInterfaceIndexResponder,
8450    },
8451    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8452    GetBindToInterfaceIndex {
8453        responder: SocketGetBindToInterfaceIndexResponder,
8454    },
8455    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8456    SetTimestamp {
8457        value: fidl_fuchsia_posix_socket::TimestampOption,
8458        responder: SocketSetTimestampResponder,
8459    },
8460    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8461    GetTimestamp {
8462        responder: SocketGetTimestampResponder,
8463    },
8464    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8465    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8466    /// mark can be set independently in each domain.
8467    SetMark {
8468        domain: fidl_fuchsia_net::MarkDomain,
8469        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8470        responder: SocketSetMarkResponder,
8471    },
8472    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8473    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8474    /// mark can be retrieved independently in each domain.
8475    GetMark {
8476        domain: fidl_fuchsia_net::MarkDomain,
8477        responder: SocketGetMarkResponder,
8478    },
8479    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
8480    GetCookie {
8481        responder: SocketGetCookieResponder,
8482    },
8483    /// Sets the local address used for the socket.
8484    Bind {
8485        addr: fidl_fuchsia_net::SocketAddress,
8486        responder: SocketBindResponder,
8487    },
8488    /// Initiates a connection to a remote address.
8489    Connect {
8490        addr: fidl_fuchsia_net::SocketAddress,
8491        responder: SocketConnectResponder,
8492    },
8493    /// Clears connection information from this socket.
8494    Disconnect {
8495        responder: SocketDisconnectResponder,
8496    },
8497    /// Retrieves the local socket address.
8498    GetSockName {
8499        responder: SocketGetSockNameResponder,
8500    },
8501    /// Retrieves the remote socket address.
8502    GetPeerName {
8503        responder: SocketGetPeerNameResponder,
8504    },
8505    /// Shuts down part of the socket.
8506    Shutdown {
8507        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8508        responder: SocketShutdownResponder,
8509    },
8510    /// Set `SOL_IP` -> `IP_TOS`.
8511    SetIpTypeOfService {
8512        value: u8,
8513        responder: SocketSetIpTypeOfServiceResponder,
8514    },
8515    /// Get `SOL_IP` -> `IP_TOS`.
8516    GetIpTypeOfService {
8517        responder: SocketGetIpTypeOfServiceResponder,
8518    },
8519    /// Set `SOL_IP` -> `IP_TTL`.
8520    SetIpTtl {
8521        value: fidl_fuchsia_posix_socket::OptionalUint8,
8522        responder: SocketSetIpTtlResponder,
8523    },
8524    /// Get `SOL_IP` -> `IP_TTL`.
8525    GetIpTtl {
8526        responder: SocketGetIpTtlResponder,
8527    },
8528    /// Set `SOL_IP` -> `IP_PKTINFO`.
8529    SetIpPacketInfo {
8530        value: bool,
8531        responder: SocketSetIpPacketInfoResponder,
8532    },
8533    /// Get `SOL_IP` -> `IP_PKTINFO`.
8534    GetIpPacketInfo {
8535        responder: SocketGetIpPacketInfoResponder,
8536    },
8537    /// Set `SOL_IP` -> `IP_RECVTOS`.
8538    SetIpReceiveTypeOfService {
8539        value: bool,
8540        responder: SocketSetIpReceiveTypeOfServiceResponder,
8541    },
8542    /// Get `SOL_IP` -> `IP_RECVTOS`.
8543    GetIpReceiveTypeOfService {
8544        responder: SocketGetIpReceiveTypeOfServiceResponder,
8545    },
8546    /// Set `SOL_IP` -> `IP_RECVTTL`.
8547    SetIpReceiveTtl {
8548        value: bool,
8549        responder: SocketSetIpReceiveTtlResponder,
8550    },
8551    /// Get `SOL_IP` -> `IP_RECVTTL`.
8552    GetIpReceiveTtl {
8553        responder: SocketGetIpReceiveTtlResponder,
8554    },
8555    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8556    SetIpMulticastInterface {
8557        iface: u64,
8558        address: fidl_fuchsia_net::Ipv4Address,
8559        responder: SocketSetIpMulticastInterfaceResponder,
8560    },
8561    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8562    GetIpMulticastInterface {
8563        responder: SocketGetIpMulticastInterfaceResponder,
8564    },
8565    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8566    SetIpMulticastTtl {
8567        value: fidl_fuchsia_posix_socket::OptionalUint8,
8568        responder: SocketSetIpMulticastTtlResponder,
8569    },
8570    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8571    GetIpMulticastTtl {
8572        responder: SocketGetIpMulticastTtlResponder,
8573    },
8574    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8575    SetIpMulticastLoopback {
8576        value: bool,
8577        responder: SocketSetIpMulticastLoopbackResponder,
8578    },
8579    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8580    GetIpMulticastLoopback {
8581        responder: SocketGetIpMulticastLoopbackResponder,
8582    },
8583    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8584    AddIpMembership {
8585        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8586        responder: SocketAddIpMembershipResponder,
8587    },
8588    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8589    DropIpMembership {
8590        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8591        responder: SocketDropIpMembershipResponder,
8592    },
8593    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8594    SetIpTransparent {
8595        value: bool,
8596        responder: SocketSetIpTransparentResponder,
8597    },
8598    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8599    GetIpTransparent {
8600        responder: SocketGetIpTransparentResponder,
8601    },
8602    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8603    SetIpReceiveOriginalDestinationAddress {
8604        value: bool,
8605        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8606    },
8607    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8608    GetIpReceiveOriginalDestinationAddress {
8609        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8610    },
8611    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8612    AddIpv6Membership {
8613        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8614        responder: SocketAddIpv6MembershipResponder,
8615    },
8616    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8617    DropIpv6Membership {
8618        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8619        responder: SocketDropIpv6MembershipResponder,
8620    },
8621    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8622    SetIpv6MulticastInterface {
8623        value: u64,
8624        responder: SocketSetIpv6MulticastInterfaceResponder,
8625    },
8626    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8627    GetIpv6MulticastInterface {
8628        responder: SocketGetIpv6MulticastInterfaceResponder,
8629    },
8630    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8631    SetIpv6UnicastHops {
8632        value: fidl_fuchsia_posix_socket::OptionalUint8,
8633        responder: SocketSetIpv6UnicastHopsResponder,
8634    },
8635    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8636    GetIpv6UnicastHops {
8637        responder: SocketGetIpv6UnicastHopsResponder,
8638    },
8639    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8640    SetIpv6ReceiveHopLimit {
8641        value: bool,
8642        responder: SocketSetIpv6ReceiveHopLimitResponder,
8643    },
8644    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8645    GetIpv6ReceiveHopLimit {
8646        responder: SocketGetIpv6ReceiveHopLimitResponder,
8647    },
8648    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8649    SetIpv6MulticastHops {
8650        value: fidl_fuchsia_posix_socket::OptionalUint8,
8651        responder: SocketSetIpv6MulticastHopsResponder,
8652    },
8653    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8654    GetIpv6MulticastHops {
8655        responder: SocketGetIpv6MulticastHopsResponder,
8656    },
8657    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8658    SetIpv6MulticastLoopback {
8659        value: bool,
8660        responder: SocketSetIpv6MulticastLoopbackResponder,
8661    },
8662    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8663    GetIpv6MulticastLoopback {
8664        responder: SocketGetIpv6MulticastLoopbackResponder,
8665    },
8666    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8667    SetIpv6Only {
8668        value: bool,
8669        responder: SocketSetIpv6OnlyResponder,
8670    },
8671    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8672    GetIpv6Only {
8673        responder: SocketGetIpv6OnlyResponder,
8674    },
8675    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8676    SetIpv6ReceiveTrafficClass {
8677        value: bool,
8678        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8679    },
8680    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8681    GetIpv6ReceiveTrafficClass {
8682        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8683    },
8684    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8685    SetIpv6TrafficClass {
8686        value: fidl_fuchsia_posix_socket::OptionalUint8,
8687        responder: SocketSetIpv6TrafficClassResponder,
8688    },
8689    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8690    GetIpv6TrafficClass {
8691        responder: SocketGetIpv6TrafficClassResponder,
8692    },
8693    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8694    SetIpv6ReceivePacketInfo {
8695        value: bool,
8696        responder: SocketSetIpv6ReceivePacketInfoResponder,
8697    },
8698    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8699    GetIpv6ReceivePacketInfo {
8700        responder: SocketGetIpv6ReceivePacketInfoResponder,
8701    },
8702    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8703    GetOriginalDestination {
8704        responder: SocketGetOriginalDestinationResponder,
8705    },
8706    Describe {
8707        responder: SocketDescribeResponder,
8708    },
8709    /// Receives a message from the socket.
8710    ///
8711    /// + request `want_addr` request message's source address information to
8712    ///   be returned.
8713    /// + request `data_len` the maximum allowed length of the response data
8714    ///   buffer.
8715    /// + request `want_control` request ancillary data to be returned.
8716    /// + request `flags` flags for the receive request.
8717    /// - response `addr` the message's source address information, if
8718    ///   requested.
8719    /// - response `data` the message.
8720    /// - response `control` control messages, if requested.
8721    /// - response `truncated` indicates whether or not the returned message
8722    ///   was truncated.
8723    RecvMsg {
8724        want_addr: bool,
8725        data_len: u32,
8726        want_control: bool,
8727        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8728        responder: SocketRecvMsgResponder,
8729    },
8730    /// Sends a message on the socket.
8731    ///
8732    /// + request `addr` the address to send the message to. If unset, will
8733    ///   send to the connected peer.
8734    /// + request `data` the message.
8735    /// + request `control` ancillary data.
8736    /// + request `flags` flags for the send request.
8737    SendMsg {
8738        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8739        data: Vec<u8>,
8740        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8741        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8742        responder: SocketSendMsgResponder,
8743    },
8744    /// Retrieves creation information from the socket.
8745    ///
8746    /// - response `domain` the socket's associated domain.
8747    /// - response `proto` the socket's associated protocol.
8748    GetInfo {
8749        responder: SocketGetInfoResponder,
8750    },
8751    /// Set `SOL_IP` -> `IP_HDRINCL`.
8752    SetIpHeaderIncluded {
8753        value: bool,
8754        responder: SocketSetIpHeaderIncludedResponder,
8755    },
8756    /// Get `SOL_IP` -> `IP_HDRINCL`.
8757    GetIpHeaderIncluded {
8758        responder: SocketGetIpHeaderIncludedResponder,
8759    },
8760    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8761    SetIcmpv6Filter {
8762        filter: Icmpv6Filter,
8763        responder: SocketSetIcmpv6FilterResponder,
8764    },
8765    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8766    GetIcmpv6Filter {
8767        responder: SocketGetIcmpv6FilterResponder,
8768    },
8769    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8770    SetIpv6Checksum {
8771        config: Ipv6ChecksumConfiguration,
8772        responder: SocketSetIpv6ChecksumResponder,
8773    },
8774    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8775    GetIpv6Checksum {
8776        responder: SocketGetIpv6ChecksumResponder,
8777    },
8778}
8779
8780impl SocketRequest {
8781    #[allow(irrefutable_let_patterns)]
8782    pub fn into_clone(
8783        self,
8784    ) -> Option<(
8785        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8786        SocketControlHandle,
8787    )> {
8788        if let SocketRequest::Clone { request, control_handle } = self {
8789            Some((request, control_handle))
8790        } else {
8791            None
8792        }
8793    }
8794
8795    #[allow(irrefutable_let_patterns)]
8796    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
8797        if let SocketRequest::Close { responder } = self { Some((responder)) } else { None }
8798    }
8799
8800    #[allow(irrefutable_let_patterns)]
8801    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
8802        if let SocketRequest::Query { responder } = self { Some((responder)) } else { None }
8803    }
8804
8805    #[allow(irrefutable_let_patterns)]
8806    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
8807        if let SocketRequest::SetReuseAddress { value, responder } = self {
8808            Some((value, responder))
8809        } else {
8810            None
8811        }
8812    }
8813
8814    #[allow(irrefutable_let_patterns)]
8815    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
8816        if let SocketRequest::GetReuseAddress { responder } = self {
8817            Some((responder))
8818        } else {
8819            None
8820        }
8821    }
8822
8823    #[allow(irrefutable_let_patterns)]
8824    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
8825        if let SocketRequest::GetError { responder } = self { Some((responder)) } else { None }
8826    }
8827
8828    #[allow(irrefutable_let_patterns)]
8829    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
8830        if let SocketRequest::SetBroadcast { value, responder } = self {
8831            Some((value, responder))
8832        } else {
8833            None
8834        }
8835    }
8836
8837    #[allow(irrefutable_let_patterns)]
8838    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
8839        if let SocketRequest::GetBroadcast { responder } = self { Some((responder)) } else { None }
8840    }
8841
8842    #[allow(irrefutable_let_patterns)]
8843    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
8844        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
8845            Some((value_bytes, responder))
8846        } else {
8847            None
8848        }
8849    }
8850
8851    #[allow(irrefutable_let_patterns)]
8852    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
8853        if let SocketRequest::GetSendBuffer { responder } = self { Some((responder)) } else { None }
8854    }
8855
8856    #[allow(irrefutable_let_patterns)]
8857    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
8858        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
8859            Some((value_bytes, responder))
8860        } else {
8861            None
8862        }
8863    }
8864
8865    #[allow(irrefutable_let_patterns)]
8866    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
8867        if let SocketRequest::GetReceiveBuffer { responder } = self {
8868            Some((responder))
8869        } else {
8870            None
8871        }
8872    }
8873
8874    #[allow(irrefutable_let_patterns)]
8875    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
8876        if let SocketRequest::SetKeepAlive { value, responder } = self {
8877            Some((value, responder))
8878        } else {
8879            None
8880        }
8881    }
8882
8883    #[allow(irrefutable_let_patterns)]
8884    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
8885        if let SocketRequest::GetKeepAlive { responder } = self { Some((responder)) } else { None }
8886    }
8887
8888    #[allow(irrefutable_let_patterns)]
8889    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
8890        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
8891            Some((value, responder))
8892        } else {
8893            None
8894        }
8895    }
8896
8897    #[allow(irrefutable_let_patterns)]
8898    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
8899        if let SocketRequest::GetOutOfBandInline { responder } = self {
8900            Some((responder))
8901        } else {
8902            None
8903        }
8904    }
8905
8906    #[allow(irrefutable_let_patterns)]
8907    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
8908        if let SocketRequest::SetNoCheck { value, responder } = self {
8909            Some((value, responder))
8910        } else {
8911            None
8912        }
8913    }
8914
8915    #[allow(irrefutable_let_patterns)]
8916    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
8917        if let SocketRequest::GetNoCheck { responder } = self { Some((responder)) } else { None }
8918    }
8919
8920    #[allow(irrefutable_let_patterns)]
8921    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
8922        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
8923            Some((linger, length_secs, responder))
8924        } else {
8925            None
8926        }
8927    }
8928
8929    #[allow(irrefutable_let_patterns)]
8930    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
8931        if let SocketRequest::GetLinger { responder } = self { Some((responder)) } else { None }
8932    }
8933
8934    #[allow(irrefutable_let_patterns)]
8935    pub fn into_set_reuse_port(self) -> Option<(bool, SocketSetReusePortResponder)> {
8936        if let SocketRequest::SetReusePort { value, responder } = self {
8937            Some((value, responder))
8938        } else {
8939            None
8940        }
8941    }
8942
8943    #[allow(irrefutable_let_patterns)]
8944    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
8945        if let SocketRequest::GetReusePort { responder } = self { Some((responder)) } else { None }
8946    }
8947
8948    #[allow(irrefutable_let_patterns)]
8949    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
8950        if let SocketRequest::GetAcceptConn { responder } = self { Some((responder)) } else { None }
8951    }
8952
8953    #[allow(irrefutable_let_patterns)]
8954    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
8955        if let SocketRequest::SetBindToDevice { value, responder } = self {
8956            Some((value, responder))
8957        } else {
8958            None
8959        }
8960    }
8961
8962    #[allow(irrefutable_let_patterns)]
8963    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
8964        if let SocketRequest::GetBindToDevice { responder } = self {
8965            Some((responder))
8966        } else {
8967            None
8968        }
8969    }
8970
8971    #[allow(irrefutable_let_patterns)]
8972    pub fn into_set_bind_to_interface_index(
8973        self,
8974    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
8975        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
8976            Some((value, responder))
8977        } else {
8978            None
8979        }
8980    }
8981
8982    #[allow(irrefutable_let_patterns)]
8983    pub fn into_get_bind_to_interface_index(
8984        self,
8985    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
8986        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
8987            Some((responder))
8988        } else {
8989            None
8990        }
8991    }
8992
8993    #[allow(irrefutable_let_patterns)]
8994    pub fn into_set_timestamp(
8995        self,
8996    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
8997        if let SocketRequest::SetTimestamp { value, responder } = self {
8998            Some((value, responder))
8999        } else {
9000            None
9001        }
9002    }
9003
9004    #[allow(irrefutable_let_patterns)]
9005    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9006        if let SocketRequest::GetTimestamp { responder } = self { Some((responder)) } else { None }
9007    }
9008
9009    #[allow(irrefutable_let_patterns)]
9010    pub fn into_set_mark(
9011        self,
9012    ) -> Option<(
9013        fidl_fuchsia_net::MarkDomain,
9014        fidl_fuchsia_posix_socket::OptionalUint32,
9015        SocketSetMarkResponder,
9016    )> {
9017        if let SocketRequest::SetMark { domain, mark, responder } = self {
9018            Some((domain, mark, responder))
9019        } else {
9020            None
9021        }
9022    }
9023
9024    #[allow(irrefutable_let_patterns)]
9025    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9026        if let SocketRequest::GetMark { domain, responder } = self {
9027            Some((domain, responder))
9028        } else {
9029            None
9030        }
9031    }
9032
9033    #[allow(irrefutable_let_patterns)]
9034    pub fn into_get_cookie(self) -> Option<(SocketGetCookieResponder)> {
9035        if let SocketRequest::GetCookie { responder } = self { Some((responder)) } else { None }
9036    }
9037
9038    #[allow(irrefutable_let_patterns)]
9039    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9040        if let SocketRequest::Bind { addr, responder } = self {
9041            Some((addr, responder))
9042        } else {
9043            None
9044        }
9045    }
9046
9047    #[allow(irrefutable_let_patterns)]
9048    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9049        if let SocketRequest::Connect { addr, responder } = self {
9050            Some((addr, responder))
9051        } else {
9052            None
9053        }
9054    }
9055
9056    #[allow(irrefutable_let_patterns)]
9057    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9058        if let SocketRequest::Disconnect { responder } = self { Some((responder)) } else { None }
9059    }
9060
9061    #[allow(irrefutable_let_patterns)]
9062    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9063        if let SocketRequest::GetSockName { responder } = self { Some((responder)) } else { None }
9064    }
9065
9066    #[allow(irrefutable_let_patterns)]
9067    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9068        if let SocketRequest::GetPeerName { responder } = self { Some((responder)) } else { None }
9069    }
9070
9071    #[allow(irrefutable_let_patterns)]
9072    pub fn into_shutdown(
9073        self,
9074    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9075        if let SocketRequest::Shutdown { mode, responder } = self {
9076            Some((mode, responder))
9077        } else {
9078            None
9079        }
9080    }
9081
9082    #[allow(irrefutable_let_patterns)]
9083    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9084        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9085            Some((value, responder))
9086        } else {
9087            None
9088        }
9089    }
9090
9091    #[allow(irrefutable_let_patterns)]
9092    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9093        if let SocketRequest::GetIpTypeOfService { responder } = self {
9094            Some((responder))
9095        } else {
9096            None
9097        }
9098    }
9099
9100    #[allow(irrefutable_let_patterns)]
9101    pub fn into_set_ip_ttl(
9102        self,
9103    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9104        if let SocketRequest::SetIpTtl { value, responder } = self {
9105            Some((value, responder))
9106        } else {
9107            None
9108        }
9109    }
9110
9111    #[allow(irrefutable_let_patterns)]
9112    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9113        if let SocketRequest::GetIpTtl { responder } = self { Some((responder)) } else { None }
9114    }
9115
9116    #[allow(irrefutable_let_patterns)]
9117    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9118        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9119            Some((value, responder))
9120        } else {
9121            None
9122        }
9123    }
9124
9125    #[allow(irrefutable_let_patterns)]
9126    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9127        if let SocketRequest::GetIpPacketInfo { responder } = self {
9128            Some((responder))
9129        } else {
9130            None
9131        }
9132    }
9133
9134    #[allow(irrefutable_let_patterns)]
9135    pub fn into_set_ip_receive_type_of_service(
9136        self,
9137    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9138        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9139            Some((value, responder))
9140        } else {
9141            None
9142        }
9143    }
9144
9145    #[allow(irrefutable_let_patterns)]
9146    pub fn into_get_ip_receive_type_of_service(
9147        self,
9148    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9149        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9150            Some((responder))
9151        } else {
9152            None
9153        }
9154    }
9155
9156    #[allow(irrefutable_let_patterns)]
9157    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9158        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9159            Some((value, responder))
9160        } else {
9161            None
9162        }
9163    }
9164
9165    #[allow(irrefutable_let_patterns)]
9166    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9167        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9168            Some((responder))
9169        } else {
9170            None
9171        }
9172    }
9173
9174    #[allow(irrefutable_let_patterns)]
9175    pub fn into_set_ip_multicast_interface(
9176        self,
9177    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9178        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9179            Some((iface, address, responder))
9180        } else {
9181            None
9182        }
9183    }
9184
9185    #[allow(irrefutable_let_patterns)]
9186    pub fn into_get_ip_multicast_interface(
9187        self,
9188    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9189        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9190            Some((responder))
9191        } else {
9192            None
9193        }
9194    }
9195
9196    #[allow(irrefutable_let_patterns)]
9197    pub fn into_set_ip_multicast_ttl(
9198        self,
9199    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9200        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9201            Some((value, responder))
9202        } else {
9203            None
9204        }
9205    }
9206
9207    #[allow(irrefutable_let_patterns)]
9208    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9209        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9210            Some((responder))
9211        } else {
9212            None
9213        }
9214    }
9215
9216    #[allow(irrefutable_let_patterns)]
9217    pub fn into_set_ip_multicast_loopback(
9218        self,
9219    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9220        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9221            Some((value, responder))
9222        } else {
9223            None
9224        }
9225    }
9226
9227    #[allow(irrefutable_let_patterns)]
9228    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9229        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9230            Some((responder))
9231        } else {
9232            None
9233        }
9234    }
9235
9236    #[allow(irrefutable_let_patterns)]
9237    pub fn into_add_ip_membership(
9238        self,
9239    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9240    {
9241        if let SocketRequest::AddIpMembership { membership, responder } = self {
9242            Some((membership, responder))
9243        } else {
9244            None
9245        }
9246    }
9247
9248    #[allow(irrefutable_let_patterns)]
9249    pub fn into_drop_ip_membership(
9250        self,
9251    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9252    {
9253        if let SocketRequest::DropIpMembership { membership, responder } = self {
9254            Some((membership, responder))
9255        } else {
9256            None
9257        }
9258    }
9259
9260    #[allow(irrefutable_let_patterns)]
9261    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9262        if let SocketRequest::SetIpTransparent { value, responder } = self {
9263            Some((value, responder))
9264        } else {
9265            None
9266        }
9267    }
9268
9269    #[allow(irrefutable_let_patterns)]
9270    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9271        if let SocketRequest::GetIpTransparent { responder } = self {
9272            Some((responder))
9273        } else {
9274            None
9275        }
9276    }
9277
9278    #[allow(irrefutable_let_patterns)]
9279    pub fn into_set_ip_receive_original_destination_address(
9280        self,
9281    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9282        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9283            Some((value, responder))
9284        } else {
9285            None
9286        }
9287    }
9288
9289    #[allow(irrefutable_let_patterns)]
9290    pub fn into_get_ip_receive_original_destination_address(
9291        self,
9292    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9293        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9294            Some((responder))
9295        } else {
9296            None
9297        }
9298    }
9299
9300    #[allow(irrefutable_let_patterns)]
9301    pub fn into_add_ipv6_membership(
9302        self,
9303    ) -> Option<(
9304        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9305        SocketAddIpv6MembershipResponder,
9306    )> {
9307        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9308            Some((membership, responder))
9309        } else {
9310            None
9311        }
9312    }
9313
9314    #[allow(irrefutable_let_patterns)]
9315    pub fn into_drop_ipv6_membership(
9316        self,
9317    ) -> Option<(
9318        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9319        SocketDropIpv6MembershipResponder,
9320    )> {
9321        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9322            Some((membership, responder))
9323        } else {
9324            None
9325        }
9326    }
9327
9328    #[allow(irrefutable_let_patterns)]
9329    pub fn into_set_ipv6_multicast_interface(
9330        self,
9331    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9332        if let SocketRequest::SetIpv6MulticastInterface { value, responder } = self {
9333            Some((value, responder))
9334        } else {
9335            None
9336        }
9337    }
9338
9339    #[allow(irrefutable_let_patterns)]
9340    pub fn into_get_ipv6_multicast_interface(
9341        self,
9342    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9343        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9344            Some((responder))
9345        } else {
9346            None
9347        }
9348    }
9349
9350    #[allow(irrefutable_let_patterns)]
9351    pub fn into_set_ipv6_unicast_hops(
9352        self,
9353    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9354        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9355            Some((value, responder))
9356        } else {
9357            None
9358        }
9359    }
9360
9361    #[allow(irrefutable_let_patterns)]
9362    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9363        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9364            Some((responder))
9365        } else {
9366            None
9367        }
9368    }
9369
9370    #[allow(irrefutable_let_patterns)]
9371    pub fn into_set_ipv6_receive_hop_limit(
9372        self,
9373    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9374        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9375            Some((value, responder))
9376        } else {
9377            None
9378        }
9379    }
9380
9381    #[allow(irrefutable_let_patterns)]
9382    pub fn into_get_ipv6_receive_hop_limit(
9383        self,
9384    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9385        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9386            Some((responder))
9387        } else {
9388            None
9389        }
9390    }
9391
9392    #[allow(irrefutable_let_patterns)]
9393    pub fn into_set_ipv6_multicast_hops(
9394        self,
9395    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9396    {
9397        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9398            Some((value, responder))
9399        } else {
9400            None
9401        }
9402    }
9403
9404    #[allow(irrefutable_let_patterns)]
9405    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9406        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9407            Some((responder))
9408        } else {
9409            None
9410        }
9411    }
9412
9413    #[allow(irrefutable_let_patterns)]
9414    pub fn into_set_ipv6_multicast_loopback(
9415        self,
9416    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9417        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9418            Some((value, responder))
9419        } else {
9420            None
9421        }
9422    }
9423
9424    #[allow(irrefutable_let_patterns)]
9425    pub fn into_get_ipv6_multicast_loopback(
9426        self,
9427    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9428        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9429            Some((responder))
9430        } else {
9431            None
9432        }
9433    }
9434
9435    #[allow(irrefutable_let_patterns)]
9436    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9437        if let SocketRequest::SetIpv6Only { value, responder } = self {
9438            Some((value, responder))
9439        } else {
9440            None
9441        }
9442    }
9443
9444    #[allow(irrefutable_let_patterns)]
9445    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9446        if let SocketRequest::GetIpv6Only { responder } = self { Some((responder)) } else { None }
9447    }
9448
9449    #[allow(irrefutable_let_patterns)]
9450    pub fn into_set_ipv6_receive_traffic_class(
9451        self,
9452    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9453        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9454            Some((value, responder))
9455        } else {
9456            None
9457        }
9458    }
9459
9460    #[allow(irrefutable_let_patterns)]
9461    pub fn into_get_ipv6_receive_traffic_class(
9462        self,
9463    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9464        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9465            Some((responder))
9466        } else {
9467            None
9468        }
9469    }
9470
9471    #[allow(irrefutable_let_patterns)]
9472    pub fn into_set_ipv6_traffic_class(
9473        self,
9474    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9475    {
9476        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9477            Some((value, responder))
9478        } else {
9479            None
9480        }
9481    }
9482
9483    #[allow(irrefutable_let_patterns)]
9484    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9485        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9486            Some((responder))
9487        } else {
9488            None
9489        }
9490    }
9491
9492    #[allow(irrefutable_let_patterns)]
9493    pub fn into_set_ipv6_receive_packet_info(
9494        self,
9495    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9496        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9497            Some((value, responder))
9498        } else {
9499            None
9500        }
9501    }
9502
9503    #[allow(irrefutable_let_patterns)]
9504    pub fn into_get_ipv6_receive_packet_info(
9505        self,
9506    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9507        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9508            Some((responder))
9509        } else {
9510            None
9511        }
9512    }
9513
9514    #[allow(irrefutable_let_patterns)]
9515    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9516        if let SocketRequest::GetOriginalDestination { responder } = self {
9517            Some((responder))
9518        } else {
9519            None
9520        }
9521    }
9522
9523    #[allow(irrefutable_let_patterns)]
9524    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9525        if let SocketRequest::Describe { responder } = self { Some((responder)) } else { None }
9526    }
9527
9528    #[allow(irrefutable_let_patterns)]
9529    pub fn into_recv_msg(
9530        self,
9531    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9532    {
9533        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9534        {
9535            Some((want_addr, data_len, want_control, flags, responder))
9536        } else {
9537            None
9538        }
9539    }
9540
9541    #[allow(irrefutable_let_patterns)]
9542    pub fn into_send_msg(
9543        self,
9544    ) -> Option<(
9545        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9546        Vec<u8>,
9547        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9548        fidl_fuchsia_posix_socket::SendMsgFlags,
9549        SocketSendMsgResponder,
9550    )> {
9551        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9552            Some((addr, data, control, flags, responder))
9553        } else {
9554            None
9555        }
9556    }
9557
9558    #[allow(irrefutable_let_patterns)]
9559    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9560        if let SocketRequest::GetInfo { responder } = self { Some((responder)) } else { None }
9561    }
9562
9563    #[allow(irrefutable_let_patterns)]
9564    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9565        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9566            Some((value, responder))
9567        } else {
9568            None
9569        }
9570    }
9571
9572    #[allow(irrefutable_let_patterns)]
9573    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9574        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9575            Some((responder))
9576        } else {
9577            None
9578        }
9579    }
9580
9581    #[allow(irrefutable_let_patterns)]
9582    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9583        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9584            Some((filter, responder))
9585        } else {
9586            None
9587        }
9588    }
9589
9590    #[allow(irrefutable_let_patterns)]
9591    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9592        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9593            Some((responder))
9594        } else {
9595            None
9596        }
9597    }
9598
9599    #[allow(irrefutable_let_patterns)]
9600    pub fn into_set_ipv6_checksum(
9601        self,
9602    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9603        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9604            Some((config, responder))
9605        } else {
9606            None
9607        }
9608    }
9609
9610    #[allow(irrefutable_let_patterns)]
9611    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9612        if let SocketRequest::GetIpv6Checksum { responder } = self {
9613            Some((responder))
9614        } else {
9615            None
9616        }
9617    }
9618
9619    /// Name of the method defined in FIDL
9620    pub fn method_name(&self) -> &'static str {
9621        match *self {
9622            SocketRequest::Clone { .. } => "clone",
9623            SocketRequest::Close { .. } => "close",
9624            SocketRequest::Query { .. } => "query",
9625            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9626            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9627            SocketRequest::GetError { .. } => "get_error",
9628            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9629            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9630            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9631            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9632            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9633            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9634            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9635            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9636            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9637            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9638            SocketRequest::SetNoCheck { .. } => "set_no_check",
9639            SocketRequest::GetNoCheck { .. } => "get_no_check",
9640            SocketRequest::SetLinger { .. } => "set_linger",
9641            SocketRequest::GetLinger { .. } => "get_linger",
9642            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9643            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9644            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9645            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9646            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9647            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9648            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9649            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9650            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9651            SocketRequest::SetMark { .. } => "set_mark",
9652            SocketRequest::GetMark { .. } => "get_mark",
9653            SocketRequest::GetCookie { .. } => "get_cookie",
9654            SocketRequest::Bind { .. } => "bind",
9655            SocketRequest::Connect { .. } => "connect",
9656            SocketRequest::Disconnect { .. } => "disconnect",
9657            SocketRequest::GetSockName { .. } => "get_sock_name",
9658            SocketRequest::GetPeerName { .. } => "get_peer_name",
9659            SocketRequest::Shutdown { .. } => "shutdown",
9660            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9661            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9662            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9663            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9664            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9665            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9666            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9667            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9668            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9669            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9670            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9671            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9672            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9673            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9674            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9675            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9676            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9677            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9678            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9679            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9680            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9681                "set_ip_receive_original_destination_address"
9682            }
9683            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9684                "get_ip_receive_original_destination_address"
9685            }
9686            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9687            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9688            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9689            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9690            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9691            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9692            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9693            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9694            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9695            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9696            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9697            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9698            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9699            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9700            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9701            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9702            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9703            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9704            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9705            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9706            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9707            SocketRequest::Describe { .. } => "describe",
9708            SocketRequest::RecvMsg { .. } => "recv_msg",
9709            SocketRequest::SendMsg { .. } => "send_msg",
9710            SocketRequest::GetInfo { .. } => "get_info",
9711            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9712            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9713            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9714            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9715            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9716            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9717        }
9718    }
9719}
9720
9721#[derive(Debug, Clone)]
9722pub struct SocketControlHandle {
9723    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9724}
9725
9726impl fidl::endpoints::ControlHandle for SocketControlHandle {
9727    fn shutdown(&self) {
9728        self.inner.shutdown()
9729    }
9730    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9731        self.inner.shutdown_with_epitaph(status)
9732    }
9733
9734    fn is_closed(&self) -> bool {
9735        self.inner.channel().is_closed()
9736    }
9737    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9738        self.inner.channel().on_closed()
9739    }
9740
9741    #[cfg(target_os = "fuchsia")]
9742    fn signal_peer(
9743        &self,
9744        clear_mask: zx::Signals,
9745        set_mask: zx::Signals,
9746    ) -> Result<(), zx_status::Status> {
9747        use fidl::Peered;
9748        self.inner.channel().signal_peer(clear_mask, set_mask)
9749    }
9750}
9751
9752impl SocketControlHandle {}
9753
9754#[must_use = "FIDL methods require a response to be sent"]
9755#[derive(Debug)]
9756pub struct SocketCloseResponder {
9757    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9758    tx_id: u32,
9759}
9760
9761/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9762/// if the responder is dropped without sending a response, so that the client
9763/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9764impl std::ops::Drop for SocketCloseResponder {
9765    fn drop(&mut self) {
9766        self.control_handle.shutdown();
9767        // Safety: drops once, never accessed again
9768        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9769    }
9770}
9771
9772impl fidl::endpoints::Responder for SocketCloseResponder {
9773    type ControlHandle = SocketControlHandle;
9774
9775    fn control_handle(&self) -> &SocketControlHandle {
9776        &self.control_handle
9777    }
9778
9779    fn drop_without_shutdown(mut self) {
9780        // Safety: drops once, never accessed again due to mem::forget
9781        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9782        // Prevent Drop from running (which would shut down the channel)
9783        std::mem::forget(self);
9784    }
9785}
9786
9787impl SocketCloseResponder {
9788    /// Sends a response to the FIDL transaction.
9789    ///
9790    /// Sets the channel to shutdown if an error occurs.
9791    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9792        let _result = self.send_raw(result);
9793        if _result.is_err() {
9794            self.control_handle.shutdown();
9795        }
9796        self.drop_without_shutdown();
9797        _result
9798    }
9799
9800    /// Similar to "send" but does not shutdown the channel if an error occurs.
9801    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9802        let _result = self.send_raw(result);
9803        self.drop_without_shutdown();
9804        _result
9805    }
9806
9807    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9808        self.control_handle
9809            .inner
9810            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
9811                result,
9812                self.tx_id,
9813                0x5ac5d459ad7f657e,
9814                fidl::encoding::DynamicFlags::empty(),
9815            )
9816    }
9817}
9818
9819#[must_use = "FIDL methods require a response to be sent"]
9820#[derive(Debug)]
9821pub struct SocketQueryResponder {
9822    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9823    tx_id: u32,
9824}
9825
9826/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9827/// if the responder is dropped without sending a response, so that the client
9828/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9829impl std::ops::Drop for SocketQueryResponder {
9830    fn drop(&mut self) {
9831        self.control_handle.shutdown();
9832        // Safety: drops once, never accessed again
9833        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9834    }
9835}
9836
9837impl fidl::endpoints::Responder for SocketQueryResponder {
9838    type ControlHandle = SocketControlHandle;
9839
9840    fn control_handle(&self) -> &SocketControlHandle {
9841        &self.control_handle
9842    }
9843
9844    fn drop_without_shutdown(mut self) {
9845        // Safety: drops once, never accessed again due to mem::forget
9846        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9847        // Prevent Drop from running (which would shut down the channel)
9848        std::mem::forget(self);
9849    }
9850}
9851
9852impl SocketQueryResponder {
9853    /// Sends a response to the FIDL transaction.
9854    ///
9855    /// Sets the channel to shutdown if an error occurs.
9856    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9857        let _result = self.send_raw(protocol);
9858        if _result.is_err() {
9859            self.control_handle.shutdown();
9860        }
9861        self.drop_without_shutdown();
9862        _result
9863    }
9864
9865    /// Similar to "send" but does not shutdown the channel if an error occurs.
9866    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9867        let _result = self.send_raw(protocol);
9868        self.drop_without_shutdown();
9869        _result
9870    }
9871
9872    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9873        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
9874            (protocol,),
9875            self.tx_id,
9876            0x2658edee9decfc06,
9877            fidl::encoding::DynamicFlags::empty(),
9878        )
9879    }
9880}
9881
9882#[must_use = "FIDL methods require a response to be sent"]
9883#[derive(Debug)]
9884pub struct SocketSetReuseAddressResponder {
9885    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9886    tx_id: u32,
9887}
9888
9889/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9890/// if the responder is dropped without sending a response, so that the client
9891/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9892impl std::ops::Drop for SocketSetReuseAddressResponder {
9893    fn drop(&mut self) {
9894        self.control_handle.shutdown();
9895        // Safety: drops once, never accessed again
9896        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9897    }
9898}
9899
9900impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
9901    type ControlHandle = SocketControlHandle;
9902
9903    fn control_handle(&self) -> &SocketControlHandle {
9904        &self.control_handle
9905    }
9906
9907    fn drop_without_shutdown(mut self) {
9908        // Safety: drops once, never accessed again due to mem::forget
9909        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9910        // Prevent Drop from running (which would shut down the channel)
9911        std::mem::forget(self);
9912    }
9913}
9914
9915impl SocketSetReuseAddressResponder {
9916    /// Sends a response to the FIDL transaction.
9917    ///
9918    /// Sets the channel to shutdown if an error occurs.
9919    pub fn send(
9920        self,
9921        mut result: Result<(), fidl_fuchsia_posix::Errno>,
9922    ) -> Result<(), fidl::Error> {
9923        let _result = self.send_raw(result);
9924        if _result.is_err() {
9925            self.control_handle.shutdown();
9926        }
9927        self.drop_without_shutdown();
9928        _result
9929    }
9930
9931    /// Similar to "send" but does not shutdown the channel if an error occurs.
9932    pub fn send_no_shutdown_on_err(
9933        self,
9934        mut result: Result<(), fidl_fuchsia_posix::Errno>,
9935    ) -> Result<(), fidl::Error> {
9936        let _result = self.send_raw(result);
9937        self.drop_without_shutdown();
9938        _result
9939    }
9940
9941    fn send_raw(
9942        &self,
9943        mut result: Result<(), fidl_fuchsia_posix::Errno>,
9944    ) -> Result<(), fidl::Error> {
9945        self.control_handle.inner.send::<fidl::encoding::ResultType<
9946            fidl::encoding::EmptyStruct,
9947            fidl_fuchsia_posix::Errno,
9948        >>(
9949            result,
9950            self.tx_id,
9951            0x1fd74ee8b9a4a876,
9952            fidl::encoding::DynamicFlags::empty(),
9953        )
9954    }
9955}
9956
9957#[must_use = "FIDL methods require a response to be sent"]
9958#[derive(Debug)]
9959pub struct SocketGetReuseAddressResponder {
9960    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9961    tx_id: u32,
9962}
9963
9964/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9965/// if the responder is dropped without sending a response, so that the client
9966/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9967impl std::ops::Drop for SocketGetReuseAddressResponder {
9968    fn drop(&mut self) {
9969        self.control_handle.shutdown();
9970        // Safety: drops once, never accessed again
9971        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9972    }
9973}
9974
9975impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
9976    type ControlHandle = SocketControlHandle;
9977
9978    fn control_handle(&self) -> &SocketControlHandle {
9979        &self.control_handle
9980    }
9981
9982    fn drop_without_shutdown(mut self) {
9983        // Safety: drops once, never accessed again due to mem::forget
9984        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9985        // Prevent Drop from running (which would shut down the channel)
9986        std::mem::forget(self);
9987    }
9988}
9989
9990impl SocketGetReuseAddressResponder {
9991    /// Sends a response to the FIDL transaction.
9992    ///
9993    /// Sets the channel to shutdown if an error occurs.
9994    pub fn send(
9995        self,
9996        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
9997    ) -> Result<(), fidl::Error> {
9998        let _result = self.send_raw(result);
9999        if _result.is_err() {
10000            self.control_handle.shutdown();
10001        }
10002        self.drop_without_shutdown();
10003        _result
10004    }
10005
10006    /// Similar to "send" but does not shutdown the channel if an error occurs.
10007    pub fn send_no_shutdown_on_err(
10008        self,
10009        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10010    ) -> Result<(), fidl::Error> {
10011        let _result = self.send_raw(result);
10012        self.drop_without_shutdown();
10013        _result
10014    }
10015
10016    fn send_raw(
10017        &self,
10018        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10019    ) -> Result<(), fidl::Error> {
10020        self.control_handle.inner.send::<fidl::encoding::ResultType<
10021            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10022            fidl_fuchsia_posix::Errno,
10023        >>(
10024            result.map(|value| (value,)),
10025            self.tx_id,
10026            0x67b7206b8d1bc0a5,
10027            fidl::encoding::DynamicFlags::empty(),
10028        )
10029    }
10030}
10031
10032#[must_use = "FIDL methods require a response to be sent"]
10033#[derive(Debug)]
10034pub struct SocketGetErrorResponder {
10035    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10036    tx_id: u32,
10037}
10038
10039/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10040/// if the responder is dropped without sending a response, so that the client
10041/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10042impl std::ops::Drop for SocketGetErrorResponder {
10043    fn drop(&mut self) {
10044        self.control_handle.shutdown();
10045        // Safety: drops once, never accessed again
10046        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10047    }
10048}
10049
10050impl fidl::endpoints::Responder for SocketGetErrorResponder {
10051    type ControlHandle = SocketControlHandle;
10052
10053    fn control_handle(&self) -> &SocketControlHandle {
10054        &self.control_handle
10055    }
10056
10057    fn drop_without_shutdown(mut self) {
10058        // Safety: drops once, never accessed again due to mem::forget
10059        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10060        // Prevent Drop from running (which would shut down the channel)
10061        std::mem::forget(self);
10062    }
10063}
10064
10065impl SocketGetErrorResponder {
10066    /// Sends a response to the FIDL transaction.
10067    ///
10068    /// Sets the channel to shutdown if an error occurs.
10069    pub fn send(
10070        self,
10071        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10072    ) -> Result<(), fidl::Error> {
10073        let _result = self.send_raw(result);
10074        if _result.is_err() {
10075            self.control_handle.shutdown();
10076        }
10077        self.drop_without_shutdown();
10078        _result
10079    }
10080
10081    /// Similar to "send" but does not shutdown the channel if an error occurs.
10082    pub fn send_no_shutdown_on_err(
10083        self,
10084        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10085    ) -> Result<(), fidl::Error> {
10086        let _result = self.send_raw(result);
10087        self.drop_without_shutdown();
10088        _result
10089    }
10090
10091    fn send_raw(
10092        &self,
10093        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10094    ) -> Result<(), fidl::Error> {
10095        self.control_handle.inner.send::<fidl::encoding::ResultType<
10096            fidl::encoding::EmptyStruct,
10097            fidl_fuchsia_posix::Errno,
10098        >>(
10099            result,
10100            self.tx_id,
10101            0x5aad39b33e5f6ebb,
10102            fidl::encoding::DynamicFlags::empty(),
10103        )
10104    }
10105}
10106
10107#[must_use = "FIDL methods require a response to be sent"]
10108#[derive(Debug)]
10109pub struct SocketSetBroadcastResponder {
10110    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10111    tx_id: u32,
10112}
10113
10114/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10115/// if the responder is dropped without sending a response, so that the client
10116/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10117impl std::ops::Drop for SocketSetBroadcastResponder {
10118    fn drop(&mut self) {
10119        self.control_handle.shutdown();
10120        // Safety: drops once, never accessed again
10121        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10122    }
10123}
10124
10125impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10126    type ControlHandle = SocketControlHandle;
10127
10128    fn control_handle(&self) -> &SocketControlHandle {
10129        &self.control_handle
10130    }
10131
10132    fn drop_without_shutdown(mut self) {
10133        // Safety: drops once, never accessed again due to mem::forget
10134        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10135        // Prevent Drop from running (which would shut down the channel)
10136        std::mem::forget(self);
10137    }
10138}
10139
10140impl SocketSetBroadcastResponder {
10141    /// Sends a response to the FIDL transaction.
10142    ///
10143    /// Sets the channel to shutdown if an error occurs.
10144    pub fn send(
10145        self,
10146        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10147    ) -> Result<(), fidl::Error> {
10148        let _result = self.send_raw(result);
10149        if _result.is_err() {
10150            self.control_handle.shutdown();
10151        }
10152        self.drop_without_shutdown();
10153        _result
10154    }
10155
10156    /// Similar to "send" but does not shutdown the channel if an error occurs.
10157    pub fn send_no_shutdown_on_err(
10158        self,
10159        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10160    ) -> Result<(), fidl::Error> {
10161        let _result = self.send_raw(result);
10162        self.drop_without_shutdown();
10163        _result
10164    }
10165
10166    fn send_raw(
10167        &self,
10168        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10169    ) -> Result<(), fidl::Error> {
10170        self.control_handle.inner.send::<fidl::encoding::ResultType<
10171            fidl::encoding::EmptyStruct,
10172            fidl_fuchsia_posix::Errno,
10173        >>(
10174            result,
10175            self.tx_id,
10176            0x6023e081ce3cd947,
10177            fidl::encoding::DynamicFlags::empty(),
10178        )
10179    }
10180}
10181
10182#[must_use = "FIDL methods require a response to be sent"]
10183#[derive(Debug)]
10184pub struct SocketGetBroadcastResponder {
10185    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10186    tx_id: u32,
10187}
10188
10189/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10190/// if the responder is dropped without sending a response, so that the client
10191/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10192impl std::ops::Drop for SocketGetBroadcastResponder {
10193    fn drop(&mut self) {
10194        self.control_handle.shutdown();
10195        // Safety: drops once, never accessed again
10196        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10197    }
10198}
10199
10200impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10201    type ControlHandle = SocketControlHandle;
10202
10203    fn control_handle(&self) -> &SocketControlHandle {
10204        &self.control_handle
10205    }
10206
10207    fn drop_without_shutdown(mut self) {
10208        // Safety: drops once, never accessed again due to mem::forget
10209        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10210        // Prevent Drop from running (which would shut down the channel)
10211        std::mem::forget(self);
10212    }
10213}
10214
10215impl SocketGetBroadcastResponder {
10216    /// Sends a response to the FIDL transaction.
10217    ///
10218    /// Sets the channel to shutdown if an error occurs.
10219    pub fn send(
10220        self,
10221        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10222    ) -> Result<(), fidl::Error> {
10223        let _result = self.send_raw(result);
10224        if _result.is_err() {
10225            self.control_handle.shutdown();
10226        }
10227        self.drop_without_shutdown();
10228        _result
10229    }
10230
10231    /// Similar to "send" but does not shutdown the channel if an error occurs.
10232    pub fn send_no_shutdown_on_err(
10233        self,
10234        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10235    ) -> Result<(), fidl::Error> {
10236        let _result = self.send_raw(result);
10237        self.drop_without_shutdown();
10238        _result
10239    }
10240
10241    fn send_raw(
10242        &self,
10243        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10244    ) -> Result<(), fidl::Error> {
10245        self.control_handle.inner.send::<fidl::encoding::ResultType<
10246            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10247            fidl_fuchsia_posix::Errno,
10248        >>(
10249            result.map(|value| (value,)),
10250            self.tx_id,
10251            0x68796fc556f9780d,
10252            fidl::encoding::DynamicFlags::empty(),
10253        )
10254    }
10255}
10256
10257#[must_use = "FIDL methods require a response to be sent"]
10258#[derive(Debug)]
10259pub struct SocketSetSendBufferResponder {
10260    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10261    tx_id: u32,
10262}
10263
10264/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10265/// if the responder is dropped without sending a response, so that the client
10266/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10267impl std::ops::Drop for SocketSetSendBufferResponder {
10268    fn drop(&mut self) {
10269        self.control_handle.shutdown();
10270        // Safety: drops once, never accessed again
10271        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10272    }
10273}
10274
10275impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10276    type ControlHandle = SocketControlHandle;
10277
10278    fn control_handle(&self) -> &SocketControlHandle {
10279        &self.control_handle
10280    }
10281
10282    fn drop_without_shutdown(mut self) {
10283        // Safety: drops once, never accessed again due to mem::forget
10284        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10285        // Prevent Drop from running (which would shut down the channel)
10286        std::mem::forget(self);
10287    }
10288}
10289
10290impl SocketSetSendBufferResponder {
10291    /// Sends a response to the FIDL transaction.
10292    ///
10293    /// Sets the channel to shutdown if an error occurs.
10294    pub fn send(
10295        self,
10296        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10297    ) -> Result<(), fidl::Error> {
10298        let _result = self.send_raw(result);
10299        if _result.is_err() {
10300            self.control_handle.shutdown();
10301        }
10302        self.drop_without_shutdown();
10303        _result
10304    }
10305
10306    /// Similar to "send" but does not shutdown the channel if an error occurs.
10307    pub fn send_no_shutdown_on_err(
10308        self,
10309        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10310    ) -> Result<(), fidl::Error> {
10311        let _result = self.send_raw(result);
10312        self.drop_without_shutdown();
10313        _result
10314    }
10315
10316    fn send_raw(
10317        &self,
10318        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10319    ) -> Result<(), fidl::Error> {
10320        self.control_handle.inner.send::<fidl::encoding::ResultType<
10321            fidl::encoding::EmptyStruct,
10322            fidl_fuchsia_posix::Errno,
10323        >>(
10324            result,
10325            self.tx_id,
10326            0x756eac32d73a7a70,
10327            fidl::encoding::DynamicFlags::empty(),
10328        )
10329    }
10330}
10331
10332#[must_use = "FIDL methods require a response to be sent"]
10333#[derive(Debug)]
10334pub struct SocketGetSendBufferResponder {
10335    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10336    tx_id: u32,
10337}
10338
10339/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10340/// if the responder is dropped without sending a response, so that the client
10341/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10342impl std::ops::Drop for SocketGetSendBufferResponder {
10343    fn drop(&mut self) {
10344        self.control_handle.shutdown();
10345        // Safety: drops once, never accessed again
10346        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10347    }
10348}
10349
10350impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10351    type ControlHandle = SocketControlHandle;
10352
10353    fn control_handle(&self) -> &SocketControlHandle {
10354        &self.control_handle
10355    }
10356
10357    fn drop_without_shutdown(mut self) {
10358        // Safety: drops once, never accessed again due to mem::forget
10359        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10360        // Prevent Drop from running (which would shut down the channel)
10361        std::mem::forget(self);
10362    }
10363}
10364
10365impl SocketGetSendBufferResponder {
10366    /// Sends a response to the FIDL transaction.
10367    ///
10368    /// Sets the channel to shutdown if an error occurs.
10369    pub fn send(
10370        self,
10371        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10372    ) -> Result<(), fidl::Error> {
10373        let _result = self.send_raw(result);
10374        if _result.is_err() {
10375            self.control_handle.shutdown();
10376        }
10377        self.drop_without_shutdown();
10378        _result
10379    }
10380
10381    /// Similar to "send" but does not shutdown the channel if an error occurs.
10382    pub fn send_no_shutdown_on_err(
10383        self,
10384        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10385    ) -> Result<(), fidl::Error> {
10386        let _result = self.send_raw(result);
10387        self.drop_without_shutdown();
10388        _result
10389    }
10390
10391    fn send_raw(
10392        &self,
10393        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10394    ) -> Result<(), fidl::Error> {
10395        self.control_handle.inner.send::<fidl::encoding::ResultType<
10396            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10397            fidl_fuchsia_posix::Errno,
10398        >>(
10399            result.map(|value_bytes| (value_bytes,)),
10400            self.tx_id,
10401            0x78a52fd9c7b2410b,
10402            fidl::encoding::DynamicFlags::empty(),
10403        )
10404    }
10405}
10406
10407#[must_use = "FIDL methods require a response to be sent"]
10408#[derive(Debug)]
10409pub struct SocketSetReceiveBufferResponder {
10410    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10411    tx_id: u32,
10412}
10413
10414/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10415/// if the responder is dropped without sending a response, so that the client
10416/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10417impl std::ops::Drop for SocketSetReceiveBufferResponder {
10418    fn drop(&mut self) {
10419        self.control_handle.shutdown();
10420        // Safety: drops once, never accessed again
10421        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10422    }
10423}
10424
10425impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10426    type ControlHandle = SocketControlHandle;
10427
10428    fn control_handle(&self) -> &SocketControlHandle {
10429        &self.control_handle
10430    }
10431
10432    fn drop_without_shutdown(mut self) {
10433        // Safety: drops once, never accessed again due to mem::forget
10434        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10435        // Prevent Drop from running (which would shut down the channel)
10436        std::mem::forget(self);
10437    }
10438}
10439
10440impl SocketSetReceiveBufferResponder {
10441    /// Sends a response to the FIDL transaction.
10442    ///
10443    /// Sets the channel to shutdown if an error occurs.
10444    pub fn send(
10445        self,
10446        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10447    ) -> Result<(), fidl::Error> {
10448        let _result = self.send_raw(result);
10449        if _result.is_err() {
10450            self.control_handle.shutdown();
10451        }
10452        self.drop_without_shutdown();
10453        _result
10454    }
10455
10456    /// Similar to "send" but does not shutdown the channel if an error occurs.
10457    pub fn send_no_shutdown_on_err(
10458        self,
10459        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10460    ) -> Result<(), fidl::Error> {
10461        let _result = self.send_raw(result);
10462        self.drop_without_shutdown();
10463        _result
10464    }
10465
10466    fn send_raw(
10467        &self,
10468        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10469    ) -> Result<(), fidl::Error> {
10470        self.control_handle.inner.send::<fidl::encoding::ResultType<
10471            fidl::encoding::EmptyStruct,
10472            fidl_fuchsia_posix::Errno,
10473        >>(
10474            result,
10475            self.tx_id,
10476            0x6b0cf2f1919c7001,
10477            fidl::encoding::DynamicFlags::empty(),
10478        )
10479    }
10480}
10481
10482#[must_use = "FIDL methods require a response to be sent"]
10483#[derive(Debug)]
10484pub struct SocketGetReceiveBufferResponder {
10485    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10486    tx_id: u32,
10487}
10488
10489/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10490/// if the responder is dropped without sending a response, so that the client
10491/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10492impl std::ops::Drop for SocketGetReceiveBufferResponder {
10493    fn drop(&mut self) {
10494        self.control_handle.shutdown();
10495        // Safety: drops once, never accessed again
10496        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10497    }
10498}
10499
10500impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10501    type ControlHandle = SocketControlHandle;
10502
10503    fn control_handle(&self) -> &SocketControlHandle {
10504        &self.control_handle
10505    }
10506
10507    fn drop_without_shutdown(mut self) {
10508        // Safety: drops once, never accessed again due to mem::forget
10509        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10510        // Prevent Drop from running (which would shut down the channel)
10511        std::mem::forget(self);
10512    }
10513}
10514
10515impl SocketGetReceiveBufferResponder {
10516    /// Sends a response to the FIDL transaction.
10517    ///
10518    /// Sets the channel to shutdown if an error occurs.
10519    pub fn send(
10520        self,
10521        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10522    ) -> Result<(), fidl::Error> {
10523        let _result = self.send_raw(result);
10524        if _result.is_err() {
10525            self.control_handle.shutdown();
10526        }
10527        self.drop_without_shutdown();
10528        _result
10529    }
10530
10531    /// Similar to "send" but does not shutdown the channel if an error occurs.
10532    pub fn send_no_shutdown_on_err(
10533        self,
10534        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10535    ) -> Result<(), fidl::Error> {
10536        let _result = self.send_raw(result);
10537        self.drop_without_shutdown();
10538        _result
10539    }
10540
10541    fn send_raw(
10542        &self,
10543        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10544    ) -> Result<(), fidl::Error> {
10545        self.control_handle.inner.send::<fidl::encoding::ResultType<
10546            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10547            fidl_fuchsia_posix::Errno,
10548        >>(
10549            result.map(|value_bytes| (value_bytes,)),
10550            self.tx_id,
10551            0x14c1a4b64f709e5c,
10552            fidl::encoding::DynamicFlags::empty(),
10553        )
10554    }
10555}
10556
10557#[must_use = "FIDL methods require a response to be sent"]
10558#[derive(Debug)]
10559pub struct SocketSetKeepAliveResponder {
10560    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10561    tx_id: u32,
10562}
10563
10564/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10565/// if the responder is dropped without sending a response, so that the client
10566/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10567impl std::ops::Drop for SocketSetKeepAliveResponder {
10568    fn drop(&mut self) {
10569        self.control_handle.shutdown();
10570        // Safety: drops once, never accessed again
10571        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10572    }
10573}
10574
10575impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10576    type ControlHandle = SocketControlHandle;
10577
10578    fn control_handle(&self) -> &SocketControlHandle {
10579        &self.control_handle
10580    }
10581
10582    fn drop_without_shutdown(mut self) {
10583        // Safety: drops once, never accessed again due to mem::forget
10584        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10585        // Prevent Drop from running (which would shut down the channel)
10586        std::mem::forget(self);
10587    }
10588}
10589
10590impl SocketSetKeepAliveResponder {
10591    /// Sends a response to the FIDL transaction.
10592    ///
10593    /// Sets the channel to shutdown if an error occurs.
10594    pub fn send(
10595        self,
10596        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10597    ) -> Result<(), fidl::Error> {
10598        let _result = self.send_raw(result);
10599        if _result.is_err() {
10600            self.control_handle.shutdown();
10601        }
10602        self.drop_without_shutdown();
10603        _result
10604    }
10605
10606    /// Similar to "send" but does not shutdown the channel if an error occurs.
10607    pub fn send_no_shutdown_on_err(
10608        self,
10609        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10610    ) -> Result<(), fidl::Error> {
10611        let _result = self.send_raw(result);
10612        self.drop_without_shutdown();
10613        _result
10614    }
10615
10616    fn send_raw(
10617        &self,
10618        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10619    ) -> Result<(), fidl::Error> {
10620        self.control_handle.inner.send::<fidl::encoding::ResultType<
10621            fidl::encoding::EmptyStruct,
10622            fidl_fuchsia_posix::Errno,
10623        >>(
10624            result,
10625            self.tx_id,
10626            0x572df8f0b920d2c7,
10627            fidl::encoding::DynamicFlags::empty(),
10628        )
10629    }
10630}
10631
10632#[must_use = "FIDL methods require a response to be sent"]
10633#[derive(Debug)]
10634pub struct SocketGetKeepAliveResponder {
10635    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10636    tx_id: u32,
10637}
10638
10639/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10640/// if the responder is dropped without sending a response, so that the client
10641/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10642impl std::ops::Drop for SocketGetKeepAliveResponder {
10643    fn drop(&mut self) {
10644        self.control_handle.shutdown();
10645        // Safety: drops once, never accessed again
10646        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10647    }
10648}
10649
10650impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10651    type ControlHandle = SocketControlHandle;
10652
10653    fn control_handle(&self) -> &SocketControlHandle {
10654        &self.control_handle
10655    }
10656
10657    fn drop_without_shutdown(mut self) {
10658        // Safety: drops once, never accessed again due to mem::forget
10659        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10660        // Prevent Drop from running (which would shut down the channel)
10661        std::mem::forget(self);
10662    }
10663}
10664
10665impl SocketGetKeepAliveResponder {
10666    /// Sends a response to the FIDL transaction.
10667    ///
10668    /// Sets the channel to shutdown if an error occurs.
10669    pub fn send(
10670        self,
10671        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10672    ) -> Result<(), fidl::Error> {
10673        let _result = self.send_raw(result);
10674        if _result.is_err() {
10675            self.control_handle.shutdown();
10676        }
10677        self.drop_without_shutdown();
10678        _result
10679    }
10680
10681    /// Similar to "send" but does not shutdown the channel if an error occurs.
10682    pub fn send_no_shutdown_on_err(
10683        self,
10684        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10685    ) -> Result<(), fidl::Error> {
10686        let _result = self.send_raw(result);
10687        self.drop_without_shutdown();
10688        _result
10689    }
10690
10691    fn send_raw(
10692        &self,
10693        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10694    ) -> Result<(), fidl::Error> {
10695        self.control_handle.inner.send::<fidl::encoding::ResultType<
10696            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10697            fidl_fuchsia_posix::Errno,
10698        >>(
10699            result.map(|value| (value,)),
10700            self.tx_id,
10701            0x2dd29d3215f2c9d2,
10702            fidl::encoding::DynamicFlags::empty(),
10703        )
10704    }
10705}
10706
10707#[must_use = "FIDL methods require a response to be sent"]
10708#[derive(Debug)]
10709pub struct SocketSetOutOfBandInlineResponder {
10710    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10711    tx_id: u32,
10712}
10713
10714/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10715/// if the responder is dropped without sending a response, so that the client
10716/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10717impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10718    fn drop(&mut self) {
10719        self.control_handle.shutdown();
10720        // Safety: drops once, never accessed again
10721        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10722    }
10723}
10724
10725impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10726    type ControlHandle = SocketControlHandle;
10727
10728    fn control_handle(&self) -> &SocketControlHandle {
10729        &self.control_handle
10730    }
10731
10732    fn drop_without_shutdown(mut self) {
10733        // Safety: drops once, never accessed again due to mem::forget
10734        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10735        // Prevent Drop from running (which would shut down the channel)
10736        std::mem::forget(self);
10737    }
10738}
10739
10740impl SocketSetOutOfBandInlineResponder {
10741    /// Sends a response to the FIDL transaction.
10742    ///
10743    /// Sets the channel to shutdown if an error occurs.
10744    pub fn send(
10745        self,
10746        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10747    ) -> Result<(), fidl::Error> {
10748        let _result = self.send_raw(result);
10749        if _result.is_err() {
10750            self.control_handle.shutdown();
10751        }
10752        self.drop_without_shutdown();
10753        _result
10754    }
10755
10756    /// Similar to "send" but does not shutdown the channel if an error occurs.
10757    pub fn send_no_shutdown_on_err(
10758        self,
10759        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10760    ) -> Result<(), fidl::Error> {
10761        let _result = self.send_raw(result);
10762        self.drop_without_shutdown();
10763        _result
10764    }
10765
10766    fn send_raw(
10767        &self,
10768        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10769    ) -> Result<(), fidl::Error> {
10770        self.control_handle.inner.send::<fidl::encoding::ResultType<
10771            fidl::encoding::EmptyStruct,
10772            fidl_fuchsia_posix::Errno,
10773        >>(
10774            result,
10775            self.tx_id,
10776            0x3ecb49968bee439,
10777            fidl::encoding::DynamicFlags::empty(),
10778        )
10779    }
10780}
10781
10782#[must_use = "FIDL methods require a response to be sent"]
10783#[derive(Debug)]
10784pub struct SocketGetOutOfBandInlineResponder {
10785    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10786    tx_id: u32,
10787}
10788
10789/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10790/// if the responder is dropped without sending a response, so that the client
10791/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10792impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
10793    fn drop(&mut self) {
10794        self.control_handle.shutdown();
10795        // Safety: drops once, never accessed again
10796        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10797    }
10798}
10799
10800impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
10801    type ControlHandle = SocketControlHandle;
10802
10803    fn control_handle(&self) -> &SocketControlHandle {
10804        &self.control_handle
10805    }
10806
10807    fn drop_without_shutdown(mut self) {
10808        // Safety: drops once, never accessed again due to mem::forget
10809        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10810        // Prevent Drop from running (which would shut down the channel)
10811        std::mem::forget(self);
10812    }
10813}
10814
10815impl SocketGetOutOfBandInlineResponder {
10816    /// Sends a response to the FIDL transaction.
10817    ///
10818    /// Sets the channel to shutdown if an error occurs.
10819    pub fn send(
10820        self,
10821        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10822    ) -> Result<(), fidl::Error> {
10823        let _result = self.send_raw(result);
10824        if _result.is_err() {
10825            self.control_handle.shutdown();
10826        }
10827        self.drop_without_shutdown();
10828        _result
10829    }
10830
10831    /// Similar to "send" but does not shutdown the channel if an error occurs.
10832    pub fn send_no_shutdown_on_err(
10833        self,
10834        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10835    ) -> Result<(), fidl::Error> {
10836        let _result = self.send_raw(result);
10837        self.drop_without_shutdown();
10838        _result
10839    }
10840
10841    fn send_raw(
10842        &self,
10843        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10844    ) -> Result<(), fidl::Error> {
10845        self.control_handle.inner.send::<fidl::encoding::ResultType<
10846            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
10847            fidl_fuchsia_posix::Errno,
10848        >>(
10849            result.map(|value| (value,)),
10850            self.tx_id,
10851            0x348c1ab3aeca1745,
10852            fidl::encoding::DynamicFlags::empty(),
10853        )
10854    }
10855}
10856
10857#[must_use = "FIDL methods require a response to be sent"]
10858#[derive(Debug)]
10859pub struct SocketSetNoCheckResponder {
10860    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10861    tx_id: u32,
10862}
10863
10864/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10865/// if the responder is dropped without sending a response, so that the client
10866/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10867impl std::ops::Drop for SocketSetNoCheckResponder {
10868    fn drop(&mut self) {
10869        self.control_handle.shutdown();
10870        // Safety: drops once, never accessed again
10871        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10872    }
10873}
10874
10875impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
10876    type ControlHandle = SocketControlHandle;
10877
10878    fn control_handle(&self) -> &SocketControlHandle {
10879        &self.control_handle
10880    }
10881
10882    fn drop_without_shutdown(mut self) {
10883        // Safety: drops once, never accessed again due to mem::forget
10884        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10885        // Prevent Drop from running (which would shut down the channel)
10886        std::mem::forget(self);
10887    }
10888}
10889
10890impl SocketSetNoCheckResponder {
10891    /// Sends a response to the FIDL transaction.
10892    ///
10893    /// Sets the channel to shutdown if an error occurs.
10894    pub fn send(
10895        self,
10896        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10897    ) -> Result<(), fidl::Error> {
10898        let _result = self.send_raw(result);
10899        if _result.is_err() {
10900            self.control_handle.shutdown();
10901        }
10902        self.drop_without_shutdown();
10903        _result
10904    }
10905
10906    /// Similar to "send" but does not shutdown the channel if an error occurs.
10907    pub fn send_no_shutdown_on_err(
10908        self,
10909        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10910    ) -> Result<(), fidl::Error> {
10911        let _result = self.send_raw(result);
10912        self.drop_without_shutdown();
10913        _result
10914    }
10915
10916    fn send_raw(
10917        &self,
10918        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10919    ) -> Result<(), fidl::Error> {
10920        self.control_handle.inner.send::<fidl::encoding::ResultType<
10921            fidl::encoding::EmptyStruct,
10922            fidl_fuchsia_posix::Errno,
10923        >>(
10924            result,
10925            self.tx_id,
10926            0x6bbf00c53a4c78c2,
10927            fidl::encoding::DynamicFlags::empty(),
10928        )
10929    }
10930}
10931
10932#[must_use = "FIDL methods require a response to be sent"]
10933#[derive(Debug)]
10934pub struct SocketGetNoCheckResponder {
10935    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10936    tx_id: u32,
10937}
10938
10939/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10940/// if the responder is dropped without sending a response, so that the client
10941/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10942impl std::ops::Drop for SocketGetNoCheckResponder {
10943    fn drop(&mut self) {
10944        self.control_handle.shutdown();
10945        // Safety: drops once, never accessed again
10946        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10947    }
10948}
10949
10950impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
10951    type ControlHandle = SocketControlHandle;
10952
10953    fn control_handle(&self) -> &SocketControlHandle {
10954        &self.control_handle
10955    }
10956
10957    fn drop_without_shutdown(mut self) {
10958        // Safety: drops once, never accessed again due to mem::forget
10959        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10960        // Prevent Drop from running (which would shut down the channel)
10961        std::mem::forget(self);
10962    }
10963}
10964
10965impl SocketGetNoCheckResponder {
10966    /// Sends a response to the FIDL transaction.
10967    ///
10968    /// Sets the channel to shutdown if an error occurs.
10969    pub fn send(
10970        self,
10971        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10972    ) -> Result<(), fidl::Error> {
10973        let _result = self.send_raw(result);
10974        if _result.is_err() {
10975            self.control_handle.shutdown();
10976        }
10977        self.drop_without_shutdown();
10978        _result
10979    }
10980
10981    /// Similar to "send" but does not shutdown the channel if an error occurs.
10982    pub fn send_no_shutdown_on_err(
10983        self,
10984        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10985    ) -> Result<(), fidl::Error> {
10986        let _result = self.send_raw(result);
10987        self.drop_without_shutdown();
10988        _result
10989    }
10990
10991    fn send_raw(
10992        &self,
10993        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10994    ) -> Result<(), fidl::Error> {
10995        self.control_handle.inner.send::<fidl::encoding::ResultType<
10996            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
10997            fidl_fuchsia_posix::Errno,
10998        >>(
10999            result.map(|value| (value,)),
11000            self.tx_id,
11001            0x2cd4249286417694,
11002            fidl::encoding::DynamicFlags::empty(),
11003        )
11004    }
11005}
11006
11007#[must_use = "FIDL methods require a response to be sent"]
11008#[derive(Debug)]
11009pub struct SocketSetLingerResponder {
11010    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11011    tx_id: u32,
11012}
11013
11014/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11015/// if the responder is dropped without sending a response, so that the client
11016/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11017impl std::ops::Drop for SocketSetLingerResponder {
11018    fn drop(&mut self) {
11019        self.control_handle.shutdown();
11020        // Safety: drops once, never accessed again
11021        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11022    }
11023}
11024
11025impl fidl::endpoints::Responder for SocketSetLingerResponder {
11026    type ControlHandle = SocketControlHandle;
11027
11028    fn control_handle(&self) -> &SocketControlHandle {
11029        &self.control_handle
11030    }
11031
11032    fn drop_without_shutdown(mut self) {
11033        // Safety: drops once, never accessed again due to mem::forget
11034        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11035        // Prevent Drop from running (which would shut down the channel)
11036        std::mem::forget(self);
11037    }
11038}
11039
11040impl SocketSetLingerResponder {
11041    /// Sends a response to the FIDL transaction.
11042    ///
11043    /// Sets the channel to shutdown if an error occurs.
11044    pub fn send(
11045        self,
11046        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11047    ) -> Result<(), fidl::Error> {
11048        let _result = self.send_raw(result);
11049        if _result.is_err() {
11050            self.control_handle.shutdown();
11051        }
11052        self.drop_without_shutdown();
11053        _result
11054    }
11055
11056    /// Similar to "send" but does not shutdown the channel if an error occurs.
11057    pub fn send_no_shutdown_on_err(
11058        self,
11059        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11060    ) -> Result<(), fidl::Error> {
11061        let _result = self.send_raw(result);
11062        self.drop_without_shutdown();
11063        _result
11064    }
11065
11066    fn send_raw(
11067        &self,
11068        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11069    ) -> Result<(), fidl::Error> {
11070        self.control_handle.inner.send::<fidl::encoding::ResultType<
11071            fidl::encoding::EmptyStruct,
11072            fidl_fuchsia_posix::Errno,
11073        >>(
11074            result,
11075            self.tx_id,
11076            0x45386351246e998e,
11077            fidl::encoding::DynamicFlags::empty(),
11078        )
11079    }
11080}
11081
11082#[must_use = "FIDL methods require a response to be sent"]
11083#[derive(Debug)]
11084pub struct SocketGetLingerResponder {
11085    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11086    tx_id: u32,
11087}
11088
11089/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11090/// if the responder is dropped without sending a response, so that the client
11091/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11092impl std::ops::Drop for SocketGetLingerResponder {
11093    fn drop(&mut self) {
11094        self.control_handle.shutdown();
11095        // Safety: drops once, never accessed again
11096        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11097    }
11098}
11099
11100impl fidl::endpoints::Responder for SocketGetLingerResponder {
11101    type ControlHandle = SocketControlHandle;
11102
11103    fn control_handle(&self) -> &SocketControlHandle {
11104        &self.control_handle
11105    }
11106
11107    fn drop_without_shutdown(mut self) {
11108        // Safety: drops once, never accessed again due to mem::forget
11109        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11110        // Prevent Drop from running (which would shut down the channel)
11111        std::mem::forget(self);
11112    }
11113}
11114
11115impl SocketGetLingerResponder {
11116    /// Sends a response to the FIDL transaction.
11117    ///
11118    /// Sets the channel to shutdown if an error occurs.
11119    pub fn send(
11120        self,
11121        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11122    ) -> Result<(), fidl::Error> {
11123        let _result = self.send_raw(result);
11124        if _result.is_err() {
11125            self.control_handle.shutdown();
11126        }
11127        self.drop_without_shutdown();
11128        _result
11129    }
11130
11131    /// Similar to "send" but does not shutdown the channel if an error occurs.
11132    pub fn send_no_shutdown_on_err(
11133        self,
11134        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11135    ) -> Result<(), fidl::Error> {
11136        let _result = self.send_raw(result);
11137        self.drop_without_shutdown();
11138        _result
11139    }
11140
11141    fn send_raw(
11142        &self,
11143        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11144    ) -> Result<(), fidl::Error> {
11145        self.control_handle.inner.send::<fidl::encoding::ResultType<
11146            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11147            fidl_fuchsia_posix::Errno,
11148        >>(
11149            result,
11150            self.tx_id,
11151            0x48eb20fc5ccb0e45,
11152            fidl::encoding::DynamicFlags::empty(),
11153        )
11154    }
11155}
11156
11157#[must_use = "FIDL methods require a response to be sent"]
11158#[derive(Debug)]
11159pub struct SocketSetReusePortResponder {
11160    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11161    tx_id: u32,
11162}
11163
11164/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11165/// if the responder is dropped without sending a response, so that the client
11166/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11167impl std::ops::Drop for SocketSetReusePortResponder {
11168    fn drop(&mut self) {
11169        self.control_handle.shutdown();
11170        // Safety: drops once, never accessed again
11171        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11172    }
11173}
11174
11175impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11176    type ControlHandle = SocketControlHandle;
11177
11178    fn control_handle(&self) -> &SocketControlHandle {
11179        &self.control_handle
11180    }
11181
11182    fn drop_without_shutdown(mut self) {
11183        // Safety: drops once, never accessed again due to mem::forget
11184        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11185        // Prevent Drop from running (which would shut down the channel)
11186        std::mem::forget(self);
11187    }
11188}
11189
11190impl SocketSetReusePortResponder {
11191    /// Sends a response to the FIDL transaction.
11192    ///
11193    /// Sets the channel to shutdown if an error occurs.
11194    pub fn send(
11195        self,
11196        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11197    ) -> Result<(), fidl::Error> {
11198        let _result = self.send_raw(result);
11199        if _result.is_err() {
11200            self.control_handle.shutdown();
11201        }
11202        self.drop_without_shutdown();
11203        _result
11204    }
11205
11206    /// Similar to "send" but does not shutdown the channel if an error occurs.
11207    pub fn send_no_shutdown_on_err(
11208        self,
11209        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11210    ) -> Result<(), fidl::Error> {
11211        let _result = self.send_raw(result);
11212        self.drop_without_shutdown();
11213        _result
11214    }
11215
11216    fn send_raw(
11217        &self,
11218        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11219    ) -> Result<(), fidl::Error> {
11220        self.control_handle.inner.send::<fidl::encoding::ResultType<
11221            fidl::encoding::EmptyStruct,
11222            fidl_fuchsia_posix::Errno,
11223        >>(
11224            result,
11225            self.tx_id,
11226            0x24dd3e5cb36d9ccb,
11227            fidl::encoding::DynamicFlags::empty(),
11228        )
11229    }
11230}
11231
11232#[must_use = "FIDL methods require a response to be sent"]
11233#[derive(Debug)]
11234pub struct SocketGetReusePortResponder {
11235    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11236    tx_id: u32,
11237}
11238
11239/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11240/// if the responder is dropped without sending a response, so that the client
11241/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11242impl std::ops::Drop for SocketGetReusePortResponder {
11243    fn drop(&mut self) {
11244        self.control_handle.shutdown();
11245        // Safety: drops once, never accessed again
11246        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11247    }
11248}
11249
11250impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11251    type ControlHandle = SocketControlHandle;
11252
11253    fn control_handle(&self) -> &SocketControlHandle {
11254        &self.control_handle
11255    }
11256
11257    fn drop_without_shutdown(mut self) {
11258        // Safety: drops once, never accessed again due to mem::forget
11259        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11260        // Prevent Drop from running (which would shut down the channel)
11261        std::mem::forget(self);
11262    }
11263}
11264
11265impl SocketGetReusePortResponder {
11266    /// Sends a response to the FIDL transaction.
11267    ///
11268    /// Sets the channel to shutdown if an error occurs.
11269    pub fn send(
11270        self,
11271        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11272    ) -> Result<(), fidl::Error> {
11273        let _result = self.send_raw(result);
11274        if _result.is_err() {
11275            self.control_handle.shutdown();
11276        }
11277        self.drop_without_shutdown();
11278        _result
11279    }
11280
11281    /// Similar to "send" but does not shutdown the channel if an error occurs.
11282    pub fn send_no_shutdown_on_err(
11283        self,
11284        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11285    ) -> Result<(), fidl::Error> {
11286        let _result = self.send_raw(result);
11287        self.drop_without_shutdown();
11288        _result
11289    }
11290
11291    fn send_raw(
11292        &self,
11293        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11294    ) -> Result<(), fidl::Error> {
11295        self.control_handle.inner.send::<fidl::encoding::ResultType<
11296            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11297            fidl_fuchsia_posix::Errno,
11298        >>(
11299            result.map(|value| (value,)),
11300            self.tx_id,
11301            0x7a112c1ab54ff828,
11302            fidl::encoding::DynamicFlags::empty(),
11303        )
11304    }
11305}
11306
11307#[must_use = "FIDL methods require a response to be sent"]
11308#[derive(Debug)]
11309pub struct SocketGetAcceptConnResponder {
11310    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11311    tx_id: u32,
11312}
11313
11314/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11315/// if the responder is dropped without sending a response, so that the client
11316/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11317impl std::ops::Drop for SocketGetAcceptConnResponder {
11318    fn drop(&mut self) {
11319        self.control_handle.shutdown();
11320        // Safety: drops once, never accessed again
11321        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11322    }
11323}
11324
11325impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11326    type ControlHandle = SocketControlHandle;
11327
11328    fn control_handle(&self) -> &SocketControlHandle {
11329        &self.control_handle
11330    }
11331
11332    fn drop_without_shutdown(mut self) {
11333        // Safety: drops once, never accessed again due to mem::forget
11334        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11335        // Prevent Drop from running (which would shut down the channel)
11336        std::mem::forget(self);
11337    }
11338}
11339
11340impl SocketGetAcceptConnResponder {
11341    /// Sends a response to the FIDL transaction.
11342    ///
11343    /// Sets the channel to shutdown if an error occurs.
11344    pub fn send(
11345        self,
11346        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11347    ) -> Result<(), fidl::Error> {
11348        let _result = self.send_raw(result);
11349        if _result.is_err() {
11350            self.control_handle.shutdown();
11351        }
11352        self.drop_without_shutdown();
11353        _result
11354    }
11355
11356    /// Similar to "send" but does not shutdown the channel if an error occurs.
11357    pub fn send_no_shutdown_on_err(
11358        self,
11359        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11360    ) -> Result<(), fidl::Error> {
11361        let _result = self.send_raw(result);
11362        self.drop_without_shutdown();
11363        _result
11364    }
11365
11366    fn send_raw(
11367        &self,
11368        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11369    ) -> Result<(), fidl::Error> {
11370        self.control_handle.inner.send::<fidl::encoding::ResultType<
11371            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11372            fidl_fuchsia_posix::Errno,
11373        >>(
11374            result.map(|value| (value,)),
11375            self.tx_id,
11376            0x67ce6db6c2ec8966,
11377            fidl::encoding::DynamicFlags::empty(),
11378        )
11379    }
11380}
11381
11382#[must_use = "FIDL methods require a response to be sent"]
11383#[derive(Debug)]
11384pub struct SocketSetBindToDeviceResponder {
11385    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11386    tx_id: u32,
11387}
11388
11389/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11390/// if the responder is dropped without sending a response, so that the client
11391/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11392impl std::ops::Drop for SocketSetBindToDeviceResponder {
11393    fn drop(&mut self) {
11394        self.control_handle.shutdown();
11395        // Safety: drops once, never accessed again
11396        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11397    }
11398}
11399
11400impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11401    type ControlHandle = SocketControlHandle;
11402
11403    fn control_handle(&self) -> &SocketControlHandle {
11404        &self.control_handle
11405    }
11406
11407    fn drop_without_shutdown(mut self) {
11408        // Safety: drops once, never accessed again due to mem::forget
11409        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11410        // Prevent Drop from running (which would shut down the channel)
11411        std::mem::forget(self);
11412    }
11413}
11414
11415impl SocketSetBindToDeviceResponder {
11416    /// Sends a response to the FIDL transaction.
11417    ///
11418    /// Sets the channel to shutdown if an error occurs.
11419    pub fn send(
11420        self,
11421        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11422    ) -> Result<(), fidl::Error> {
11423        let _result = self.send_raw(result);
11424        if _result.is_err() {
11425            self.control_handle.shutdown();
11426        }
11427        self.drop_without_shutdown();
11428        _result
11429    }
11430
11431    /// Similar to "send" but does not shutdown the channel if an error occurs.
11432    pub fn send_no_shutdown_on_err(
11433        self,
11434        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11435    ) -> Result<(), fidl::Error> {
11436        let _result = self.send_raw(result);
11437        self.drop_without_shutdown();
11438        _result
11439    }
11440
11441    fn send_raw(
11442        &self,
11443        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11444    ) -> Result<(), fidl::Error> {
11445        self.control_handle.inner.send::<fidl::encoding::ResultType<
11446            fidl::encoding::EmptyStruct,
11447            fidl_fuchsia_posix::Errno,
11448        >>(
11449            result,
11450            self.tx_id,
11451            0x2118b483f28aafc4,
11452            fidl::encoding::DynamicFlags::empty(),
11453        )
11454    }
11455}
11456
11457#[must_use = "FIDL methods require a response to be sent"]
11458#[derive(Debug)]
11459pub struct SocketGetBindToDeviceResponder {
11460    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11461    tx_id: u32,
11462}
11463
11464/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11465/// if the responder is dropped without sending a response, so that the client
11466/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11467impl std::ops::Drop for SocketGetBindToDeviceResponder {
11468    fn drop(&mut self) {
11469        self.control_handle.shutdown();
11470        // Safety: drops once, never accessed again
11471        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11472    }
11473}
11474
11475impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11476    type ControlHandle = SocketControlHandle;
11477
11478    fn control_handle(&self) -> &SocketControlHandle {
11479        &self.control_handle
11480    }
11481
11482    fn drop_without_shutdown(mut self) {
11483        // Safety: drops once, never accessed again due to mem::forget
11484        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11485        // Prevent Drop from running (which would shut down the channel)
11486        std::mem::forget(self);
11487    }
11488}
11489
11490impl SocketGetBindToDeviceResponder {
11491    /// Sends a response to the FIDL transaction.
11492    ///
11493    /// Sets the channel to shutdown if an error occurs.
11494    pub fn send(
11495        self,
11496        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11497    ) -> Result<(), fidl::Error> {
11498        let _result = self.send_raw(result);
11499        if _result.is_err() {
11500            self.control_handle.shutdown();
11501        }
11502        self.drop_without_shutdown();
11503        _result
11504    }
11505
11506    /// Similar to "send" but does not shutdown the channel if an error occurs.
11507    pub fn send_no_shutdown_on_err(
11508        self,
11509        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11510    ) -> Result<(), fidl::Error> {
11511        let _result = self.send_raw(result);
11512        self.drop_without_shutdown();
11513        _result
11514    }
11515
11516    fn send_raw(
11517        &self,
11518        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11519    ) -> Result<(), fidl::Error> {
11520        self.control_handle.inner.send::<fidl::encoding::ResultType<
11521            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11522            fidl_fuchsia_posix::Errno,
11523        >>(
11524            result.map(|value| (value,)),
11525            self.tx_id,
11526            0x1ab1fbf0ef7906c8,
11527            fidl::encoding::DynamicFlags::empty(),
11528        )
11529    }
11530}
11531
11532#[must_use = "FIDL methods require a response to be sent"]
11533#[derive(Debug)]
11534pub struct SocketSetBindToInterfaceIndexResponder {
11535    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11536    tx_id: u32,
11537}
11538
11539/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11540/// if the responder is dropped without sending a response, so that the client
11541/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11542impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11543    fn drop(&mut self) {
11544        self.control_handle.shutdown();
11545        // Safety: drops once, never accessed again
11546        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11547    }
11548}
11549
11550impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11551    type ControlHandle = SocketControlHandle;
11552
11553    fn control_handle(&self) -> &SocketControlHandle {
11554        &self.control_handle
11555    }
11556
11557    fn drop_without_shutdown(mut self) {
11558        // Safety: drops once, never accessed again due to mem::forget
11559        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11560        // Prevent Drop from running (which would shut down the channel)
11561        std::mem::forget(self);
11562    }
11563}
11564
11565impl SocketSetBindToInterfaceIndexResponder {
11566    /// Sends a response to the FIDL transaction.
11567    ///
11568    /// Sets the channel to shutdown if an error occurs.
11569    pub fn send(
11570        self,
11571        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11572    ) -> Result<(), fidl::Error> {
11573        let _result = self.send_raw(result);
11574        if _result.is_err() {
11575            self.control_handle.shutdown();
11576        }
11577        self.drop_without_shutdown();
11578        _result
11579    }
11580
11581    /// Similar to "send" but does not shutdown the channel if an error occurs.
11582    pub fn send_no_shutdown_on_err(
11583        self,
11584        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11585    ) -> Result<(), fidl::Error> {
11586        let _result = self.send_raw(result);
11587        self.drop_without_shutdown();
11588        _result
11589    }
11590
11591    fn send_raw(
11592        &self,
11593        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11594    ) -> Result<(), fidl::Error> {
11595        self.control_handle.inner.send::<fidl::encoding::ResultType<
11596            fidl::encoding::EmptyStruct,
11597            fidl_fuchsia_posix::Errno,
11598        >>(
11599            result,
11600            self.tx_id,
11601            0x6e387a0def00821,
11602            fidl::encoding::DynamicFlags::empty(),
11603        )
11604    }
11605}
11606
11607#[must_use = "FIDL methods require a response to be sent"]
11608#[derive(Debug)]
11609pub struct SocketGetBindToInterfaceIndexResponder {
11610    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11611    tx_id: u32,
11612}
11613
11614/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11615/// if the responder is dropped without sending a response, so that the client
11616/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11617impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11618    fn drop(&mut self) {
11619        self.control_handle.shutdown();
11620        // Safety: drops once, never accessed again
11621        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11622    }
11623}
11624
11625impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11626    type ControlHandle = SocketControlHandle;
11627
11628    fn control_handle(&self) -> &SocketControlHandle {
11629        &self.control_handle
11630    }
11631
11632    fn drop_without_shutdown(mut self) {
11633        // Safety: drops once, never accessed again due to mem::forget
11634        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11635        // Prevent Drop from running (which would shut down the channel)
11636        std::mem::forget(self);
11637    }
11638}
11639
11640impl SocketGetBindToInterfaceIndexResponder {
11641    /// Sends a response to the FIDL transaction.
11642    ///
11643    /// Sets the channel to shutdown if an error occurs.
11644    pub fn send(
11645        self,
11646        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11647    ) -> Result<(), fidl::Error> {
11648        let _result = self.send_raw(result);
11649        if _result.is_err() {
11650            self.control_handle.shutdown();
11651        }
11652        self.drop_without_shutdown();
11653        _result
11654    }
11655
11656    /// Similar to "send" but does not shutdown the channel if an error occurs.
11657    pub fn send_no_shutdown_on_err(
11658        self,
11659        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11660    ) -> Result<(), fidl::Error> {
11661        let _result = self.send_raw(result);
11662        self.drop_without_shutdown();
11663        _result
11664    }
11665
11666    fn send_raw(
11667        &self,
11668        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11669    ) -> Result<(), fidl::Error> {
11670        self.control_handle.inner.send::<fidl::encoding::ResultType<
11671            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11672            fidl_fuchsia_posix::Errno,
11673        >>(
11674            result.map(|value| (value,)),
11675            self.tx_id,
11676            0x59c31dd3e3078295,
11677            fidl::encoding::DynamicFlags::empty(),
11678        )
11679    }
11680}
11681
11682#[must_use = "FIDL methods require a response to be sent"]
11683#[derive(Debug)]
11684pub struct SocketSetTimestampResponder {
11685    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11686    tx_id: u32,
11687}
11688
11689/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11690/// if the responder is dropped without sending a response, so that the client
11691/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11692impl std::ops::Drop for SocketSetTimestampResponder {
11693    fn drop(&mut self) {
11694        self.control_handle.shutdown();
11695        // Safety: drops once, never accessed again
11696        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11697    }
11698}
11699
11700impl fidl::endpoints::Responder for SocketSetTimestampResponder {
11701    type ControlHandle = SocketControlHandle;
11702
11703    fn control_handle(&self) -> &SocketControlHandle {
11704        &self.control_handle
11705    }
11706
11707    fn drop_without_shutdown(mut self) {
11708        // Safety: drops once, never accessed again due to mem::forget
11709        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11710        // Prevent Drop from running (which would shut down the channel)
11711        std::mem::forget(self);
11712    }
11713}
11714
11715impl SocketSetTimestampResponder {
11716    /// Sends a response to the FIDL transaction.
11717    ///
11718    /// Sets the channel to shutdown if an error occurs.
11719    pub fn send(
11720        self,
11721        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11722    ) -> Result<(), fidl::Error> {
11723        let _result = self.send_raw(result);
11724        if _result.is_err() {
11725            self.control_handle.shutdown();
11726        }
11727        self.drop_without_shutdown();
11728        _result
11729    }
11730
11731    /// Similar to "send" but does not shutdown the channel if an error occurs.
11732    pub fn send_no_shutdown_on_err(
11733        self,
11734        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11735    ) -> Result<(), fidl::Error> {
11736        let _result = self.send_raw(result);
11737        self.drop_without_shutdown();
11738        _result
11739    }
11740
11741    fn send_raw(
11742        &self,
11743        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11744    ) -> Result<(), fidl::Error> {
11745        self.control_handle.inner.send::<fidl::encoding::ResultType<
11746            fidl::encoding::EmptyStruct,
11747            fidl_fuchsia_posix::Errno,
11748        >>(
11749            result,
11750            self.tx_id,
11751            0x285d6516c263d839,
11752            fidl::encoding::DynamicFlags::empty(),
11753        )
11754    }
11755}
11756
11757#[must_use = "FIDL methods require a response to be sent"]
11758#[derive(Debug)]
11759pub struct SocketGetTimestampResponder {
11760    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11761    tx_id: u32,
11762}
11763
11764/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11765/// if the responder is dropped without sending a response, so that the client
11766/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11767impl std::ops::Drop for SocketGetTimestampResponder {
11768    fn drop(&mut self) {
11769        self.control_handle.shutdown();
11770        // Safety: drops once, never accessed again
11771        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11772    }
11773}
11774
11775impl fidl::endpoints::Responder for SocketGetTimestampResponder {
11776    type ControlHandle = SocketControlHandle;
11777
11778    fn control_handle(&self) -> &SocketControlHandle {
11779        &self.control_handle
11780    }
11781
11782    fn drop_without_shutdown(mut self) {
11783        // Safety: drops once, never accessed again due to mem::forget
11784        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11785        // Prevent Drop from running (which would shut down the channel)
11786        std::mem::forget(self);
11787    }
11788}
11789
11790impl SocketGetTimestampResponder {
11791    /// Sends a response to the FIDL transaction.
11792    ///
11793    /// Sets the channel to shutdown if an error occurs.
11794    pub fn send(
11795        self,
11796        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11797    ) -> Result<(), fidl::Error> {
11798        let _result = self.send_raw(result);
11799        if _result.is_err() {
11800            self.control_handle.shutdown();
11801        }
11802        self.drop_without_shutdown();
11803        _result
11804    }
11805
11806    /// Similar to "send" but does not shutdown the channel if an error occurs.
11807    pub fn send_no_shutdown_on_err(
11808        self,
11809        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11810    ) -> Result<(), fidl::Error> {
11811        let _result = self.send_raw(result);
11812        self.drop_without_shutdown();
11813        _result
11814    }
11815
11816    fn send_raw(
11817        &self,
11818        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11819    ) -> Result<(), fidl::Error> {
11820        self.control_handle.inner.send::<fidl::encoding::ResultType<
11821            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
11822            fidl_fuchsia_posix::Errno,
11823        >>(
11824            result.map(|value| (value,)),
11825            self.tx_id,
11826            0x49f2fffbbcc2bd27,
11827            fidl::encoding::DynamicFlags::empty(),
11828        )
11829    }
11830}
11831
11832#[must_use = "FIDL methods require a response to be sent"]
11833#[derive(Debug)]
11834pub struct SocketSetMarkResponder {
11835    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11836    tx_id: u32,
11837}
11838
11839/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11840/// if the responder is dropped without sending a response, so that the client
11841/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11842impl std::ops::Drop for SocketSetMarkResponder {
11843    fn drop(&mut self) {
11844        self.control_handle.shutdown();
11845        // Safety: drops once, never accessed again
11846        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11847    }
11848}
11849
11850impl fidl::endpoints::Responder for SocketSetMarkResponder {
11851    type ControlHandle = SocketControlHandle;
11852
11853    fn control_handle(&self) -> &SocketControlHandle {
11854        &self.control_handle
11855    }
11856
11857    fn drop_without_shutdown(mut self) {
11858        // Safety: drops once, never accessed again due to mem::forget
11859        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11860        // Prevent Drop from running (which would shut down the channel)
11861        std::mem::forget(self);
11862    }
11863}
11864
11865impl SocketSetMarkResponder {
11866    /// Sends a response to the FIDL transaction.
11867    ///
11868    /// Sets the channel to shutdown if an error occurs.
11869    pub fn send(
11870        self,
11871        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11872    ) -> Result<(), fidl::Error> {
11873        let _result = self.send_raw(result);
11874        if _result.is_err() {
11875            self.control_handle.shutdown();
11876        }
11877        self.drop_without_shutdown();
11878        _result
11879    }
11880
11881    /// Similar to "send" but does not shutdown the channel if an error occurs.
11882    pub fn send_no_shutdown_on_err(
11883        self,
11884        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11885    ) -> Result<(), fidl::Error> {
11886        let _result = self.send_raw(result);
11887        self.drop_without_shutdown();
11888        _result
11889    }
11890
11891    fn send_raw(
11892        &self,
11893        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11894    ) -> Result<(), fidl::Error> {
11895        self.control_handle.inner.send::<fidl::encoding::ResultType<
11896            fidl::encoding::EmptyStruct,
11897            fidl_fuchsia_posix::Errno,
11898        >>(
11899            result,
11900            self.tx_id,
11901            0x6ead6de09f653236,
11902            fidl::encoding::DynamicFlags::empty(),
11903        )
11904    }
11905}
11906
11907#[must_use = "FIDL methods require a response to be sent"]
11908#[derive(Debug)]
11909pub struct SocketGetMarkResponder {
11910    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11911    tx_id: u32,
11912}
11913
11914/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11915/// if the responder is dropped without sending a response, so that the client
11916/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11917impl std::ops::Drop for SocketGetMarkResponder {
11918    fn drop(&mut self) {
11919        self.control_handle.shutdown();
11920        // Safety: drops once, never accessed again
11921        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11922    }
11923}
11924
11925impl fidl::endpoints::Responder for SocketGetMarkResponder {
11926    type ControlHandle = SocketControlHandle;
11927
11928    fn control_handle(&self) -> &SocketControlHandle {
11929        &self.control_handle
11930    }
11931
11932    fn drop_without_shutdown(mut self) {
11933        // Safety: drops once, never accessed again due to mem::forget
11934        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11935        // Prevent Drop from running (which would shut down the channel)
11936        std::mem::forget(self);
11937    }
11938}
11939
11940impl SocketGetMarkResponder {
11941    /// Sends a response to the FIDL transaction.
11942    ///
11943    /// Sets the channel to shutdown if an error occurs.
11944    pub fn send(
11945        self,
11946        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
11947    ) -> Result<(), fidl::Error> {
11948        let _result = self.send_raw(result);
11949        if _result.is_err() {
11950            self.control_handle.shutdown();
11951        }
11952        self.drop_without_shutdown();
11953        _result
11954    }
11955
11956    /// Similar to "send" but does not shutdown the channel if an error occurs.
11957    pub fn send_no_shutdown_on_err(
11958        self,
11959        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
11960    ) -> Result<(), fidl::Error> {
11961        let _result = self.send_raw(result);
11962        self.drop_without_shutdown();
11963        _result
11964    }
11965
11966    fn send_raw(
11967        &self,
11968        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
11969    ) -> Result<(), fidl::Error> {
11970        self.control_handle.inner.send::<fidl::encoding::ResultType<
11971            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
11972            fidl_fuchsia_posix::Errno,
11973        >>(
11974            result.map(|mark| (mark,)),
11975            self.tx_id,
11976            0x57a2752c61d93d47,
11977            fidl::encoding::DynamicFlags::empty(),
11978        )
11979    }
11980}
11981
11982#[must_use = "FIDL methods require a response to be sent"]
11983#[derive(Debug)]
11984pub struct SocketGetCookieResponder {
11985    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11986    tx_id: u32,
11987}
11988
11989/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11990/// if the responder is dropped without sending a response, so that the client
11991/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11992impl std::ops::Drop for SocketGetCookieResponder {
11993    fn drop(&mut self) {
11994        self.control_handle.shutdown();
11995        // Safety: drops once, never accessed again
11996        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11997    }
11998}
11999
12000impl fidl::endpoints::Responder for SocketGetCookieResponder {
12001    type ControlHandle = SocketControlHandle;
12002
12003    fn control_handle(&self) -> &SocketControlHandle {
12004        &self.control_handle
12005    }
12006
12007    fn drop_without_shutdown(mut self) {
12008        // Safety: drops once, never accessed again due to mem::forget
12009        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12010        // Prevent Drop from running (which would shut down the channel)
12011        std::mem::forget(self);
12012    }
12013}
12014
12015impl SocketGetCookieResponder {
12016    /// Sends a response to the FIDL transaction.
12017    ///
12018    /// Sets the channel to shutdown if an error occurs.
12019    pub fn send(
12020        self,
12021        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12022    ) -> Result<(), fidl::Error> {
12023        let _result = self.send_raw(result);
12024        if _result.is_err() {
12025            self.control_handle.shutdown();
12026        }
12027        self.drop_without_shutdown();
12028        _result
12029    }
12030
12031    /// Similar to "send" but does not shutdown the channel if an error occurs.
12032    pub fn send_no_shutdown_on_err(
12033        self,
12034        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12035    ) -> Result<(), fidl::Error> {
12036        let _result = self.send_raw(result);
12037        self.drop_without_shutdown();
12038        _result
12039    }
12040
12041    fn send_raw(
12042        &self,
12043        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12044    ) -> Result<(), fidl::Error> {
12045        self.control_handle.inner.send::<fidl::encoding::ResultType<
12046            fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
12047            fidl_fuchsia_posix::Errno,
12048        >>(
12049            result.map(|value| (value,)),
12050            self.tx_id,
12051            0x2c2f47fd8f924e52,
12052            fidl::encoding::DynamicFlags::empty(),
12053        )
12054    }
12055}
12056
12057#[must_use = "FIDL methods require a response to be sent"]
12058#[derive(Debug)]
12059pub struct SocketBindResponder {
12060    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12061    tx_id: u32,
12062}
12063
12064/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12065/// if the responder is dropped without sending a response, so that the client
12066/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12067impl std::ops::Drop for SocketBindResponder {
12068    fn drop(&mut self) {
12069        self.control_handle.shutdown();
12070        // Safety: drops once, never accessed again
12071        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12072    }
12073}
12074
12075impl fidl::endpoints::Responder for SocketBindResponder {
12076    type ControlHandle = SocketControlHandle;
12077
12078    fn control_handle(&self) -> &SocketControlHandle {
12079        &self.control_handle
12080    }
12081
12082    fn drop_without_shutdown(mut self) {
12083        // Safety: drops once, never accessed again due to mem::forget
12084        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12085        // Prevent Drop from running (which would shut down the channel)
12086        std::mem::forget(self);
12087    }
12088}
12089
12090impl SocketBindResponder {
12091    /// Sends a response to the FIDL transaction.
12092    ///
12093    /// Sets the channel to shutdown if an error occurs.
12094    pub fn send(
12095        self,
12096        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12097    ) -> Result<(), fidl::Error> {
12098        let _result = self.send_raw(result);
12099        if _result.is_err() {
12100            self.control_handle.shutdown();
12101        }
12102        self.drop_without_shutdown();
12103        _result
12104    }
12105
12106    /// Similar to "send" but does not shutdown the channel if an error occurs.
12107    pub fn send_no_shutdown_on_err(
12108        self,
12109        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12110    ) -> Result<(), fidl::Error> {
12111        let _result = self.send_raw(result);
12112        self.drop_without_shutdown();
12113        _result
12114    }
12115
12116    fn send_raw(
12117        &self,
12118        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12119    ) -> Result<(), fidl::Error> {
12120        self.control_handle.inner.send::<fidl::encoding::ResultType<
12121            fidl::encoding::EmptyStruct,
12122            fidl_fuchsia_posix::Errno,
12123        >>(
12124            result,
12125            self.tx_id,
12126            0x4bc6400ae92125d,
12127            fidl::encoding::DynamicFlags::empty(),
12128        )
12129    }
12130}
12131
12132#[must_use = "FIDL methods require a response to be sent"]
12133#[derive(Debug)]
12134pub struct SocketConnectResponder {
12135    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12136    tx_id: u32,
12137}
12138
12139/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12140/// if the responder is dropped without sending a response, so that the client
12141/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12142impl std::ops::Drop for SocketConnectResponder {
12143    fn drop(&mut self) {
12144        self.control_handle.shutdown();
12145        // Safety: drops once, never accessed again
12146        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12147    }
12148}
12149
12150impl fidl::endpoints::Responder for SocketConnectResponder {
12151    type ControlHandle = SocketControlHandle;
12152
12153    fn control_handle(&self) -> &SocketControlHandle {
12154        &self.control_handle
12155    }
12156
12157    fn drop_without_shutdown(mut self) {
12158        // Safety: drops once, never accessed again due to mem::forget
12159        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12160        // Prevent Drop from running (which would shut down the channel)
12161        std::mem::forget(self);
12162    }
12163}
12164
12165impl SocketConnectResponder {
12166    /// Sends a response to the FIDL transaction.
12167    ///
12168    /// Sets the channel to shutdown if an error occurs.
12169    pub fn send(
12170        self,
12171        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12172    ) -> Result<(), fidl::Error> {
12173        let _result = self.send_raw(result);
12174        if _result.is_err() {
12175            self.control_handle.shutdown();
12176        }
12177        self.drop_without_shutdown();
12178        _result
12179    }
12180
12181    /// Similar to "send" but does not shutdown the channel if an error occurs.
12182    pub fn send_no_shutdown_on_err(
12183        self,
12184        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12185    ) -> Result<(), fidl::Error> {
12186        let _result = self.send_raw(result);
12187        self.drop_without_shutdown();
12188        _result
12189    }
12190
12191    fn send_raw(
12192        &self,
12193        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12194    ) -> Result<(), fidl::Error> {
12195        self.control_handle.inner.send::<fidl::encoding::ResultType<
12196            fidl::encoding::EmptyStruct,
12197            fidl_fuchsia_posix::Errno,
12198        >>(
12199            result,
12200            self.tx_id,
12201            0x5f05f19bfdd38871,
12202            fidl::encoding::DynamicFlags::empty(),
12203        )
12204    }
12205}
12206
12207#[must_use = "FIDL methods require a response to be sent"]
12208#[derive(Debug)]
12209pub struct SocketDisconnectResponder {
12210    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12211    tx_id: u32,
12212}
12213
12214/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12215/// if the responder is dropped without sending a response, so that the client
12216/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12217impl std::ops::Drop for SocketDisconnectResponder {
12218    fn drop(&mut self) {
12219        self.control_handle.shutdown();
12220        // Safety: drops once, never accessed again
12221        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12222    }
12223}
12224
12225impl fidl::endpoints::Responder for SocketDisconnectResponder {
12226    type ControlHandle = SocketControlHandle;
12227
12228    fn control_handle(&self) -> &SocketControlHandle {
12229        &self.control_handle
12230    }
12231
12232    fn drop_without_shutdown(mut self) {
12233        // Safety: drops once, never accessed again due to mem::forget
12234        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12235        // Prevent Drop from running (which would shut down the channel)
12236        std::mem::forget(self);
12237    }
12238}
12239
12240impl SocketDisconnectResponder {
12241    /// Sends a response to the FIDL transaction.
12242    ///
12243    /// Sets the channel to shutdown if an error occurs.
12244    pub fn send(
12245        self,
12246        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12247    ) -> Result<(), fidl::Error> {
12248        let _result = self.send_raw(result);
12249        if _result.is_err() {
12250            self.control_handle.shutdown();
12251        }
12252        self.drop_without_shutdown();
12253        _result
12254    }
12255
12256    /// Similar to "send" but does not shutdown the channel if an error occurs.
12257    pub fn send_no_shutdown_on_err(
12258        self,
12259        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12260    ) -> Result<(), fidl::Error> {
12261        let _result = self.send_raw(result);
12262        self.drop_without_shutdown();
12263        _result
12264    }
12265
12266    fn send_raw(
12267        &self,
12268        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12269    ) -> Result<(), fidl::Error> {
12270        self.control_handle.inner.send::<fidl::encoding::ResultType<
12271            fidl::encoding::EmptyStruct,
12272            fidl_fuchsia_posix::Errno,
12273        >>(
12274            result,
12275            self.tx_id,
12276            0x74e63b91f7b29b2,
12277            fidl::encoding::DynamicFlags::empty(),
12278        )
12279    }
12280}
12281
12282#[must_use = "FIDL methods require a response to be sent"]
12283#[derive(Debug)]
12284pub struct SocketGetSockNameResponder {
12285    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12286    tx_id: u32,
12287}
12288
12289/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12290/// if the responder is dropped without sending a response, so that the client
12291/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12292impl std::ops::Drop for SocketGetSockNameResponder {
12293    fn drop(&mut self) {
12294        self.control_handle.shutdown();
12295        // Safety: drops once, never accessed again
12296        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12297    }
12298}
12299
12300impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12301    type ControlHandle = SocketControlHandle;
12302
12303    fn control_handle(&self) -> &SocketControlHandle {
12304        &self.control_handle
12305    }
12306
12307    fn drop_without_shutdown(mut self) {
12308        // Safety: drops once, never accessed again due to mem::forget
12309        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12310        // Prevent Drop from running (which would shut down the channel)
12311        std::mem::forget(self);
12312    }
12313}
12314
12315impl SocketGetSockNameResponder {
12316    /// Sends a response to the FIDL transaction.
12317    ///
12318    /// Sets the channel to shutdown if an error occurs.
12319    pub fn send(
12320        self,
12321        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12322    ) -> Result<(), fidl::Error> {
12323        let _result = self.send_raw(result);
12324        if _result.is_err() {
12325            self.control_handle.shutdown();
12326        }
12327        self.drop_without_shutdown();
12328        _result
12329    }
12330
12331    /// Similar to "send" but does not shutdown the channel if an error occurs.
12332    pub fn send_no_shutdown_on_err(
12333        self,
12334        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12335    ) -> Result<(), fidl::Error> {
12336        let _result = self.send_raw(result);
12337        self.drop_without_shutdown();
12338        _result
12339    }
12340
12341    fn send_raw(
12342        &self,
12343        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12344    ) -> Result<(), fidl::Error> {
12345        self.control_handle.inner.send::<fidl::encoding::ResultType<
12346            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12347            fidl_fuchsia_posix::Errno,
12348        >>(
12349            result.map(|addr| (addr,)),
12350            self.tx_id,
12351            0x475f23f84a1a4f85,
12352            fidl::encoding::DynamicFlags::empty(),
12353        )
12354    }
12355}
12356
12357#[must_use = "FIDL methods require a response to be sent"]
12358#[derive(Debug)]
12359pub struct SocketGetPeerNameResponder {
12360    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12361    tx_id: u32,
12362}
12363
12364/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12365/// if the responder is dropped without sending a response, so that the client
12366/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12367impl std::ops::Drop for SocketGetPeerNameResponder {
12368    fn drop(&mut self) {
12369        self.control_handle.shutdown();
12370        // Safety: drops once, never accessed again
12371        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12372    }
12373}
12374
12375impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12376    type ControlHandle = SocketControlHandle;
12377
12378    fn control_handle(&self) -> &SocketControlHandle {
12379        &self.control_handle
12380    }
12381
12382    fn drop_without_shutdown(mut self) {
12383        // Safety: drops once, never accessed again due to mem::forget
12384        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12385        // Prevent Drop from running (which would shut down the channel)
12386        std::mem::forget(self);
12387    }
12388}
12389
12390impl SocketGetPeerNameResponder {
12391    /// Sends a response to the FIDL transaction.
12392    ///
12393    /// Sets the channel to shutdown if an error occurs.
12394    pub fn send(
12395        self,
12396        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12397    ) -> Result<(), fidl::Error> {
12398        let _result = self.send_raw(result);
12399        if _result.is_err() {
12400            self.control_handle.shutdown();
12401        }
12402        self.drop_without_shutdown();
12403        _result
12404    }
12405
12406    /// Similar to "send" but does not shutdown the channel if an error occurs.
12407    pub fn send_no_shutdown_on_err(
12408        self,
12409        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12410    ) -> Result<(), fidl::Error> {
12411        let _result = self.send_raw(result);
12412        self.drop_without_shutdown();
12413        _result
12414    }
12415
12416    fn send_raw(
12417        &self,
12418        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12419    ) -> Result<(), fidl::Error> {
12420        self.control_handle.inner.send::<fidl::encoding::ResultType<
12421            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12422            fidl_fuchsia_posix::Errno,
12423        >>(
12424            result.map(|addr| (addr,)),
12425            self.tx_id,
12426            0x1ffecf4bd5b6432e,
12427            fidl::encoding::DynamicFlags::empty(),
12428        )
12429    }
12430}
12431
12432#[must_use = "FIDL methods require a response to be sent"]
12433#[derive(Debug)]
12434pub struct SocketShutdownResponder {
12435    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12436    tx_id: u32,
12437}
12438
12439/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12440/// if the responder is dropped without sending a response, so that the client
12441/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12442impl std::ops::Drop for SocketShutdownResponder {
12443    fn drop(&mut self) {
12444        self.control_handle.shutdown();
12445        // Safety: drops once, never accessed again
12446        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12447    }
12448}
12449
12450impl fidl::endpoints::Responder for SocketShutdownResponder {
12451    type ControlHandle = SocketControlHandle;
12452
12453    fn control_handle(&self) -> &SocketControlHandle {
12454        &self.control_handle
12455    }
12456
12457    fn drop_without_shutdown(mut self) {
12458        // Safety: drops once, never accessed again due to mem::forget
12459        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12460        // Prevent Drop from running (which would shut down the channel)
12461        std::mem::forget(self);
12462    }
12463}
12464
12465impl SocketShutdownResponder {
12466    /// Sends a response to the FIDL transaction.
12467    ///
12468    /// Sets the channel to shutdown if an error occurs.
12469    pub fn send(
12470        self,
12471        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12472    ) -> Result<(), fidl::Error> {
12473        let _result = self.send_raw(result);
12474        if _result.is_err() {
12475            self.control_handle.shutdown();
12476        }
12477        self.drop_without_shutdown();
12478        _result
12479    }
12480
12481    /// Similar to "send" but does not shutdown the channel if an error occurs.
12482    pub fn send_no_shutdown_on_err(
12483        self,
12484        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12485    ) -> Result<(), fidl::Error> {
12486        let _result = self.send_raw(result);
12487        self.drop_without_shutdown();
12488        _result
12489    }
12490
12491    fn send_raw(
12492        &self,
12493        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12494    ) -> Result<(), fidl::Error> {
12495        self.control_handle.inner.send::<fidl::encoding::ResultType<
12496            fidl::encoding::EmptyStruct,
12497            fidl_fuchsia_posix::Errno,
12498        >>(
12499            result,
12500            self.tx_id,
12501            0x247f38b6db68c336,
12502            fidl::encoding::DynamicFlags::empty(),
12503        )
12504    }
12505}
12506
12507#[must_use = "FIDL methods require a response to be sent"]
12508#[derive(Debug)]
12509pub struct SocketSetIpTypeOfServiceResponder {
12510    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12511    tx_id: u32,
12512}
12513
12514/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12515/// if the responder is dropped without sending a response, so that the client
12516/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12517impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12518    fn drop(&mut self) {
12519        self.control_handle.shutdown();
12520        // Safety: drops once, never accessed again
12521        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12522    }
12523}
12524
12525impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12526    type ControlHandle = SocketControlHandle;
12527
12528    fn control_handle(&self) -> &SocketControlHandle {
12529        &self.control_handle
12530    }
12531
12532    fn drop_without_shutdown(mut self) {
12533        // Safety: drops once, never accessed again due to mem::forget
12534        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12535        // Prevent Drop from running (which would shut down the channel)
12536        std::mem::forget(self);
12537    }
12538}
12539
12540impl SocketSetIpTypeOfServiceResponder {
12541    /// Sends a response to the FIDL transaction.
12542    ///
12543    /// Sets the channel to shutdown if an error occurs.
12544    pub fn send(
12545        self,
12546        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12547    ) -> Result<(), fidl::Error> {
12548        let _result = self.send_raw(result);
12549        if _result.is_err() {
12550            self.control_handle.shutdown();
12551        }
12552        self.drop_without_shutdown();
12553        _result
12554    }
12555
12556    /// Similar to "send" but does not shutdown the channel if an error occurs.
12557    pub fn send_no_shutdown_on_err(
12558        self,
12559        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12560    ) -> Result<(), fidl::Error> {
12561        let _result = self.send_raw(result);
12562        self.drop_without_shutdown();
12563        _result
12564    }
12565
12566    fn send_raw(
12567        &self,
12568        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12569    ) -> Result<(), fidl::Error> {
12570        self.control_handle.inner.send::<fidl::encoding::ResultType<
12571            fidl::encoding::EmptyStruct,
12572            fidl_fuchsia_posix::Errno,
12573        >>(
12574            result,
12575            self.tx_id,
12576            0x995c600475b6d46,
12577            fidl::encoding::DynamicFlags::empty(),
12578        )
12579    }
12580}
12581
12582#[must_use = "FIDL methods require a response to be sent"]
12583#[derive(Debug)]
12584pub struct SocketGetIpTypeOfServiceResponder {
12585    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12586    tx_id: u32,
12587}
12588
12589/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12590/// if the responder is dropped without sending a response, so that the client
12591/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12592impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12593    fn drop(&mut self) {
12594        self.control_handle.shutdown();
12595        // Safety: drops once, never accessed again
12596        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12597    }
12598}
12599
12600impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12601    type ControlHandle = SocketControlHandle;
12602
12603    fn control_handle(&self) -> &SocketControlHandle {
12604        &self.control_handle
12605    }
12606
12607    fn drop_without_shutdown(mut self) {
12608        // Safety: drops once, never accessed again due to mem::forget
12609        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12610        // Prevent Drop from running (which would shut down the channel)
12611        std::mem::forget(self);
12612    }
12613}
12614
12615impl SocketGetIpTypeOfServiceResponder {
12616    /// Sends a response to the FIDL transaction.
12617    ///
12618    /// Sets the channel to shutdown if an error occurs.
12619    pub fn send(
12620        self,
12621        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12622    ) -> Result<(), fidl::Error> {
12623        let _result = self.send_raw(result);
12624        if _result.is_err() {
12625            self.control_handle.shutdown();
12626        }
12627        self.drop_without_shutdown();
12628        _result
12629    }
12630
12631    /// Similar to "send" but does not shutdown the channel if an error occurs.
12632    pub fn send_no_shutdown_on_err(
12633        self,
12634        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12635    ) -> Result<(), fidl::Error> {
12636        let _result = self.send_raw(result);
12637        self.drop_without_shutdown();
12638        _result
12639    }
12640
12641    fn send_raw(
12642        &self,
12643        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12644    ) -> Result<(), fidl::Error> {
12645        self.control_handle.inner.send::<fidl::encoding::ResultType<
12646            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12647            fidl_fuchsia_posix::Errno,
12648        >>(
12649            result.map(|value| (value,)),
12650            self.tx_id,
12651            0x3814a04259f75fcb,
12652            fidl::encoding::DynamicFlags::empty(),
12653        )
12654    }
12655}
12656
12657#[must_use = "FIDL methods require a response to be sent"]
12658#[derive(Debug)]
12659pub struct SocketSetIpTtlResponder {
12660    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12661    tx_id: u32,
12662}
12663
12664/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12665/// if the responder is dropped without sending a response, so that the client
12666/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12667impl std::ops::Drop for SocketSetIpTtlResponder {
12668    fn drop(&mut self) {
12669        self.control_handle.shutdown();
12670        // Safety: drops once, never accessed again
12671        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12672    }
12673}
12674
12675impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12676    type ControlHandle = SocketControlHandle;
12677
12678    fn control_handle(&self) -> &SocketControlHandle {
12679        &self.control_handle
12680    }
12681
12682    fn drop_without_shutdown(mut self) {
12683        // Safety: drops once, never accessed again due to mem::forget
12684        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12685        // Prevent Drop from running (which would shut down the channel)
12686        std::mem::forget(self);
12687    }
12688}
12689
12690impl SocketSetIpTtlResponder {
12691    /// Sends a response to the FIDL transaction.
12692    ///
12693    /// Sets the channel to shutdown if an error occurs.
12694    pub fn send(
12695        self,
12696        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12697    ) -> Result<(), fidl::Error> {
12698        let _result = self.send_raw(result);
12699        if _result.is_err() {
12700            self.control_handle.shutdown();
12701        }
12702        self.drop_without_shutdown();
12703        _result
12704    }
12705
12706    /// Similar to "send" but does not shutdown the channel if an error occurs.
12707    pub fn send_no_shutdown_on_err(
12708        self,
12709        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12710    ) -> Result<(), fidl::Error> {
12711        let _result = self.send_raw(result);
12712        self.drop_without_shutdown();
12713        _result
12714    }
12715
12716    fn send_raw(
12717        &self,
12718        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12719    ) -> Result<(), fidl::Error> {
12720        self.control_handle.inner.send::<fidl::encoding::ResultType<
12721            fidl::encoding::EmptyStruct,
12722            fidl_fuchsia_posix::Errno,
12723        >>(
12724            result,
12725            self.tx_id,
12726            0x29e2424b433ae1ef,
12727            fidl::encoding::DynamicFlags::empty(),
12728        )
12729    }
12730}
12731
12732#[must_use = "FIDL methods require a response to be sent"]
12733#[derive(Debug)]
12734pub struct SocketGetIpTtlResponder {
12735    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12736    tx_id: u32,
12737}
12738
12739/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12740/// if the responder is dropped without sending a response, so that the client
12741/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12742impl std::ops::Drop for SocketGetIpTtlResponder {
12743    fn drop(&mut self) {
12744        self.control_handle.shutdown();
12745        // Safety: drops once, never accessed again
12746        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12747    }
12748}
12749
12750impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
12751    type ControlHandle = SocketControlHandle;
12752
12753    fn control_handle(&self) -> &SocketControlHandle {
12754        &self.control_handle
12755    }
12756
12757    fn drop_without_shutdown(mut self) {
12758        // Safety: drops once, never accessed again due to mem::forget
12759        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12760        // Prevent Drop from running (which would shut down the channel)
12761        std::mem::forget(self);
12762    }
12763}
12764
12765impl SocketGetIpTtlResponder {
12766    /// Sends a response to the FIDL transaction.
12767    ///
12768    /// Sets the channel to shutdown if an error occurs.
12769    pub fn send(
12770        self,
12771        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12772    ) -> Result<(), fidl::Error> {
12773        let _result = self.send_raw(result);
12774        if _result.is_err() {
12775            self.control_handle.shutdown();
12776        }
12777        self.drop_without_shutdown();
12778        _result
12779    }
12780
12781    /// Similar to "send" but does not shutdown the channel if an error occurs.
12782    pub fn send_no_shutdown_on_err(
12783        self,
12784        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12785    ) -> Result<(), fidl::Error> {
12786        let _result = self.send_raw(result);
12787        self.drop_without_shutdown();
12788        _result
12789    }
12790
12791    fn send_raw(
12792        &self,
12793        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12794    ) -> Result<(), fidl::Error> {
12795        self.control_handle.inner.send::<fidl::encoding::ResultType<
12796            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
12797            fidl_fuchsia_posix::Errno,
12798        >>(
12799            result.map(|value| (value,)),
12800            self.tx_id,
12801            0x47e47fa1f24da471,
12802            fidl::encoding::DynamicFlags::empty(),
12803        )
12804    }
12805}
12806
12807#[must_use = "FIDL methods require a response to be sent"]
12808#[derive(Debug)]
12809pub struct SocketSetIpPacketInfoResponder {
12810    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12811    tx_id: u32,
12812}
12813
12814/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12815/// if the responder is dropped without sending a response, so that the client
12816/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12817impl std::ops::Drop for SocketSetIpPacketInfoResponder {
12818    fn drop(&mut self) {
12819        self.control_handle.shutdown();
12820        // Safety: drops once, never accessed again
12821        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12822    }
12823}
12824
12825impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
12826    type ControlHandle = SocketControlHandle;
12827
12828    fn control_handle(&self) -> &SocketControlHandle {
12829        &self.control_handle
12830    }
12831
12832    fn drop_without_shutdown(mut self) {
12833        // Safety: drops once, never accessed again due to mem::forget
12834        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12835        // Prevent Drop from running (which would shut down the channel)
12836        std::mem::forget(self);
12837    }
12838}
12839
12840impl SocketSetIpPacketInfoResponder {
12841    /// Sends a response to the FIDL transaction.
12842    ///
12843    /// Sets the channel to shutdown if an error occurs.
12844    pub fn send(
12845        self,
12846        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12847    ) -> Result<(), fidl::Error> {
12848        let _result = self.send_raw(result);
12849        if _result.is_err() {
12850            self.control_handle.shutdown();
12851        }
12852        self.drop_without_shutdown();
12853        _result
12854    }
12855
12856    /// Similar to "send" but does not shutdown the channel if an error occurs.
12857    pub fn send_no_shutdown_on_err(
12858        self,
12859        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12860    ) -> Result<(), fidl::Error> {
12861        let _result = self.send_raw(result);
12862        self.drop_without_shutdown();
12863        _result
12864    }
12865
12866    fn send_raw(
12867        &self,
12868        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12869    ) -> Result<(), fidl::Error> {
12870        self.control_handle.inner.send::<fidl::encoding::ResultType<
12871            fidl::encoding::EmptyStruct,
12872            fidl_fuchsia_posix::Errno,
12873        >>(
12874            result,
12875            self.tx_id,
12876            0x392d16bee20c0e16,
12877            fidl::encoding::DynamicFlags::empty(),
12878        )
12879    }
12880}
12881
12882#[must_use = "FIDL methods require a response to be sent"]
12883#[derive(Debug)]
12884pub struct SocketGetIpPacketInfoResponder {
12885    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12886    tx_id: u32,
12887}
12888
12889/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12890/// if the responder is dropped without sending a response, so that the client
12891/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12892impl std::ops::Drop for SocketGetIpPacketInfoResponder {
12893    fn drop(&mut self) {
12894        self.control_handle.shutdown();
12895        // Safety: drops once, never accessed again
12896        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12897    }
12898}
12899
12900impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
12901    type ControlHandle = SocketControlHandle;
12902
12903    fn control_handle(&self) -> &SocketControlHandle {
12904        &self.control_handle
12905    }
12906
12907    fn drop_without_shutdown(mut self) {
12908        // Safety: drops once, never accessed again due to mem::forget
12909        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12910        // Prevent Drop from running (which would shut down the channel)
12911        std::mem::forget(self);
12912    }
12913}
12914
12915impl SocketGetIpPacketInfoResponder {
12916    /// Sends a response to the FIDL transaction.
12917    ///
12918    /// Sets the channel to shutdown if an error occurs.
12919    pub fn send(
12920        self,
12921        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
12922    ) -> Result<(), fidl::Error> {
12923        let _result = self.send_raw(result);
12924        if _result.is_err() {
12925            self.control_handle.shutdown();
12926        }
12927        self.drop_without_shutdown();
12928        _result
12929    }
12930
12931    /// Similar to "send" but does not shutdown the channel if an error occurs.
12932    pub fn send_no_shutdown_on_err(
12933        self,
12934        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
12935    ) -> Result<(), fidl::Error> {
12936        let _result = self.send_raw(result);
12937        self.drop_without_shutdown();
12938        _result
12939    }
12940
12941    fn send_raw(
12942        &self,
12943        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
12944    ) -> Result<(), fidl::Error> {
12945        self.control_handle.inner.send::<fidl::encoding::ResultType<
12946            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
12947            fidl_fuchsia_posix::Errno,
12948        >>(
12949            result.map(|value| (value,)),
12950            self.tx_id,
12951            0x54b505f242280740,
12952            fidl::encoding::DynamicFlags::empty(),
12953        )
12954    }
12955}
12956
12957#[must_use = "FIDL methods require a response to be sent"]
12958#[derive(Debug)]
12959pub struct SocketSetIpReceiveTypeOfServiceResponder {
12960    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12961    tx_id: u32,
12962}
12963
12964/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12965/// if the responder is dropped without sending a response, so that the client
12966/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12967impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
12968    fn drop(&mut self) {
12969        self.control_handle.shutdown();
12970        // Safety: drops once, never accessed again
12971        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12972    }
12973}
12974
12975impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
12976    type ControlHandle = SocketControlHandle;
12977
12978    fn control_handle(&self) -> &SocketControlHandle {
12979        &self.control_handle
12980    }
12981
12982    fn drop_without_shutdown(mut self) {
12983        // Safety: drops once, never accessed again due to mem::forget
12984        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12985        // Prevent Drop from running (which would shut down the channel)
12986        std::mem::forget(self);
12987    }
12988}
12989
12990impl SocketSetIpReceiveTypeOfServiceResponder {
12991    /// Sends a response to the FIDL transaction.
12992    ///
12993    /// Sets the channel to shutdown if an error occurs.
12994    pub fn send(
12995        self,
12996        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12997    ) -> Result<(), fidl::Error> {
12998        let _result = self.send_raw(result);
12999        if _result.is_err() {
13000            self.control_handle.shutdown();
13001        }
13002        self.drop_without_shutdown();
13003        _result
13004    }
13005
13006    /// Similar to "send" but does not shutdown the channel if an error occurs.
13007    pub fn send_no_shutdown_on_err(
13008        self,
13009        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13010    ) -> Result<(), fidl::Error> {
13011        let _result = self.send_raw(result);
13012        self.drop_without_shutdown();
13013        _result
13014    }
13015
13016    fn send_raw(
13017        &self,
13018        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13019    ) -> Result<(), fidl::Error> {
13020        self.control_handle.inner.send::<fidl::encoding::ResultType<
13021            fidl::encoding::EmptyStruct,
13022            fidl_fuchsia_posix::Errno,
13023        >>(
13024            result,
13025            self.tx_id,
13026            0x6c4f6714995f84ef,
13027            fidl::encoding::DynamicFlags::empty(),
13028        )
13029    }
13030}
13031
13032#[must_use = "FIDL methods require a response to be sent"]
13033#[derive(Debug)]
13034pub struct SocketGetIpReceiveTypeOfServiceResponder {
13035    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13036    tx_id: u32,
13037}
13038
13039/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13040/// if the responder is dropped without sending a response, so that the client
13041/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13042impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13043    fn drop(&mut self) {
13044        self.control_handle.shutdown();
13045        // Safety: drops once, never accessed again
13046        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13047    }
13048}
13049
13050impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13051    type ControlHandle = SocketControlHandle;
13052
13053    fn control_handle(&self) -> &SocketControlHandle {
13054        &self.control_handle
13055    }
13056
13057    fn drop_without_shutdown(mut self) {
13058        // Safety: drops once, never accessed again due to mem::forget
13059        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13060        // Prevent Drop from running (which would shut down the channel)
13061        std::mem::forget(self);
13062    }
13063}
13064
13065impl SocketGetIpReceiveTypeOfServiceResponder {
13066    /// Sends a response to the FIDL transaction.
13067    ///
13068    /// Sets the channel to shutdown if an error occurs.
13069    pub fn send(
13070        self,
13071        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13072    ) -> Result<(), fidl::Error> {
13073        let _result = self.send_raw(result);
13074        if _result.is_err() {
13075            self.control_handle.shutdown();
13076        }
13077        self.drop_without_shutdown();
13078        _result
13079    }
13080
13081    /// Similar to "send" but does not shutdown the channel if an error occurs.
13082    pub fn send_no_shutdown_on_err(
13083        self,
13084        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13085    ) -> Result<(), fidl::Error> {
13086        let _result = self.send_raw(result);
13087        self.drop_without_shutdown();
13088        _result
13089    }
13090
13091    fn send_raw(
13092        &self,
13093        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13094    ) -> Result<(), fidl::Error> {
13095        self.control_handle.inner.send::<fidl::encoding::ResultType<
13096            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13097            fidl_fuchsia_posix::Errno,
13098        >>(
13099            result.map(|value| (value,)),
13100            self.tx_id,
13101            0x4158ba7dc2795960,
13102            fidl::encoding::DynamicFlags::empty(),
13103        )
13104    }
13105}
13106
13107#[must_use = "FIDL methods require a response to be sent"]
13108#[derive(Debug)]
13109pub struct SocketSetIpReceiveTtlResponder {
13110    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13111    tx_id: u32,
13112}
13113
13114/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13115/// if the responder is dropped without sending a response, so that the client
13116/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13117impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13118    fn drop(&mut self) {
13119        self.control_handle.shutdown();
13120        // Safety: drops once, never accessed again
13121        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13122    }
13123}
13124
13125impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13126    type ControlHandle = SocketControlHandle;
13127
13128    fn control_handle(&self) -> &SocketControlHandle {
13129        &self.control_handle
13130    }
13131
13132    fn drop_without_shutdown(mut self) {
13133        // Safety: drops once, never accessed again due to mem::forget
13134        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13135        // Prevent Drop from running (which would shut down the channel)
13136        std::mem::forget(self);
13137    }
13138}
13139
13140impl SocketSetIpReceiveTtlResponder {
13141    /// Sends a response to the FIDL transaction.
13142    ///
13143    /// Sets the channel to shutdown if an error occurs.
13144    pub fn send(
13145        self,
13146        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13147    ) -> Result<(), fidl::Error> {
13148        let _result = self.send_raw(result);
13149        if _result.is_err() {
13150            self.control_handle.shutdown();
13151        }
13152        self.drop_without_shutdown();
13153        _result
13154    }
13155
13156    /// Similar to "send" but does not shutdown the channel if an error occurs.
13157    pub fn send_no_shutdown_on_err(
13158        self,
13159        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13160    ) -> Result<(), fidl::Error> {
13161        let _result = self.send_raw(result);
13162        self.drop_without_shutdown();
13163        _result
13164    }
13165
13166    fn send_raw(
13167        &self,
13168        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13169    ) -> Result<(), fidl::Error> {
13170        self.control_handle.inner.send::<fidl::encoding::ResultType<
13171            fidl::encoding::EmptyStruct,
13172            fidl_fuchsia_posix::Errno,
13173        >>(
13174            result,
13175            self.tx_id,
13176            0x46f15be0ce0ab82b,
13177            fidl::encoding::DynamicFlags::empty(),
13178        )
13179    }
13180}
13181
13182#[must_use = "FIDL methods require a response to be sent"]
13183#[derive(Debug)]
13184pub struct SocketGetIpReceiveTtlResponder {
13185    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13186    tx_id: u32,
13187}
13188
13189/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13190/// if the responder is dropped without sending a response, so that the client
13191/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13192impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13193    fn drop(&mut self) {
13194        self.control_handle.shutdown();
13195        // Safety: drops once, never accessed again
13196        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13197    }
13198}
13199
13200impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13201    type ControlHandle = SocketControlHandle;
13202
13203    fn control_handle(&self) -> &SocketControlHandle {
13204        &self.control_handle
13205    }
13206
13207    fn drop_without_shutdown(mut self) {
13208        // Safety: drops once, never accessed again due to mem::forget
13209        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13210        // Prevent Drop from running (which would shut down the channel)
13211        std::mem::forget(self);
13212    }
13213}
13214
13215impl SocketGetIpReceiveTtlResponder {
13216    /// Sends a response to the FIDL transaction.
13217    ///
13218    /// Sets the channel to shutdown if an error occurs.
13219    pub fn send(
13220        self,
13221        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13222    ) -> Result<(), fidl::Error> {
13223        let _result = self.send_raw(result);
13224        if _result.is_err() {
13225            self.control_handle.shutdown();
13226        }
13227        self.drop_without_shutdown();
13228        _result
13229    }
13230
13231    /// Similar to "send" but does not shutdown the channel if an error occurs.
13232    pub fn send_no_shutdown_on_err(
13233        self,
13234        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13235    ) -> Result<(), fidl::Error> {
13236        let _result = self.send_raw(result);
13237        self.drop_without_shutdown();
13238        _result
13239    }
13240
13241    fn send_raw(
13242        &self,
13243        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13244    ) -> Result<(), fidl::Error> {
13245        self.control_handle.inner.send::<fidl::encoding::ResultType<
13246            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13247            fidl_fuchsia_posix::Errno,
13248        >>(
13249            result.map(|value| (value,)),
13250            self.tx_id,
13251            0x678ddd5a5dfa2eb5,
13252            fidl::encoding::DynamicFlags::empty(),
13253        )
13254    }
13255}
13256
13257#[must_use = "FIDL methods require a response to be sent"]
13258#[derive(Debug)]
13259pub struct SocketSetIpMulticastInterfaceResponder {
13260    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13261    tx_id: u32,
13262}
13263
13264/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13265/// if the responder is dropped without sending a response, so that the client
13266/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13267impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13268    fn drop(&mut self) {
13269        self.control_handle.shutdown();
13270        // Safety: drops once, never accessed again
13271        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13272    }
13273}
13274
13275impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13276    type ControlHandle = SocketControlHandle;
13277
13278    fn control_handle(&self) -> &SocketControlHandle {
13279        &self.control_handle
13280    }
13281
13282    fn drop_without_shutdown(mut self) {
13283        // Safety: drops once, never accessed again due to mem::forget
13284        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13285        // Prevent Drop from running (which would shut down the channel)
13286        std::mem::forget(self);
13287    }
13288}
13289
13290impl SocketSetIpMulticastInterfaceResponder {
13291    /// Sends a response to the FIDL transaction.
13292    ///
13293    /// Sets the channel to shutdown if an error occurs.
13294    pub fn send(
13295        self,
13296        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13297    ) -> Result<(), fidl::Error> {
13298        let _result = self.send_raw(result);
13299        if _result.is_err() {
13300            self.control_handle.shutdown();
13301        }
13302        self.drop_without_shutdown();
13303        _result
13304    }
13305
13306    /// Similar to "send" but does not shutdown the channel if an error occurs.
13307    pub fn send_no_shutdown_on_err(
13308        self,
13309        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13310    ) -> Result<(), fidl::Error> {
13311        let _result = self.send_raw(result);
13312        self.drop_without_shutdown();
13313        _result
13314    }
13315
13316    fn send_raw(
13317        &self,
13318        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13319    ) -> Result<(), fidl::Error> {
13320        self.control_handle.inner.send::<fidl::encoding::ResultType<
13321            fidl::encoding::EmptyStruct,
13322            fidl_fuchsia_posix::Errno,
13323        >>(
13324            result,
13325            self.tx_id,
13326            0x752fbfa9b12befe,
13327            fidl::encoding::DynamicFlags::empty(),
13328        )
13329    }
13330}
13331
13332#[must_use = "FIDL methods require a response to be sent"]
13333#[derive(Debug)]
13334pub struct SocketGetIpMulticastInterfaceResponder {
13335    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13336    tx_id: u32,
13337}
13338
13339/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13340/// if the responder is dropped without sending a response, so that the client
13341/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13342impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13343    fn drop(&mut self) {
13344        self.control_handle.shutdown();
13345        // Safety: drops once, never accessed again
13346        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13347    }
13348}
13349
13350impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13351    type ControlHandle = SocketControlHandle;
13352
13353    fn control_handle(&self) -> &SocketControlHandle {
13354        &self.control_handle
13355    }
13356
13357    fn drop_without_shutdown(mut self) {
13358        // Safety: drops once, never accessed again due to mem::forget
13359        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13360        // Prevent Drop from running (which would shut down the channel)
13361        std::mem::forget(self);
13362    }
13363}
13364
13365impl SocketGetIpMulticastInterfaceResponder {
13366    /// Sends a response to the FIDL transaction.
13367    ///
13368    /// Sets the channel to shutdown if an error occurs.
13369    pub fn send(
13370        self,
13371        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13372    ) -> Result<(), fidl::Error> {
13373        let _result = self.send_raw(result);
13374        if _result.is_err() {
13375            self.control_handle.shutdown();
13376        }
13377        self.drop_without_shutdown();
13378        _result
13379    }
13380
13381    /// Similar to "send" but does not shutdown the channel if an error occurs.
13382    pub fn send_no_shutdown_on_err(
13383        self,
13384        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13385    ) -> Result<(), fidl::Error> {
13386        let _result = self.send_raw(result);
13387        self.drop_without_shutdown();
13388        _result
13389    }
13390
13391    fn send_raw(
13392        &self,
13393        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13394    ) -> Result<(), fidl::Error> {
13395        self.control_handle.inner.send::<fidl::encoding::ResultType<
13396            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13397            fidl_fuchsia_posix::Errno,
13398        >>(
13399            result.map(|value| (value,)),
13400            self.tx_id,
13401            0x320bd14c4df046c4,
13402            fidl::encoding::DynamicFlags::empty(),
13403        )
13404    }
13405}
13406
13407#[must_use = "FIDL methods require a response to be sent"]
13408#[derive(Debug)]
13409pub struct SocketSetIpMulticastTtlResponder {
13410    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13411    tx_id: u32,
13412}
13413
13414/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13415/// if the responder is dropped without sending a response, so that the client
13416/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13417impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13418    fn drop(&mut self) {
13419        self.control_handle.shutdown();
13420        // Safety: drops once, never accessed again
13421        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13422    }
13423}
13424
13425impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13426    type ControlHandle = SocketControlHandle;
13427
13428    fn control_handle(&self) -> &SocketControlHandle {
13429        &self.control_handle
13430    }
13431
13432    fn drop_without_shutdown(mut self) {
13433        // Safety: drops once, never accessed again due to mem::forget
13434        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13435        // Prevent Drop from running (which would shut down the channel)
13436        std::mem::forget(self);
13437    }
13438}
13439
13440impl SocketSetIpMulticastTtlResponder {
13441    /// Sends a response to the FIDL transaction.
13442    ///
13443    /// Sets the channel to shutdown if an error occurs.
13444    pub fn send(
13445        self,
13446        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13447    ) -> Result<(), fidl::Error> {
13448        let _result = self.send_raw(result);
13449        if _result.is_err() {
13450            self.control_handle.shutdown();
13451        }
13452        self.drop_without_shutdown();
13453        _result
13454    }
13455
13456    /// Similar to "send" but does not shutdown the channel if an error occurs.
13457    pub fn send_no_shutdown_on_err(
13458        self,
13459        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13460    ) -> Result<(), fidl::Error> {
13461        let _result = self.send_raw(result);
13462        self.drop_without_shutdown();
13463        _result
13464    }
13465
13466    fn send_raw(
13467        &self,
13468        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13469    ) -> Result<(), fidl::Error> {
13470        self.control_handle.inner.send::<fidl::encoding::ResultType<
13471            fidl::encoding::EmptyStruct,
13472            fidl_fuchsia_posix::Errno,
13473        >>(
13474            result,
13475            self.tx_id,
13476            0x63134d53772916a1,
13477            fidl::encoding::DynamicFlags::empty(),
13478        )
13479    }
13480}
13481
13482#[must_use = "FIDL methods require a response to be sent"]
13483#[derive(Debug)]
13484pub struct SocketGetIpMulticastTtlResponder {
13485    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13486    tx_id: u32,
13487}
13488
13489/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13490/// if the responder is dropped without sending a response, so that the client
13491/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13492impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13493    fn drop(&mut self) {
13494        self.control_handle.shutdown();
13495        // Safety: drops once, never accessed again
13496        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13497    }
13498}
13499
13500impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13501    type ControlHandle = SocketControlHandle;
13502
13503    fn control_handle(&self) -> &SocketControlHandle {
13504        &self.control_handle
13505    }
13506
13507    fn drop_without_shutdown(mut self) {
13508        // Safety: drops once, never accessed again due to mem::forget
13509        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13510        // Prevent Drop from running (which would shut down the channel)
13511        std::mem::forget(self);
13512    }
13513}
13514
13515impl SocketGetIpMulticastTtlResponder {
13516    /// Sends a response to the FIDL transaction.
13517    ///
13518    /// Sets the channel to shutdown if an error occurs.
13519    pub fn send(
13520        self,
13521        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13522    ) -> Result<(), fidl::Error> {
13523        let _result = self.send_raw(result);
13524        if _result.is_err() {
13525            self.control_handle.shutdown();
13526        }
13527        self.drop_without_shutdown();
13528        _result
13529    }
13530
13531    /// Similar to "send" but does not shutdown the channel if an error occurs.
13532    pub fn send_no_shutdown_on_err(
13533        self,
13534        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13535    ) -> Result<(), fidl::Error> {
13536        let _result = self.send_raw(result);
13537        self.drop_without_shutdown();
13538        _result
13539    }
13540
13541    fn send_raw(
13542        &self,
13543        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13544    ) -> Result<(), fidl::Error> {
13545        self.control_handle.inner.send::<fidl::encoding::ResultType<
13546            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13547            fidl_fuchsia_posix::Errno,
13548        >>(
13549            result.map(|value| (value,)),
13550            self.tx_id,
13551            0x4665cd378f39e1a,
13552            fidl::encoding::DynamicFlags::empty(),
13553        )
13554    }
13555}
13556
13557#[must_use = "FIDL methods require a response to be sent"]
13558#[derive(Debug)]
13559pub struct SocketSetIpMulticastLoopbackResponder {
13560    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13561    tx_id: u32,
13562}
13563
13564/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13565/// if the responder is dropped without sending a response, so that the client
13566/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13567impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13568    fn drop(&mut self) {
13569        self.control_handle.shutdown();
13570        // Safety: drops once, never accessed again
13571        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13572    }
13573}
13574
13575impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13576    type ControlHandle = SocketControlHandle;
13577
13578    fn control_handle(&self) -> &SocketControlHandle {
13579        &self.control_handle
13580    }
13581
13582    fn drop_without_shutdown(mut self) {
13583        // Safety: drops once, never accessed again due to mem::forget
13584        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13585        // Prevent Drop from running (which would shut down the channel)
13586        std::mem::forget(self);
13587    }
13588}
13589
13590impl SocketSetIpMulticastLoopbackResponder {
13591    /// Sends a response to the FIDL transaction.
13592    ///
13593    /// Sets the channel to shutdown if an error occurs.
13594    pub fn send(
13595        self,
13596        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13597    ) -> Result<(), fidl::Error> {
13598        let _result = self.send_raw(result);
13599        if _result.is_err() {
13600            self.control_handle.shutdown();
13601        }
13602        self.drop_without_shutdown();
13603        _result
13604    }
13605
13606    /// Similar to "send" but does not shutdown the channel if an error occurs.
13607    pub fn send_no_shutdown_on_err(
13608        self,
13609        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13610    ) -> Result<(), fidl::Error> {
13611        let _result = self.send_raw(result);
13612        self.drop_without_shutdown();
13613        _result
13614    }
13615
13616    fn send_raw(
13617        &self,
13618        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13619    ) -> Result<(), fidl::Error> {
13620        self.control_handle.inner.send::<fidl::encoding::ResultType<
13621            fidl::encoding::EmptyStruct,
13622            fidl_fuchsia_posix::Errno,
13623        >>(
13624            result,
13625            self.tx_id,
13626            0x20c55c11f00943ea,
13627            fidl::encoding::DynamicFlags::empty(),
13628        )
13629    }
13630}
13631
13632#[must_use = "FIDL methods require a response to be sent"]
13633#[derive(Debug)]
13634pub struct SocketGetIpMulticastLoopbackResponder {
13635    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13636    tx_id: u32,
13637}
13638
13639/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13640/// if the responder is dropped without sending a response, so that the client
13641/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13642impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13643    fn drop(&mut self) {
13644        self.control_handle.shutdown();
13645        // Safety: drops once, never accessed again
13646        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13647    }
13648}
13649
13650impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13651    type ControlHandle = SocketControlHandle;
13652
13653    fn control_handle(&self) -> &SocketControlHandle {
13654        &self.control_handle
13655    }
13656
13657    fn drop_without_shutdown(mut self) {
13658        // Safety: drops once, never accessed again due to mem::forget
13659        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13660        // Prevent Drop from running (which would shut down the channel)
13661        std::mem::forget(self);
13662    }
13663}
13664
13665impl SocketGetIpMulticastLoopbackResponder {
13666    /// Sends a response to the FIDL transaction.
13667    ///
13668    /// Sets the channel to shutdown if an error occurs.
13669    pub fn send(
13670        self,
13671        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13672    ) -> Result<(), fidl::Error> {
13673        let _result = self.send_raw(result);
13674        if _result.is_err() {
13675            self.control_handle.shutdown();
13676        }
13677        self.drop_without_shutdown();
13678        _result
13679    }
13680
13681    /// Similar to "send" but does not shutdown the channel if an error occurs.
13682    pub fn send_no_shutdown_on_err(
13683        self,
13684        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13685    ) -> Result<(), fidl::Error> {
13686        let _result = self.send_raw(result);
13687        self.drop_without_shutdown();
13688        _result
13689    }
13690
13691    fn send_raw(
13692        &self,
13693        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13694    ) -> Result<(), fidl::Error> {
13695        self.control_handle.inner.send::<fidl::encoding::ResultType<
13696            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
13697            fidl_fuchsia_posix::Errno,
13698        >>(
13699            result.map(|value| (value,)),
13700            self.tx_id,
13701            0x3b6b26ff558298f2,
13702            fidl::encoding::DynamicFlags::empty(),
13703        )
13704    }
13705}
13706
13707#[must_use = "FIDL methods require a response to be sent"]
13708#[derive(Debug)]
13709pub struct SocketAddIpMembershipResponder {
13710    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13711    tx_id: u32,
13712}
13713
13714/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13715/// if the responder is dropped without sending a response, so that the client
13716/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13717impl std::ops::Drop for SocketAddIpMembershipResponder {
13718    fn drop(&mut self) {
13719        self.control_handle.shutdown();
13720        // Safety: drops once, never accessed again
13721        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13722    }
13723}
13724
13725impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
13726    type ControlHandle = SocketControlHandle;
13727
13728    fn control_handle(&self) -> &SocketControlHandle {
13729        &self.control_handle
13730    }
13731
13732    fn drop_without_shutdown(mut self) {
13733        // Safety: drops once, never accessed again due to mem::forget
13734        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13735        // Prevent Drop from running (which would shut down the channel)
13736        std::mem::forget(self);
13737    }
13738}
13739
13740impl SocketAddIpMembershipResponder {
13741    /// Sends a response to the FIDL transaction.
13742    ///
13743    /// Sets the channel to shutdown if an error occurs.
13744    pub fn send(
13745        self,
13746        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13747    ) -> Result<(), fidl::Error> {
13748        let _result = self.send_raw(result);
13749        if _result.is_err() {
13750            self.control_handle.shutdown();
13751        }
13752        self.drop_without_shutdown();
13753        _result
13754    }
13755
13756    /// Similar to "send" but does not shutdown the channel if an error occurs.
13757    pub fn send_no_shutdown_on_err(
13758        self,
13759        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13760    ) -> Result<(), fidl::Error> {
13761        let _result = self.send_raw(result);
13762        self.drop_without_shutdown();
13763        _result
13764    }
13765
13766    fn send_raw(
13767        &self,
13768        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13769    ) -> Result<(), fidl::Error> {
13770        self.control_handle.inner.send::<fidl::encoding::ResultType<
13771            fidl::encoding::EmptyStruct,
13772            fidl_fuchsia_posix::Errno,
13773        >>(
13774            result,
13775            self.tx_id,
13776            0x76bc7df115a3b4d0,
13777            fidl::encoding::DynamicFlags::empty(),
13778        )
13779    }
13780}
13781
13782#[must_use = "FIDL methods require a response to be sent"]
13783#[derive(Debug)]
13784pub struct SocketDropIpMembershipResponder {
13785    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13786    tx_id: u32,
13787}
13788
13789/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13790/// if the responder is dropped without sending a response, so that the client
13791/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13792impl std::ops::Drop for SocketDropIpMembershipResponder {
13793    fn drop(&mut self) {
13794        self.control_handle.shutdown();
13795        // Safety: drops once, never accessed again
13796        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13797    }
13798}
13799
13800impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
13801    type ControlHandle = SocketControlHandle;
13802
13803    fn control_handle(&self) -> &SocketControlHandle {
13804        &self.control_handle
13805    }
13806
13807    fn drop_without_shutdown(mut self) {
13808        // Safety: drops once, never accessed again due to mem::forget
13809        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13810        // Prevent Drop from running (which would shut down the channel)
13811        std::mem::forget(self);
13812    }
13813}
13814
13815impl SocketDropIpMembershipResponder {
13816    /// Sends a response to the FIDL transaction.
13817    ///
13818    /// Sets the channel to shutdown if an error occurs.
13819    pub fn send(
13820        self,
13821        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13822    ) -> Result<(), fidl::Error> {
13823        let _result = self.send_raw(result);
13824        if _result.is_err() {
13825            self.control_handle.shutdown();
13826        }
13827        self.drop_without_shutdown();
13828        _result
13829    }
13830
13831    /// Similar to "send" but does not shutdown the channel if an error occurs.
13832    pub fn send_no_shutdown_on_err(
13833        self,
13834        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13835    ) -> Result<(), fidl::Error> {
13836        let _result = self.send_raw(result);
13837        self.drop_without_shutdown();
13838        _result
13839    }
13840
13841    fn send_raw(
13842        &self,
13843        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13844    ) -> Result<(), fidl::Error> {
13845        self.control_handle.inner.send::<fidl::encoding::ResultType<
13846            fidl::encoding::EmptyStruct,
13847            fidl_fuchsia_posix::Errno,
13848        >>(
13849            result,
13850            self.tx_id,
13851            0x2888f3099188d03,
13852            fidl::encoding::DynamicFlags::empty(),
13853        )
13854    }
13855}
13856
13857#[must_use = "FIDL methods require a response to be sent"]
13858#[derive(Debug)]
13859pub struct SocketSetIpTransparentResponder {
13860    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13861    tx_id: u32,
13862}
13863
13864/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13865/// if the responder is dropped without sending a response, so that the client
13866/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13867impl std::ops::Drop for SocketSetIpTransparentResponder {
13868    fn drop(&mut self) {
13869        self.control_handle.shutdown();
13870        // Safety: drops once, never accessed again
13871        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13872    }
13873}
13874
13875impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
13876    type ControlHandle = SocketControlHandle;
13877
13878    fn control_handle(&self) -> &SocketControlHandle {
13879        &self.control_handle
13880    }
13881
13882    fn drop_without_shutdown(mut self) {
13883        // Safety: drops once, never accessed again due to mem::forget
13884        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13885        // Prevent Drop from running (which would shut down the channel)
13886        std::mem::forget(self);
13887    }
13888}
13889
13890impl SocketSetIpTransparentResponder {
13891    /// Sends a response to the FIDL transaction.
13892    ///
13893    /// Sets the channel to shutdown if an error occurs.
13894    pub fn send(
13895        self,
13896        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13897    ) -> Result<(), fidl::Error> {
13898        let _result = self.send_raw(result);
13899        if _result.is_err() {
13900            self.control_handle.shutdown();
13901        }
13902        self.drop_without_shutdown();
13903        _result
13904    }
13905
13906    /// Similar to "send" but does not shutdown the channel if an error occurs.
13907    pub fn send_no_shutdown_on_err(
13908        self,
13909        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13910    ) -> Result<(), fidl::Error> {
13911        let _result = self.send_raw(result);
13912        self.drop_without_shutdown();
13913        _result
13914    }
13915
13916    fn send_raw(
13917        &self,
13918        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13919    ) -> Result<(), fidl::Error> {
13920        self.control_handle.inner.send::<fidl::encoding::ResultType<
13921            fidl::encoding::EmptyStruct,
13922            fidl_fuchsia_posix::Errno,
13923        >>(
13924            result,
13925            self.tx_id,
13926            0x1ae532b0c066e3a0,
13927            fidl::encoding::DynamicFlags::empty(),
13928        )
13929    }
13930}
13931
13932#[must_use = "FIDL methods require a response to be sent"]
13933#[derive(Debug)]
13934pub struct SocketGetIpTransparentResponder {
13935    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13936    tx_id: u32,
13937}
13938
13939/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13940/// if the responder is dropped without sending a response, so that the client
13941/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13942impl std::ops::Drop for SocketGetIpTransparentResponder {
13943    fn drop(&mut self) {
13944        self.control_handle.shutdown();
13945        // Safety: drops once, never accessed again
13946        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13947    }
13948}
13949
13950impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
13951    type ControlHandle = SocketControlHandle;
13952
13953    fn control_handle(&self) -> &SocketControlHandle {
13954        &self.control_handle
13955    }
13956
13957    fn drop_without_shutdown(mut self) {
13958        // Safety: drops once, never accessed again due to mem::forget
13959        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13960        // Prevent Drop from running (which would shut down the channel)
13961        std::mem::forget(self);
13962    }
13963}
13964
13965impl SocketGetIpTransparentResponder {
13966    /// Sends a response to the FIDL transaction.
13967    ///
13968    /// Sets the channel to shutdown if an error occurs.
13969    pub fn send(
13970        self,
13971        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13972    ) -> Result<(), fidl::Error> {
13973        let _result = self.send_raw(result);
13974        if _result.is_err() {
13975            self.control_handle.shutdown();
13976        }
13977        self.drop_without_shutdown();
13978        _result
13979    }
13980
13981    /// Similar to "send" but does not shutdown the channel if an error occurs.
13982    pub fn send_no_shutdown_on_err(
13983        self,
13984        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13985    ) -> Result<(), fidl::Error> {
13986        let _result = self.send_raw(result);
13987        self.drop_without_shutdown();
13988        _result
13989    }
13990
13991    fn send_raw(
13992        &self,
13993        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13994    ) -> Result<(), fidl::Error> {
13995        self.control_handle.inner.send::<fidl::encoding::ResultType<
13996            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
13997            fidl_fuchsia_posix::Errno,
13998        >>(
13999            result.map(|value| (value,)),
14000            self.tx_id,
14001            0x51d43695962ebfb5,
14002            fidl::encoding::DynamicFlags::empty(),
14003        )
14004    }
14005}
14006
14007#[must_use = "FIDL methods require a response to be sent"]
14008#[derive(Debug)]
14009pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14010    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14011    tx_id: u32,
14012}
14013
14014/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14015/// if the responder is dropped without sending a response, so that the client
14016/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14017impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14018    fn drop(&mut self) {
14019        self.control_handle.shutdown();
14020        // Safety: drops once, never accessed again
14021        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14022    }
14023}
14024
14025impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14026    type ControlHandle = SocketControlHandle;
14027
14028    fn control_handle(&self) -> &SocketControlHandle {
14029        &self.control_handle
14030    }
14031
14032    fn drop_without_shutdown(mut self) {
14033        // Safety: drops once, never accessed again due to mem::forget
14034        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14035        // Prevent Drop from running (which would shut down the channel)
14036        std::mem::forget(self);
14037    }
14038}
14039
14040impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14041    /// Sends a response to the FIDL transaction.
14042    ///
14043    /// Sets the channel to shutdown if an error occurs.
14044    pub fn send(
14045        self,
14046        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14047    ) -> Result<(), fidl::Error> {
14048        let _result = self.send_raw(result);
14049        if _result.is_err() {
14050            self.control_handle.shutdown();
14051        }
14052        self.drop_without_shutdown();
14053        _result
14054    }
14055
14056    /// Similar to "send" but does not shutdown the channel if an error occurs.
14057    pub fn send_no_shutdown_on_err(
14058        self,
14059        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14060    ) -> Result<(), fidl::Error> {
14061        let _result = self.send_raw(result);
14062        self.drop_without_shutdown();
14063        _result
14064    }
14065
14066    fn send_raw(
14067        &self,
14068        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14069    ) -> Result<(), fidl::Error> {
14070        self.control_handle.inner.send::<fidl::encoding::ResultType<
14071            fidl::encoding::EmptyStruct,
14072            fidl_fuchsia_posix::Errno,
14073        >>(
14074            result,
14075            self.tx_id,
14076            0x4722b4ce52f7840,
14077            fidl::encoding::DynamicFlags::empty(),
14078        )
14079    }
14080}
14081
14082#[must_use = "FIDL methods require a response to be sent"]
14083#[derive(Debug)]
14084pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14085    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14086    tx_id: u32,
14087}
14088
14089/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14090/// if the responder is dropped without sending a response, so that the client
14091/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14092impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14093    fn drop(&mut self) {
14094        self.control_handle.shutdown();
14095        // Safety: drops once, never accessed again
14096        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14097    }
14098}
14099
14100impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14101    type ControlHandle = SocketControlHandle;
14102
14103    fn control_handle(&self) -> &SocketControlHandle {
14104        &self.control_handle
14105    }
14106
14107    fn drop_without_shutdown(mut self) {
14108        // Safety: drops once, never accessed again due to mem::forget
14109        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14110        // Prevent Drop from running (which would shut down the channel)
14111        std::mem::forget(self);
14112    }
14113}
14114
14115impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14116    /// Sends a response to the FIDL transaction.
14117    ///
14118    /// Sets the channel to shutdown if an error occurs.
14119    pub fn send(
14120        self,
14121        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14122    ) -> Result<(), fidl::Error> {
14123        let _result = self.send_raw(result);
14124        if _result.is_err() {
14125            self.control_handle.shutdown();
14126        }
14127        self.drop_without_shutdown();
14128        _result
14129    }
14130
14131    /// Similar to "send" but does not shutdown the channel if an error occurs.
14132    pub fn send_no_shutdown_on_err(
14133        self,
14134        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14135    ) -> Result<(), fidl::Error> {
14136        let _result = self.send_raw(result);
14137        self.drop_without_shutdown();
14138        _result
14139    }
14140
14141    fn send_raw(
14142        &self,
14143        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14144    ) -> Result<(), fidl::Error> {
14145        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14146            result.map(|value| (value,)),
14147            self.tx_id,
14148            0x2a0e7dc5d6bfdfe9,
14149            fidl::encoding::DynamicFlags::empty()
14150        )
14151    }
14152}
14153
14154#[must_use = "FIDL methods require a response to be sent"]
14155#[derive(Debug)]
14156pub struct SocketAddIpv6MembershipResponder {
14157    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14158    tx_id: u32,
14159}
14160
14161/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14162/// if the responder is dropped without sending a response, so that the client
14163/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14164impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14165    fn drop(&mut self) {
14166        self.control_handle.shutdown();
14167        // Safety: drops once, never accessed again
14168        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14169    }
14170}
14171
14172impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14173    type ControlHandle = SocketControlHandle;
14174
14175    fn control_handle(&self) -> &SocketControlHandle {
14176        &self.control_handle
14177    }
14178
14179    fn drop_without_shutdown(mut self) {
14180        // Safety: drops once, never accessed again due to mem::forget
14181        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14182        // Prevent Drop from running (which would shut down the channel)
14183        std::mem::forget(self);
14184    }
14185}
14186
14187impl SocketAddIpv6MembershipResponder {
14188    /// Sends a response to the FIDL transaction.
14189    ///
14190    /// Sets the channel to shutdown if an error occurs.
14191    pub fn send(
14192        self,
14193        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14194    ) -> Result<(), fidl::Error> {
14195        let _result = self.send_raw(result);
14196        if _result.is_err() {
14197            self.control_handle.shutdown();
14198        }
14199        self.drop_without_shutdown();
14200        _result
14201    }
14202
14203    /// Similar to "send" but does not shutdown the channel if an error occurs.
14204    pub fn send_no_shutdown_on_err(
14205        self,
14206        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14207    ) -> Result<(), fidl::Error> {
14208        let _result = self.send_raw(result);
14209        self.drop_without_shutdown();
14210        _result
14211    }
14212
14213    fn send_raw(
14214        &self,
14215        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14216    ) -> Result<(), fidl::Error> {
14217        self.control_handle.inner.send::<fidl::encoding::ResultType<
14218            fidl::encoding::EmptyStruct,
14219            fidl_fuchsia_posix::Errno,
14220        >>(
14221            result,
14222            self.tx_id,
14223            0x7c94727acb4ea4b3,
14224            fidl::encoding::DynamicFlags::empty(),
14225        )
14226    }
14227}
14228
14229#[must_use = "FIDL methods require a response to be sent"]
14230#[derive(Debug)]
14231pub struct SocketDropIpv6MembershipResponder {
14232    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14233    tx_id: u32,
14234}
14235
14236/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14237/// if the responder is dropped without sending a response, so that the client
14238/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14239impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14240    fn drop(&mut self) {
14241        self.control_handle.shutdown();
14242        // Safety: drops once, never accessed again
14243        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14244    }
14245}
14246
14247impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14248    type ControlHandle = SocketControlHandle;
14249
14250    fn control_handle(&self) -> &SocketControlHandle {
14251        &self.control_handle
14252    }
14253
14254    fn drop_without_shutdown(mut self) {
14255        // Safety: drops once, never accessed again due to mem::forget
14256        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14257        // Prevent Drop from running (which would shut down the channel)
14258        std::mem::forget(self);
14259    }
14260}
14261
14262impl SocketDropIpv6MembershipResponder {
14263    /// Sends a response to the FIDL transaction.
14264    ///
14265    /// Sets the channel to shutdown if an error occurs.
14266    pub fn send(
14267        self,
14268        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14269    ) -> Result<(), fidl::Error> {
14270        let _result = self.send_raw(result);
14271        if _result.is_err() {
14272            self.control_handle.shutdown();
14273        }
14274        self.drop_without_shutdown();
14275        _result
14276    }
14277
14278    /// Similar to "send" but does not shutdown the channel if an error occurs.
14279    pub fn send_no_shutdown_on_err(
14280        self,
14281        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14282    ) -> Result<(), fidl::Error> {
14283        let _result = self.send_raw(result);
14284        self.drop_without_shutdown();
14285        _result
14286    }
14287
14288    fn send_raw(
14289        &self,
14290        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14291    ) -> Result<(), fidl::Error> {
14292        self.control_handle.inner.send::<fidl::encoding::ResultType<
14293            fidl::encoding::EmptyStruct,
14294            fidl_fuchsia_posix::Errno,
14295        >>(
14296            result,
14297            self.tx_id,
14298            0x42104c70ccaba304,
14299            fidl::encoding::DynamicFlags::empty(),
14300        )
14301    }
14302}
14303
14304#[must_use = "FIDL methods require a response to be sent"]
14305#[derive(Debug)]
14306pub struct SocketSetIpv6MulticastInterfaceResponder {
14307    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14308    tx_id: u32,
14309}
14310
14311/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14312/// if the responder is dropped without sending a response, so that the client
14313/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14314impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14315    fn drop(&mut self) {
14316        self.control_handle.shutdown();
14317        // Safety: drops once, never accessed again
14318        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14319    }
14320}
14321
14322impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14323    type ControlHandle = SocketControlHandle;
14324
14325    fn control_handle(&self) -> &SocketControlHandle {
14326        &self.control_handle
14327    }
14328
14329    fn drop_without_shutdown(mut self) {
14330        // Safety: drops once, never accessed again due to mem::forget
14331        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14332        // Prevent Drop from running (which would shut down the channel)
14333        std::mem::forget(self);
14334    }
14335}
14336
14337impl SocketSetIpv6MulticastInterfaceResponder {
14338    /// Sends a response to the FIDL transaction.
14339    ///
14340    /// Sets the channel to shutdown if an error occurs.
14341    pub fn send(
14342        self,
14343        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14344    ) -> Result<(), fidl::Error> {
14345        let _result = self.send_raw(result);
14346        if _result.is_err() {
14347            self.control_handle.shutdown();
14348        }
14349        self.drop_without_shutdown();
14350        _result
14351    }
14352
14353    /// Similar to "send" but does not shutdown the channel if an error occurs.
14354    pub fn send_no_shutdown_on_err(
14355        self,
14356        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14357    ) -> Result<(), fidl::Error> {
14358        let _result = self.send_raw(result);
14359        self.drop_without_shutdown();
14360        _result
14361    }
14362
14363    fn send_raw(
14364        &self,
14365        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14366    ) -> Result<(), fidl::Error> {
14367        self.control_handle.inner.send::<fidl::encoding::ResultType<
14368            fidl::encoding::EmptyStruct,
14369            fidl_fuchsia_posix::Errno,
14370        >>(
14371            result,
14372            self.tx_id,
14373            0x135f76db3774ab3b,
14374            fidl::encoding::DynamicFlags::empty(),
14375        )
14376    }
14377}
14378
14379#[must_use = "FIDL methods require a response to be sent"]
14380#[derive(Debug)]
14381pub struct SocketGetIpv6MulticastInterfaceResponder {
14382    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14383    tx_id: u32,
14384}
14385
14386/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14387/// if the responder is dropped without sending a response, so that the client
14388/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14389impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14390    fn drop(&mut self) {
14391        self.control_handle.shutdown();
14392        // Safety: drops once, never accessed again
14393        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14394    }
14395}
14396
14397impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14398    type ControlHandle = SocketControlHandle;
14399
14400    fn control_handle(&self) -> &SocketControlHandle {
14401        &self.control_handle
14402    }
14403
14404    fn drop_without_shutdown(mut self) {
14405        // Safety: drops once, never accessed again due to mem::forget
14406        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14407        // Prevent Drop from running (which would shut down the channel)
14408        std::mem::forget(self);
14409    }
14410}
14411
14412impl SocketGetIpv6MulticastInterfaceResponder {
14413    /// Sends a response to the FIDL transaction.
14414    ///
14415    /// Sets the channel to shutdown if an error occurs.
14416    pub fn send(
14417        self,
14418        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14419    ) -> Result<(), fidl::Error> {
14420        let _result = self.send_raw(result);
14421        if _result.is_err() {
14422            self.control_handle.shutdown();
14423        }
14424        self.drop_without_shutdown();
14425        _result
14426    }
14427
14428    /// Similar to "send" but does not shutdown the channel if an error occurs.
14429    pub fn send_no_shutdown_on_err(
14430        self,
14431        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14432    ) -> Result<(), fidl::Error> {
14433        let _result = self.send_raw(result);
14434        self.drop_without_shutdown();
14435        _result
14436    }
14437
14438    fn send_raw(
14439        &self,
14440        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14441    ) -> Result<(), fidl::Error> {
14442        self.control_handle.inner.send::<fidl::encoding::ResultType<
14443            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14444            fidl_fuchsia_posix::Errno,
14445        >>(
14446            result.map(|value| (value,)),
14447            self.tx_id,
14448            0x1f26fcdd348f1882,
14449            fidl::encoding::DynamicFlags::empty(),
14450        )
14451    }
14452}
14453
14454#[must_use = "FIDL methods require a response to be sent"]
14455#[derive(Debug)]
14456pub struct SocketSetIpv6UnicastHopsResponder {
14457    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14458    tx_id: u32,
14459}
14460
14461/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14462/// if the responder is dropped without sending a response, so that the client
14463/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14464impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14465    fn drop(&mut self) {
14466        self.control_handle.shutdown();
14467        // Safety: drops once, never accessed again
14468        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14469    }
14470}
14471
14472impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14473    type ControlHandle = SocketControlHandle;
14474
14475    fn control_handle(&self) -> &SocketControlHandle {
14476        &self.control_handle
14477    }
14478
14479    fn drop_without_shutdown(mut self) {
14480        // Safety: drops once, never accessed again due to mem::forget
14481        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14482        // Prevent Drop from running (which would shut down the channel)
14483        std::mem::forget(self);
14484    }
14485}
14486
14487impl SocketSetIpv6UnicastHopsResponder {
14488    /// Sends a response to the FIDL transaction.
14489    ///
14490    /// Sets the channel to shutdown if an error occurs.
14491    pub fn send(
14492        self,
14493        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14494    ) -> Result<(), fidl::Error> {
14495        let _result = self.send_raw(result);
14496        if _result.is_err() {
14497            self.control_handle.shutdown();
14498        }
14499        self.drop_without_shutdown();
14500        _result
14501    }
14502
14503    /// Similar to "send" but does not shutdown the channel if an error occurs.
14504    pub fn send_no_shutdown_on_err(
14505        self,
14506        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14507    ) -> Result<(), fidl::Error> {
14508        let _result = self.send_raw(result);
14509        self.drop_without_shutdown();
14510        _result
14511    }
14512
14513    fn send_raw(
14514        &self,
14515        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14516    ) -> Result<(), fidl::Error> {
14517        self.control_handle.inner.send::<fidl::encoding::ResultType<
14518            fidl::encoding::EmptyStruct,
14519            fidl_fuchsia_posix::Errno,
14520        >>(
14521            result,
14522            self.tx_id,
14523            0x157d51e98f462859,
14524            fidl::encoding::DynamicFlags::empty(),
14525        )
14526    }
14527}
14528
14529#[must_use = "FIDL methods require a response to be sent"]
14530#[derive(Debug)]
14531pub struct SocketGetIpv6UnicastHopsResponder {
14532    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14533    tx_id: u32,
14534}
14535
14536/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14537/// if the responder is dropped without sending a response, so that the client
14538/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14539impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14540    fn drop(&mut self) {
14541        self.control_handle.shutdown();
14542        // Safety: drops once, never accessed again
14543        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14544    }
14545}
14546
14547impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14548    type ControlHandle = SocketControlHandle;
14549
14550    fn control_handle(&self) -> &SocketControlHandle {
14551        &self.control_handle
14552    }
14553
14554    fn drop_without_shutdown(mut self) {
14555        // Safety: drops once, never accessed again due to mem::forget
14556        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14557        // Prevent Drop from running (which would shut down the channel)
14558        std::mem::forget(self);
14559    }
14560}
14561
14562impl SocketGetIpv6UnicastHopsResponder {
14563    /// Sends a response to the FIDL transaction.
14564    ///
14565    /// Sets the channel to shutdown if an error occurs.
14566    pub fn send(
14567        self,
14568        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14569    ) -> Result<(), fidl::Error> {
14570        let _result = self.send_raw(result);
14571        if _result.is_err() {
14572            self.control_handle.shutdown();
14573        }
14574        self.drop_without_shutdown();
14575        _result
14576    }
14577
14578    /// Similar to "send" but does not shutdown the channel if an error occurs.
14579    pub fn send_no_shutdown_on_err(
14580        self,
14581        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14582    ) -> Result<(), fidl::Error> {
14583        let _result = self.send_raw(result);
14584        self.drop_without_shutdown();
14585        _result
14586    }
14587
14588    fn send_raw(
14589        &self,
14590        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14591    ) -> Result<(), fidl::Error> {
14592        self.control_handle.inner.send::<fidl::encoding::ResultType<
14593            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14594            fidl_fuchsia_posix::Errno,
14595        >>(
14596            result.map(|value| (value,)),
14597            self.tx_id,
14598            0x21f4641cad8bd8d2,
14599            fidl::encoding::DynamicFlags::empty(),
14600        )
14601    }
14602}
14603
14604#[must_use = "FIDL methods require a response to be sent"]
14605#[derive(Debug)]
14606pub struct SocketSetIpv6ReceiveHopLimitResponder {
14607    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14608    tx_id: u32,
14609}
14610
14611/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14612/// if the responder is dropped without sending a response, so that the client
14613/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14614impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14615    fn drop(&mut self) {
14616        self.control_handle.shutdown();
14617        // Safety: drops once, never accessed again
14618        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14619    }
14620}
14621
14622impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14623    type ControlHandle = SocketControlHandle;
14624
14625    fn control_handle(&self) -> &SocketControlHandle {
14626        &self.control_handle
14627    }
14628
14629    fn drop_without_shutdown(mut self) {
14630        // Safety: drops once, never accessed again due to mem::forget
14631        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14632        // Prevent Drop from running (which would shut down the channel)
14633        std::mem::forget(self);
14634    }
14635}
14636
14637impl SocketSetIpv6ReceiveHopLimitResponder {
14638    /// Sends a response to the FIDL transaction.
14639    ///
14640    /// Sets the channel to shutdown if an error occurs.
14641    pub fn send(
14642        self,
14643        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14644    ) -> Result<(), fidl::Error> {
14645        let _result = self.send_raw(result);
14646        if _result.is_err() {
14647            self.control_handle.shutdown();
14648        }
14649        self.drop_without_shutdown();
14650        _result
14651    }
14652
14653    /// Similar to "send" but does not shutdown the channel if an error occurs.
14654    pub fn send_no_shutdown_on_err(
14655        self,
14656        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14657    ) -> Result<(), fidl::Error> {
14658        let _result = self.send_raw(result);
14659        self.drop_without_shutdown();
14660        _result
14661    }
14662
14663    fn send_raw(
14664        &self,
14665        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14666    ) -> Result<(), fidl::Error> {
14667        self.control_handle.inner.send::<fidl::encoding::ResultType<
14668            fidl::encoding::EmptyStruct,
14669            fidl_fuchsia_posix::Errno,
14670        >>(
14671            result,
14672            self.tx_id,
14673            0x5c24808ed2e84a1e,
14674            fidl::encoding::DynamicFlags::empty(),
14675        )
14676    }
14677}
14678
14679#[must_use = "FIDL methods require a response to be sent"]
14680#[derive(Debug)]
14681pub struct SocketGetIpv6ReceiveHopLimitResponder {
14682    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14683    tx_id: u32,
14684}
14685
14686/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14687/// if the responder is dropped without sending a response, so that the client
14688/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14689impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
14690    fn drop(&mut self) {
14691        self.control_handle.shutdown();
14692        // Safety: drops once, never accessed again
14693        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14694    }
14695}
14696
14697impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
14698    type ControlHandle = SocketControlHandle;
14699
14700    fn control_handle(&self) -> &SocketControlHandle {
14701        &self.control_handle
14702    }
14703
14704    fn drop_without_shutdown(mut self) {
14705        // Safety: drops once, never accessed again due to mem::forget
14706        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14707        // Prevent Drop from running (which would shut down the channel)
14708        std::mem::forget(self);
14709    }
14710}
14711
14712impl SocketGetIpv6ReceiveHopLimitResponder {
14713    /// Sends a response to the FIDL transaction.
14714    ///
14715    /// Sets the channel to shutdown if an error occurs.
14716    pub fn send(
14717        self,
14718        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14719    ) -> Result<(), fidl::Error> {
14720        let _result = self.send_raw(result);
14721        if _result.is_err() {
14722            self.control_handle.shutdown();
14723        }
14724        self.drop_without_shutdown();
14725        _result
14726    }
14727
14728    /// Similar to "send" but does not shutdown the channel if an error occurs.
14729    pub fn send_no_shutdown_on_err(
14730        self,
14731        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14732    ) -> Result<(), fidl::Error> {
14733        let _result = self.send_raw(result);
14734        self.drop_without_shutdown();
14735        _result
14736    }
14737
14738    fn send_raw(
14739        &self,
14740        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14741    ) -> Result<(), fidl::Error> {
14742        self.control_handle.inner.send::<fidl::encoding::ResultType<
14743            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
14744            fidl_fuchsia_posix::Errno,
14745        >>(
14746            result.map(|value| (value,)),
14747            self.tx_id,
14748            0x341e06689885b4c0,
14749            fidl::encoding::DynamicFlags::empty(),
14750        )
14751    }
14752}
14753
14754#[must_use = "FIDL methods require a response to be sent"]
14755#[derive(Debug)]
14756pub struct SocketSetIpv6MulticastHopsResponder {
14757    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14758    tx_id: u32,
14759}
14760
14761/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14762/// if the responder is dropped without sending a response, so that the client
14763/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14764impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
14765    fn drop(&mut self) {
14766        self.control_handle.shutdown();
14767        // Safety: drops once, never accessed again
14768        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14769    }
14770}
14771
14772impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
14773    type ControlHandle = SocketControlHandle;
14774
14775    fn control_handle(&self) -> &SocketControlHandle {
14776        &self.control_handle
14777    }
14778
14779    fn drop_without_shutdown(mut self) {
14780        // Safety: drops once, never accessed again due to mem::forget
14781        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14782        // Prevent Drop from running (which would shut down the channel)
14783        std::mem::forget(self);
14784    }
14785}
14786
14787impl SocketSetIpv6MulticastHopsResponder {
14788    /// Sends a response to the FIDL transaction.
14789    ///
14790    /// Sets the channel to shutdown if an error occurs.
14791    pub fn send(
14792        self,
14793        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14794    ) -> Result<(), fidl::Error> {
14795        let _result = self.send_raw(result);
14796        if _result.is_err() {
14797            self.control_handle.shutdown();
14798        }
14799        self.drop_without_shutdown();
14800        _result
14801    }
14802
14803    /// Similar to "send" but does not shutdown the channel if an error occurs.
14804    pub fn send_no_shutdown_on_err(
14805        self,
14806        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14807    ) -> Result<(), fidl::Error> {
14808        let _result = self.send_raw(result);
14809        self.drop_without_shutdown();
14810        _result
14811    }
14812
14813    fn send_raw(
14814        &self,
14815        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14816    ) -> Result<(), fidl::Error> {
14817        self.control_handle.inner.send::<fidl::encoding::ResultType<
14818            fidl::encoding::EmptyStruct,
14819            fidl_fuchsia_posix::Errno,
14820        >>(
14821            result,
14822            self.tx_id,
14823            0x25b9cd4d181f82c1,
14824            fidl::encoding::DynamicFlags::empty(),
14825        )
14826    }
14827}
14828
14829#[must_use = "FIDL methods require a response to be sent"]
14830#[derive(Debug)]
14831pub struct SocketGetIpv6MulticastHopsResponder {
14832    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14833    tx_id: u32,
14834}
14835
14836/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14837/// if the responder is dropped without sending a response, so that the client
14838/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14839impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
14840    fn drop(&mut self) {
14841        self.control_handle.shutdown();
14842        // Safety: drops once, never accessed again
14843        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14844    }
14845}
14846
14847impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
14848    type ControlHandle = SocketControlHandle;
14849
14850    fn control_handle(&self) -> &SocketControlHandle {
14851        &self.control_handle
14852    }
14853
14854    fn drop_without_shutdown(mut self) {
14855        // Safety: drops once, never accessed again due to mem::forget
14856        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14857        // Prevent Drop from running (which would shut down the channel)
14858        std::mem::forget(self);
14859    }
14860}
14861
14862impl SocketGetIpv6MulticastHopsResponder {
14863    /// Sends a response to the FIDL transaction.
14864    ///
14865    /// Sets the channel to shutdown if an error occurs.
14866    pub fn send(
14867        self,
14868        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14869    ) -> Result<(), fidl::Error> {
14870        let _result = self.send_raw(result);
14871        if _result.is_err() {
14872            self.control_handle.shutdown();
14873        }
14874        self.drop_without_shutdown();
14875        _result
14876    }
14877
14878    /// Similar to "send" but does not shutdown the channel if an error occurs.
14879    pub fn send_no_shutdown_on_err(
14880        self,
14881        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14882    ) -> Result<(), fidl::Error> {
14883        let _result = self.send_raw(result);
14884        self.drop_without_shutdown();
14885        _result
14886    }
14887
14888    fn send_raw(
14889        &self,
14890        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14891    ) -> Result<(), fidl::Error> {
14892        self.control_handle.inner.send::<fidl::encoding::ResultType<
14893            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
14894            fidl_fuchsia_posix::Errno,
14895        >>(
14896            result.map(|value| (value,)),
14897            self.tx_id,
14898            0x52916948a365012a,
14899            fidl::encoding::DynamicFlags::empty(),
14900        )
14901    }
14902}
14903
14904#[must_use = "FIDL methods require a response to be sent"]
14905#[derive(Debug)]
14906pub struct SocketSetIpv6MulticastLoopbackResponder {
14907    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14908    tx_id: u32,
14909}
14910
14911/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14912/// if the responder is dropped without sending a response, so that the client
14913/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14914impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
14915    fn drop(&mut self) {
14916        self.control_handle.shutdown();
14917        // Safety: drops once, never accessed again
14918        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14919    }
14920}
14921
14922impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
14923    type ControlHandle = SocketControlHandle;
14924
14925    fn control_handle(&self) -> &SocketControlHandle {
14926        &self.control_handle
14927    }
14928
14929    fn drop_without_shutdown(mut self) {
14930        // Safety: drops once, never accessed again due to mem::forget
14931        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14932        // Prevent Drop from running (which would shut down the channel)
14933        std::mem::forget(self);
14934    }
14935}
14936
14937impl SocketSetIpv6MulticastLoopbackResponder {
14938    /// Sends a response to the FIDL transaction.
14939    ///
14940    /// Sets the channel to shutdown if an error occurs.
14941    pub fn send(
14942        self,
14943        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14944    ) -> Result<(), fidl::Error> {
14945        let _result = self.send_raw(result);
14946        if _result.is_err() {
14947            self.control_handle.shutdown();
14948        }
14949        self.drop_without_shutdown();
14950        _result
14951    }
14952
14953    /// Similar to "send" but does not shutdown the channel if an error occurs.
14954    pub fn send_no_shutdown_on_err(
14955        self,
14956        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14957    ) -> Result<(), fidl::Error> {
14958        let _result = self.send_raw(result);
14959        self.drop_without_shutdown();
14960        _result
14961    }
14962
14963    fn send_raw(
14964        &self,
14965        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14966    ) -> Result<(), fidl::Error> {
14967        self.control_handle.inner.send::<fidl::encoding::ResultType<
14968            fidl::encoding::EmptyStruct,
14969            fidl_fuchsia_posix::Errno,
14970        >>(
14971            result,
14972            self.tx_id,
14973            0x55701c409ff41b40,
14974            fidl::encoding::DynamicFlags::empty(),
14975        )
14976    }
14977}
14978
14979#[must_use = "FIDL methods require a response to be sent"]
14980#[derive(Debug)]
14981pub struct SocketGetIpv6MulticastLoopbackResponder {
14982    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14983    tx_id: u32,
14984}
14985
14986/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14987/// if the responder is dropped without sending a response, so that the client
14988/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14989impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
14990    fn drop(&mut self) {
14991        self.control_handle.shutdown();
14992        // Safety: drops once, never accessed again
14993        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14994    }
14995}
14996
14997impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
14998    type ControlHandle = SocketControlHandle;
14999
15000    fn control_handle(&self) -> &SocketControlHandle {
15001        &self.control_handle
15002    }
15003
15004    fn drop_without_shutdown(mut self) {
15005        // Safety: drops once, never accessed again due to mem::forget
15006        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15007        // Prevent Drop from running (which would shut down the channel)
15008        std::mem::forget(self);
15009    }
15010}
15011
15012impl SocketGetIpv6MulticastLoopbackResponder {
15013    /// Sends a response to the FIDL transaction.
15014    ///
15015    /// Sets the channel to shutdown if an error occurs.
15016    pub fn send(
15017        self,
15018        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15019    ) -> Result<(), fidl::Error> {
15020        let _result = self.send_raw(result);
15021        if _result.is_err() {
15022            self.control_handle.shutdown();
15023        }
15024        self.drop_without_shutdown();
15025        _result
15026    }
15027
15028    /// Similar to "send" but does not shutdown the channel if an error occurs.
15029    pub fn send_no_shutdown_on_err(
15030        self,
15031        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15032    ) -> Result<(), fidl::Error> {
15033        let _result = self.send_raw(result);
15034        self.drop_without_shutdown();
15035        _result
15036    }
15037
15038    fn send_raw(
15039        &self,
15040        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15041    ) -> Result<(), fidl::Error> {
15042        self.control_handle.inner.send::<fidl::encoding::ResultType<
15043            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15044            fidl_fuchsia_posix::Errno,
15045        >>(
15046            result.map(|value| (value,)),
15047            self.tx_id,
15048            0x4415b701fde319c3,
15049            fidl::encoding::DynamicFlags::empty(),
15050        )
15051    }
15052}
15053
15054#[must_use = "FIDL methods require a response to be sent"]
15055#[derive(Debug)]
15056pub struct SocketSetIpv6OnlyResponder {
15057    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15058    tx_id: u32,
15059}
15060
15061/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15062/// if the responder is dropped without sending a response, so that the client
15063/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15064impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15065    fn drop(&mut self) {
15066        self.control_handle.shutdown();
15067        // Safety: drops once, never accessed again
15068        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15069    }
15070}
15071
15072impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15073    type ControlHandle = SocketControlHandle;
15074
15075    fn control_handle(&self) -> &SocketControlHandle {
15076        &self.control_handle
15077    }
15078
15079    fn drop_without_shutdown(mut self) {
15080        // Safety: drops once, never accessed again due to mem::forget
15081        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15082        // Prevent Drop from running (which would shut down the channel)
15083        std::mem::forget(self);
15084    }
15085}
15086
15087impl SocketSetIpv6OnlyResponder {
15088    /// Sends a response to the FIDL transaction.
15089    ///
15090    /// Sets the channel to shutdown if an error occurs.
15091    pub fn send(
15092        self,
15093        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15094    ) -> Result<(), fidl::Error> {
15095        let _result = self.send_raw(result);
15096        if _result.is_err() {
15097            self.control_handle.shutdown();
15098        }
15099        self.drop_without_shutdown();
15100        _result
15101    }
15102
15103    /// Similar to "send" but does not shutdown the channel if an error occurs.
15104    pub fn send_no_shutdown_on_err(
15105        self,
15106        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15107    ) -> Result<(), fidl::Error> {
15108        let _result = self.send_raw(result);
15109        self.drop_without_shutdown();
15110        _result
15111    }
15112
15113    fn send_raw(
15114        &self,
15115        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15116    ) -> Result<(), fidl::Error> {
15117        self.control_handle.inner.send::<fidl::encoding::ResultType<
15118            fidl::encoding::EmptyStruct,
15119            fidl_fuchsia_posix::Errno,
15120        >>(
15121            result,
15122            self.tx_id,
15123            0x4873f1364758cbba,
15124            fidl::encoding::DynamicFlags::empty(),
15125        )
15126    }
15127}
15128
15129#[must_use = "FIDL methods require a response to be sent"]
15130#[derive(Debug)]
15131pub struct SocketGetIpv6OnlyResponder {
15132    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15133    tx_id: u32,
15134}
15135
15136/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15137/// if the responder is dropped without sending a response, so that the client
15138/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15139impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15140    fn drop(&mut self) {
15141        self.control_handle.shutdown();
15142        // Safety: drops once, never accessed again
15143        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15144    }
15145}
15146
15147impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15148    type ControlHandle = SocketControlHandle;
15149
15150    fn control_handle(&self) -> &SocketControlHandle {
15151        &self.control_handle
15152    }
15153
15154    fn drop_without_shutdown(mut self) {
15155        // Safety: drops once, never accessed again due to mem::forget
15156        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15157        // Prevent Drop from running (which would shut down the channel)
15158        std::mem::forget(self);
15159    }
15160}
15161
15162impl SocketGetIpv6OnlyResponder {
15163    /// Sends a response to the FIDL transaction.
15164    ///
15165    /// Sets the channel to shutdown if an error occurs.
15166    pub fn send(
15167        self,
15168        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15169    ) -> Result<(), fidl::Error> {
15170        let _result = self.send_raw(result);
15171        if _result.is_err() {
15172            self.control_handle.shutdown();
15173        }
15174        self.drop_without_shutdown();
15175        _result
15176    }
15177
15178    /// Similar to "send" but does not shutdown the channel if an error occurs.
15179    pub fn send_no_shutdown_on_err(
15180        self,
15181        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15182    ) -> Result<(), fidl::Error> {
15183        let _result = self.send_raw(result);
15184        self.drop_without_shutdown();
15185        _result
15186    }
15187
15188    fn send_raw(
15189        &self,
15190        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15191    ) -> Result<(), fidl::Error> {
15192        self.control_handle.inner.send::<fidl::encoding::ResultType<
15193            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15194            fidl_fuchsia_posix::Errno,
15195        >>(
15196            result.map(|value| (value,)),
15197            self.tx_id,
15198            0x4aa3340a1a26b89c,
15199            fidl::encoding::DynamicFlags::empty(),
15200        )
15201    }
15202}
15203
15204#[must_use = "FIDL methods require a response to be sent"]
15205#[derive(Debug)]
15206pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15207    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15208    tx_id: u32,
15209}
15210
15211/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15212/// if the responder is dropped without sending a response, so that the client
15213/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15214impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15215    fn drop(&mut self) {
15216        self.control_handle.shutdown();
15217        // Safety: drops once, never accessed again
15218        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15219    }
15220}
15221
15222impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15223    type ControlHandle = SocketControlHandle;
15224
15225    fn control_handle(&self) -> &SocketControlHandle {
15226        &self.control_handle
15227    }
15228
15229    fn drop_without_shutdown(mut self) {
15230        // Safety: drops once, never accessed again due to mem::forget
15231        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15232        // Prevent Drop from running (which would shut down the channel)
15233        std::mem::forget(self);
15234    }
15235}
15236
15237impl SocketSetIpv6ReceiveTrafficClassResponder {
15238    /// Sends a response to the FIDL transaction.
15239    ///
15240    /// Sets the channel to shutdown if an error occurs.
15241    pub fn send(
15242        self,
15243        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15244    ) -> Result<(), fidl::Error> {
15245        let _result = self.send_raw(result);
15246        if _result.is_err() {
15247            self.control_handle.shutdown();
15248        }
15249        self.drop_without_shutdown();
15250        _result
15251    }
15252
15253    /// Similar to "send" but does not shutdown the channel if an error occurs.
15254    pub fn send_no_shutdown_on_err(
15255        self,
15256        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15257    ) -> Result<(), fidl::Error> {
15258        let _result = self.send_raw(result);
15259        self.drop_without_shutdown();
15260        _result
15261    }
15262
15263    fn send_raw(
15264        &self,
15265        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15266    ) -> Result<(), fidl::Error> {
15267        self.control_handle.inner.send::<fidl::encoding::ResultType<
15268            fidl::encoding::EmptyStruct,
15269            fidl_fuchsia_posix::Errno,
15270        >>(
15271            result,
15272            self.tx_id,
15273            0x58f07c8788d099a0,
15274            fidl::encoding::DynamicFlags::empty(),
15275        )
15276    }
15277}
15278
15279#[must_use = "FIDL methods require a response to be sent"]
15280#[derive(Debug)]
15281pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15282    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15283    tx_id: u32,
15284}
15285
15286/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15287/// if the responder is dropped without sending a response, so that the client
15288/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15289impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15290    fn drop(&mut self) {
15291        self.control_handle.shutdown();
15292        // Safety: drops once, never accessed again
15293        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15294    }
15295}
15296
15297impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15298    type ControlHandle = SocketControlHandle;
15299
15300    fn control_handle(&self) -> &SocketControlHandle {
15301        &self.control_handle
15302    }
15303
15304    fn drop_without_shutdown(mut self) {
15305        // Safety: drops once, never accessed again due to mem::forget
15306        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15307        // Prevent Drop from running (which would shut down the channel)
15308        std::mem::forget(self);
15309    }
15310}
15311
15312impl SocketGetIpv6ReceiveTrafficClassResponder {
15313    /// Sends a response to the FIDL transaction.
15314    ///
15315    /// Sets the channel to shutdown if an error occurs.
15316    pub fn send(
15317        self,
15318        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15319    ) -> Result<(), fidl::Error> {
15320        let _result = self.send_raw(result);
15321        if _result.is_err() {
15322            self.control_handle.shutdown();
15323        }
15324        self.drop_without_shutdown();
15325        _result
15326    }
15327
15328    /// Similar to "send" but does not shutdown the channel if an error occurs.
15329    pub fn send_no_shutdown_on_err(
15330        self,
15331        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15332    ) -> Result<(), fidl::Error> {
15333        let _result = self.send_raw(result);
15334        self.drop_without_shutdown();
15335        _result
15336    }
15337
15338    fn send_raw(
15339        &self,
15340        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15341    ) -> Result<(), fidl::Error> {
15342        self.control_handle.inner.send::<fidl::encoding::ResultType<
15343            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15344            fidl_fuchsia_posix::Errno,
15345        >>(
15346            result.map(|value| (value,)),
15347            self.tx_id,
15348            0x2e334df1da553ffa,
15349            fidl::encoding::DynamicFlags::empty(),
15350        )
15351    }
15352}
15353
15354#[must_use = "FIDL methods require a response to be sent"]
15355#[derive(Debug)]
15356pub struct SocketSetIpv6TrafficClassResponder {
15357    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15358    tx_id: u32,
15359}
15360
15361/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15362/// if the responder is dropped without sending a response, so that the client
15363/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15364impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15365    fn drop(&mut self) {
15366        self.control_handle.shutdown();
15367        // Safety: drops once, never accessed again
15368        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15369    }
15370}
15371
15372impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15373    type ControlHandle = SocketControlHandle;
15374
15375    fn control_handle(&self) -> &SocketControlHandle {
15376        &self.control_handle
15377    }
15378
15379    fn drop_without_shutdown(mut self) {
15380        // Safety: drops once, never accessed again due to mem::forget
15381        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15382        // Prevent Drop from running (which would shut down the channel)
15383        std::mem::forget(self);
15384    }
15385}
15386
15387impl SocketSetIpv6TrafficClassResponder {
15388    /// Sends a response to the FIDL transaction.
15389    ///
15390    /// Sets the channel to shutdown if an error occurs.
15391    pub fn send(
15392        self,
15393        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15394    ) -> Result<(), fidl::Error> {
15395        let _result = self.send_raw(result);
15396        if _result.is_err() {
15397            self.control_handle.shutdown();
15398        }
15399        self.drop_without_shutdown();
15400        _result
15401    }
15402
15403    /// Similar to "send" but does not shutdown the channel if an error occurs.
15404    pub fn send_no_shutdown_on_err(
15405        self,
15406        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15407    ) -> Result<(), fidl::Error> {
15408        let _result = self.send_raw(result);
15409        self.drop_without_shutdown();
15410        _result
15411    }
15412
15413    fn send_raw(
15414        &self,
15415        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15416    ) -> Result<(), fidl::Error> {
15417        self.control_handle.inner.send::<fidl::encoding::ResultType<
15418            fidl::encoding::EmptyStruct,
15419            fidl_fuchsia_posix::Errno,
15420        >>(
15421            result,
15422            self.tx_id,
15423            0x6af077800c5a0b4f,
15424            fidl::encoding::DynamicFlags::empty(),
15425        )
15426    }
15427}
15428
15429#[must_use = "FIDL methods require a response to be sent"]
15430#[derive(Debug)]
15431pub struct SocketGetIpv6TrafficClassResponder {
15432    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15433    tx_id: u32,
15434}
15435
15436/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15437/// if the responder is dropped without sending a response, so that the client
15438/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15439impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15440    fn drop(&mut self) {
15441        self.control_handle.shutdown();
15442        // Safety: drops once, never accessed again
15443        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15444    }
15445}
15446
15447impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15448    type ControlHandle = SocketControlHandle;
15449
15450    fn control_handle(&self) -> &SocketControlHandle {
15451        &self.control_handle
15452    }
15453
15454    fn drop_without_shutdown(mut self) {
15455        // Safety: drops once, never accessed again due to mem::forget
15456        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15457        // Prevent Drop from running (which would shut down the channel)
15458        std::mem::forget(self);
15459    }
15460}
15461
15462impl SocketGetIpv6TrafficClassResponder {
15463    /// Sends a response to the FIDL transaction.
15464    ///
15465    /// Sets the channel to shutdown if an error occurs.
15466    pub fn send(
15467        self,
15468        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15469    ) -> Result<(), fidl::Error> {
15470        let _result = self.send_raw(result);
15471        if _result.is_err() {
15472            self.control_handle.shutdown();
15473        }
15474        self.drop_without_shutdown();
15475        _result
15476    }
15477
15478    /// Similar to "send" but does not shutdown the channel if an error occurs.
15479    pub fn send_no_shutdown_on_err(
15480        self,
15481        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15482    ) -> Result<(), fidl::Error> {
15483        let _result = self.send_raw(result);
15484        self.drop_without_shutdown();
15485        _result
15486    }
15487
15488    fn send_raw(
15489        &self,
15490        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15491    ) -> Result<(), fidl::Error> {
15492        self.control_handle.inner.send::<fidl::encoding::ResultType<
15493            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15494            fidl_fuchsia_posix::Errno,
15495        >>(
15496            result.map(|value| (value,)),
15497            self.tx_id,
15498            0x6baf6eed8fc2f04,
15499            fidl::encoding::DynamicFlags::empty(),
15500        )
15501    }
15502}
15503
15504#[must_use = "FIDL methods require a response to be sent"]
15505#[derive(Debug)]
15506pub struct SocketSetIpv6ReceivePacketInfoResponder {
15507    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15508    tx_id: u32,
15509}
15510
15511/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15512/// if the responder is dropped without sending a response, so that the client
15513/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15514impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15515    fn drop(&mut self) {
15516        self.control_handle.shutdown();
15517        // Safety: drops once, never accessed again
15518        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15519    }
15520}
15521
15522impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15523    type ControlHandle = SocketControlHandle;
15524
15525    fn control_handle(&self) -> &SocketControlHandle {
15526        &self.control_handle
15527    }
15528
15529    fn drop_without_shutdown(mut self) {
15530        // Safety: drops once, never accessed again due to mem::forget
15531        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15532        // Prevent Drop from running (which would shut down the channel)
15533        std::mem::forget(self);
15534    }
15535}
15536
15537impl SocketSetIpv6ReceivePacketInfoResponder {
15538    /// Sends a response to the FIDL transaction.
15539    ///
15540    /// Sets the channel to shutdown if an error occurs.
15541    pub fn send(
15542        self,
15543        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15544    ) -> Result<(), fidl::Error> {
15545        let _result = self.send_raw(result);
15546        if _result.is_err() {
15547            self.control_handle.shutdown();
15548        }
15549        self.drop_without_shutdown();
15550        _result
15551    }
15552
15553    /// Similar to "send" but does not shutdown the channel if an error occurs.
15554    pub fn send_no_shutdown_on_err(
15555        self,
15556        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15557    ) -> Result<(), fidl::Error> {
15558        let _result = self.send_raw(result);
15559        self.drop_without_shutdown();
15560        _result
15561    }
15562
15563    fn send_raw(
15564        &self,
15565        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15566    ) -> Result<(), fidl::Error> {
15567        self.control_handle.inner.send::<fidl::encoding::ResultType<
15568            fidl::encoding::EmptyStruct,
15569            fidl_fuchsia_posix::Errno,
15570        >>(
15571            result,
15572            self.tx_id,
15573            0x19259775b1a92768,
15574            fidl::encoding::DynamicFlags::empty(),
15575        )
15576    }
15577}
15578
15579#[must_use = "FIDL methods require a response to be sent"]
15580#[derive(Debug)]
15581pub struct SocketGetIpv6ReceivePacketInfoResponder {
15582    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15583    tx_id: u32,
15584}
15585
15586/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15587/// if the responder is dropped without sending a response, so that the client
15588/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15589impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15590    fn drop(&mut self) {
15591        self.control_handle.shutdown();
15592        // Safety: drops once, never accessed again
15593        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15594    }
15595}
15596
15597impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15598    type ControlHandle = SocketControlHandle;
15599
15600    fn control_handle(&self) -> &SocketControlHandle {
15601        &self.control_handle
15602    }
15603
15604    fn drop_without_shutdown(mut self) {
15605        // Safety: drops once, never accessed again due to mem::forget
15606        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15607        // Prevent Drop from running (which would shut down the channel)
15608        std::mem::forget(self);
15609    }
15610}
15611
15612impl SocketGetIpv6ReceivePacketInfoResponder {
15613    /// Sends a response to the FIDL transaction.
15614    ///
15615    /// Sets the channel to shutdown if an error occurs.
15616    pub fn send(
15617        self,
15618        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15619    ) -> Result<(), fidl::Error> {
15620        let _result = self.send_raw(result);
15621        if _result.is_err() {
15622            self.control_handle.shutdown();
15623        }
15624        self.drop_without_shutdown();
15625        _result
15626    }
15627
15628    /// Similar to "send" but does not shutdown the channel if an error occurs.
15629    pub fn send_no_shutdown_on_err(
15630        self,
15631        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15632    ) -> Result<(), fidl::Error> {
15633        let _result = self.send_raw(result);
15634        self.drop_without_shutdown();
15635        _result
15636    }
15637
15638    fn send_raw(
15639        &self,
15640        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15641    ) -> Result<(), fidl::Error> {
15642        self.control_handle.inner.send::<fidl::encoding::ResultType<
15643            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15644            fidl_fuchsia_posix::Errno,
15645        >>(
15646            result.map(|value| (value,)),
15647            self.tx_id,
15648            0x7acd4a2775baec75,
15649            fidl::encoding::DynamicFlags::empty(),
15650        )
15651    }
15652}
15653
15654#[must_use = "FIDL methods require a response to be sent"]
15655#[derive(Debug)]
15656pub struct SocketGetOriginalDestinationResponder {
15657    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15658    tx_id: u32,
15659}
15660
15661/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15662/// if the responder is dropped without sending a response, so that the client
15663/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15664impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15665    fn drop(&mut self) {
15666        self.control_handle.shutdown();
15667        // Safety: drops once, never accessed again
15668        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15669    }
15670}
15671
15672impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15673    type ControlHandle = SocketControlHandle;
15674
15675    fn control_handle(&self) -> &SocketControlHandle {
15676        &self.control_handle
15677    }
15678
15679    fn drop_without_shutdown(mut self) {
15680        // Safety: drops once, never accessed again due to mem::forget
15681        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15682        // Prevent Drop from running (which would shut down the channel)
15683        std::mem::forget(self);
15684    }
15685}
15686
15687impl SocketGetOriginalDestinationResponder {
15688    /// Sends a response to the FIDL transaction.
15689    ///
15690    /// Sets the channel to shutdown if an error occurs.
15691    pub fn send(
15692        self,
15693        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15694    ) -> Result<(), fidl::Error> {
15695        let _result = self.send_raw(result);
15696        if _result.is_err() {
15697            self.control_handle.shutdown();
15698        }
15699        self.drop_without_shutdown();
15700        _result
15701    }
15702
15703    /// Similar to "send" but does not shutdown the channel if an error occurs.
15704    pub fn send_no_shutdown_on_err(
15705        self,
15706        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15707    ) -> Result<(), fidl::Error> {
15708        let _result = self.send_raw(result);
15709        self.drop_without_shutdown();
15710        _result
15711    }
15712
15713    fn send_raw(
15714        &self,
15715        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15716    ) -> Result<(), fidl::Error> {
15717        self.control_handle.inner.send::<fidl::encoding::ResultType<
15718            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
15719            fidl_fuchsia_posix::Errno,
15720        >>(
15721            result.map(|value| (value,)),
15722            self.tx_id,
15723            0x38bf28f0dafdbac0,
15724            fidl::encoding::DynamicFlags::empty(),
15725        )
15726    }
15727}
15728
15729#[must_use = "FIDL methods require a response to be sent"]
15730#[derive(Debug)]
15731pub struct SocketDescribeResponder {
15732    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15733    tx_id: u32,
15734}
15735
15736/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15737/// if the responder is dropped without sending a response, so that the client
15738/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15739impl std::ops::Drop for SocketDescribeResponder {
15740    fn drop(&mut self) {
15741        self.control_handle.shutdown();
15742        // Safety: drops once, never accessed again
15743        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15744    }
15745}
15746
15747impl fidl::endpoints::Responder for SocketDescribeResponder {
15748    type ControlHandle = SocketControlHandle;
15749
15750    fn control_handle(&self) -> &SocketControlHandle {
15751        &self.control_handle
15752    }
15753
15754    fn drop_without_shutdown(mut self) {
15755        // Safety: drops once, never accessed again due to mem::forget
15756        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15757        // Prevent Drop from running (which would shut down the channel)
15758        std::mem::forget(self);
15759    }
15760}
15761
15762impl SocketDescribeResponder {
15763    /// Sends a response to the FIDL transaction.
15764    ///
15765    /// Sets the channel to shutdown if an error occurs.
15766    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15767        let _result = self.send_raw(payload);
15768        if _result.is_err() {
15769            self.control_handle.shutdown();
15770        }
15771        self.drop_without_shutdown();
15772        _result
15773    }
15774
15775    /// Similar to "send" but does not shutdown the channel if an error occurs.
15776    pub fn send_no_shutdown_on_err(
15777        self,
15778        mut payload: SocketDescribeResponse,
15779    ) -> Result<(), fidl::Error> {
15780        let _result = self.send_raw(payload);
15781        self.drop_without_shutdown();
15782        _result
15783    }
15784
15785    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15786        self.control_handle.inner.send::<SocketDescribeResponse>(
15787            &mut payload,
15788            self.tx_id,
15789            0x335706eccf54a135,
15790            fidl::encoding::DynamicFlags::empty(),
15791        )
15792    }
15793}
15794
15795#[must_use = "FIDL methods require a response to be sent"]
15796#[derive(Debug)]
15797pub struct SocketRecvMsgResponder {
15798    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15799    tx_id: u32,
15800}
15801
15802/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15803/// if the responder is dropped without sending a response, so that the client
15804/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15805impl std::ops::Drop for SocketRecvMsgResponder {
15806    fn drop(&mut self) {
15807        self.control_handle.shutdown();
15808        // Safety: drops once, never accessed again
15809        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15810    }
15811}
15812
15813impl fidl::endpoints::Responder for SocketRecvMsgResponder {
15814    type ControlHandle = SocketControlHandle;
15815
15816    fn control_handle(&self) -> &SocketControlHandle {
15817        &self.control_handle
15818    }
15819
15820    fn drop_without_shutdown(mut self) {
15821        // Safety: drops once, never accessed again due to mem::forget
15822        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15823        // Prevent Drop from running (which would shut down the channel)
15824        std::mem::forget(self);
15825    }
15826}
15827
15828impl SocketRecvMsgResponder {
15829    /// Sends a response to the FIDL transaction.
15830    ///
15831    /// Sets the channel to shutdown if an error occurs.
15832    pub fn send(
15833        self,
15834        mut result: Result<
15835            (
15836                Option<&fidl_fuchsia_net::SocketAddress>,
15837                &[u8],
15838                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
15839                u32,
15840            ),
15841            fidl_fuchsia_posix::Errno,
15842        >,
15843    ) -> Result<(), fidl::Error> {
15844        let _result = self.send_raw(result);
15845        if _result.is_err() {
15846            self.control_handle.shutdown();
15847        }
15848        self.drop_without_shutdown();
15849        _result
15850    }
15851
15852    /// Similar to "send" but does not shutdown the channel if an error occurs.
15853    pub fn send_no_shutdown_on_err(
15854        self,
15855        mut result: Result<
15856            (
15857                Option<&fidl_fuchsia_net::SocketAddress>,
15858                &[u8],
15859                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
15860                u32,
15861            ),
15862            fidl_fuchsia_posix::Errno,
15863        >,
15864    ) -> Result<(), fidl::Error> {
15865        let _result = self.send_raw(result);
15866        self.drop_without_shutdown();
15867        _result
15868    }
15869
15870    fn send_raw(
15871        &self,
15872        mut result: Result<
15873            (
15874                Option<&fidl_fuchsia_net::SocketAddress>,
15875                &[u8],
15876                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
15877                u32,
15878            ),
15879            fidl_fuchsia_posix::Errno,
15880        >,
15881    ) -> Result<(), fidl::Error> {
15882        self.control_handle.inner.send::<fidl::encoding::ResultType<
15883            SocketRecvMsgResponse,
15884            fidl_fuchsia_posix::Errno,
15885        >>(
15886            result,
15887            self.tx_id,
15888            0x1dfb695351d3aa1d,
15889            fidl::encoding::DynamicFlags::empty(),
15890        )
15891    }
15892}
15893
15894#[must_use = "FIDL methods require a response to be sent"]
15895#[derive(Debug)]
15896pub struct SocketSendMsgResponder {
15897    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15898    tx_id: u32,
15899}
15900
15901/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15902/// if the responder is dropped without sending a response, so that the client
15903/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15904impl std::ops::Drop for SocketSendMsgResponder {
15905    fn drop(&mut self) {
15906        self.control_handle.shutdown();
15907        // Safety: drops once, never accessed again
15908        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15909    }
15910}
15911
15912impl fidl::endpoints::Responder for SocketSendMsgResponder {
15913    type ControlHandle = SocketControlHandle;
15914
15915    fn control_handle(&self) -> &SocketControlHandle {
15916        &self.control_handle
15917    }
15918
15919    fn drop_without_shutdown(mut self) {
15920        // Safety: drops once, never accessed again due to mem::forget
15921        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15922        // Prevent Drop from running (which would shut down the channel)
15923        std::mem::forget(self);
15924    }
15925}
15926
15927impl SocketSendMsgResponder {
15928    /// Sends a response to the FIDL transaction.
15929    ///
15930    /// Sets the channel to shutdown if an error occurs.
15931    pub fn send(
15932        self,
15933        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15934    ) -> Result<(), fidl::Error> {
15935        let _result = self.send_raw(result);
15936        if _result.is_err() {
15937            self.control_handle.shutdown();
15938        }
15939        self.drop_without_shutdown();
15940        _result
15941    }
15942
15943    /// Similar to "send" but does not shutdown the channel if an error occurs.
15944    pub fn send_no_shutdown_on_err(
15945        self,
15946        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15947    ) -> Result<(), fidl::Error> {
15948        let _result = self.send_raw(result);
15949        self.drop_without_shutdown();
15950        _result
15951    }
15952
15953    fn send_raw(
15954        &self,
15955        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15956    ) -> Result<(), fidl::Error> {
15957        self.control_handle.inner.send::<fidl::encoding::ResultType<
15958            fidl::encoding::EmptyStruct,
15959            fidl_fuchsia_posix::Errno,
15960        >>(
15961            result,
15962            self.tx_id,
15963            0x2cf1eac9a7fc8958,
15964            fidl::encoding::DynamicFlags::empty(),
15965        )
15966    }
15967}
15968
15969#[must_use = "FIDL methods require a response to be sent"]
15970#[derive(Debug)]
15971pub struct SocketGetInfoResponder {
15972    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15973    tx_id: u32,
15974}
15975
15976/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15977/// if the responder is dropped without sending a response, so that the client
15978/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15979impl std::ops::Drop for SocketGetInfoResponder {
15980    fn drop(&mut self) {
15981        self.control_handle.shutdown();
15982        // Safety: drops once, never accessed again
15983        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15984    }
15985}
15986
15987impl fidl::endpoints::Responder for SocketGetInfoResponder {
15988    type ControlHandle = SocketControlHandle;
15989
15990    fn control_handle(&self) -> &SocketControlHandle {
15991        &self.control_handle
15992    }
15993
15994    fn drop_without_shutdown(mut self) {
15995        // Safety: drops once, never accessed again due to mem::forget
15996        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15997        // Prevent Drop from running (which would shut down the channel)
15998        std::mem::forget(self);
15999    }
16000}
16001
16002impl SocketGetInfoResponder {
16003    /// Sends a response to the FIDL transaction.
16004    ///
16005    /// Sets the channel to shutdown if an error occurs.
16006    pub fn send(
16007        self,
16008        mut result: Result<
16009            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16010            fidl_fuchsia_posix::Errno,
16011        >,
16012    ) -> Result<(), fidl::Error> {
16013        let _result = self.send_raw(result);
16014        if _result.is_err() {
16015            self.control_handle.shutdown();
16016        }
16017        self.drop_without_shutdown();
16018        _result
16019    }
16020
16021    /// Similar to "send" but does not shutdown the channel if an error occurs.
16022    pub fn send_no_shutdown_on_err(
16023        self,
16024        mut result: Result<
16025            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16026            fidl_fuchsia_posix::Errno,
16027        >,
16028    ) -> Result<(), fidl::Error> {
16029        let _result = self.send_raw(result);
16030        self.drop_without_shutdown();
16031        _result
16032    }
16033
16034    fn send_raw(
16035        &self,
16036        mut result: Result<
16037            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16038            fidl_fuchsia_posix::Errno,
16039        >,
16040    ) -> Result<(), fidl::Error> {
16041        self.control_handle.inner.send::<fidl::encoding::ResultType<
16042            SocketGetInfoResponse,
16043            fidl_fuchsia_posix::Errno,
16044        >>(
16045            result,
16046            self.tx_id,
16047            0x39676f75aec339ba,
16048            fidl::encoding::DynamicFlags::empty(),
16049        )
16050    }
16051}
16052
16053#[must_use = "FIDL methods require a response to be sent"]
16054#[derive(Debug)]
16055pub struct SocketSetIpHeaderIncludedResponder {
16056    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16057    tx_id: u32,
16058}
16059
16060/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16061/// if the responder is dropped without sending a response, so that the client
16062/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16063impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16064    fn drop(&mut self) {
16065        self.control_handle.shutdown();
16066        // Safety: drops once, never accessed again
16067        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16068    }
16069}
16070
16071impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16072    type ControlHandle = SocketControlHandle;
16073
16074    fn control_handle(&self) -> &SocketControlHandle {
16075        &self.control_handle
16076    }
16077
16078    fn drop_without_shutdown(mut self) {
16079        // Safety: drops once, never accessed again due to mem::forget
16080        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16081        // Prevent Drop from running (which would shut down the channel)
16082        std::mem::forget(self);
16083    }
16084}
16085
16086impl SocketSetIpHeaderIncludedResponder {
16087    /// Sends a response to the FIDL transaction.
16088    ///
16089    /// Sets the channel to shutdown if an error occurs.
16090    pub fn send(
16091        self,
16092        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16093    ) -> Result<(), fidl::Error> {
16094        let _result = self.send_raw(result);
16095        if _result.is_err() {
16096            self.control_handle.shutdown();
16097        }
16098        self.drop_without_shutdown();
16099        _result
16100    }
16101
16102    /// Similar to "send" but does not shutdown the channel if an error occurs.
16103    pub fn send_no_shutdown_on_err(
16104        self,
16105        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16106    ) -> Result<(), fidl::Error> {
16107        let _result = self.send_raw(result);
16108        self.drop_without_shutdown();
16109        _result
16110    }
16111
16112    fn send_raw(
16113        &self,
16114        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16115    ) -> Result<(), fidl::Error> {
16116        self.control_handle.inner.send::<fidl::encoding::ResultType<
16117            fidl::encoding::EmptyStruct,
16118            fidl_fuchsia_posix::Errno,
16119        >>(
16120            result,
16121            self.tx_id,
16122            0x5d06a606d95e8f3,
16123            fidl::encoding::DynamicFlags::empty(),
16124        )
16125    }
16126}
16127
16128#[must_use = "FIDL methods require a response to be sent"]
16129#[derive(Debug)]
16130pub struct SocketGetIpHeaderIncludedResponder {
16131    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16132    tx_id: u32,
16133}
16134
16135/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16136/// if the responder is dropped without sending a response, so that the client
16137/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16138impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16139    fn drop(&mut self) {
16140        self.control_handle.shutdown();
16141        // Safety: drops once, never accessed again
16142        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16143    }
16144}
16145
16146impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16147    type ControlHandle = SocketControlHandle;
16148
16149    fn control_handle(&self) -> &SocketControlHandle {
16150        &self.control_handle
16151    }
16152
16153    fn drop_without_shutdown(mut self) {
16154        // Safety: drops once, never accessed again due to mem::forget
16155        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16156        // Prevent Drop from running (which would shut down the channel)
16157        std::mem::forget(self);
16158    }
16159}
16160
16161impl SocketGetIpHeaderIncludedResponder {
16162    /// Sends a response to the FIDL transaction.
16163    ///
16164    /// Sets the channel to shutdown if an error occurs.
16165    pub fn send(
16166        self,
16167        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16168    ) -> Result<(), fidl::Error> {
16169        let _result = self.send_raw(result);
16170        if _result.is_err() {
16171            self.control_handle.shutdown();
16172        }
16173        self.drop_without_shutdown();
16174        _result
16175    }
16176
16177    /// Similar to "send" but does not shutdown the channel if an error occurs.
16178    pub fn send_no_shutdown_on_err(
16179        self,
16180        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16181    ) -> Result<(), fidl::Error> {
16182        let _result = self.send_raw(result);
16183        self.drop_without_shutdown();
16184        _result
16185    }
16186
16187    fn send_raw(
16188        &self,
16189        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16190    ) -> Result<(), fidl::Error> {
16191        self.control_handle.inner.send::<fidl::encoding::ResultType<
16192            SocketGetIpHeaderIncludedResponse,
16193            fidl_fuchsia_posix::Errno,
16194        >>(
16195            result.map(|value| (value,)),
16196            self.tx_id,
16197            0x76125ad1f4d175f6,
16198            fidl::encoding::DynamicFlags::empty(),
16199        )
16200    }
16201}
16202
16203#[must_use = "FIDL methods require a response to be sent"]
16204#[derive(Debug)]
16205pub struct SocketSetIcmpv6FilterResponder {
16206    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16207    tx_id: u32,
16208}
16209
16210/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16211/// if the responder is dropped without sending a response, so that the client
16212/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16213impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16214    fn drop(&mut self) {
16215        self.control_handle.shutdown();
16216        // Safety: drops once, never accessed again
16217        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16218    }
16219}
16220
16221impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16222    type ControlHandle = SocketControlHandle;
16223
16224    fn control_handle(&self) -> &SocketControlHandle {
16225        &self.control_handle
16226    }
16227
16228    fn drop_without_shutdown(mut self) {
16229        // Safety: drops once, never accessed again due to mem::forget
16230        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16231        // Prevent Drop from running (which would shut down the channel)
16232        std::mem::forget(self);
16233    }
16234}
16235
16236impl SocketSetIcmpv6FilterResponder {
16237    /// Sends a response to the FIDL transaction.
16238    ///
16239    /// Sets the channel to shutdown if an error occurs.
16240    pub fn send(
16241        self,
16242        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16243    ) -> Result<(), fidl::Error> {
16244        let _result = self.send_raw(result);
16245        if _result.is_err() {
16246            self.control_handle.shutdown();
16247        }
16248        self.drop_without_shutdown();
16249        _result
16250    }
16251
16252    /// Similar to "send" but does not shutdown the channel if an error occurs.
16253    pub fn send_no_shutdown_on_err(
16254        self,
16255        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16256    ) -> Result<(), fidl::Error> {
16257        let _result = self.send_raw(result);
16258        self.drop_without_shutdown();
16259        _result
16260    }
16261
16262    fn send_raw(
16263        &self,
16264        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16265    ) -> Result<(), fidl::Error> {
16266        self.control_handle.inner.send::<fidl::encoding::ResultType<
16267            fidl::encoding::EmptyStruct,
16268            fidl_fuchsia_posix::Errno,
16269        >>(
16270            result,
16271            self.tx_id,
16272            0x4ebea92a43ae68a9,
16273            fidl::encoding::DynamicFlags::empty(),
16274        )
16275    }
16276}
16277
16278#[must_use = "FIDL methods require a response to be sent"]
16279#[derive(Debug)]
16280pub struct SocketGetIcmpv6FilterResponder {
16281    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16282    tx_id: u32,
16283}
16284
16285/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16286/// if the responder is dropped without sending a response, so that the client
16287/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16288impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16289    fn drop(&mut self) {
16290        self.control_handle.shutdown();
16291        // Safety: drops once, never accessed again
16292        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16293    }
16294}
16295
16296impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16297    type ControlHandle = SocketControlHandle;
16298
16299    fn control_handle(&self) -> &SocketControlHandle {
16300        &self.control_handle
16301    }
16302
16303    fn drop_without_shutdown(mut self) {
16304        // Safety: drops once, never accessed again due to mem::forget
16305        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16306        // Prevent Drop from running (which would shut down the channel)
16307        std::mem::forget(self);
16308    }
16309}
16310
16311impl SocketGetIcmpv6FilterResponder {
16312    /// Sends a response to the FIDL transaction.
16313    ///
16314    /// Sets the channel to shutdown if an error occurs.
16315    pub fn send(
16316        self,
16317        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16318    ) -> Result<(), fidl::Error> {
16319        let _result = self.send_raw(result);
16320        if _result.is_err() {
16321            self.control_handle.shutdown();
16322        }
16323        self.drop_without_shutdown();
16324        _result
16325    }
16326
16327    /// Similar to "send" but does not shutdown the channel if an error occurs.
16328    pub fn send_no_shutdown_on_err(
16329        self,
16330        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16331    ) -> Result<(), fidl::Error> {
16332        let _result = self.send_raw(result);
16333        self.drop_without_shutdown();
16334        _result
16335    }
16336
16337    fn send_raw(
16338        &self,
16339        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16340    ) -> Result<(), fidl::Error> {
16341        self.control_handle.inner.send::<fidl::encoding::ResultType<
16342            SocketGetIcmpv6FilterResponse,
16343            fidl_fuchsia_posix::Errno,
16344        >>(
16345            result.map(|filter| (filter,)),
16346            self.tx_id,
16347            0x43bd4f3bc0970ace,
16348            fidl::encoding::DynamicFlags::empty(),
16349        )
16350    }
16351}
16352
16353#[must_use = "FIDL methods require a response to be sent"]
16354#[derive(Debug)]
16355pub struct SocketSetIpv6ChecksumResponder {
16356    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16357    tx_id: u32,
16358}
16359
16360/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16361/// if the responder is dropped without sending a response, so that the client
16362/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16363impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16364    fn drop(&mut self) {
16365        self.control_handle.shutdown();
16366        // Safety: drops once, never accessed again
16367        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16368    }
16369}
16370
16371impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16372    type ControlHandle = SocketControlHandle;
16373
16374    fn control_handle(&self) -> &SocketControlHandle {
16375        &self.control_handle
16376    }
16377
16378    fn drop_without_shutdown(mut self) {
16379        // Safety: drops once, never accessed again due to mem::forget
16380        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16381        // Prevent Drop from running (which would shut down the channel)
16382        std::mem::forget(self);
16383    }
16384}
16385
16386impl SocketSetIpv6ChecksumResponder {
16387    /// Sends a response to the FIDL transaction.
16388    ///
16389    /// Sets the channel to shutdown if an error occurs.
16390    pub fn send(
16391        self,
16392        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16393    ) -> Result<(), fidl::Error> {
16394        let _result = self.send_raw(result);
16395        if _result.is_err() {
16396            self.control_handle.shutdown();
16397        }
16398        self.drop_without_shutdown();
16399        _result
16400    }
16401
16402    /// Similar to "send" but does not shutdown the channel if an error occurs.
16403    pub fn send_no_shutdown_on_err(
16404        self,
16405        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16406    ) -> Result<(), fidl::Error> {
16407        let _result = self.send_raw(result);
16408        self.drop_without_shutdown();
16409        _result
16410    }
16411
16412    fn send_raw(
16413        &self,
16414        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16415    ) -> Result<(), fidl::Error> {
16416        self.control_handle.inner.send::<fidl::encoding::ResultType<
16417            fidl::encoding::EmptyStruct,
16418            fidl_fuchsia_posix::Errno,
16419        >>(
16420            result,
16421            self.tx_id,
16422            0x18b7809577199cb4,
16423            fidl::encoding::DynamicFlags::empty(),
16424        )
16425    }
16426}
16427
16428#[must_use = "FIDL methods require a response to be sent"]
16429#[derive(Debug)]
16430pub struct SocketGetIpv6ChecksumResponder {
16431    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16432    tx_id: u32,
16433}
16434
16435/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16436/// if the responder is dropped without sending a response, so that the client
16437/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16438impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16439    fn drop(&mut self) {
16440        self.control_handle.shutdown();
16441        // Safety: drops once, never accessed again
16442        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16443    }
16444}
16445
16446impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16447    type ControlHandle = SocketControlHandle;
16448
16449    fn control_handle(&self) -> &SocketControlHandle {
16450        &self.control_handle
16451    }
16452
16453    fn drop_without_shutdown(mut self) {
16454        // Safety: drops once, never accessed again due to mem::forget
16455        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16456        // Prevent Drop from running (which would shut down the channel)
16457        std::mem::forget(self);
16458    }
16459}
16460
16461impl SocketGetIpv6ChecksumResponder {
16462    /// Sends a response to the FIDL transaction.
16463    ///
16464    /// Sets the channel to shutdown if an error occurs.
16465    pub fn send(
16466        self,
16467        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16468    ) -> Result<(), fidl::Error> {
16469        let _result = self.send_raw(result);
16470        if _result.is_err() {
16471            self.control_handle.shutdown();
16472        }
16473        self.drop_without_shutdown();
16474        _result
16475    }
16476
16477    /// Similar to "send" but does not shutdown the channel if an error occurs.
16478    pub fn send_no_shutdown_on_err(
16479        self,
16480        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16481    ) -> Result<(), fidl::Error> {
16482        let _result = self.send_raw(result);
16483        self.drop_without_shutdown();
16484        _result
16485    }
16486
16487    fn send_raw(
16488        &self,
16489        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16490    ) -> Result<(), fidl::Error> {
16491        self.control_handle.inner.send::<fidl::encoding::ResultType<
16492            SocketGetIpv6ChecksumResponse,
16493            fidl_fuchsia_posix::Errno,
16494        >>(
16495            result.map(|config| (config,)),
16496            self.tx_id,
16497            0x1847bf5b2d263dd,
16498            fidl::encoding::DynamicFlags::empty(),
16499        )
16500    }
16501}
16502
16503mod internal {
16504    use super::*;
16505
16506    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsRequest {
16507        type Borrowed<'a> = &'a mut Self;
16508        fn take_or_borrow<'a>(
16509            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16510        ) -> Self::Borrowed<'a> {
16511            value
16512        }
16513    }
16514
16515    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16516        type Owned = Self;
16517
16518        #[inline(always)]
16519        fn inline_align(_context: fidl::encoding::Context) -> usize {
16520            8
16521        }
16522
16523        #[inline(always)]
16524        fn inline_size(_context: fidl::encoding::Context) -> usize {
16525            40
16526        }
16527    }
16528
16529    unsafe impl
16530        fidl::encoding::Encode<
16531            ProviderSocketWithOptionsRequest,
16532            fidl::encoding::DefaultFuchsiaResourceDialect,
16533        > for &mut ProviderSocketWithOptionsRequest
16534    {
16535        #[inline]
16536        unsafe fn encode(
16537            self,
16538            encoder: &mut fidl::encoding::Encoder<
16539                '_,
16540                fidl::encoding::DefaultFuchsiaResourceDialect,
16541            >,
16542            offset: usize,
16543            _depth: fidl::encoding::Depth,
16544        ) -> fidl::Result<()> {
16545            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16546            // Delegate to tuple encoding.
16547            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16548                (
16549                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16550                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16551                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.opts),
16552                ),
16553                encoder, offset, _depth
16554            )
16555        }
16556    }
16557    unsafe impl<
16558        T0: fidl::encoding::Encode<
16559                fidl_fuchsia_posix_socket::Domain,
16560                fidl::encoding::DefaultFuchsiaResourceDialect,
16561            >,
16562        T1: fidl::encoding::Encode<ProtocolAssociation, fidl::encoding::DefaultFuchsiaResourceDialect>,
16563        T2: fidl::encoding::Encode<
16564                fidl_fuchsia_posix_socket::SocketCreationOptions,
16565                fidl::encoding::DefaultFuchsiaResourceDialect,
16566            >,
16567    >
16568        fidl::encoding::Encode<
16569            ProviderSocketWithOptionsRequest,
16570            fidl::encoding::DefaultFuchsiaResourceDialect,
16571        > for (T0, T1, T2)
16572    {
16573        #[inline]
16574        unsafe fn encode(
16575            self,
16576            encoder: &mut fidl::encoding::Encoder<
16577                '_,
16578                fidl::encoding::DefaultFuchsiaResourceDialect,
16579            >,
16580            offset: usize,
16581            depth: fidl::encoding::Depth,
16582        ) -> fidl::Result<()> {
16583            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16584            // Zero out padding regions. There's no need to apply masks
16585            // because the unmasked parts will be overwritten by fields.
16586            unsafe {
16587                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16588                (ptr as *mut u64).write_unaligned(0);
16589            }
16590            // Write the fields.
16591            self.0.encode(encoder, offset + 0, depth)?;
16592            self.1.encode(encoder, offset + 8, depth)?;
16593            self.2.encode(encoder, offset + 24, depth)?;
16594            Ok(())
16595        }
16596    }
16597
16598    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16599        for ProviderSocketWithOptionsRequest
16600    {
16601        #[inline(always)]
16602        fn new_empty() -> Self {
16603            Self {
16604                domain: fidl::new_empty!(
16605                    fidl_fuchsia_posix_socket::Domain,
16606                    fidl::encoding::DefaultFuchsiaResourceDialect
16607                ),
16608                proto: fidl::new_empty!(
16609                    ProtocolAssociation,
16610                    fidl::encoding::DefaultFuchsiaResourceDialect
16611                ),
16612                opts: fidl::new_empty!(
16613                    fidl_fuchsia_posix_socket::SocketCreationOptions,
16614                    fidl::encoding::DefaultFuchsiaResourceDialect
16615                ),
16616            }
16617        }
16618
16619        #[inline]
16620        unsafe fn decode(
16621            &mut self,
16622            decoder: &mut fidl::encoding::Decoder<
16623                '_,
16624                fidl::encoding::DefaultFuchsiaResourceDialect,
16625            >,
16626            offset: usize,
16627            _depth: fidl::encoding::Depth,
16628        ) -> fidl::Result<()> {
16629            decoder.debug_check_bounds::<Self>(offset);
16630            // Verify that padding bytes are zero.
16631            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16632            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16633            let mask = 0xffffffffffff0000u64;
16634            let maskedval = padval & mask;
16635            if maskedval != 0 {
16636                return Err(fidl::Error::NonZeroPadding {
16637                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16638                });
16639            }
16640            fidl::decode!(
16641                fidl_fuchsia_posix_socket::Domain,
16642                fidl::encoding::DefaultFuchsiaResourceDialect,
16643                &mut self.domain,
16644                decoder,
16645                offset + 0,
16646                _depth
16647            )?;
16648            fidl::decode!(
16649                ProtocolAssociation,
16650                fidl::encoding::DefaultFuchsiaResourceDialect,
16651                &mut self.proto,
16652                decoder,
16653                offset + 8,
16654                _depth
16655            )?;
16656            fidl::decode!(
16657                fidl_fuchsia_posix_socket::SocketCreationOptions,
16658                fidl::encoding::DefaultFuchsiaResourceDialect,
16659                &mut self.opts,
16660                decoder,
16661                offset + 24,
16662                _depth
16663            )?;
16664            Ok(())
16665        }
16666    }
16667
16668    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16669        type Borrowed<'a> = &'a mut Self;
16670        fn take_or_borrow<'a>(
16671            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16672        ) -> Self::Borrowed<'a> {
16673            value
16674        }
16675    }
16676
16677    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16678        type Owned = Self;
16679
16680        #[inline(always)]
16681        fn inline_align(_context: fidl::encoding::Context) -> usize {
16682            4
16683        }
16684
16685        #[inline(always)]
16686        fn inline_size(_context: fidl::encoding::Context) -> usize {
16687            4
16688        }
16689    }
16690
16691    unsafe impl
16692        fidl::encoding::Encode<
16693            ProviderSocketWithOptionsResponse,
16694            fidl::encoding::DefaultFuchsiaResourceDialect,
16695        > for &mut ProviderSocketWithOptionsResponse
16696    {
16697        #[inline]
16698        unsafe fn encode(
16699            self,
16700            encoder: &mut fidl::encoding::Encoder<
16701                '_,
16702                fidl::encoding::DefaultFuchsiaResourceDialect,
16703            >,
16704            offset: usize,
16705            _depth: fidl::encoding::Depth,
16706        ) -> fidl::Result<()> {
16707            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16708            // Delegate to tuple encoding.
16709            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16710                (
16711                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
16712                ),
16713                encoder, offset, _depth
16714            )
16715        }
16716    }
16717    unsafe impl<
16718        T0: fidl::encoding::Encode<
16719                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16720                fidl::encoding::DefaultFuchsiaResourceDialect,
16721            >,
16722    >
16723        fidl::encoding::Encode<
16724            ProviderSocketWithOptionsResponse,
16725            fidl::encoding::DefaultFuchsiaResourceDialect,
16726        > for (T0,)
16727    {
16728        #[inline]
16729        unsafe fn encode(
16730            self,
16731            encoder: &mut fidl::encoding::Encoder<
16732                '_,
16733                fidl::encoding::DefaultFuchsiaResourceDialect,
16734            >,
16735            offset: usize,
16736            depth: fidl::encoding::Depth,
16737        ) -> fidl::Result<()> {
16738            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16739            // Zero out padding regions. There's no need to apply masks
16740            // because the unmasked parts will be overwritten by fields.
16741            // Write the fields.
16742            self.0.encode(encoder, offset + 0, depth)?;
16743            Ok(())
16744        }
16745    }
16746
16747    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16748        for ProviderSocketWithOptionsResponse
16749    {
16750        #[inline(always)]
16751        fn new_empty() -> Self {
16752            Self {
16753                s: fidl::new_empty!(
16754                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16755                    fidl::encoding::DefaultFuchsiaResourceDialect
16756                ),
16757            }
16758        }
16759
16760        #[inline]
16761        unsafe fn decode(
16762            &mut self,
16763            decoder: &mut fidl::encoding::Decoder<
16764                '_,
16765                fidl::encoding::DefaultFuchsiaResourceDialect,
16766            >,
16767            offset: usize,
16768            _depth: fidl::encoding::Depth,
16769        ) -> fidl::Result<()> {
16770            decoder.debug_check_bounds::<Self>(offset);
16771            // Verify that padding bytes are zero.
16772            fidl::decode!(
16773                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16774                fidl::encoding::DefaultFuchsiaResourceDialect,
16775                &mut self.s,
16776                decoder,
16777                offset + 0,
16778                _depth
16779            )?;
16780            Ok(())
16781        }
16782    }
16783
16784    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
16785        type Borrowed<'a> = &'a mut Self;
16786        fn take_or_borrow<'a>(
16787            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16788        ) -> Self::Borrowed<'a> {
16789            value
16790        }
16791    }
16792
16793    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
16794        type Owned = Self;
16795
16796        #[inline(always)]
16797        fn inline_align(_context: fidl::encoding::Context) -> usize {
16798            4
16799        }
16800
16801        #[inline(always)]
16802        fn inline_size(_context: fidl::encoding::Context) -> usize {
16803            4
16804        }
16805    }
16806
16807    unsafe impl
16808        fidl::encoding::Encode<
16809            ProviderSocketResponse,
16810            fidl::encoding::DefaultFuchsiaResourceDialect,
16811        > for &mut ProviderSocketResponse
16812    {
16813        #[inline]
16814        unsafe fn encode(
16815            self,
16816            encoder: &mut fidl::encoding::Encoder<
16817                '_,
16818                fidl::encoding::DefaultFuchsiaResourceDialect,
16819            >,
16820            offset: usize,
16821            _depth: fidl::encoding::Depth,
16822        ) -> fidl::Result<()> {
16823            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
16824            // Delegate to tuple encoding.
16825            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16826                (
16827                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
16828                ),
16829                encoder, offset, _depth
16830            )
16831        }
16832    }
16833    unsafe impl<
16834        T0: fidl::encoding::Encode<
16835                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16836                fidl::encoding::DefaultFuchsiaResourceDialect,
16837            >,
16838    >
16839        fidl::encoding::Encode<
16840            ProviderSocketResponse,
16841            fidl::encoding::DefaultFuchsiaResourceDialect,
16842        > for (T0,)
16843    {
16844        #[inline]
16845        unsafe fn encode(
16846            self,
16847            encoder: &mut fidl::encoding::Encoder<
16848                '_,
16849                fidl::encoding::DefaultFuchsiaResourceDialect,
16850            >,
16851            offset: usize,
16852            depth: fidl::encoding::Depth,
16853        ) -> fidl::Result<()> {
16854            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
16855            // Zero out padding regions. There's no need to apply masks
16856            // because the unmasked parts will be overwritten by fields.
16857            // Write the fields.
16858            self.0.encode(encoder, offset + 0, depth)?;
16859            Ok(())
16860        }
16861    }
16862
16863    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16864        for ProviderSocketResponse
16865    {
16866        #[inline(always)]
16867        fn new_empty() -> Self {
16868            Self {
16869                s: fidl::new_empty!(
16870                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16871                    fidl::encoding::DefaultFuchsiaResourceDialect
16872                ),
16873            }
16874        }
16875
16876        #[inline]
16877        unsafe fn decode(
16878            &mut self,
16879            decoder: &mut fidl::encoding::Decoder<
16880                '_,
16881                fidl::encoding::DefaultFuchsiaResourceDialect,
16882            >,
16883            offset: usize,
16884            _depth: fidl::encoding::Depth,
16885        ) -> fidl::Result<()> {
16886            decoder.debug_check_bounds::<Self>(offset);
16887            // Verify that padding bytes are zero.
16888            fidl::decode!(
16889                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16890                fidl::encoding::DefaultFuchsiaResourceDialect,
16891                &mut self.s,
16892                decoder,
16893                offset + 0,
16894                _depth
16895            )?;
16896            Ok(())
16897        }
16898    }
16899
16900    impl SocketDescribeResponse {
16901        #[inline(always)]
16902        fn max_ordinal_present(&self) -> u64 {
16903            if let Some(_) = self.event {
16904                return 1;
16905            }
16906            0
16907        }
16908    }
16909
16910    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
16911        type Borrowed<'a> = &'a mut Self;
16912        fn take_or_borrow<'a>(
16913            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16914        ) -> Self::Borrowed<'a> {
16915            value
16916        }
16917    }
16918
16919    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
16920        type Owned = Self;
16921
16922        #[inline(always)]
16923        fn inline_align(_context: fidl::encoding::Context) -> usize {
16924            8
16925        }
16926
16927        #[inline(always)]
16928        fn inline_size(_context: fidl::encoding::Context) -> usize {
16929            16
16930        }
16931    }
16932
16933    unsafe impl
16934        fidl::encoding::Encode<
16935            SocketDescribeResponse,
16936            fidl::encoding::DefaultFuchsiaResourceDialect,
16937        > for &mut SocketDescribeResponse
16938    {
16939        unsafe fn encode(
16940            self,
16941            encoder: &mut fidl::encoding::Encoder<
16942                '_,
16943                fidl::encoding::DefaultFuchsiaResourceDialect,
16944            >,
16945            offset: usize,
16946            mut depth: fidl::encoding::Depth,
16947        ) -> fidl::Result<()> {
16948            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
16949            // Vector header
16950            let max_ordinal: u64 = self.max_ordinal_present();
16951            encoder.write_num(max_ordinal, offset);
16952            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
16953            // Calling encoder.out_of_line_offset(0) is not allowed.
16954            if max_ordinal == 0 {
16955                return Ok(());
16956            }
16957            depth.increment()?;
16958            let envelope_size = 8;
16959            let bytes_len = max_ordinal as usize * envelope_size;
16960            #[allow(unused_variables)]
16961            let offset = encoder.out_of_line_offset(bytes_len);
16962            let mut _prev_end_offset: usize = 0;
16963            if 1 > max_ordinal {
16964                return Ok(());
16965            }
16966
16967            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
16968            // are envelope_size bytes.
16969            let cur_offset: usize = (1 - 1) * envelope_size;
16970
16971            // Zero reserved fields.
16972            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
16973
16974            // Safety:
16975            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
16976            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
16977            //   envelope_size bytes, there is always sufficient room.
16978            fidl::encoding::encode_in_envelope_optional::<
16979                fidl::encoding::HandleType<
16980                    fidl::EventPair,
16981                    { fidl::ObjectType::EVENTPAIR.into_raw() },
16982                    2147483648,
16983                >,
16984                fidl::encoding::DefaultFuchsiaResourceDialect,
16985            >(
16986                self.event.as_mut().map(
16987                    <fidl::encoding::HandleType<
16988                        fidl::EventPair,
16989                        { fidl::ObjectType::EVENTPAIR.into_raw() },
16990                        2147483648,
16991                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
16992                ),
16993                encoder,
16994                offset + cur_offset,
16995                depth,
16996            )?;
16997
16998            _prev_end_offset = cur_offset + envelope_size;
16999
17000            Ok(())
17001        }
17002    }
17003
17004    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17005        for SocketDescribeResponse
17006    {
17007        #[inline(always)]
17008        fn new_empty() -> Self {
17009            Self::default()
17010        }
17011
17012        unsafe fn decode(
17013            &mut self,
17014            decoder: &mut fidl::encoding::Decoder<
17015                '_,
17016                fidl::encoding::DefaultFuchsiaResourceDialect,
17017            >,
17018            offset: usize,
17019            mut depth: fidl::encoding::Depth,
17020        ) -> fidl::Result<()> {
17021            decoder.debug_check_bounds::<Self>(offset);
17022            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17023                None => return Err(fidl::Error::NotNullable),
17024                Some(len) => len,
17025            };
17026            // Calling decoder.out_of_line_offset(0) is not allowed.
17027            if len == 0 {
17028                return Ok(());
17029            };
17030            depth.increment()?;
17031            let envelope_size = 8;
17032            let bytes_len = len * envelope_size;
17033            let offset = decoder.out_of_line_offset(bytes_len)?;
17034            // Decode the envelope for each type.
17035            let mut _next_ordinal_to_read = 0;
17036            let mut next_offset = offset;
17037            let end_offset = offset + bytes_len;
17038            _next_ordinal_to_read += 1;
17039            if next_offset >= end_offset {
17040                return Ok(());
17041            }
17042
17043            // Decode unknown envelopes for gaps in ordinals.
17044            while _next_ordinal_to_read < 1 {
17045                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17046                _next_ordinal_to_read += 1;
17047                next_offset += envelope_size;
17048            }
17049
17050            let next_out_of_line = decoder.next_out_of_line();
17051            let handles_before = decoder.remaining_handles();
17052            if let Some((inlined, num_bytes, num_handles)) =
17053                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17054            {
17055                let member_inline_size = <fidl::encoding::HandleType<
17056                    fidl::EventPair,
17057                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17058                    2147483648,
17059                > as fidl::encoding::TypeMarker>::inline_size(
17060                    decoder.context
17061                );
17062                if inlined != (member_inline_size <= 4) {
17063                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17064                }
17065                let inner_offset;
17066                let mut inner_depth = depth.clone();
17067                if inlined {
17068                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17069                    inner_offset = next_offset;
17070                } else {
17071                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17072                    inner_depth.increment()?;
17073                }
17074                let val_ref =
17075                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
17076                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
17077                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17078                {
17079                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17080                }
17081                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17082                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17083                }
17084            }
17085
17086            next_offset += envelope_size;
17087
17088            // Decode the remaining unknown envelopes.
17089            while next_offset < end_offset {
17090                _next_ordinal_to_read += 1;
17091                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17092                next_offset += envelope_size;
17093            }
17094
17095            Ok(())
17096        }
17097    }
17098}