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(
867        &self,
868        value: fidl_fuchsia_posix_socket::ReusePortOption,
869    ) -> Self::SetReusePortResponseFut;
870    type SetReusePortDeprecatedResponseFut: std::future::Future<
871            Output = Result<
872                fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
873                fidl::Error,
874            >,
875        > + Send;
876    fn r#set_reuse_port_deprecated(&self, value: bool) -> Self::SetReusePortDeprecatedResponseFut;
877    type GetReusePortResponseFut: std::future::Future<
878            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error>,
879        > + Send;
880    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut;
881    type GetAcceptConnResponseFut: std::future::Future<
882            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error>,
883        > + Send;
884    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut;
885    type SetBindToDeviceResponseFut: std::future::Future<
886            Output = Result<
887                fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
888                fidl::Error,
889            >,
890        > + Send;
891    fn r#set_bind_to_device(&self, value: &str) -> Self::SetBindToDeviceResponseFut;
892    type GetBindToDeviceResponseFut: std::future::Future<
893            Output = Result<
894                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
895                fidl::Error,
896            >,
897        > + Send;
898    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut;
899    type SetBindToInterfaceIndexResponseFut: std::future::Future<
900            Output = Result<
901                fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
902                fidl::Error,
903            >,
904        > + Send;
905    fn r#set_bind_to_interface_index(&self, value: u64)
906    -> Self::SetBindToInterfaceIndexResponseFut;
907    type GetBindToInterfaceIndexResponseFut: std::future::Future<
908            Output = Result<
909                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
910                fidl::Error,
911            >,
912        > + Send;
913    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut;
914    type SetTimestampResponseFut: std::future::Future<
915            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error>,
916        > + Send;
917    fn r#set_timestamp(
918        &self,
919        value: fidl_fuchsia_posix_socket::TimestampOption,
920    ) -> Self::SetTimestampResponseFut;
921    type GetTimestampResponseFut: std::future::Future<
922            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error>,
923        > + Send;
924    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut;
925    type SetMarkResponseFut: std::future::Future<
926            Output = Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error>,
927        > + Send;
928    fn r#set_mark(
929        &self,
930        domain: fidl_fuchsia_net::MarkDomain,
931        mark: &fidl_fuchsia_posix_socket::OptionalUint32,
932    ) -> Self::SetMarkResponseFut;
933    type GetMarkResponseFut: std::future::Future<
934            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error>,
935        > + Send;
936    fn r#get_mark(&self, domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut;
937    type GetCookieResponseFut: std::future::Future<
938            Output = Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error>,
939        > + Send;
940    fn r#get_cookie(&self) -> Self::GetCookieResponseFut;
941    type BindResponseFut: std::future::Future<
942            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error>,
943        > + Send;
944    fn r#bind(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut;
945    type ConnectResponseFut: std::future::Future<
946            Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>,
947        > + Send;
948    fn r#connect(&self, addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut;
949    type DisconnectResponseFut: std::future::Future<
950            Output = Result<
951                fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
952                fidl::Error,
953            >,
954        > + Send;
955    fn r#disconnect(&self) -> Self::DisconnectResponseFut;
956    type GetSockNameResponseFut: std::future::Future<
957            Output = Result<
958                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
959                fidl::Error,
960            >,
961        > + Send;
962    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut;
963    type GetPeerNameResponseFut: std::future::Future<
964            Output = Result<
965                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
966                fidl::Error,
967            >,
968        > + Send;
969    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut;
970    type ShutdownResponseFut: std::future::Future<
971            Output = Result<
972                fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
973                fidl::Error,
974            >,
975        > + Send;
976    fn r#shutdown(
977        &self,
978        mode: fidl_fuchsia_posix_socket::ShutdownMode,
979    ) -> Self::ShutdownResponseFut;
980    type SetIpTypeOfServiceResponseFut: std::future::Future<
981            Output = Result<
982                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
983                fidl::Error,
984            >,
985        > + Send;
986    fn r#set_ip_type_of_service(&self, value: u8) -> Self::SetIpTypeOfServiceResponseFut;
987    type GetIpTypeOfServiceResponseFut: std::future::Future<
988            Output = Result<
989                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
990                fidl::Error,
991            >,
992        > + Send;
993    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut;
994    type SetIpTtlResponseFut: std::future::Future<
995            Output = Result<
996                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
997                fidl::Error,
998            >,
999        > + Send;
1000    fn r#set_ip_ttl(
1001        &self,
1002        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1003    ) -> Self::SetIpTtlResponseFut;
1004    type GetIpTtlResponseFut: std::future::Future<
1005            Output = Result<
1006                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
1007                fidl::Error,
1008            >,
1009        > + Send;
1010    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut;
1011    type SetIpPacketInfoResponseFut: std::future::Future<
1012            Output = Result<
1013                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
1014                fidl::Error,
1015            >,
1016        > + Send;
1017    fn r#set_ip_packet_info(&self, value: bool) -> Self::SetIpPacketInfoResponseFut;
1018    type GetIpPacketInfoResponseFut: std::future::Future<
1019            Output = Result<
1020                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
1021                fidl::Error,
1022            >,
1023        > + Send;
1024    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut;
1025    type SetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1026            Output = Result<
1027                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
1028                fidl::Error,
1029            >,
1030        > + Send;
1031    fn r#set_ip_receive_type_of_service(
1032        &self,
1033        value: bool,
1034    ) -> Self::SetIpReceiveTypeOfServiceResponseFut;
1035    type GetIpReceiveTypeOfServiceResponseFut: std::future::Future<
1036            Output = Result<
1037                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
1038                fidl::Error,
1039            >,
1040        > + Send;
1041    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut;
1042    type SetIpReceiveTtlResponseFut: std::future::Future<
1043            Output = Result<
1044                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
1045                fidl::Error,
1046            >,
1047        > + Send;
1048    fn r#set_ip_receive_ttl(&self, value: bool) -> Self::SetIpReceiveTtlResponseFut;
1049    type GetIpReceiveTtlResponseFut: std::future::Future<
1050            Output = Result<
1051                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
1052                fidl::Error,
1053            >,
1054        > + Send;
1055    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut;
1056    type SetIpMulticastInterfaceResponseFut: std::future::Future<
1057            Output = Result<
1058                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
1059                fidl::Error,
1060            >,
1061        > + Send;
1062    fn r#set_ip_multicast_interface(
1063        &self,
1064        iface: u64,
1065        address: &fidl_fuchsia_net::Ipv4Address,
1066    ) -> Self::SetIpMulticastInterfaceResponseFut;
1067    type GetIpMulticastInterfaceResponseFut: std::future::Future<
1068            Output = Result<
1069                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
1070                fidl::Error,
1071            >,
1072        > + Send;
1073    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut;
1074    type SetIpMulticastTtlResponseFut: std::future::Future<
1075            Output = Result<
1076                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
1077                fidl::Error,
1078            >,
1079        > + Send;
1080    fn r#set_ip_multicast_ttl(
1081        &self,
1082        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1083    ) -> Self::SetIpMulticastTtlResponseFut;
1084    type GetIpMulticastTtlResponseFut: std::future::Future<
1085            Output = Result<
1086                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
1087                fidl::Error,
1088            >,
1089        > + Send;
1090    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut;
1091    type SetIpMulticastLoopbackResponseFut: std::future::Future<
1092            Output = Result<
1093                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
1094                fidl::Error,
1095            >,
1096        > + Send;
1097    fn r#set_ip_multicast_loopback(&self, value: bool) -> Self::SetIpMulticastLoopbackResponseFut;
1098    type GetIpMulticastLoopbackResponseFut: std::future::Future<
1099            Output = Result<
1100                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
1101                fidl::Error,
1102            >,
1103        > + Send;
1104    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut;
1105    type AddIpMembershipResponseFut: std::future::Future<
1106            Output = Result<
1107                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
1108                fidl::Error,
1109            >,
1110        > + Send;
1111    fn r#add_ip_membership(
1112        &self,
1113        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1114    ) -> Self::AddIpMembershipResponseFut;
1115    type DropIpMembershipResponseFut: std::future::Future<
1116            Output = Result<
1117                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
1118                fidl::Error,
1119            >,
1120        > + Send;
1121    fn r#drop_ip_membership(
1122        &self,
1123        membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
1124    ) -> Self::DropIpMembershipResponseFut;
1125    type SetIpTransparentResponseFut: std::future::Future<
1126            Output = Result<
1127                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
1128                fidl::Error,
1129            >,
1130        > + Send;
1131    fn r#set_ip_transparent(&self, value: bool) -> Self::SetIpTransparentResponseFut;
1132    type GetIpTransparentResponseFut: std::future::Future<
1133            Output = Result<
1134                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
1135                fidl::Error,
1136            >,
1137        > + Send;
1138    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut;
1139    type SetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1140    fn r#set_ip_receive_original_destination_address(
1141        &self,
1142        value: bool,
1143    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut;
1144    type GetIpReceiveOriginalDestinationAddressResponseFut: std::future::Future<Output = Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>> + Send;
1145    fn r#get_ip_receive_original_destination_address(
1146        &self,
1147    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut;
1148    type AddIpv6MembershipResponseFut: std::future::Future<
1149            Output = Result<
1150                fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
1151                fidl::Error,
1152            >,
1153        > + Send;
1154    fn r#add_ipv6_membership(
1155        &self,
1156        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1157    ) -> Self::AddIpv6MembershipResponseFut;
1158    type DropIpv6MembershipResponseFut: std::future::Future<
1159            Output = Result<
1160                fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
1161                fidl::Error,
1162            >,
1163        > + Send;
1164    fn r#drop_ipv6_membership(
1165        &self,
1166        membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
1167    ) -> Self::DropIpv6MembershipResponseFut;
1168    type SetIpv6MulticastInterfaceResponseFut: std::future::Future<
1169            Output = Result<
1170                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
1171                fidl::Error,
1172            >,
1173        > + Send;
1174    fn r#set_ipv6_multicast_interface(
1175        &self,
1176        value: u64,
1177    ) -> Self::SetIpv6MulticastInterfaceResponseFut;
1178    type GetIpv6MulticastInterfaceResponseFut: std::future::Future<
1179            Output = Result<
1180                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
1181                fidl::Error,
1182            >,
1183        > + Send;
1184    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut;
1185    type SetIpv6UnicastHopsResponseFut: std::future::Future<
1186            Output = Result<
1187                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
1188                fidl::Error,
1189            >,
1190        > + Send;
1191    fn r#set_ipv6_unicast_hops(
1192        &self,
1193        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1194    ) -> Self::SetIpv6UnicastHopsResponseFut;
1195    type GetIpv6UnicastHopsResponseFut: std::future::Future<
1196            Output = Result<
1197                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
1198                fidl::Error,
1199            >,
1200        > + Send;
1201    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut;
1202    type SetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1203            Output = Result<
1204                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
1205                fidl::Error,
1206            >,
1207        > + Send;
1208    fn r#set_ipv6_receive_hop_limit(&self, value: bool) -> Self::SetIpv6ReceiveHopLimitResponseFut;
1209    type GetIpv6ReceiveHopLimitResponseFut: std::future::Future<
1210            Output = Result<
1211                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
1212                fidl::Error,
1213            >,
1214        > + Send;
1215    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut;
1216    type SetIpv6MulticastHopsResponseFut: std::future::Future<
1217            Output = Result<
1218                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
1219                fidl::Error,
1220            >,
1221        > + Send;
1222    fn r#set_ipv6_multicast_hops(
1223        &self,
1224        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1225    ) -> Self::SetIpv6MulticastHopsResponseFut;
1226    type GetIpv6MulticastHopsResponseFut: std::future::Future<
1227            Output = Result<
1228                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
1229                fidl::Error,
1230            >,
1231        > + Send;
1232    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut;
1233    type SetIpv6MulticastLoopbackResponseFut: std::future::Future<
1234            Output = Result<
1235                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
1236                fidl::Error,
1237            >,
1238        > + Send;
1239    fn r#set_ipv6_multicast_loopback(
1240        &self,
1241        value: bool,
1242    ) -> Self::SetIpv6MulticastLoopbackResponseFut;
1243    type GetIpv6MulticastLoopbackResponseFut: std::future::Future<
1244            Output = Result<
1245                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
1246                fidl::Error,
1247            >,
1248        > + Send;
1249    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut;
1250    type SetIpv6OnlyResponseFut: std::future::Future<
1251            Output = Result<
1252                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
1253                fidl::Error,
1254            >,
1255        > + Send;
1256    fn r#set_ipv6_only(&self, value: bool) -> Self::SetIpv6OnlyResponseFut;
1257    type GetIpv6OnlyResponseFut: std::future::Future<
1258            Output = Result<
1259                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
1260                fidl::Error,
1261            >,
1262        > + Send;
1263    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut;
1264    type SetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1265            Output = Result<
1266                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
1267                fidl::Error,
1268            >,
1269        > + Send;
1270    fn r#set_ipv6_receive_traffic_class(
1271        &self,
1272        value: bool,
1273    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut;
1274    type GetIpv6ReceiveTrafficClassResponseFut: std::future::Future<
1275            Output = Result<
1276                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
1277                fidl::Error,
1278            >,
1279        > + Send;
1280    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut;
1281    type SetIpv6TrafficClassResponseFut: std::future::Future<
1282            Output = Result<
1283                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
1284                fidl::Error,
1285            >,
1286        > + Send;
1287    fn r#set_ipv6_traffic_class(
1288        &self,
1289        value: &fidl_fuchsia_posix_socket::OptionalUint8,
1290    ) -> Self::SetIpv6TrafficClassResponseFut;
1291    type GetIpv6TrafficClassResponseFut: std::future::Future<
1292            Output = Result<
1293                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
1294                fidl::Error,
1295            >,
1296        > + Send;
1297    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut;
1298    type SetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1299            Output = Result<
1300                fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
1301                fidl::Error,
1302            >,
1303        > + Send;
1304    fn r#set_ipv6_receive_packet_info(
1305        &self,
1306        value: bool,
1307    ) -> Self::SetIpv6ReceivePacketInfoResponseFut;
1308    type GetIpv6ReceivePacketInfoResponseFut: std::future::Future<
1309            Output = Result<
1310                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
1311                fidl::Error,
1312            >,
1313        > + Send;
1314    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut;
1315    type GetOriginalDestinationResponseFut: std::future::Future<
1316            Output = Result<
1317                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
1318                fidl::Error,
1319            >,
1320        > + Send;
1321    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut;
1322    type DescribeResponseFut: std::future::Future<Output = Result<SocketDescribeResponse, fidl::Error>>
1323        + Send;
1324    fn r#describe(&self) -> Self::DescribeResponseFut;
1325    type RecvMsgResponseFut: std::future::Future<Output = Result<SocketRecvMsgResult, fidl::Error>>
1326        + Send;
1327    fn r#recv_msg(
1328        &self,
1329        want_addr: bool,
1330        data_len: u32,
1331        want_control: bool,
1332        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
1333    ) -> Self::RecvMsgResponseFut;
1334    type SendMsgResponseFut: std::future::Future<Output = Result<SocketSendMsgResult, fidl::Error>>
1335        + Send;
1336    fn r#send_msg(
1337        &self,
1338        addr: Option<&fidl_fuchsia_net::SocketAddress>,
1339        data: &[u8],
1340        control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
1341        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
1342    ) -> Self::SendMsgResponseFut;
1343    type GetInfoResponseFut: std::future::Future<Output = Result<SocketGetInfoResult, fidl::Error>>
1344        + Send;
1345    fn r#get_info(&self) -> Self::GetInfoResponseFut;
1346    type SetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketSetIpHeaderIncludedResult, fidl::Error>>
1347        + Send;
1348    fn r#set_ip_header_included(&self, value: bool) -> Self::SetIpHeaderIncludedResponseFut;
1349    type GetIpHeaderIncludedResponseFut: std::future::Future<Output = Result<SocketGetIpHeaderIncludedResult, fidl::Error>>
1350        + Send;
1351    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut;
1352    type SetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketSetIcmpv6FilterResult, fidl::Error>>
1353        + Send;
1354    fn r#set_icmpv6_filter(&self, filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut;
1355    type GetIcmpv6FilterResponseFut: std::future::Future<Output = Result<SocketGetIcmpv6FilterResult, fidl::Error>>
1356        + Send;
1357    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut;
1358    type SetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketSetIpv6ChecksumResult, fidl::Error>>
1359        + Send;
1360    fn r#set_ipv6_checksum(
1361        &self,
1362        config: &Ipv6ChecksumConfiguration,
1363    ) -> Self::SetIpv6ChecksumResponseFut;
1364    type GetIpv6ChecksumResponseFut: std::future::Future<Output = Result<SocketGetIpv6ChecksumResult, fidl::Error>>
1365        + Send;
1366    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut;
1367}
1368#[derive(Debug)]
1369#[cfg(target_os = "fuchsia")]
1370pub struct SocketSynchronousProxy {
1371    client: fidl::client::sync::Client,
1372}
1373
1374#[cfg(target_os = "fuchsia")]
1375impl fidl::endpoints::SynchronousProxy for SocketSynchronousProxy {
1376    type Proxy = SocketProxy;
1377    type Protocol = SocketMarker;
1378
1379    fn from_channel(inner: fidl::Channel) -> Self {
1380        Self::new(inner)
1381    }
1382
1383    fn into_channel(self) -> fidl::Channel {
1384        self.client.into_channel()
1385    }
1386
1387    fn as_channel(&self) -> &fidl::Channel {
1388        self.client.as_channel()
1389    }
1390}
1391
1392#[cfg(target_os = "fuchsia")]
1393impl SocketSynchronousProxy {
1394    pub fn new(channel: fidl::Channel) -> Self {
1395        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1396        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1397    }
1398
1399    pub fn into_channel(self) -> fidl::Channel {
1400        self.client.into_channel()
1401    }
1402
1403    /// Waits until an event arrives and returns it. It is safe for other
1404    /// threads to make concurrent requests while waiting for an event.
1405    pub fn wait_for_event(
1406        &self,
1407        deadline: zx::MonotonicInstant,
1408    ) -> Result<SocketEvent, fidl::Error> {
1409        SocketEvent::decode(self.client.wait_for_event(deadline)?)
1410    }
1411
1412    pub fn r#clone(
1413        &self,
1414        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
1415    ) -> Result<(), fidl::Error> {
1416        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
1417            (request,),
1418            0x20d8a7aba2168a79,
1419            fidl::encoding::DynamicFlags::empty(),
1420        )
1421    }
1422
1423    /// Terminates the connection.
1424    ///
1425    /// After calling `Close`, the client must not send any other requests.
1426    ///
1427    /// Servers, after sending the status response, should close the connection
1428    /// regardless of status and without sending an epitaph.
1429    ///
1430    /// Closing the client end of the channel should be semantically equivalent
1431    /// to calling `Close` without knowing when the close has completed or its
1432    /// status.
1433    pub fn r#close(
1434        &self,
1435        ___deadline: zx::MonotonicInstant,
1436    ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
1437        let _response = self.client.send_query::<
1438            fidl::encoding::EmptyPayload,
1439            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1440        >(
1441            (),
1442            0x5ac5d459ad7f657e,
1443            fidl::encoding::DynamicFlags::empty(),
1444            ___deadline,
1445        )?;
1446        Ok(_response.map(|x| x))
1447    }
1448
1449    pub fn r#query(&self, ___deadline: zx::MonotonicInstant) -> Result<Vec<u8>, fidl::Error> {
1450        let _response = self.client.send_query::<
1451            fidl::encoding::EmptyPayload,
1452            fidl_fuchsia_unknown::QueryableQueryResponse,
1453        >(
1454            (),
1455            0x2658edee9decfc06,
1456            fidl::encoding::DynamicFlags::empty(),
1457            ___deadline,
1458        )?;
1459        Ok(_response.protocol)
1460    }
1461
1462    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
1463    pub fn r#set_reuse_address(
1464        &self,
1465        mut value: bool,
1466        ___deadline: zx::MonotonicInstant,
1467    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error> {
1468        let _response = self.client.send_query::<
1469            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
1470            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1471        >(
1472            (value,),
1473            0x1fd74ee8b9a4a876,
1474            fidl::encoding::DynamicFlags::empty(),
1475            ___deadline,
1476        )?;
1477        Ok(_response.map(|x| x))
1478    }
1479
1480    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
1481    pub fn r#get_reuse_address(
1482        &self,
1483        ___deadline: zx::MonotonicInstant,
1484    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error> {
1485        let _response = self
1486            .client
1487            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1488                fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
1489                fidl_fuchsia_posix::Errno,
1490            >>(
1491                (), 0x67b7206b8d1bc0a5, fidl::encoding::DynamicFlags::empty(), ___deadline
1492            )?;
1493        Ok(_response.map(|x| x.value))
1494    }
1495
1496    /// Get `SOL_SOCKET` -> `SO_ERROR`.
1497    /// Returns the last error if there is an error set on the socket.
1498    pub fn r#get_error(
1499        &self,
1500        ___deadline: zx::MonotonicInstant,
1501    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
1502        let _response =
1503            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1504                fidl::encoding::EmptyStruct,
1505                fidl_fuchsia_posix::Errno,
1506            >>(
1507                (),
1508                0x5aad39b33e5f6ebb,
1509                fidl::encoding::DynamicFlags::empty(),
1510                ___deadline,
1511            )?;
1512        Ok(_response.map(|x| x))
1513    }
1514
1515    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
1516    pub fn r#set_broadcast(
1517        &self,
1518        mut value: bool,
1519        ___deadline: zx::MonotonicInstant,
1520    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
1521        let _response = self.client.send_query::<
1522            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
1523            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1524        >(
1525            (value,),
1526            0x6023e081ce3cd947,
1527            fidl::encoding::DynamicFlags::empty(),
1528            ___deadline,
1529        )?;
1530        Ok(_response.map(|x| x))
1531    }
1532
1533    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
1534    pub fn r#get_broadcast(
1535        &self,
1536        ___deadline: zx::MonotonicInstant,
1537    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
1538        let _response = self
1539            .client
1540            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1541                fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
1542                fidl_fuchsia_posix::Errno,
1543            >>(
1544                (), 0x68796fc556f9780d, fidl::encoding::DynamicFlags::empty(), ___deadline
1545            )?;
1546        Ok(_response.map(|x| x.value))
1547    }
1548
1549    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
1550    pub fn r#set_send_buffer(
1551        &self,
1552        mut value_bytes: u64,
1553        ___deadline: zx::MonotonicInstant,
1554    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
1555        let _response = self.client.send_query::<
1556            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
1557            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1558        >(
1559            (value_bytes,),
1560            0x756eac32d73a7a70,
1561            fidl::encoding::DynamicFlags::empty(),
1562            ___deadline,
1563        )?;
1564        Ok(_response.map(|x| x))
1565    }
1566
1567    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
1568    pub fn r#get_send_buffer(
1569        &self,
1570        ___deadline: zx::MonotonicInstant,
1571    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
1572        let _response = self
1573            .client
1574            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1575                fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
1576                fidl_fuchsia_posix::Errno,
1577            >>(
1578                (), 0x78a52fd9c7b2410b, fidl::encoding::DynamicFlags::empty(), ___deadline
1579            )?;
1580        Ok(_response.map(|x| x.value_bytes))
1581    }
1582
1583    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
1584    pub fn r#set_receive_buffer(
1585        &self,
1586        mut value_bytes: u64,
1587        ___deadline: zx::MonotonicInstant,
1588    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error> {
1589        let _response = self.client.send_query::<
1590            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
1591            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1592        >(
1593            (value_bytes,),
1594            0x6b0cf2f1919c7001,
1595            fidl::encoding::DynamicFlags::empty(),
1596            ___deadline,
1597        )?;
1598        Ok(_response.map(|x| x))
1599    }
1600
1601    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
1602    pub fn r#get_receive_buffer(
1603        &self,
1604        ___deadline: zx::MonotonicInstant,
1605    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error> {
1606        let _response = self
1607            .client
1608            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1609                fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
1610                fidl_fuchsia_posix::Errno,
1611            >>(
1612                (), 0x14c1a4b64f709e5c, fidl::encoding::DynamicFlags::empty(), ___deadline
1613            )?;
1614        Ok(_response.map(|x| x.value_bytes))
1615    }
1616
1617    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
1618    pub fn r#set_keep_alive(
1619        &self,
1620        mut value: bool,
1621        ___deadline: zx::MonotonicInstant,
1622    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
1623        let _response = self.client.send_query::<
1624            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
1625            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1626        >(
1627            (value,),
1628            0x572df8f0b920d2c7,
1629            fidl::encoding::DynamicFlags::empty(),
1630            ___deadline,
1631        )?;
1632        Ok(_response.map(|x| x))
1633    }
1634
1635    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
1636    pub fn r#get_keep_alive(
1637        &self,
1638        ___deadline: zx::MonotonicInstant,
1639    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
1640        let _response = self
1641            .client
1642            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1643                fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
1644                fidl_fuchsia_posix::Errno,
1645            >>(
1646                (), 0x2dd29d3215f2c9d2, fidl::encoding::DynamicFlags::empty(), ___deadline
1647            )?;
1648        Ok(_response.map(|x| x.value))
1649    }
1650
1651    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
1652    pub fn r#set_out_of_band_inline(
1653        &self,
1654        mut value: bool,
1655        ___deadline: zx::MonotonicInstant,
1656    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error> {
1657        let _response = self.client.send_query::<
1658            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
1659            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1660        >(
1661            (value,),
1662            0x3ecb49968bee439,
1663            fidl::encoding::DynamicFlags::empty(),
1664            ___deadline,
1665        )?;
1666        Ok(_response.map(|x| x))
1667    }
1668
1669    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
1670    pub fn r#get_out_of_band_inline(
1671        &self,
1672        ___deadline: zx::MonotonicInstant,
1673    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error> {
1674        let _response = self
1675            .client
1676            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1677                fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
1678                fidl_fuchsia_posix::Errno,
1679            >>(
1680                (), 0x348c1ab3aeca1745, fidl::encoding::DynamicFlags::empty(), ___deadline
1681            )?;
1682        Ok(_response.map(|x| x.value))
1683    }
1684
1685    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
1686    pub fn r#set_no_check(
1687        &self,
1688        mut value: bool,
1689        ___deadline: zx::MonotonicInstant,
1690    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
1691        let _response = self.client.send_query::<
1692            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
1693            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1694        >(
1695            (value,),
1696            0x6bbf00c53a4c78c2,
1697            fidl::encoding::DynamicFlags::empty(),
1698            ___deadline,
1699        )?;
1700        Ok(_response.map(|x| x))
1701    }
1702
1703    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
1704    pub fn r#get_no_check(
1705        &self,
1706        ___deadline: zx::MonotonicInstant,
1707    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
1708        let _response = self
1709            .client
1710            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1711                fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
1712                fidl_fuchsia_posix::Errno,
1713            >>(
1714                (), 0x2cd4249286417694, fidl::encoding::DynamicFlags::empty(), ___deadline
1715            )?;
1716        Ok(_response.map(|x| x.value))
1717    }
1718
1719    /// Set `SOL_SOCKET` -> `SO_LINGER`.
1720    pub fn r#set_linger(
1721        &self,
1722        mut linger: bool,
1723        mut length_secs: u32,
1724        ___deadline: zx::MonotonicInstant,
1725    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
1726        let _response = self.client.send_query::<
1727            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
1728            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1729        >(
1730            (linger, length_secs,),
1731            0x45386351246e998e,
1732            fidl::encoding::DynamicFlags::empty(),
1733            ___deadline,
1734        )?;
1735        Ok(_response.map(|x| x))
1736    }
1737
1738    /// Get `SOL_SOCKET` -> `SO_LINGER`.
1739    pub fn r#get_linger(
1740        &self,
1741        ___deadline: zx::MonotonicInstant,
1742    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
1743        let _response = self
1744            .client
1745            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1746                fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
1747                fidl_fuchsia_posix::Errno,
1748            >>(
1749                (), 0x48eb20fc5ccb0e45, fidl::encoding::DynamicFlags::empty(), ___deadline
1750            )?;
1751        Ok(_response.map(|x| (x.linger, x.length_secs)))
1752    }
1753
1754    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
1755    pub fn r#set_reuse_port(
1756        &self,
1757        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
1758        ___deadline: zx::MonotonicInstant,
1759    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
1760        let _response = self.client.send_query::<
1761            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
1762            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1763        >(
1764            (&mut value,),
1765            0x547dc9cc0455189e,
1766            fidl::encoding::DynamicFlags::empty(),
1767            ___deadline,
1768        )?;
1769        Ok(_response.map(|x| x))
1770    }
1771
1772    pub fn r#set_reuse_port_deprecated(
1773        &self,
1774        mut value: bool,
1775        ___deadline: zx::MonotonicInstant,
1776    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
1777    {
1778        let _response = self.client.send_query::<
1779            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
1780            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1781        >(
1782            (value,),
1783            0x24dd3e5cb36d9ccb,
1784            fidl::encoding::DynamicFlags::empty(),
1785            ___deadline,
1786        )?;
1787        Ok(_response.map(|x| x))
1788    }
1789
1790    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
1791    pub fn r#get_reuse_port(
1792        &self,
1793        ___deadline: zx::MonotonicInstant,
1794    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
1795        let _response = self
1796            .client
1797            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1798                fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
1799                fidl_fuchsia_posix::Errno,
1800            >>(
1801                (), 0x7a112c1ab54ff828, fidl::encoding::DynamicFlags::empty(), ___deadline
1802            )?;
1803        Ok(_response.map(|x| x.value))
1804    }
1805
1806    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
1807    pub fn r#get_accept_conn(
1808        &self,
1809        ___deadline: zx::MonotonicInstant,
1810    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
1811        let _response = self
1812            .client
1813            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1814                fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
1815                fidl_fuchsia_posix::Errno,
1816            >>(
1817                (), 0x67ce6db6c2ec8966, fidl::encoding::DynamicFlags::empty(), ___deadline
1818            )?;
1819        Ok(_response.map(|x| x.value))
1820    }
1821
1822    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1823    pub fn r#set_bind_to_device(
1824        &self,
1825        mut value: &str,
1826        ___deadline: zx::MonotonicInstant,
1827    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error> {
1828        let _response = self.client.send_query::<
1829            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
1830            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1831        >(
1832            (value,),
1833            0x2118b483f28aafc4,
1834            fidl::encoding::DynamicFlags::empty(),
1835            ___deadline,
1836        )?;
1837        Ok(_response.map(|x| x))
1838    }
1839
1840    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
1841    pub fn r#get_bind_to_device(
1842        &self,
1843        ___deadline: zx::MonotonicInstant,
1844    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error> {
1845        let _response = self
1846            .client
1847            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1848                fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
1849                fidl_fuchsia_posix::Errno,
1850            >>(
1851                (), 0x1ab1fbf0ef7906c8, fidl::encoding::DynamicFlags::empty(), ___deadline
1852            )?;
1853        Ok(_response.map(|x| x.value))
1854    }
1855
1856    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1857    /// If `value` is 0, this clears the bound interface.
1858    pub fn r#set_bind_to_interface_index(
1859        &self,
1860        mut value: u64,
1861        ___deadline: zx::MonotonicInstant,
1862    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
1863    {
1864        let _response = self.client.send_query::<
1865            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
1866            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1867        >(
1868            (value,),
1869            0x6e387a0def00821,
1870            fidl::encoding::DynamicFlags::empty(),
1871            ___deadline,
1872        )?;
1873        Ok(_response.map(|x| x))
1874    }
1875
1876    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
1877    pub fn r#get_bind_to_interface_index(
1878        &self,
1879        ___deadline: zx::MonotonicInstant,
1880    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
1881    {
1882        let _response = self
1883            .client
1884            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1885                fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
1886                fidl_fuchsia_posix::Errno,
1887            >>(
1888                (), 0x59c31dd3e3078295, fidl::encoding::DynamicFlags::empty(), ___deadline
1889            )?;
1890        Ok(_response.map(|x| x.value))
1891    }
1892
1893    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1894    pub fn r#set_timestamp(
1895        &self,
1896        mut value: fidl_fuchsia_posix_socket::TimestampOption,
1897        ___deadline: zx::MonotonicInstant,
1898    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
1899        let _response = self.client.send_query::<
1900            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
1901            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1902        >(
1903            (value,),
1904            0x285d6516c263d839,
1905            fidl::encoding::DynamicFlags::empty(),
1906            ___deadline,
1907        )?;
1908        Ok(_response.map(|x| x))
1909    }
1910
1911    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
1912    pub fn r#get_timestamp(
1913        &self,
1914        ___deadline: zx::MonotonicInstant,
1915    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
1916        let _response = self
1917            .client
1918            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1919                fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
1920                fidl_fuchsia_posix::Errno,
1921            >>(
1922                (), 0x49f2fffbbcc2bd27, fidl::encoding::DynamicFlags::empty(), ___deadline
1923            )?;
1924        Ok(_response.map(|x| x.value))
1925    }
1926
1927    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1928    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1929    /// mark can be set independently in each domain.
1930    pub fn r#set_mark(
1931        &self,
1932        mut domain: fidl_fuchsia_net::MarkDomain,
1933        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
1934        ___deadline: zx::MonotonicInstant,
1935    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
1936        let _response = self.client.send_query::<
1937            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
1938            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1939        >(
1940            (domain, mark,),
1941            0x6ead6de09f653236,
1942            fidl::encoding::DynamicFlags::empty(),
1943            ___deadline,
1944        )?;
1945        Ok(_response.map(|x| x))
1946    }
1947
1948    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
1949    /// unlike the standard SO_MARK, this API has multiple mark domains and each
1950    /// mark can be retrieved independently in each domain.
1951    pub fn r#get_mark(
1952        &self,
1953        mut domain: fidl_fuchsia_net::MarkDomain,
1954        ___deadline: zx::MonotonicInstant,
1955    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
1956        let _response = self.client.send_query::<
1957            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
1958            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse, fidl_fuchsia_posix::Errno>,
1959        >(
1960            (domain,),
1961            0x57a2752c61d93d47,
1962            fidl::encoding::DynamicFlags::empty(),
1963            ___deadline,
1964        )?;
1965        Ok(_response.map(|x| x.mark))
1966    }
1967
1968    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
1969    pub fn r#get_cookie(
1970        &self,
1971        ___deadline: zx::MonotonicInstant,
1972    ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
1973        let _response = self
1974            .client
1975            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
1976                fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
1977                fidl_fuchsia_posix::Errno,
1978            >>(
1979                (), 0x2c2f47fd8f924e52, fidl::encoding::DynamicFlags::empty(), ___deadline
1980            )?;
1981        Ok(_response.map(|x| x.value))
1982    }
1983
1984    /// Sets the local address used for the socket.
1985    pub fn r#bind(
1986        &self,
1987        mut addr: &fidl_fuchsia_net::SocketAddress,
1988        ___deadline: zx::MonotonicInstant,
1989    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
1990        let _response = self.client.send_query::<
1991            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
1992            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
1993        >(
1994            (addr,),
1995            0x4bc6400ae92125d,
1996            fidl::encoding::DynamicFlags::empty(),
1997            ___deadline,
1998        )?;
1999        Ok(_response.map(|x| x))
2000    }
2001
2002    /// Initiates a connection to a remote address.
2003    pub fn r#connect(
2004        &self,
2005        mut addr: &fidl_fuchsia_net::SocketAddress,
2006        ___deadline: zx::MonotonicInstant,
2007    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error> {
2008        let _response = self.client.send_query::<
2009            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
2010            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2011        >(
2012            (addr,),
2013            0x5f05f19bfdd38871,
2014            fidl::encoding::DynamicFlags::empty(),
2015            ___deadline,
2016        )?;
2017        Ok(_response.map(|x| x))
2018    }
2019
2020    /// Clears connection information from this socket.
2021    pub fn r#disconnect(
2022        &self,
2023        ___deadline: zx::MonotonicInstant,
2024    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error> {
2025        let _response =
2026            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2027                fidl::encoding::EmptyStruct,
2028                fidl_fuchsia_posix::Errno,
2029            >>(
2030                (),
2031                0x74e63b91f7b29b2,
2032                fidl::encoding::DynamicFlags::empty(),
2033                ___deadline,
2034            )?;
2035        Ok(_response.map(|x| x))
2036    }
2037
2038    /// Retrieves the local socket address.
2039    pub fn r#get_sock_name(
2040        &self,
2041        ___deadline: zx::MonotonicInstant,
2042    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error> {
2043        let _response = self
2044            .client
2045            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2046                fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
2047                fidl_fuchsia_posix::Errno,
2048            >>(
2049                (), 0x475f23f84a1a4f85, fidl::encoding::DynamicFlags::empty(), ___deadline
2050            )?;
2051        Ok(_response.map(|x| x.addr))
2052    }
2053
2054    /// Retrieves the remote socket address.
2055    pub fn r#get_peer_name(
2056        &self,
2057        ___deadline: zx::MonotonicInstant,
2058    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error> {
2059        let _response = self
2060            .client
2061            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2062                fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
2063                fidl_fuchsia_posix::Errno,
2064            >>(
2065                (), 0x1ffecf4bd5b6432e, fidl::encoding::DynamicFlags::empty(), ___deadline
2066            )?;
2067        Ok(_response.map(|x| x.addr))
2068    }
2069
2070    /// Shuts down part of the socket.
2071    pub fn r#shutdown(
2072        &self,
2073        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
2074        ___deadline: zx::MonotonicInstant,
2075    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error> {
2076        let _response = self.client.send_query::<
2077            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
2078            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2079        >(
2080            (mode,),
2081            0x247f38b6db68c336,
2082            fidl::encoding::DynamicFlags::empty(),
2083            ___deadline,
2084        )?;
2085        Ok(_response.map(|x| x))
2086    }
2087
2088    /// Set `SOL_IP` -> `IP_TOS`.
2089    pub fn r#set_ip_type_of_service(
2090        &self,
2091        mut value: u8,
2092        ___deadline: zx::MonotonicInstant,
2093    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
2094    {
2095        let _response = self.client.send_query::<
2096            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
2097            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2098        >(
2099            (value,),
2100            0x995c600475b6d46,
2101            fidl::encoding::DynamicFlags::empty(),
2102            ___deadline,
2103        )?;
2104        Ok(_response.map(|x| x))
2105    }
2106
2107    /// Get `SOL_IP` -> `IP_TOS`.
2108    pub fn r#get_ip_type_of_service(
2109        &self,
2110        ___deadline: zx::MonotonicInstant,
2111    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
2112    {
2113        let _response = self
2114            .client
2115            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2116                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
2117                fidl_fuchsia_posix::Errno,
2118            >>(
2119                (), 0x3814a04259f75fcb, fidl::encoding::DynamicFlags::empty(), ___deadline
2120            )?;
2121        Ok(_response.map(|x| x.value))
2122    }
2123
2124    /// Set `SOL_IP` -> `IP_TTL`.
2125    pub fn r#set_ip_ttl(
2126        &self,
2127        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2128        ___deadline: zx::MonotonicInstant,
2129    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error> {
2130        let _response = self.client.send_query::<
2131            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
2132            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2133        >(
2134            (value,),
2135            0x29e2424b433ae1ef,
2136            fidl::encoding::DynamicFlags::empty(),
2137            ___deadline,
2138        )?;
2139        Ok(_response.map(|x| x))
2140    }
2141
2142    /// Get `SOL_IP` -> `IP_TTL`.
2143    pub fn r#get_ip_ttl(
2144        &self,
2145        ___deadline: zx::MonotonicInstant,
2146    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error> {
2147        let _response = self
2148            .client
2149            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2150                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
2151                fidl_fuchsia_posix::Errno,
2152            >>(
2153                (), 0x47e47fa1f24da471, fidl::encoding::DynamicFlags::empty(), ___deadline
2154            )?;
2155        Ok(_response.map(|x| x.value))
2156    }
2157
2158    /// Set `SOL_IP` -> `IP_PKTINFO`.
2159    pub fn r#set_ip_packet_info(
2160        &self,
2161        mut value: bool,
2162        ___deadline: zx::MonotonicInstant,
2163    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
2164    {
2165        let _response = self.client.send_query::<
2166            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
2167            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2168        >(
2169            (value,),
2170            0x392d16bee20c0e16,
2171            fidl::encoding::DynamicFlags::empty(),
2172            ___deadline,
2173        )?;
2174        Ok(_response.map(|x| x))
2175    }
2176
2177    /// Get `SOL_IP` -> `IP_PKTINFO`.
2178    pub fn r#get_ip_packet_info(
2179        &self,
2180        ___deadline: zx::MonotonicInstant,
2181    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
2182    {
2183        let _response = self
2184            .client
2185            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2186                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
2187                fidl_fuchsia_posix::Errno,
2188            >>(
2189                (), 0x54b505f242280740, fidl::encoding::DynamicFlags::empty(), ___deadline
2190            )?;
2191        Ok(_response.map(|x| x.value))
2192    }
2193
2194    /// Set `SOL_IP` -> `IP_RECVTOS`.
2195    pub fn r#set_ip_receive_type_of_service(
2196        &self,
2197        mut value: bool,
2198        ___deadline: zx::MonotonicInstant,
2199    ) -> Result<
2200        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
2201        fidl::Error,
2202    > {
2203        let _response = self.client.send_query::<
2204            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
2205            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2206        >(
2207            (value,),
2208            0x6c4f6714995f84ef,
2209            fidl::encoding::DynamicFlags::empty(),
2210            ___deadline,
2211        )?;
2212        Ok(_response.map(|x| x))
2213    }
2214
2215    /// Get `SOL_IP` -> `IP_RECVTOS`.
2216    pub fn r#get_ip_receive_type_of_service(
2217        &self,
2218        ___deadline: zx::MonotonicInstant,
2219    ) -> Result<
2220        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
2221        fidl::Error,
2222    > {
2223        let _response = self
2224            .client
2225            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2226                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
2227                fidl_fuchsia_posix::Errno,
2228            >>(
2229                (), 0x4158ba7dc2795960, fidl::encoding::DynamicFlags::empty(), ___deadline
2230            )?;
2231        Ok(_response.map(|x| x.value))
2232    }
2233
2234    /// Set `SOL_IP` -> `IP_RECVTTL`.
2235    pub fn r#set_ip_receive_ttl(
2236        &self,
2237        mut value: bool,
2238        ___deadline: zx::MonotonicInstant,
2239    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
2240    {
2241        let _response = self.client.send_query::<
2242            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
2243            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2244        >(
2245            (value,),
2246            0x46f15be0ce0ab82b,
2247            fidl::encoding::DynamicFlags::empty(),
2248            ___deadline,
2249        )?;
2250        Ok(_response.map(|x| x))
2251    }
2252
2253    /// Get `SOL_IP` -> `IP_RECVTTL`.
2254    pub fn r#get_ip_receive_ttl(
2255        &self,
2256        ___deadline: zx::MonotonicInstant,
2257    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
2258    {
2259        let _response = self
2260            .client
2261            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2262                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
2263                fidl_fuchsia_posix::Errno,
2264            >>(
2265                (), 0x678ddd5a5dfa2eb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2266            )?;
2267        Ok(_response.map(|x| x.value))
2268    }
2269
2270    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
2271    pub fn r#set_ip_multicast_interface(
2272        &self,
2273        mut iface: u64,
2274        mut address: &fidl_fuchsia_net::Ipv4Address,
2275        ___deadline: zx::MonotonicInstant,
2276    ) -> Result<
2277        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
2278        fidl::Error,
2279    > {
2280        let _response = self.client.send_query::<
2281            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
2282            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2283        >(
2284            (iface, address,),
2285            0x752fbfa9b12befe,
2286            fidl::encoding::DynamicFlags::empty(),
2287            ___deadline,
2288        )?;
2289        Ok(_response.map(|x| x))
2290    }
2291
2292    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
2293    pub fn r#get_ip_multicast_interface(
2294        &self,
2295        ___deadline: zx::MonotonicInstant,
2296    ) -> Result<
2297        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
2298        fidl::Error,
2299    > {
2300        let _response = self
2301            .client
2302            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2303                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
2304                fidl_fuchsia_posix::Errno,
2305            >>(
2306                (), 0x320bd14c4df046c4, fidl::encoding::DynamicFlags::empty(), ___deadline
2307            )?;
2308        Ok(_response.map(|x| x.value))
2309    }
2310
2311    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
2312    pub fn r#set_ip_multicast_ttl(
2313        &self,
2314        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2315        ___deadline: zx::MonotonicInstant,
2316    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
2317    {
2318        let _response = self.client.send_query::<
2319            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
2320            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2321        >(
2322            (value,),
2323            0x63134d53772916a1,
2324            fidl::encoding::DynamicFlags::empty(),
2325            ___deadline,
2326        )?;
2327        Ok(_response.map(|x| x))
2328    }
2329
2330    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
2331    pub fn r#get_ip_multicast_ttl(
2332        &self,
2333        ___deadline: zx::MonotonicInstant,
2334    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
2335    {
2336        let _response = self
2337            .client
2338            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2339                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
2340                fidl_fuchsia_posix::Errno,
2341            >>(
2342                (), 0x4665cd378f39e1a, fidl::encoding::DynamicFlags::empty(), ___deadline
2343            )?;
2344        Ok(_response.map(|x| x.value))
2345    }
2346
2347    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
2348    pub fn r#set_ip_multicast_loopback(
2349        &self,
2350        mut value: bool,
2351        ___deadline: zx::MonotonicInstant,
2352    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult, fidl::Error>
2353    {
2354        let _response = self.client.send_query::<
2355            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
2356            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2357        >(
2358            (value,),
2359            0x20c55c11f00943ea,
2360            fidl::encoding::DynamicFlags::empty(),
2361            ___deadline,
2362        )?;
2363        Ok(_response.map(|x| x))
2364    }
2365
2366    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
2367    pub fn r#get_ip_multicast_loopback(
2368        &self,
2369        ___deadline: zx::MonotonicInstant,
2370    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult, fidl::Error>
2371    {
2372        let _response = self
2373            .client
2374            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2375                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
2376                fidl_fuchsia_posix::Errno,
2377            >>(
2378                (), 0x3b6b26ff558298f2, fidl::encoding::DynamicFlags::empty(), ___deadline
2379            )?;
2380        Ok(_response.map(|x| x.value))
2381    }
2382
2383    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
2384    pub fn r#add_ip_membership(
2385        &self,
2386        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2387        ___deadline: zx::MonotonicInstant,
2388    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
2389    {
2390        let _response = self.client.send_query::<
2391            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
2392            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2393        >(
2394            (membership,),
2395            0x76bc7df115a3b4d0,
2396            fidl::encoding::DynamicFlags::empty(),
2397            ___deadline,
2398        )?;
2399        Ok(_response.map(|x| x))
2400    }
2401
2402    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
2403    pub fn r#drop_ip_membership(
2404        &self,
2405        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
2406        ___deadline: zx::MonotonicInstant,
2407    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
2408    {
2409        let _response = self.client.send_query::<
2410            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
2411            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2412        >(
2413            (membership,),
2414            0x2888f3099188d03,
2415            fidl::encoding::DynamicFlags::empty(),
2416            ___deadline,
2417        )?;
2418        Ok(_response.map(|x| x))
2419    }
2420
2421    /// Set `SOL_IP` -> `IP_TRANSPARENT`
2422    pub fn r#set_ip_transparent(
2423        &self,
2424        mut value: bool,
2425        ___deadline: zx::MonotonicInstant,
2426    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
2427    {
2428        let _response = self.client.send_query::<
2429            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
2430            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2431        >(
2432            (value,),
2433            0x1ae532b0c066e3a0,
2434            fidl::encoding::DynamicFlags::empty(),
2435            ___deadline,
2436        )?;
2437        Ok(_response.map(|x| x))
2438    }
2439
2440    /// Get `SOL_IP` -> `IP_TRANSPARENT`
2441    pub fn r#get_ip_transparent(
2442        &self,
2443        ___deadline: zx::MonotonicInstant,
2444    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
2445    {
2446        let _response = self
2447            .client
2448            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2449                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
2450                fidl_fuchsia_posix::Errno,
2451            >>(
2452                (), 0x51d43695962ebfb5, fidl::encoding::DynamicFlags::empty(), ___deadline
2453            )?;
2454        Ok(_response.map(|x| x.value))
2455    }
2456
2457    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
2458    pub fn r#set_ip_receive_original_destination_address(
2459        &self,
2460        mut value: bool,
2461        ___deadline: zx::MonotonicInstant,
2462    ) -> Result<
2463        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
2464        fidl::Error,
2465    > {
2466        let _response = self.client.send_query::<
2467            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
2468            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2469        >(
2470            (value,),
2471            0x4722b4ce52f7840,
2472            fidl::encoding::DynamicFlags::empty(),
2473            ___deadline,
2474        )?;
2475        Ok(_response.map(|x| x))
2476    }
2477
2478    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
2479    pub fn r#get_ip_receive_original_destination_address(
2480        &self,
2481        ___deadline: zx::MonotonicInstant,
2482    ) -> Result<
2483        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
2484        fidl::Error,
2485    > {
2486        let _response = self.client.send_query::<
2487            fidl::encoding::EmptyPayload,
2488            fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>,
2489        >(
2490            (),
2491            0x2a0e7dc5d6bfdfe9,
2492            fidl::encoding::DynamicFlags::empty(),
2493            ___deadline,
2494        )?;
2495        Ok(_response.map(|x| x.value))
2496    }
2497
2498    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
2499    pub fn r#add_ipv6_membership(
2500        &self,
2501        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2502        ___deadline: zx::MonotonicInstant,
2503    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
2504    {
2505        let _response = self.client.send_query::<
2506            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
2507            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2508        >(
2509            (membership,),
2510            0x7c94727acb4ea4b3,
2511            fidl::encoding::DynamicFlags::empty(),
2512            ___deadline,
2513        )?;
2514        Ok(_response.map(|x| x))
2515    }
2516
2517    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
2518    pub fn r#drop_ipv6_membership(
2519        &self,
2520        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
2521        ___deadline: zx::MonotonicInstant,
2522    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
2523    {
2524        let _response = self.client.send_query::<
2525            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
2526            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2527        >(
2528            (membership,),
2529            0x42104c70ccaba304,
2530            fidl::encoding::DynamicFlags::empty(),
2531            ___deadline,
2532        )?;
2533        Ok(_response.map(|x| x))
2534    }
2535
2536    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2537    pub fn r#set_ipv6_multicast_interface(
2538        &self,
2539        mut value: u64,
2540        ___deadline: zx::MonotonicInstant,
2541    ) -> Result<
2542        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
2543        fidl::Error,
2544    > {
2545        let _response = self.client.send_query::<
2546            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
2547            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2548        >(
2549            (value,),
2550            0x135f76db3774ab3b,
2551            fidl::encoding::DynamicFlags::empty(),
2552            ___deadline,
2553        )?;
2554        Ok(_response.map(|x| x))
2555    }
2556
2557    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
2558    pub fn r#get_ipv6_multicast_interface(
2559        &self,
2560        ___deadline: zx::MonotonicInstant,
2561    ) -> Result<
2562        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
2563        fidl::Error,
2564    > {
2565        let _response = self
2566            .client
2567            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2568                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
2569                fidl_fuchsia_posix::Errno,
2570            >>(
2571                (), 0x1f26fcdd348f1882, fidl::encoding::DynamicFlags::empty(), ___deadline
2572            )?;
2573        Ok(_response.map(|x| x.value))
2574    }
2575
2576    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2577    pub fn r#set_ipv6_unicast_hops(
2578        &self,
2579        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2580        ___deadline: zx::MonotonicInstant,
2581    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
2582    {
2583        let _response = self.client.send_query::<
2584            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
2585            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2586        >(
2587            (value,),
2588            0x157d51e98f462859,
2589            fidl::encoding::DynamicFlags::empty(),
2590            ___deadline,
2591        )?;
2592        Ok(_response.map(|x| x))
2593    }
2594
2595    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
2596    pub fn r#get_ipv6_unicast_hops(
2597        &self,
2598        ___deadline: zx::MonotonicInstant,
2599    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
2600    {
2601        let _response = self
2602            .client
2603            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2604                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
2605                fidl_fuchsia_posix::Errno,
2606            >>(
2607                (), 0x21f4641cad8bd8d2, fidl::encoding::DynamicFlags::empty(), ___deadline
2608            )?;
2609        Ok(_response.map(|x| x.value))
2610    }
2611
2612    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2613    pub fn r#set_ipv6_receive_hop_limit(
2614        &self,
2615        mut value: bool,
2616        ___deadline: zx::MonotonicInstant,
2617    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult, fidl::Error>
2618    {
2619        let _response = self.client.send_query::<
2620            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
2621            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2622        >(
2623            (value,),
2624            0x5c24808ed2e84a1e,
2625            fidl::encoding::DynamicFlags::empty(),
2626            ___deadline,
2627        )?;
2628        Ok(_response.map(|x| x))
2629    }
2630
2631    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
2632    pub fn r#get_ipv6_receive_hop_limit(
2633        &self,
2634        ___deadline: zx::MonotonicInstant,
2635    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult, fidl::Error>
2636    {
2637        let _response = self
2638            .client
2639            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2640                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
2641                fidl_fuchsia_posix::Errno,
2642            >>(
2643                (), 0x341e06689885b4c0, fidl::encoding::DynamicFlags::empty(), ___deadline
2644            )?;
2645        Ok(_response.map(|x| x.value))
2646    }
2647
2648    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2649    pub fn r#set_ipv6_multicast_hops(
2650        &self,
2651        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2652        ___deadline: zx::MonotonicInstant,
2653    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult, fidl::Error>
2654    {
2655        let _response = self.client.send_query::<
2656            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
2657            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2658        >(
2659            (value,),
2660            0x25b9cd4d181f82c1,
2661            fidl::encoding::DynamicFlags::empty(),
2662            ___deadline,
2663        )?;
2664        Ok(_response.map(|x| x))
2665    }
2666
2667    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
2668    pub fn r#get_ipv6_multicast_hops(
2669        &self,
2670        ___deadline: zx::MonotonicInstant,
2671    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult, fidl::Error>
2672    {
2673        let _response = self
2674            .client
2675            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2676                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
2677                fidl_fuchsia_posix::Errno,
2678            >>(
2679                (), 0x52916948a365012a, fidl::encoding::DynamicFlags::empty(), ___deadline
2680            )?;
2681        Ok(_response.map(|x| x.value))
2682    }
2683
2684    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2685    pub fn r#set_ipv6_multicast_loopback(
2686        &self,
2687        mut value: bool,
2688        ___deadline: zx::MonotonicInstant,
2689    ) -> Result<
2690        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
2691        fidl::Error,
2692    > {
2693        let _response = self.client.send_query::<
2694            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
2695            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2696        >(
2697            (value,),
2698            0x55701c409ff41b40,
2699            fidl::encoding::DynamicFlags::empty(),
2700            ___deadline,
2701        )?;
2702        Ok(_response.map(|x| x))
2703    }
2704
2705    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
2706    pub fn r#get_ipv6_multicast_loopback(
2707        &self,
2708        ___deadline: zx::MonotonicInstant,
2709    ) -> Result<
2710        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
2711        fidl::Error,
2712    > {
2713        let _response = self
2714            .client
2715            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2716                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
2717                fidl_fuchsia_posix::Errno,
2718            >>(
2719                (), 0x4415b701fde319c3, fidl::encoding::DynamicFlags::empty(), ___deadline
2720            )?;
2721        Ok(_response.map(|x| x.value))
2722    }
2723
2724    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
2725    pub fn r#set_ipv6_only(
2726        &self,
2727        mut value: bool,
2728        ___deadline: zx::MonotonicInstant,
2729    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error> {
2730        let _response = self.client.send_query::<
2731            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
2732            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2733        >(
2734            (value,),
2735            0x4873f1364758cbba,
2736            fidl::encoding::DynamicFlags::empty(),
2737            ___deadline,
2738        )?;
2739        Ok(_response.map(|x| x))
2740    }
2741
2742    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
2743    pub fn r#get_ipv6_only(
2744        &self,
2745        ___deadline: zx::MonotonicInstant,
2746    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error> {
2747        let _response = self
2748            .client
2749            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2750                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
2751                fidl_fuchsia_posix::Errno,
2752            >>(
2753                (), 0x4aa3340a1a26b89c, fidl::encoding::DynamicFlags::empty(), ___deadline
2754            )?;
2755        Ok(_response.map(|x| x.value))
2756    }
2757
2758    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2759    pub fn r#set_ipv6_receive_traffic_class(
2760        &self,
2761        mut value: bool,
2762        ___deadline: zx::MonotonicInstant,
2763    ) -> Result<
2764        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
2765        fidl::Error,
2766    > {
2767        let _response = self.client.send_query::<
2768            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
2769            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2770        >(
2771            (value,),
2772            0x58f07c8788d099a0,
2773            fidl::encoding::DynamicFlags::empty(),
2774            ___deadline,
2775        )?;
2776        Ok(_response.map(|x| x))
2777    }
2778
2779    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
2780    pub fn r#get_ipv6_receive_traffic_class(
2781        &self,
2782        ___deadline: zx::MonotonicInstant,
2783    ) -> Result<
2784        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
2785        fidl::Error,
2786    > {
2787        let _response = self
2788            .client
2789            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2790                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
2791                fidl_fuchsia_posix::Errno,
2792            >>(
2793                (), 0x2e334df1da553ffa, fidl::encoding::DynamicFlags::empty(), ___deadline
2794            )?;
2795        Ok(_response.map(|x| x.value))
2796    }
2797
2798    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
2799    pub fn r#set_ipv6_traffic_class(
2800        &self,
2801        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
2802        ___deadline: zx::MonotonicInstant,
2803    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult, fidl::Error>
2804    {
2805        let _response = self.client.send_query::<
2806            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
2807            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2808        >(
2809            (value,),
2810            0x6af077800c5a0b4f,
2811            fidl::encoding::DynamicFlags::empty(),
2812            ___deadline,
2813        )?;
2814        Ok(_response.map(|x| x))
2815    }
2816
2817    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
2818    pub fn r#get_ipv6_traffic_class(
2819        &self,
2820        ___deadline: zx::MonotonicInstant,
2821    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult, fidl::Error>
2822    {
2823        let _response = self
2824            .client
2825            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2826                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
2827                fidl_fuchsia_posix::Errno,
2828            >>(
2829                (), 0x6baf6eed8fc2f04, fidl::encoding::DynamicFlags::empty(), ___deadline
2830            )?;
2831        Ok(_response.map(|x| x.value))
2832    }
2833
2834    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2835    pub fn r#set_ipv6_receive_packet_info(
2836        &self,
2837        mut value: bool,
2838        ___deadline: zx::MonotonicInstant,
2839    ) -> Result<
2840        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
2841        fidl::Error,
2842    > {
2843        let _response = self.client.send_query::<
2844            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
2845            fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
2846        >(
2847            (value,),
2848            0x19259775b1a92768,
2849            fidl::encoding::DynamicFlags::empty(),
2850            ___deadline,
2851        )?;
2852        Ok(_response.map(|x| x))
2853    }
2854
2855    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
2856    pub fn r#get_ipv6_receive_packet_info(
2857        &self,
2858        ___deadline: zx::MonotonicInstant,
2859    ) -> Result<
2860        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
2861        fidl::Error,
2862    > {
2863        let _response = self
2864            .client
2865            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2866                fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
2867                fidl_fuchsia_posix::Errno,
2868            >>(
2869                (), 0x7acd4a2775baec75, fidl::encoding::DynamicFlags::empty(), ___deadline
2870            )?;
2871        Ok(_response.map(|x| x.value))
2872    }
2873
2874    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
2875    pub fn r#get_original_destination(
2876        &self,
2877        ___deadline: zx::MonotonicInstant,
2878    ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult, fidl::Error>
2879    {
2880        let _response = self
2881            .client
2882            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2883                fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
2884                fidl_fuchsia_posix::Errno,
2885            >>(
2886                (), 0x38bf28f0dafdbac0, fidl::encoding::DynamicFlags::empty(), ___deadline
2887            )?;
2888        Ok(_response.map(|x| x.value))
2889    }
2890
2891    pub fn r#describe(
2892        &self,
2893        ___deadline: zx::MonotonicInstant,
2894    ) -> Result<SocketDescribeResponse, fidl::Error> {
2895        let _response =
2896            self.client.send_query::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
2897                (),
2898                0x335706eccf54a135,
2899                fidl::encoding::DynamicFlags::empty(),
2900                ___deadline,
2901            )?;
2902        Ok(_response)
2903    }
2904
2905    /// Receives a message from the socket.
2906    ///
2907    /// + request `want_addr` request message's source address information to
2908    ///   be returned.
2909    /// + request `data_len` the maximum allowed length of the response data
2910    ///   buffer.
2911    /// + request `want_control` request ancillary data to be returned.
2912    /// + request `flags` flags for the receive request.
2913    /// - response `addr` the message's source address information, if
2914    ///   requested.
2915    /// - response `data` the message.
2916    /// - response `control` control messages, if requested.
2917    /// - response `truncated` indicates whether or not the returned message
2918    ///   was truncated.
2919    pub fn r#recv_msg(
2920        &self,
2921        mut want_addr: bool,
2922        mut data_len: u32,
2923        mut want_control: bool,
2924        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
2925        ___deadline: zx::MonotonicInstant,
2926    ) -> Result<SocketRecvMsgResult, fidl::Error> {
2927        let _response = self.client.send_query::<SocketRecvMsgRequest, fidl::encoding::ResultType<
2928            SocketRecvMsgResponse,
2929            fidl_fuchsia_posix::Errno,
2930        >>(
2931            (want_addr, data_len, want_control, flags),
2932            0x1dfb695351d3aa1d,
2933            fidl::encoding::DynamicFlags::empty(),
2934            ___deadline,
2935        )?;
2936        Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
2937    }
2938
2939    /// Sends a message on the socket.
2940    ///
2941    /// + request `addr` the address to send the message to. If unset, will
2942    ///   send to the connected peer.
2943    /// + request `data` the message.
2944    /// + request `control` ancillary data.
2945    /// + request `flags` flags for the send request.
2946    pub fn r#send_msg(
2947        &self,
2948        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
2949        mut data: &[u8],
2950        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
2951        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
2952        ___deadline: zx::MonotonicInstant,
2953    ) -> Result<SocketSendMsgResult, fidl::Error> {
2954        let _response = self.client.send_query::<SocketSendMsgRequest, fidl::encoding::ResultType<
2955            fidl::encoding::EmptyStruct,
2956            fidl_fuchsia_posix::Errno,
2957        >>(
2958            (addr, data, control, flags),
2959            0x2cf1eac9a7fc8958,
2960            fidl::encoding::DynamicFlags::empty(),
2961            ___deadline,
2962        )?;
2963        Ok(_response.map(|x| x))
2964    }
2965
2966    /// Retrieves creation information from the socket.
2967    ///
2968    /// - response `domain` the socket's associated domain.
2969    /// - response `proto` the socket's associated protocol.
2970    pub fn r#get_info(
2971        &self,
2972        ___deadline: zx::MonotonicInstant,
2973    ) -> Result<SocketGetInfoResult, fidl::Error> {
2974        let _response =
2975            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
2976                SocketGetInfoResponse,
2977                fidl_fuchsia_posix::Errno,
2978            >>(
2979                (),
2980                0x39676f75aec339ba,
2981                fidl::encoding::DynamicFlags::empty(),
2982                ___deadline,
2983            )?;
2984        Ok(_response.map(|x| (x.domain, x.proto)))
2985    }
2986
2987    /// Set `SOL_IP` -> `IP_HDRINCL`.
2988    pub fn r#set_ip_header_included(
2989        &self,
2990        mut value: bool,
2991        ___deadline: zx::MonotonicInstant,
2992    ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
2993        let _response =
2994            self.client.send_query::<SocketSetIpHeaderIncludedRequest, fidl::encoding::ResultType<
2995                fidl::encoding::EmptyStruct,
2996                fidl_fuchsia_posix::Errno,
2997            >>(
2998                (value,),
2999                0x5d06a606d95e8f3,
3000                fidl::encoding::DynamicFlags::empty(),
3001                ___deadline,
3002            )?;
3003        Ok(_response.map(|x| x))
3004    }
3005
3006    /// Get `SOL_IP` -> `IP_HDRINCL`.
3007    pub fn r#get_ip_header_included(
3008        &self,
3009        ___deadline: zx::MonotonicInstant,
3010    ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
3011        let _response = self
3012            .client
3013            .send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3014                SocketGetIpHeaderIncludedResponse,
3015                fidl_fuchsia_posix::Errno,
3016            >>(
3017                (), 0x76125ad1f4d175f6, fidl::encoding::DynamicFlags::empty(), ___deadline
3018            )?;
3019        Ok(_response.map(|x| x.value))
3020    }
3021
3022    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
3023    pub fn r#set_icmpv6_filter(
3024        &self,
3025        mut filter: &Icmpv6Filter,
3026        ___deadline: zx::MonotonicInstant,
3027    ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
3028        let _response =
3029            self.client.send_query::<SocketSetIcmpv6FilterRequest, fidl::encoding::ResultType<
3030                fidl::encoding::EmptyStruct,
3031                fidl_fuchsia_posix::Errno,
3032            >>(
3033                (filter,),
3034                0x4ebea92a43ae68a9,
3035                fidl::encoding::DynamicFlags::empty(),
3036                ___deadline,
3037            )?;
3038        Ok(_response.map(|x| x))
3039    }
3040
3041    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
3042    pub fn r#get_icmpv6_filter(
3043        &self,
3044        ___deadline: zx::MonotonicInstant,
3045    ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
3046        let _response =
3047            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3048                SocketGetIcmpv6FilterResponse,
3049                fidl_fuchsia_posix::Errno,
3050            >>(
3051                (),
3052                0x43bd4f3bc0970ace,
3053                fidl::encoding::DynamicFlags::empty(),
3054                ___deadline,
3055            )?;
3056        Ok(_response.map(|x| x.filter))
3057    }
3058
3059    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
3060    pub fn r#set_ipv6_checksum(
3061        &self,
3062        mut config: &Ipv6ChecksumConfiguration,
3063        ___deadline: zx::MonotonicInstant,
3064    ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
3065        let _response =
3066            self.client.send_query::<SocketSetIpv6ChecksumRequest, fidl::encoding::ResultType<
3067                fidl::encoding::EmptyStruct,
3068                fidl_fuchsia_posix::Errno,
3069            >>(
3070                (config,),
3071                0x18b7809577199cb4,
3072                fidl::encoding::DynamicFlags::empty(),
3073                ___deadline,
3074            )?;
3075        Ok(_response.map(|x| x))
3076    }
3077
3078    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
3079    pub fn r#get_ipv6_checksum(
3080        &self,
3081        ___deadline: zx::MonotonicInstant,
3082    ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
3083        let _response =
3084            self.client.send_query::<fidl::encoding::EmptyPayload, fidl::encoding::ResultType<
3085                SocketGetIpv6ChecksumResponse,
3086                fidl_fuchsia_posix::Errno,
3087            >>(
3088                (),
3089                0x1847bf5b2d263dd,
3090                fidl::encoding::DynamicFlags::empty(),
3091                ___deadline,
3092            )?;
3093        Ok(_response.map(|x| x.config))
3094    }
3095}
3096
3097#[cfg(target_os = "fuchsia")]
3098impl From<SocketSynchronousProxy> for zx::Handle {
3099    fn from(value: SocketSynchronousProxy) -> Self {
3100        value.into_channel().into()
3101    }
3102}
3103
3104#[cfg(target_os = "fuchsia")]
3105impl From<fidl::Channel> for SocketSynchronousProxy {
3106    fn from(value: fidl::Channel) -> Self {
3107        Self::new(value)
3108    }
3109}
3110
3111#[cfg(target_os = "fuchsia")]
3112impl fidl::endpoints::FromClient for SocketSynchronousProxy {
3113    type Protocol = SocketMarker;
3114
3115    fn from_client(value: fidl::endpoints::ClientEnd<SocketMarker>) -> Self {
3116        Self::new(value.into_channel())
3117    }
3118}
3119
3120#[derive(Debug, Clone)]
3121pub struct SocketProxy {
3122    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
3123}
3124
3125impl fidl::endpoints::Proxy for SocketProxy {
3126    type Protocol = SocketMarker;
3127
3128    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
3129        Self::new(inner)
3130    }
3131
3132    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
3133        self.client.into_channel().map_err(|client| Self { client })
3134    }
3135
3136    fn as_channel(&self) -> &::fidl::AsyncChannel {
3137        self.client.as_channel()
3138    }
3139}
3140
3141impl SocketProxy {
3142    /// Create a new Proxy for fuchsia.posix.socket.raw/Socket.
3143    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
3144        let protocol_name = <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
3145        Self { client: fidl::client::Client::new(channel, protocol_name) }
3146    }
3147
3148    /// Get a Stream of events from the remote end of the protocol.
3149    ///
3150    /// # Panics
3151    ///
3152    /// Panics if the event stream was already taken.
3153    pub fn take_event_stream(&self) -> SocketEventStream {
3154        SocketEventStream { event_receiver: self.client.take_event_receiver() }
3155    }
3156
3157    pub fn r#clone(
3158        &self,
3159        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
3160    ) -> Result<(), fidl::Error> {
3161        SocketProxyInterface::r#clone(self, request)
3162    }
3163
3164    /// Terminates the connection.
3165    ///
3166    /// After calling `Close`, the client must not send any other requests.
3167    ///
3168    /// Servers, after sending the status response, should close the connection
3169    /// regardless of status and without sending an epitaph.
3170    ///
3171    /// Closing the client end of the channel should be semantically equivalent
3172    /// to calling `Close` without knowing when the close has completed or its
3173    /// status.
3174    pub fn r#close(
3175        &self,
3176    ) -> fidl::client::QueryResponseFut<
3177        fidl_fuchsia_unknown::CloseableCloseResult,
3178        fidl::encoding::DefaultFuchsiaResourceDialect,
3179    > {
3180        SocketProxyInterface::r#close(self)
3181    }
3182
3183    pub fn r#query(
3184        &self,
3185    ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
3186    {
3187        SocketProxyInterface::r#query(self)
3188    }
3189
3190    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
3191    pub fn r#set_reuse_address(
3192        &self,
3193        mut value: bool,
3194    ) -> fidl::client::QueryResponseFut<
3195        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
3196        fidl::encoding::DefaultFuchsiaResourceDialect,
3197    > {
3198        SocketProxyInterface::r#set_reuse_address(self, value)
3199    }
3200
3201    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
3202    pub fn r#get_reuse_address(
3203        &self,
3204    ) -> fidl::client::QueryResponseFut<
3205        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
3206        fidl::encoding::DefaultFuchsiaResourceDialect,
3207    > {
3208        SocketProxyInterface::r#get_reuse_address(self)
3209    }
3210
3211    /// Get `SOL_SOCKET` -> `SO_ERROR`.
3212    /// Returns the last error if there is an error set on the socket.
3213    pub fn r#get_error(
3214        &self,
3215    ) -> fidl::client::QueryResponseFut<
3216        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
3217        fidl::encoding::DefaultFuchsiaResourceDialect,
3218    > {
3219        SocketProxyInterface::r#get_error(self)
3220    }
3221
3222    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
3223    pub fn r#set_broadcast(
3224        &self,
3225        mut value: bool,
3226    ) -> fidl::client::QueryResponseFut<
3227        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
3228        fidl::encoding::DefaultFuchsiaResourceDialect,
3229    > {
3230        SocketProxyInterface::r#set_broadcast(self, value)
3231    }
3232
3233    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
3234    pub fn r#get_broadcast(
3235        &self,
3236    ) -> fidl::client::QueryResponseFut<
3237        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
3238        fidl::encoding::DefaultFuchsiaResourceDialect,
3239    > {
3240        SocketProxyInterface::r#get_broadcast(self)
3241    }
3242
3243    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
3244    pub fn r#set_send_buffer(
3245        &self,
3246        mut value_bytes: u64,
3247    ) -> fidl::client::QueryResponseFut<
3248        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
3249        fidl::encoding::DefaultFuchsiaResourceDialect,
3250    > {
3251        SocketProxyInterface::r#set_send_buffer(self, value_bytes)
3252    }
3253
3254    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
3255    pub fn r#get_send_buffer(
3256        &self,
3257    ) -> fidl::client::QueryResponseFut<
3258        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
3259        fidl::encoding::DefaultFuchsiaResourceDialect,
3260    > {
3261        SocketProxyInterface::r#get_send_buffer(self)
3262    }
3263
3264    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
3265    pub fn r#set_receive_buffer(
3266        &self,
3267        mut value_bytes: u64,
3268    ) -> fidl::client::QueryResponseFut<
3269        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
3270        fidl::encoding::DefaultFuchsiaResourceDialect,
3271    > {
3272        SocketProxyInterface::r#set_receive_buffer(self, value_bytes)
3273    }
3274
3275    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
3276    pub fn r#get_receive_buffer(
3277        &self,
3278    ) -> fidl::client::QueryResponseFut<
3279        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
3280        fidl::encoding::DefaultFuchsiaResourceDialect,
3281    > {
3282        SocketProxyInterface::r#get_receive_buffer(self)
3283    }
3284
3285    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
3286    pub fn r#set_keep_alive(
3287        &self,
3288        mut value: bool,
3289    ) -> fidl::client::QueryResponseFut<
3290        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
3291        fidl::encoding::DefaultFuchsiaResourceDialect,
3292    > {
3293        SocketProxyInterface::r#set_keep_alive(self, value)
3294    }
3295
3296    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
3297    pub fn r#get_keep_alive(
3298        &self,
3299    ) -> fidl::client::QueryResponseFut<
3300        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
3301        fidl::encoding::DefaultFuchsiaResourceDialect,
3302    > {
3303        SocketProxyInterface::r#get_keep_alive(self)
3304    }
3305
3306    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
3307    pub fn r#set_out_of_band_inline(
3308        &self,
3309        mut value: bool,
3310    ) -> fidl::client::QueryResponseFut<
3311        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
3312        fidl::encoding::DefaultFuchsiaResourceDialect,
3313    > {
3314        SocketProxyInterface::r#set_out_of_band_inline(self, value)
3315    }
3316
3317    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
3318    pub fn r#get_out_of_band_inline(
3319        &self,
3320    ) -> fidl::client::QueryResponseFut<
3321        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
3322        fidl::encoding::DefaultFuchsiaResourceDialect,
3323    > {
3324        SocketProxyInterface::r#get_out_of_band_inline(self)
3325    }
3326
3327    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
3328    pub fn r#set_no_check(
3329        &self,
3330        mut value: bool,
3331    ) -> fidl::client::QueryResponseFut<
3332        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
3333        fidl::encoding::DefaultFuchsiaResourceDialect,
3334    > {
3335        SocketProxyInterface::r#set_no_check(self, value)
3336    }
3337
3338    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
3339    pub fn r#get_no_check(
3340        &self,
3341    ) -> fidl::client::QueryResponseFut<
3342        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
3343        fidl::encoding::DefaultFuchsiaResourceDialect,
3344    > {
3345        SocketProxyInterface::r#get_no_check(self)
3346    }
3347
3348    /// Set `SOL_SOCKET` -> `SO_LINGER`.
3349    pub fn r#set_linger(
3350        &self,
3351        mut linger: bool,
3352        mut length_secs: u32,
3353    ) -> fidl::client::QueryResponseFut<
3354        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
3355        fidl::encoding::DefaultFuchsiaResourceDialect,
3356    > {
3357        SocketProxyInterface::r#set_linger(self, linger, length_secs)
3358    }
3359
3360    /// Get `SOL_SOCKET` -> `SO_LINGER`.
3361    pub fn r#get_linger(
3362        &self,
3363    ) -> fidl::client::QueryResponseFut<
3364        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
3365        fidl::encoding::DefaultFuchsiaResourceDialect,
3366    > {
3367        SocketProxyInterface::r#get_linger(self)
3368    }
3369
3370    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
3371    pub fn r#set_reuse_port(
3372        &self,
3373        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
3374    ) -> fidl::client::QueryResponseFut<
3375        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
3376        fidl::encoding::DefaultFuchsiaResourceDialect,
3377    > {
3378        SocketProxyInterface::r#set_reuse_port(self, value)
3379    }
3380
3381    pub fn r#set_reuse_port_deprecated(
3382        &self,
3383        mut value: bool,
3384    ) -> fidl::client::QueryResponseFut<
3385        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
3386        fidl::encoding::DefaultFuchsiaResourceDialect,
3387    > {
3388        SocketProxyInterface::r#set_reuse_port_deprecated(self, value)
3389    }
3390
3391    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
3392    pub fn r#get_reuse_port(
3393        &self,
3394    ) -> fidl::client::QueryResponseFut<
3395        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
3396        fidl::encoding::DefaultFuchsiaResourceDialect,
3397    > {
3398        SocketProxyInterface::r#get_reuse_port(self)
3399    }
3400
3401    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
3402    pub fn r#get_accept_conn(
3403        &self,
3404    ) -> fidl::client::QueryResponseFut<
3405        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
3406        fidl::encoding::DefaultFuchsiaResourceDialect,
3407    > {
3408        SocketProxyInterface::r#get_accept_conn(self)
3409    }
3410
3411    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3412    pub fn r#set_bind_to_device(
3413        &self,
3414        mut value: &str,
3415    ) -> fidl::client::QueryResponseFut<
3416        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
3417        fidl::encoding::DefaultFuchsiaResourceDialect,
3418    > {
3419        SocketProxyInterface::r#set_bind_to_device(self, value)
3420    }
3421
3422    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
3423    pub fn r#get_bind_to_device(
3424        &self,
3425    ) -> fidl::client::QueryResponseFut<
3426        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
3427        fidl::encoding::DefaultFuchsiaResourceDialect,
3428    > {
3429        SocketProxyInterface::r#get_bind_to_device(self)
3430    }
3431
3432    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3433    /// If `value` is 0, this clears the bound interface.
3434    pub fn r#set_bind_to_interface_index(
3435        &self,
3436        mut value: u64,
3437    ) -> fidl::client::QueryResponseFut<
3438        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
3439        fidl::encoding::DefaultFuchsiaResourceDialect,
3440    > {
3441        SocketProxyInterface::r#set_bind_to_interface_index(self, value)
3442    }
3443
3444    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
3445    pub fn r#get_bind_to_interface_index(
3446        &self,
3447    ) -> fidl::client::QueryResponseFut<
3448        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
3449        fidl::encoding::DefaultFuchsiaResourceDialect,
3450    > {
3451        SocketProxyInterface::r#get_bind_to_interface_index(self)
3452    }
3453
3454    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3455    pub fn r#set_timestamp(
3456        &self,
3457        mut value: fidl_fuchsia_posix_socket::TimestampOption,
3458    ) -> fidl::client::QueryResponseFut<
3459        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
3460        fidl::encoding::DefaultFuchsiaResourceDialect,
3461    > {
3462        SocketProxyInterface::r#set_timestamp(self, value)
3463    }
3464
3465    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
3466    pub fn r#get_timestamp(
3467        &self,
3468    ) -> fidl::client::QueryResponseFut<
3469        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
3470        fidl::encoding::DefaultFuchsiaResourceDialect,
3471    > {
3472        SocketProxyInterface::r#get_timestamp(self)
3473    }
3474
3475    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3476    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3477    /// mark can be set independently in each domain.
3478    pub fn r#set_mark(
3479        &self,
3480        mut domain: fidl_fuchsia_net::MarkDomain,
3481        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
3482    ) -> fidl::client::QueryResponseFut<
3483        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
3484        fidl::encoding::DefaultFuchsiaResourceDialect,
3485    > {
3486        SocketProxyInterface::r#set_mark(self, domain, mark)
3487    }
3488
3489    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
3490    /// unlike the standard SO_MARK, this API has multiple mark domains and each
3491    /// mark can be retrieved independently in each domain.
3492    pub fn r#get_mark(
3493        &self,
3494        mut domain: fidl_fuchsia_net::MarkDomain,
3495    ) -> fidl::client::QueryResponseFut<
3496        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
3497        fidl::encoding::DefaultFuchsiaResourceDialect,
3498    > {
3499        SocketProxyInterface::r#get_mark(self, domain)
3500    }
3501
3502    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
3503    pub fn r#get_cookie(
3504        &self,
3505    ) -> fidl::client::QueryResponseFut<
3506        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
3507        fidl::encoding::DefaultFuchsiaResourceDialect,
3508    > {
3509        SocketProxyInterface::r#get_cookie(self)
3510    }
3511
3512    /// Sets the local address used for the socket.
3513    pub fn r#bind(
3514        &self,
3515        mut addr: &fidl_fuchsia_net::SocketAddress,
3516    ) -> fidl::client::QueryResponseFut<
3517        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
3518        fidl::encoding::DefaultFuchsiaResourceDialect,
3519    > {
3520        SocketProxyInterface::r#bind(self, addr)
3521    }
3522
3523    /// Initiates a connection to a remote address.
3524    pub fn r#connect(
3525        &self,
3526        mut addr: &fidl_fuchsia_net::SocketAddress,
3527    ) -> fidl::client::QueryResponseFut<
3528        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
3529        fidl::encoding::DefaultFuchsiaResourceDialect,
3530    > {
3531        SocketProxyInterface::r#connect(self, addr)
3532    }
3533
3534    /// Clears connection information from this socket.
3535    pub fn r#disconnect(
3536        &self,
3537    ) -> fidl::client::QueryResponseFut<
3538        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
3539        fidl::encoding::DefaultFuchsiaResourceDialect,
3540    > {
3541        SocketProxyInterface::r#disconnect(self)
3542    }
3543
3544    /// Retrieves the local socket address.
3545    pub fn r#get_sock_name(
3546        &self,
3547    ) -> fidl::client::QueryResponseFut<
3548        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
3549        fidl::encoding::DefaultFuchsiaResourceDialect,
3550    > {
3551        SocketProxyInterface::r#get_sock_name(self)
3552    }
3553
3554    /// Retrieves the remote socket address.
3555    pub fn r#get_peer_name(
3556        &self,
3557    ) -> fidl::client::QueryResponseFut<
3558        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
3559        fidl::encoding::DefaultFuchsiaResourceDialect,
3560    > {
3561        SocketProxyInterface::r#get_peer_name(self)
3562    }
3563
3564    /// Shuts down part of the socket.
3565    pub fn r#shutdown(
3566        &self,
3567        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
3568    ) -> fidl::client::QueryResponseFut<
3569        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
3570        fidl::encoding::DefaultFuchsiaResourceDialect,
3571    > {
3572        SocketProxyInterface::r#shutdown(self, mode)
3573    }
3574
3575    /// Set `SOL_IP` -> `IP_TOS`.
3576    pub fn r#set_ip_type_of_service(
3577        &self,
3578        mut value: u8,
3579    ) -> fidl::client::QueryResponseFut<
3580        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
3581        fidl::encoding::DefaultFuchsiaResourceDialect,
3582    > {
3583        SocketProxyInterface::r#set_ip_type_of_service(self, value)
3584    }
3585
3586    /// Get `SOL_IP` -> `IP_TOS`.
3587    pub fn r#get_ip_type_of_service(
3588        &self,
3589    ) -> fidl::client::QueryResponseFut<
3590        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
3591        fidl::encoding::DefaultFuchsiaResourceDialect,
3592    > {
3593        SocketProxyInterface::r#get_ip_type_of_service(self)
3594    }
3595
3596    /// Set `SOL_IP` -> `IP_TTL`.
3597    pub fn r#set_ip_ttl(
3598        &self,
3599        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3600    ) -> fidl::client::QueryResponseFut<
3601        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
3602        fidl::encoding::DefaultFuchsiaResourceDialect,
3603    > {
3604        SocketProxyInterface::r#set_ip_ttl(self, value)
3605    }
3606
3607    /// Get `SOL_IP` -> `IP_TTL`.
3608    pub fn r#get_ip_ttl(
3609        &self,
3610    ) -> fidl::client::QueryResponseFut<
3611        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
3612        fidl::encoding::DefaultFuchsiaResourceDialect,
3613    > {
3614        SocketProxyInterface::r#get_ip_ttl(self)
3615    }
3616
3617    /// Set `SOL_IP` -> `IP_PKTINFO`.
3618    pub fn r#set_ip_packet_info(
3619        &self,
3620        mut value: bool,
3621    ) -> fidl::client::QueryResponseFut<
3622        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
3623        fidl::encoding::DefaultFuchsiaResourceDialect,
3624    > {
3625        SocketProxyInterface::r#set_ip_packet_info(self, value)
3626    }
3627
3628    /// Get `SOL_IP` -> `IP_PKTINFO`.
3629    pub fn r#get_ip_packet_info(
3630        &self,
3631    ) -> fidl::client::QueryResponseFut<
3632        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
3633        fidl::encoding::DefaultFuchsiaResourceDialect,
3634    > {
3635        SocketProxyInterface::r#get_ip_packet_info(self)
3636    }
3637
3638    /// Set `SOL_IP` -> `IP_RECVTOS`.
3639    pub fn r#set_ip_receive_type_of_service(
3640        &self,
3641        mut value: bool,
3642    ) -> fidl::client::QueryResponseFut<
3643        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
3644        fidl::encoding::DefaultFuchsiaResourceDialect,
3645    > {
3646        SocketProxyInterface::r#set_ip_receive_type_of_service(self, value)
3647    }
3648
3649    /// Get `SOL_IP` -> `IP_RECVTOS`.
3650    pub fn r#get_ip_receive_type_of_service(
3651        &self,
3652    ) -> fidl::client::QueryResponseFut<
3653        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
3654        fidl::encoding::DefaultFuchsiaResourceDialect,
3655    > {
3656        SocketProxyInterface::r#get_ip_receive_type_of_service(self)
3657    }
3658
3659    /// Set `SOL_IP` -> `IP_RECVTTL`.
3660    pub fn r#set_ip_receive_ttl(
3661        &self,
3662        mut value: bool,
3663    ) -> fidl::client::QueryResponseFut<
3664        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
3665        fidl::encoding::DefaultFuchsiaResourceDialect,
3666    > {
3667        SocketProxyInterface::r#set_ip_receive_ttl(self, value)
3668    }
3669
3670    /// Get `SOL_IP` -> `IP_RECVTTL`.
3671    pub fn r#get_ip_receive_ttl(
3672        &self,
3673    ) -> fidl::client::QueryResponseFut<
3674        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
3675        fidl::encoding::DefaultFuchsiaResourceDialect,
3676    > {
3677        SocketProxyInterface::r#get_ip_receive_ttl(self)
3678    }
3679
3680    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
3681    pub fn r#set_ip_multicast_interface(
3682        &self,
3683        mut iface: u64,
3684        mut address: &fidl_fuchsia_net::Ipv4Address,
3685    ) -> fidl::client::QueryResponseFut<
3686        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
3687        fidl::encoding::DefaultFuchsiaResourceDialect,
3688    > {
3689        SocketProxyInterface::r#set_ip_multicast_interface(self, iface, address)
3690    }
3691
3692    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
3693    pub fn r#get_ip_multicast_interface(
3694        &self,
3695    ) -> fidl::client::QueryResponseFut<
3696        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
3697        fidl::encoding::DefaultFuchsiaResourceDialect,
3698    > {
3699        SocketProxyInterface::r#get_ip_multicast_interface(self)
3700    }
3701
3702    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
3703    pub fn r#set_ip_multicast_ttl(
3704        &self,
3705        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3706    ) -> fidl::client::QueryResponseFut<
3707        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
3708        fidl::encoding::DefaultFuchsiaResourceDialect,
3709    > {
3710        SocketProxyInterface::r#set_ip_multicast_ttl(self, value)
3711    }
3712
3713    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
3714    pub fn r#get_ip_multicast_ttl(
3715        &self,
3716    ) -> fidl::client::QueryResponseFut<
3717        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
3718        fidl::encoding::DefaultFuchsiaResourceDialect,
3719    > {
3720        SocketProxyInterface::r#get_ip_multicast_ttl(self)
3721    }
3722
3723    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
3724    pub fn r#set_ip_multicast_loopback(
3725        &self,
3726        mut value: bool,
3727    ) -> fidl::client::QueryResponseFut<
3728        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
3729        fidl::encoding::DefaultFuchsiaResourceDialect,
3730    > {
3731        SocketProxyInterface::r#set_ip_multicast_loopback(self, value)
3732    }
3733
3734    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
3735    pub fn r#get_ip_multicast_loopback(
3736        &self,
3737    ) -> fidl::client::QueryResponseFut<
3738        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
3739        fidl::encoding::DefaultFuchsiaResourceDialect,
3740    > {
3741        SocketProxyInterface::r#get_ip_multicast_loopback(self)
3742    }
3743
3744    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
3745    pub fn r#add_ip_membership(
3746        &self,
3747        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3748    ) -> fidl::client::QueryResponseFut<
3749        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
3750        fidl::encoding::DefaultFuchsiaResourceDialect,
3751    > {
3752        SocketProxyInterface::r#add_ip_membership(self, membership)
3753    }
3754
3755    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
3756    pub fn r#drop_ip_membership(
3757        &self,
3758        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
3759    ) -> fidl::client::QueryResponseFut<
3760        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
3761        fidl::encoding::DefaultFuchsiaResourceDialect,
3762    > {
3763        SocketProxyInterface::r#drop_ip_membership(self, membership)
3764    }
3765
3766    /// Set `SOL_IP` -> `IP_TRANSPARENT`
3767    pub fn r#set_ip_transparent(
3768        &self,
3769        mut value: bool,
3770    ) -> fidl::client::QueryResponseFut<
3771        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
3772        fidl::encoding::DefaultFuchsiaResourceDialect,
3773    > {
3774        SocketProxyInterface::r#set_ip_transparent(self, value)
3775    }
3776
3777    /// Get `SOL_IP` -> `IP_TRANSPARENT`
3778    pub fn r#get_ip_transparent(
3779        &self,
3780    ) -> fidl::client::QueryResponseFut<
3781        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
3782        fidl::encoding::DefaultFuchsiaResourceDialect,
3783    > {
3784        SocketProxyInterface::r#get_ip_transparent(self)
3785    }
3786
3787    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
3788    pub fn r#set_ip_receive_original_destination_address(
3789        &self,
3790        mut value: bool,
3791    ) -> fidl::client::QueryResponseFut<
3792        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
3793        fidl::encoding::DefaultFuchsiaResourceDialect,
3794    > {
3795        SocketProxyInterface::r#set_ip_receive_original_destination_address(self, value)
3796    }
3797
3798    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
3799    pub fn r#get_ip_receive_original_destination_address(
3800        &self,
3801    ) -> fidl::client::QueryResponseFut<
3802        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
3803        fidl::encoding::DefaultFuchsiaResourceDialect,
3804    > {
3805        SocketProxyInterface::r#get_ip_receive_original_destination_address(self)
3806    }
3807
3808    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
3809    pub fn r#add_ipv6_membership(
3810        &self,
3811        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3812    ) -> fidl::client::QueryResponseFut<
3813        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
3814        fidl::encoding::DefaultFuchsiaResourceDialect,
3815    > {
3816        SocketProxyInterface::r#add_ipv6_membership(self, membership)
3817    }
3818
3819    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
3820    pub fn r#drop_ipv6_membership(
3821        &self,
3822        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
3823    ) -> fidl::client::QueryResponseFut<
3824        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
3825        fidl::encoding::DefaultFuchsiaResourceDialect,
3826    > {
3827        SocketProxyInterface::r#drop_ipv6_membership(self, membership)
3828    }
3829
3830    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3831    pub fn r#set_ipv6_multicast_interface(
3832        &self,
3833        mut value: u64,
3834    ) -> fidl::client::QueryResponseFut<
3835        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
3836        fidl::encoding::DefaultFuchsiaResourceDialect,
3837    > {
3838        SocketProxyInterface::r#set_ipv6_multicast_interface(self, value)
3839    }
3840
3841    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
3842    pub fn r#get_ipv6_multicast_interface(
3843        &self,
3844    ) -> fidl::client::QueryResponseFut<
3845        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
3846        fidl::encoding::DefaultFuchsiaResourceDialect,
3847    > {
3848        SocketProxyInterface::r#get_ipv6_multicast_interface(self)
3849    }
3850
3851    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3852    pub fn r#set_ipv6_unicast_hops(
3853        &self,
3854        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3855    ) -> fidl::client::QueryResponseFut<
3856        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
3857        fidl::encoding::DefaultFuchsiaResourceDialect,
3858    > {
3859        SocketProxyInterface::r#set_ipv6_unicast_hops(self, value)
3860    }
3861
3862    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
3863    pub fn r#get_ipv6_unicast_hops(
3864        &self,
3865    ) -> fidl::client::QueryResponseFut<
3866        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
3867        fidl::encoding::DefaultFuchsiaResourceDialect,
3868    > {
3869        SocketProxyInterface::r#get_ipv6_unicast_hops(self)
3870    }
3871
3872    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3873    pub fn r#set_ipv6_receive_hop_limit(
3874        &self,
3875        mut value: bool,
3876    ) -> fidl::client::QueryResponseFut<
3877        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
3878        fidl::encoding::DefaultFuchsiaResourceDialect,
3879    > {
3880        SocketProxyInterface::r#set_ipv6_receive_hop_limit(self, value)
3881    }
3882
3883    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
3884    pub fn r#get_ipv6_receive_hop_limit(
3885        &self,
3886    ) -> fidl::client::QueryResponseFut<
3887        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
3888        fidl::encoding::DefaultFuchsiaResourceDialect,
3889    > {
3890        SocketProxyInterface::r#get_ipv6_receive_hop_limit(self)
3891    }
3892
3893    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3894    pub fn r#set_ipv6_multicast_hops(
3895        &self,
3896        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3897    ) -> fidl::client::QueryResponseFut<
3898        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
3899        fidl::encoding::DefaultFuchsiaResourceDialect,
3900    > {
3901        SocketProxyInterface::r#set_ipv6_multicast_hops(self, value)
3902    }
3903
3904    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
3905    pub fn r#get_ipv6_multicast_hops(
3906        &self,
3907    ) -> fidl::client::QueryResponseFut<
3908        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
3909        fidl::encoding::DefaultFuchsiaResourceDialect,
3910    > {
3911        SocketProxyInterface::r#get_ipv6_multicast_hops(self)
3912    }
3913
3914    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3915    pub fn r#set_ipv6_multicast_loopback(
3916        &self,
3917        mut value: bool,
3918    ) -> fidl::client::QueryResponseFut<
3919        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
3920        fidl::encoding::DefaultFuchsiaResourceDialect,
3921    > {
3922        SocketProxyInterface::r#set_ipv6_multicast_loopback(self, value)
3923    }
3924
3925    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
3926    pub fn r#get_ipv6_multicast_loopback(
3927        &self,
3928    ) -> fidl::client::QueryResponseFut<
3929        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
3930        fidl::encoding::DefaultFuchsiaResourceDialect,
3931    > {
3932        SocketProxyInterface::r#get_ipv6_multicast_loopback(self)
3933    }
3934
3935    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
3936    pub fn r#set_ipv6_only(
3937        &self,
3938        mut value: bool,
3939    ) -> fidl::client::QueryResponseFut<
3940        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
3941        fidl::encoding::DefaultFuchsiaResourceDialect,
3942    > {
3943        SocketProxyInterface::r#set_ipv6_only(self, value)
3944    }
3945
3946    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
3947    pub fn r#get_ipv6_only(
3948        &self,
3949    ) -> fidl::client::QueryResponseFut<
3950        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
3951        fidl::encoding::DefaultFuchsiaResourceDialect,
3952    > {
3953        SocketProxyInterface::r#get_ipv6_only(self)
3954    }
3955
3956    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
3957    pub fn r#set_ipv6_receive_traffic_class(
3958        &self,
3959        mut value: bool,
3960    ) -> fidl::client::QueryResponseFut<
3961        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
3962        fidl::encoding::DefaultFuchsiaResourceDialect,
3963    > {
3964        SocketProxyInterface::r#set_ipv6_receive_traffic_class(self, value)
3965    }
3966
3967    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
3968    pub fn r#get_ipv6_receive_traffic_class(
3969        &self,
3970    ) -> fidl::client::QueryResponseFut<
3971        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
3972        fidl::encoding::DefaultFuchsiaResourceDialect,
3973    > {
3974        SocketProxyInterface::r#get_ipv6_receive_traffic_class(self)
3975    }
3976
3977    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
3978    pub fn r#set_ipv6_traffic_class(
3979        &self,
3980        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
3981    ) -> fidl::client::QueryResponseFut<
3982        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
3983        fidl::encoding::DefaultFuchsiaResourceDialect,
3984    > {
3985        SocketProxyInterface::r#set_ipv6_traffic_class(self, value)
3986    }
3987
3988    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
3989    pub fn r#get_ipv6_traffic_class(
3990        &self,
3991    ) -> fidl::client::QueryResponseFut<
3992        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
3993        fidl::encoding::DefaultFuchsiaResourceDialect,
3994    > {
3995        SocketProxyInterface::r#get_ipv6_traffic_class(self)
3996    }
3997
3998    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
3999    pub fn r#set_ipv6_receive_packet_info(
4000        &self,
4001        mut value: bool,
4002    ) -> fidl::client::QueryResponseFut<
4003        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
4004        fidl::encoding::DefaultFuchsiaResourceDialect,
4005    > {
4006        SocketProxyInterface::r#set_ipv6_receive_packet_info(self, value)
4007    }
4008
4009    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
4010    pub fn r#get_ipv6_receive_packet_info(
4011        &self,
4012    ) -> fidl::client::QueryResponseFut<
4013        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
4014        fidl::encoding::DefaultFuchsiaResourceDialect,
4015    > {
4016        SocketProxyInterface::r#get_ipv6_receive_packet_info(self)
4017    }
4018
4019    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
4020    pub fn r#get_original_destination(
4021        &self,
4022    ) -> fidl::client::QueryResponseFut<
4023        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
4024        fidl::encoding::DefaultFuchsiaResourceDialect,
4025    > {
4026        SocketProxyInterface::r#get_original_destination(self)
4027    }
4028
4029    pub fn r#describe(
4030        &self,
4031    ) -> fidl::client::QueryResponseFut<
4032        SocketDescribeResponse,
4033        fidl::encoding::DefaultFuchsiaResourceDialect,
4034    > {
4035        SocketProxyInterface::r#describe(self)
4036    }
4037
4038    /// Receives a message from the socket.
4039    ///
4040    /// + request `want_addr` request message's source address information to
4041    ///   be returned.
4042    /// + request `data_len` the maximum allowed length of the response data
4043    ///   buffer.
4044    /// + request `want_control` request ancillary data to be returned.
4045    /// + request `flags` flags for the receive request.
4046    /// - response `addr` the message's source address information, if
4047    ///   requested.
4048    /// - response `data` the message.
4049    /// - response `control` control messages, if requested.
4050    /// - response `truncated` indicates whether or not the returned message
4051    ///   was truncated.
4052    pub fn r#recv_msg(
4053        &self,
4054        mut want_addr: bool,
4055        mut data_len: u32,
4056        mut want_control: bool,
4057        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
4058    ) -> fidl::client::QueryResponseFut<
4059        SocketRecvMsgResult,
4060        fidl::encoding::DefaultFuchsiaResourceDialect,
4061    > {
4062        SocketProxyInterface::r#recv_msg(self, want_addr, data_len, want_control, flags)
4063    }
4064
4065    /// Sends a message on the socket.
4066    ///
4067    /// + request `addr` the address to send the message to. If unset, will
4068    ///   send to the connected peer.
4069    /// + request `data` the message.
4070    /// + request `control` ancillary data.
4071    /// + request `flags` flags for the send request.
4072    pub fn r#send_msg(
4073        &self,
4074        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
4075        mut data: &[u8],
4076        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
4077        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
4078    ) -> fidl::client::QueryResponseFut<
4079        SocketSendMsgResult,
4080        fidl::encoding::DefaultFuchsiaResourceDialect,
4081    > {
4082        SocketProxyInterface::r#send_msg(self, addr, data, control, flags)
4083    }
4084
4085    /// Retrieves creation information from the socket.
4086    ///
4087    /// - response `domain` the socket's associated domain.
4088    /// - response `proto` the socket's associated protocol.
4089    pub fn r#get_info(
4090        &self,
4091    ) -> fidl::client::QueryResponseFut<
4092        SocketGetInfoResult,
4093        fidl::encoding::DefaultFuchsiaResourceDialect,
4094    > {
4095        SocketProxyInterface::r#get_info(self)
4096    }
4097
4098    /// Set `SOL_IP` -> `IP_HDRINCL`.
4099    pub fn r#set_ip_header_included(
4100        &self,
4101        mut value: bool,
4102    ) -> fidl::client::QueryResponseFut<
4103        SocketSetIpHeaderIncludedResult,
4104        fidl::encoding::DefaultFuchsiaResourceDialect,
4105    > {
4106        SocketProxyInterface::r#set_ip_header_included(self, value)
4107    }
4108
4109    /// Get `SOL_IP` -> `IP_HDRINCL`.
4110    pub fn r#get_ip_header_included(
4111        &self,
4112    ) -> fidl::client::QueryResponseFut<
4113        SocketGetIpHeaderIncludedResult,
4114        fidl::encoding::DefaultFuchsiaResourceDialect,
4115    > {
4116        SocketProxyInterface::r#get_ip_header_included(self)
4117    }
4118
4119    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
4120    pub fn r#set_icmpv6_filter(
4121        &self,
4122        mut filter: &Icmpv6Filter,
4123    ) -> fidl::client::QueryResponseFut<
4124        SocketSetIcmpv6FilterResult,
4125        fidl::encoding::DefaultFuchsiaResourceDialect,
4126    > {
4127        SocketProxyInterface::r#set_icmpv6_filter(self, filter)
4128    }
4129
4130    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
4131    pub fn r#get_icmpv6_filter(
4132        &self,
4133    ) -> fidl::client::QueryResponseFut<
4134        SocketGetIcmpv6FilterResult,
4135        fidl::encoding::DefaultFuchsiaResourceDialect,
4136    > {
4137        SocketProxyInterface::r#get_icmpv6_filter(self)
4138    }
4139
4140    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
4141    pub fn r#set_ipv6_checksum(
4142        &self,
4143        mut config: &Ipv6ChecksumConfiguration,
4144    ) -> fidl::client::QueryResponseFut<
4145        SocketSetIpv6ChecksumResult,
4146        fidl::encoding::DefaultFuchsiaResourceDialect,
4147    > {
4148        SocketProxyInterface::r#set_ipv6_checksum(self, config)
4149    }
4150
4151    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
4152    pub fn r#get_ipv6_checksum(
4153        &self,
4154    ) -> fidl::client::QueryResponseFut<
4155        SocketGetIpv6ChecksumResult,
4156        fidl::encoding::DefaultFuchsiaResourceDialect,
4157    > {
4158        SocketProxyInterface::r#get_ipv6_checksum(self)
4159    }
4160}
4161
4162impl SocketProxyInterface for SocketProxy {
4163    fn r#clone(
4164        &self,
4165        mut request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
4166    ) -> Result<(), fidl::Error> {
4167        self.client.send::<fidl_fuchsia_unknown::CloneableCloneRequest>(
4168            (request,),
4169            0x20d8a7aba2168a79,
4170            fidl::encoding::DynamicFlags::empty(),
4171        )
4172    }
4173
4174    type CloseResponseFut = fidl::client::QueryResponseFut<
4175        fidl_fuchsia_unknown::CloseableCloseResult,
4176        fidl::encoding::DefaultFuchsiaResourceDialect,
4177    >;
4178    fn r#close(&self) -> Self::CloseResponseFut {
4179        fn _decode(
4180            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4181        ) -> Result<fidl_fuchsia_unknown::CloseableCloseResult, fidl::Error> {
4182            let _response = fidl::client::decode_transaction_body::<
4183                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
4184                fidl::encoding::DefaultFuchsiaResourceDialect,
4185                0x5ac5d459ad7f657e,
4186            >(_buf?)?;
4187            Ok(_response.map(|x| x))
4188        }
4189        self.client.send_query_and_decode::<
4190            fidl::encoding::EmptyPayload,
4191            fidl_fuchsia_unknown::CloseableCloseResult,
4192        >(
4193            (),
4194            0x5ac5d459ad7f657e,
4195            fidl::encoding::DynamicFlags::empty(),
4196            _decode,
4197        )
4198    }
4199
4200    type QueryResponseFut =
4201        fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
4202    fn r#query(&self) -> Self::QueryResponseFut {
4203        fn _decode(
4204            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4205        ) -> Result<Vec<u8>, fidl::Error> {
4206            let _response = fidl::client::decode_transaction_body::<
4207                fidl_fuchsia_unknown::QueryableQueryResponse,
4208                fidl::encoding::DefaultFuchsiaResourceDialect,
4209                0x2658edee9decfc06,
4210            >(_buf?)?;
4211            Ok(_response.protocol)
4212        }
4213        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<u8>>(
4214            (),
4215            0x2658edee9decfc06,
4216            fidl::encoding::DynamicFlags::empty(),
4217            _decode,
4218        )
4219    }
4220
4221    type SetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4222        fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4223        fidl::encoding::DefaultFuchsiaResourceDialect,
4224    >;
4225    fn r#set_reuse_address(&self, mut value: bool) -> Self::SetReuseAddressResponseFut {
4226        fn _decode(
4227            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4228        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult, fidl::Error>
4229        {
4230            let _response = fidl::client::decode_transaction_body::<
4231                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4232                fidl::encoding::DefaultFuchsiaResourceDialect,
4233                0x1fd74ee8b9a4a876,
4234            >(_buf?)?;
4235            Ok(_response.map(|x| x))
4236        }
4237        self.client.send_query_and_decode::<
4238            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
4239            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressResult,
4240        >(
4241            (value,),
4242            0x1fd74ee8b9a4a876,
4243            fidl::encoding::DynamicFlags::empty(),
4244            _decode,
4245        )
4246    }
4247
4248    type GetReuseAddressResponseFut = fidl::client::QueryResponseFut<
4249        fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4250        fidl::encoding::DefaultFuchsiaResourceDialect,
4251    >;
4252    fn r#get_reuse_address(&self) -> Self::GetReuseAddressResponseFut {
4253        fn _decode(
4254            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4255        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult, fidl::Error>
4256        {
4257            let _response = fidl::client::decode_transaction_body::<
4258                fidl::encoding::ResultType<
4259                    fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
4260                    fidl_fuchsia_posix::Errno,
4261                >,
4262                fidl::encoding::DefaultFuchsiaResourceDialect,
4263                0x67b7206b8d1bc0a5,
4264            >(_buf?)?;
4265            Ok(_response.map(|x| x.value))
4266        }
4267        self.client.send_query_and_decode::<
4268            fidl::encoding::EmptyPayload,
4269            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResult,
4270        >(
4271            (),
4272            0x67b7206b8d1bc0a5,
4273            fidl::encoding::DynamicFlags::empty(),
4274            _decode,
4275        )
4276    }
4277
4278    type GetErrorResponseFut = fidl::client::QueryResponseFut<
4279        fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4280        fidl::encoding::DefaultFuchsiaResourceDialect,
4281    >;
4282    fn r#get_error(&self) -> Self::GetErrorResponseFut {
4283        fn _decode(
4284            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4285        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetErrorResult, fidl::Error> {
4286            let _response = fidl::client::decode_transaction_body::<
4287                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4288                fidl::encoding::DefaultFuchsiaResourceDialect,
4289                0x5aad39b33e5f6ebb,
4290            >(_buf?)?;
4291            Ok(_response.map(|x| x))
4292        }
4293        self.client.send_query_and_decode::<
4294            fidl::encoding::EmptyPayload,
4295            fidl_fuchsia_posix_socket::BaseSocketGetErrorResult,
4296        >(
4297            (),
4298            0x5aad39b33e5f6ebb,
4299            fidl::encoding::DynamicFlags::empty(),
4300            _decode,
4301        )
4302    }
4303
4304    type SetBroadcastResponseFut = fidl::client::QueryResponseFut<
4305        fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4306        fidl::encoding::DefaultFuchsiaResourceDialect,
4307    >;
4308    fn r#set_broadcast(&self, mut value: bool) -> Self::SetBroadcastResponseFut {
4309        fn _decode(
4310            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4311        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult, fidl::Error> {
4312            let _response = fidl::client::decode_transaction_body::<
4313                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4314                fidl::encoding::DefaultFuchsiaResourceDialect,
4315                0x6023e081ce3cd947,
4316            >(_buf?)?;
4317            Ok(_response.map(|x| x))
4318        }
4319        self.client.send_query_and_decode::<
4320            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
4321            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastResult,
4322        >(
4323            (value,),
4324            0x6023e081ce3cd947,
4325            fidl::encoding::DynamicFlags::empty(),
4326            _decode,
4327        )
4328    }
4329
4330    type GetBroadcastResponseFut = fidl::client::QueryResponseFut<
4331        fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4332        fidl::encoding::DefaultFuchsiaResourceDialect,
4333    >;
4334    fn r#get_broadcast(&self) -> Self::GetBroadcastResponseFut {
4335        fn _decode(
4336            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4337        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult, fidl::Error> {
4338            let _response = fidl::client::decode_transaction_body::<
4339                fidl::encoding::ResultType<
4340                    fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
4341                    fidl_fuchsia_posix::Errno,
4342                >,
4343                fidl::encoding::DefaultFuchsiaResourceDialect,
4344                0x68796fc556f9780d,
4345            >(_buf?)?;
4346            Ok(_response.map(|x| x.value))
4347        }
4348        self.client.send_query_and_decode::<
4349            fidl::encoding::EmptyPayload,
4350            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResult,
4351        >(
4352            (),
4353            0x68796fc556f9780d,
4354            fidl::encoding::DynamicFlags::empty(),
4355            _decode,
4356        )
4357    }
4358
4359    type SetSendBufferResponseFut = fidl::client::QueryResponseFut<
4360        fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4361        fidl::encoding::DefaultFuchsiaResourceDialect,
4362    >;
4363    fn r#set_send_buffer(&self, mut value_bytes: u64) -> Self::SetSendBufferResponseFut {
4364        fn _decode(
4365            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4366        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult, fidl::Error> {
4367            let _response = fidl::client::decode_transaction_body::<
4368                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4369                fidl::encoding::DefaultFuchsiaResourceDialect,
4370                0x756eac32d73a7a70,
4371            >(_buf?)?;
4372            Ok(_response.map(|x| x))
4373        }
4374        self.client.send_query_and_decode::<
4375            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
4376            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferResult,
4377        >(
4378            (value_bytes,),
4379            0x756eac32d73a7a70,
4380            fidl::encoding::DynamicFlags::empty(),
4381            _decode,
4382        )
4383    }
4384
4385    type GetSendBufferResponseFut = fidl::client::QueryResponseFut<
4386        fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4387        fidl::encoding::DefaultFuchsiaResourceDialect,
4388    >;
4389    fn r#get_send_buffer(&self) -> Self::GetSendBufferResponseFut {
4390        fn _decode(
4391            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4392        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult, fidl::Error> {
4393            let _response = fidl::client::decode_transaction_body::<
4394                fidl::encoding::ResultType<
4395                    fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
4396                    fidl_fuchsia_posix::Errno,
4397                >,
4398                fidl::encoding::DefaultFuchsiaResourceDialect,
4399                0x78a52fd9c7b2410b,
4400            >(_buf?)?;
4401            Ok(_response.map(|x| x.value_bytes))
4402        }
4403        self.client.send_query_and_decode::<
4404            fidl::encoding::EmptyPayload,
4405            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResult,
4406        >(
4407            (),
4408            0x78a52fd9c7b2410b,
4409            fidl::encoding::DynamicFlags::empty(),
4410            _decode,
4411        )
4412    }
4413
4414    type SetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4415        fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4416        fidl::encoding::DefaultFuchsiaResourceDialect,
4417    >;
4418    fn r#set_receive_buffer(&self, mut value_bytes: u64) -> Self::SetReceiveBufferResponseFut {
4419        fn _decode(
4420            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4421        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult, fidl::Error>
4422        {
4423            let _response = fidl::client::decode_transaction_body::<
4424                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4425                fidl::encoding::DefaultFuchsiaResourceDialect,
4426                0x6b0cf2f1919c7001,
4427            >(_buf?)?;
4428            Ok(_response.map(|x| x))
4429        }
4430        self.client.send_query_and_decode::<
4431            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
4432            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferResult,
4433        >(
4434            (value_bytes,),
4435            0x6b0cf2f1919c7001,
4436            fidl::encoding::DynamicFlags::empty(),
4437            _decode,
4438        )
4439    }
4440
4441    type GetReceiveBufferResponseFut = fidl::client::QueryResponseFut<
4442        fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4443        fidl::encoding::DefaultFuchsiaResourceDialect,
4444    >;
4445    fn r#get_receive_buffer(&self) -> Self::GetReceiveBufferResponseFut {
4446        fn _decode(
4447            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4448        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult, fidl::Error>
4449        {
4450            let _response = fidl::client::decode_transaction_body::<
4451                fidl::encoding::ResultType<
4452                    fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
4453                    fidl_fuchsia_posix::Errno,
4454                >,
4455                fidl::encoding::DefaultFuchsiaResourceDialect,
4456                0x14c1a4b64f709e5c,
4457            >(_buf?)?;
4458            Ok(_response.map(|x| x.value_bytes))
4459        }
4460        self.client.send_query_and_decode::<
4461            fidl::encoding::EmptyPayload,
4462            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResult,
4463        >(
4464            (),
4465            0x14c1a4b64f709e5c,
4466            fidl::encoding::DynamicFlags::empty(),
4467            _decode,
4468        )
4469    }
4470
4471    type SetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4472        fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4473        fidl::encoding::DefaultFuchsiaResourceDialect,
4474    >;
4475    fn r#set_keep_alive(&self, mut value: bool) -> Self::SetKeepAliveResponseFut {
4476        fn _decode(
4477            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4478        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult, fidl::Error> {
4479            let _response = fidl::client::decode_transaction_body::<
4480                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4481                fidl::encoding::DefaultFuchsiaResourceDialect,
4482                0x572df8f0b920d2c7,
4483            >(_buf?)?;
4484            Ok(_response.map(|x| x))
4485        }
4486        self.client.send_query_and_decode::<
4487            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
4488            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveResult,
4489        >(
4490            (value,),
4491            0x572df8f0b920d2c7,
4492            fidl::encoding::DynamicFlags::empty(),
4493            _decode,
4494        )
4495    }
4496
4497    type GetKeepAliveResponseFut = fidl::client::QueryResponseFut<
4498        fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4499        fidl::encoding::DefaultFuchsiaResourceDialect,
4500    >;
4501    fn r#get_keep_alive(&self) -> Self::GetKeepAliveResponseFut {
4502        fn _decode(
4503            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4504        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult, fidl::Error> {
4505            let _response = fidl::client::decode_transaction_body::<
4506                fidl::encoding::ResultType<
4507                    fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
4508                    fidl_fuchsia_posix::Errno,
4509                >,
4510                fidl::encoding::DefaultFuchsiaResourceDialect,
4511                0x2dd29d3215f2c9d2,
4512            >(_buf?)?;
4513            Ok(_response.map(|x| x.value))
4514        }
4515        self.client.send_query_and_decode::<
4516            fidl::encoding::EmptyPayload,
4517            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResult,
4518        >(
4519            (),
4520            0x2dd29d3215f2c9d2,
4521            fidl::encoding::DynamicFlags::empty(),
4522            _decode,
4523        )
4524    }
4525
4526    type SetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4527        fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4528        fidl::encoding::DefaultFuchsiaResourceDialect,
4529    >;
4530    fn r#set_out_of_band_inline(&self, mut value: bool) -> Self::SetOutOfBandInlineResponseFut {
4531        fn _decode(
4532            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4533        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult, fidl::Error>
4534        {
4535            let _response = fidl::client::decode_transaction_body::<
4536                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4537                fidl::encoding::DefaultFuchsiaResourceDialect,
4538                0x3ecb49968bee439,
4539            >(_buf?)?;
4540            Ok(_response.map(|x| x))
4541        }
4542        self.client.send_query_and_decode::<
4543            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
4544            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineResult,
4545        >(
4546            (value,),
4547            0x3ecb49968bee439,
4548            fidl::encoding::DynamicFlags::empty(),
4549            _decode,
4550        )
4551    }
4552
4553    type GetOutOfBandInlineResponseFut = fidl::client::QueryResponseFut<
4554        fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4555        fidl::encoding::DefaultFuchsiaResourceDialect,
4556    >;
4557    fn r#get_out_of_band_inline(&self) -> Self::GetOutOfBandInlineResponseFut {
4558        fn _decode(
4559            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4560        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult, fidl::Error>
4561        {
4562            let _response = fidl::client::decode_transaction_body::<
4563                fidl::encoding::ResultType<
4564                    fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
4565                    fidl_fuchsia_posix::Errno,
4566                >,
4567                fidl::encoding::DefaultFuchsiaResourceDialect,
4568                0x348c1ab3aeca1745,
4569            >(_buf?)?;
4570            Ok(_response.map(|x| x.value))
4571        }
4572        self.client.send_query_and_decode::<
4573            fidl::encoding::EmptyPayload,
4574            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResult,
4575        >(
4576            (),
4577            0x348c1ab3aeca1745,
4578            fidl::encoding::DynamicFlags::empty(),
4579            _decode,
4580        )
4581    }
4582
4583    type SetNoCheckResponseFut = fidl::client::QueryResponseFut<
4584        fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4585        fidl::encoding::DefaultFuchsiaResourceDialect,
4586    >;
4587    fn r#set_no_check(&self, mut value: bool) -> Self::SetNoCheckResponseFut {
4588        fn _decode(
4589            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4590        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult, fidl::Error> {
4591            let _response = fidl::client::decode_transaction_body::<
4592                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4593                fidl::encoding::DefaultFuchsiaResourceDialect,
4594                0x6bbf00c53a4c78c2,
4595            >(_buf?)?;
4596            Ok(_response.map(|x| x))
4597        }
4598        self.client.send_query_and_decode::<
4599            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
4600            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckResult,
4601        >(
4602            (value,),
4603            0x6bbf00c53a4c78c2,
4604            fidl::encoding::DynamicFlags::empty(),
4605            _decode,
4606        )
4607    }
4608
4609    type GetNoCheckResponseFut = fidl::client::QueryResponseFut<
4610        fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4611        fidl::encoding::DefaultFuchsiaResourceDialect,
4612    >;
4613    fn r#get_no_check(&self) -> Self::GetNoCheckResponseFut {
4614        fn _decode(
4615            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4616        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult, fidl::Error> {
4617            let _response = fidl::client::decode_transaction_body::<
4618                fidl::encoding::ResultType<
4619                    fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
4620                    fidl_fuchsia_posix::Errno,
4621                >,
4622                fidl::encoding::DefaultFuchsiaResourceDialect,
4623                0x2cd4249286417694,
4624            >(_buf?)?;
4625            Ok(_response.map(|x| x.value))
4626        }
4627        self.client.send_query_and_decode::<
4628            fidl::encoding::EmptyPayload,
4629            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResult,
4630        >(
4631            (),
4632            0x2cd4249286417694,
4633            fidl::encoding::DynamicFlags::empty(),
4634            _decode,
4635        )
4636    }
4637
4638    type SetLingerResponseFut = fidl::client::QueryResponseFut<
4639        fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4640        fidl::encoding::DefaultFuchsiaResourceDialect,
4641    >;
4642    fn r#set_linger(&self, mut linger: bool, mut length_secs: u32) -> Self::SetLingerResponseFut {
4643        fn _decode(
4644            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4645        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetLingerResult, fidl::Error> {
4646            let _response = fidl::client::decode_transaction_body::<
4647                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4648                fidl::encoding::DefaultFuchsiaResourceDialect,
4649                0x45386351246e998e,
4650            >(_buf?)?;
4651            Ok(_response.map(|x| x))
4652        }
4653        self.client.send_query_and_decode::<
4654            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
4655            fidl_fuchsia_posix_socket::BaseSocketSetLingerResult,
4656        >(
4657            (linger, length_secs,),
4658            0x45386351246e998e,
4659            fidl::encoding::DynamicFlags::empty(),
4660            _decode,
4661        )
4662    }
4663
4664    type GetLingerResponseFut = fidl::client::QueryResponseFut<
4665        fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4666        fidl::encoding::DefaultFuchsiaResourceDialect,
4667    >;
4668    fn r#get_linger(&self) -> Self::GetLingerResponseFut {
4669        fn _decode(
4670            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4671        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetLingerResult, fidl::Error> {
4672            let _response = fidl::client::decode_transaction_body::<
4673                fidl::encoding::ResultType<
4674                    fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
4675                    fidl_fuchsia_posix::Errno,
4676                >,
4677                fidl::encoding::DefaultFuchsiaResourceDialect,
4678                0x48eb20fc5ccb0e45,
4679            >(_buf?)?;
4680            Ok(_response.map(|x| (x.linger, x.length_secs)))
4681        }
4682        self.client.send_query_and_decode::<
4683            fidl::encoding::EmptyPayload,
4684            fidl_fuchsia_posix_socket::BaseSocketGetLingerResult,
4685        >(
4686            (),
4687            0x48eb20fc5ccb0e45,
4688            fidl::encoding::DynamicFlags::empty(),
4689            _decode,
4690        )
4691    }
4692
4693    type SetReusePortResponseFut = fidl::client::QueryResponseFut<
4694        fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4695        fidl::encoding::DefaultFuchsiaResourceDialect,
4696    >;
4697    fn r#set_reuse_port(
4698        &self,
4699        mut value: fidl_fuchsia_posix_socket::ReusePortOption,
4700    ) -> Self::SetReusePortResponseFut {
4701        fn _decode(
4702            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4703        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult, fidl::Error> {
4704            let _response = fidl::client::decode_transaction_body::<
4705                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4706                fidl::encoding::DefaultFuchsiaResourceDialect,
4707                0x547dc9cc0455189e,
4708            >(_buf?)?;
4709            Ok(_response.map(|x| x))
4710        }
4711        self.client.send_query_and_decode::<
4712            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
4713            fidl_fuchsia_posix_socket::BaseSocketSetReusePortResult,
4714        >(
4715            (&mut value,),
4716            0x547dc9cc0455189e,
4717            fidl::encoding::DynamicFlags::empty(),
4718            _decode,
4719        )
4720    }
4721
4722    type SetReusePortDeprecatedResponseFut = fidl::client::QueryResponseFut<
4723        fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4724        fidl::encoding::DefaultFuchsiaResourceDialect,
4725    >;
4726    fn r#set_reuse_port_deprecated(
4727        &self,
4728        mut value: bool,
4729    ) -> Self::SetReusePortDeprecatedResponseFut {
4730        fn _decode(
4731            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4732        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult, fidl::Error>
4733        {
4734            let _response = fidl::client::decode_transaction_body::<
4735                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4736                fidl::encoding::DefaultFuchsiaResourceDialect,
4737                0x24dd3e5cb36d9ccb,
4738            >(_buf?)?;
4739            Ok(_response.map(|x| x))
4740        }
4741        self.client.send_query_and_decode::<
4742            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
4743            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedResult,
4744        >(
4745            (value,),
4746            0x24dd3e5cb36d9ccb,
4747            fidl::encoding::DynamicFlags::empty(),
4748            _decode,
4749        )
4750    }
4751
4752    type GetReusePortResponseFut = fidl::client::QueryResponseFut<
4753        fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4754        fidl::encoding::DefaultFuchsiaResourceDialect,
4755    >;
4756    fn r#get_reuse_port(&self) -> Self::GetReusePortResponseFut {
4757        fn _decode(
4758            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4759        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult, fidl::Error> {
4760            let _response = fidl::client::decode_transaction_body::<
4761                fidl::encoding::ResultType<
4762                    fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
4763                    fidl_fuchsia_posix::Errno,
4764                >,
4765                fidl::encoding::DefaultFuchsiaResourceDialect,
4766                0x7a112c1ab54ff828,
4767            >(_buf?)?;
4768            Ok(_response.map(|x| x.value))
4769        }
4770        self.client.send_query_and_decode::<
4771            fidl::encoding::EmptyPayload,
4772            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResult,
4773        >(
4774            (),
4775            0x7a112c1ab54ff828,
4776            fidl::encoding::DynamicFlags::empty(),
4777            _decode,
4778        )
4779    }
4780
4781    type GetAcceptConnResponseFut = fidl::client::QueryResponseFut<
4782        fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4783        fidl::encoding::DefaultFuchsiaResourceDialect,
4784    >;
4785    fn r#get_accept_conn(&self) -> Self::GetAcceptConnResponseFut {
4786        fn _decode(
4787            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4788        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult, fidl::Error> {
4789            let _response = fidl::client::decode_transaction_body::<
4790                fidl::encoding::ResultType<
4791                    fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
4792                    fidl_fuchsia_posix::Errno,
4793                >,
4794                fidl::encoding::DefaultFuchsiaResourceDialect,
4795                0x67ce6db6c2ec8966,
4796            >(_buf?)?;
4797            Ok(_response.map(|x| x.value))
4798        }
4799        self.client.send_query_and_decode::<
4800            fidl::encoding::EmptyPayload,
4801            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResult,
4802        >(
4803            (),
4804            0x67ce6db6c2ec8966,
4805            fidl::encoding::DynamicFlags::empty(),
4806            _decode,
4807        )
4808    }
4809
4810    type SetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4811        fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4812        fidl::encoding::DefaultFuchsiaResourceDialect,
4813    >;
4814    fn r#set_bind_to_device(&self, mut value: &str) -> Self::SetBindToDeviceResponseFut {
4815        fn _decode(
4816            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4817        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult, fidl::Error>
4818        {
4819            let _response = fidl::client::decode_transaction_body::<
4820                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4821                fidl::encoding::DefaultFuchsiaResourceDialect,
4822                0x2118b483f28aafc4,
4823            >(_buf?)?;
4824            Ok(_response.map(|x| x))
4825        }
4826        self.client.send_query_and_decode::<
4827            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
4828            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceResult,
4829        >(
4830            (value,),
4831            0x2118b483f28aafc4,
4832            fidl::encoding::DynamicFlags::empty(),
4833            _decode,
4834        )
4835    }
4836
4837    type GetBindToDeviceResponseFut = fidl::client::QueryResponseFut<
4838        fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4839        fidl::encoding::DefaultFuchsiaResourceDialect,
4840    >;
4841    fn r#get_bind_to_device(&self) -> Self::GetBindToDeviceResponseFut {
4842        fn _decode(
4843            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4844        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult, fidl::Error>
4845        {
4846            let _response = fidl::client::decode_transaction_body::<
4847                fidl::encoding::ResultType<
4848                    fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
4849                    fidl_fuchsia_posix::Errno,
4850                >,
4851                fidl::encoding::DefaultFuchsiaResourceDialect,
4852                0x1ab1fbf0ef7906c8,
4853            >(_buf?)?;
4854            Ok(_response.map(|x| x.value))
4855        }
4856        self.client.send_query_and_decode::<
4857            fidl::encoding::EmptyPayload,
4858            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResult,
4859        >(
4860            (),
4861            0x1ab1fbf0ef7906c8,
4862            fidl::encoding::DynamicFlags::empty(),
4863            _decode,
4864        )
4865    }
4866
4867    type SetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4868        fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4869        fidl::encoding::DefaultFuchsiaResourceDialect,
4870    >;
4871    fn r#set_bind_to_interface_index(
4872        &self,
4873        mut value: u64,
4874    ) -> Self::SetBindToInterfaceIndexResponseFut {
4875        fn _decode(
4876            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4877        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult, fidl::Error>
4878        {
4879            let _response = fidl::client::decode_transaction_body::<
4880                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4881                fidl::encoding::DefaultFuchsiaResourceDialect,
4882                0x6e387a0def00821,
4883            >(_buf?)?;
4884            Ok(_response.map(|x| x))
4885        }
4886        self.client.send_query_and_decode::<
4887            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
4888            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexResult,
4889        >(
4890            (value,),
4891            0x6e387a0def00821,
4892            fidl::encoding::DynamicFlags::empty(),
4893            _decode,
4894        )
4895    }
4896
4897    type GetBindToInterfaceIndexResponseFut = fidl::client::QueryResponseFut<
4898        fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4899        fidl::encoding::DefaultFuchsiaResourceDialect,
4900    >;
4901    fn r#get_bind_to_interface_index(&self) -> Self::GetBindToInterfaceIndexResponseFut {
4902        fn _decode(
4903            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4904        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult, fidl::Error>
4905        {
4906            let _response = fidl::client::decode_transaction_body::<
4907                fidl::encoding::ResultType<
4908                    fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
4909                    fidl_fuchsia_posix::Errno,
4910                >,
4911                fidl::encoding::DefaultFuchsiaResourceDialect,
4912                0x59c31dd3e3078295,
4913            >(_buf?)?;
4914            Ok(_response.map(|x| x.value))
4915        }
4916        self.client.send_query_and_decode::<
4917            fidl::encoding::EmptyPayload,
4918            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResult,
4919        >(
4920            (),
4921            0x59c31dd3e3078295,
4922            fidl::encoding::DynamicFlags::empty(),
4923            _decode,
4924        )
4925    }
4926
4927    type SetTimestampResponseFut = fidl::client::QueryResponseFut<
4928        fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4929        fidl::encoding::DefaultFuchsiaResourceDialect,
4930    >;
4931    fn r#set_timestamp(
4932        &self,
4933        mut value: fidl_fuchsia_posix_socket::TimestampOption,
4934    ) -> Self::SetTimestampResponseFut {
4935        fn _decode(
4936            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4937        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult, fidl::Error> {
4938            let _response = fidl::client::decode_transaction_body::<
4939                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4940                fidl::encoding::DefaultFuchsiaResourceDialect,
4941                0x285d6516c263d839,
4942            >(_buf?)?;
4943            Ok(_response.map(|x| x))
4944        }
4945        self.client.send_query_and_decode::<
4946            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
4947            fidl_fuchsia_posix_socket::BaseSocketSetTimestampResult,
4948        >(
4949            (value,),
4950            0x285d6516c263d839,
4951            fidl::encoding::DynamicFlags::empty(),
4952            _decode,
4953        )
4954    }
4955
4956    type GetTimestampResponseFut = fidl::client::QueryResponseFut<
4957        fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4958        fidl::encoding::DefaultFuchsiaResourceDialect,
4959    >;
4960    fn r#get_timestamp(&self) -> Self::GetTimestampResponseFut {
4961        fn _decode(
4962            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4963        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult, fidl::Error> {
4964            let _response = fidl::client::decode_transaction_body::<
4965                fidl::encoding::ResultType<
4966                    fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
4967                    fidl_fuchsia_posix::Errno,
4968                >,
4969                fidl::encoding::DefaultFuchsiaResourceDialect,
4970                0x49f2fffbbcc2bd27,
4971            >(_buf?)?;
4972            Ok(_response.map(|x| x.value))
4973        }
4974        self.client.send_query_and_decode::<
4975            fidl::encoding::EmptyPayload,
4976            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResult,
4977        >(
4978            (),
4979            0x49f2fffbbcc2bd27,
4980            fidl::encoding::DynamicFlags::empty(),
4981            _decode,
4982        )
4983    }
4984
4985    type SetMarkResponseFut = fidl::client::QueryResponseFut<
4986        fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
4987        fidl::encoding::DefaultFuchsiaResourceDialect,
4988    >;
4989    fn r#set_mark(
4990        &self,
4991        mut domain: fidl_fuchsia_net::MarkDomain,
4992        mut mark: &fidl_fuchsia_posix_socket::OptionalUint32,
4993    ) -> Self::SetMarkResponseFut {
4994        fn _decode(
4995            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
4996        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketSetMarkResult, fidl::Error> {
4997            let _response = fidl::client::decode_transaction_body::<
4998                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
4999                fidl::encoding::DefaultFuchsiaResourceDialect,
5000                0x6ead6de09f653236,
5001            >(_buf?)?;
5002            Ok(_response.map(|x| x))
5003        }
5004        self.client.send_query_and_decode::<
5005            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
5006            fidl_fuchsia_posix_socket::BaseSocketSetMarkResult,
5007        >(
5008            (domain, mark,),
5009            0x6ead6de09f653236,
5010            fidl::encoding::DynamicFlags::empty(),
5011            _decode,
5012        )
5013    }
5014
5015    type GetMarkResponseFut = fidl::client::QueryResponseFut<
5016        fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5017        fidl::encoding::DefaultFuchsiaResourceDialect,
5018    >;
5019    fn r#get_mark(&self, mut domain: fidl_fuchsia_net::MarkDomain) -> Self::GetMarkResponseFut {
5020        fn _decode(
5021            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5022        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetMarkResult, fidl::Error> {
5023            let _response = fidl::client::decode_transaction_body::<
5024                fidl::encoding::ResultType<
5025                    fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
5026                    fidl_fuchsia_posix::Errno,
5027                >,
5028                fidl::encoding::DefaultFuchsiaResourceDialect,
5029                0x57a2752c61d93d47,
5030            >(_buf?)?;
5031            Ok(_response.map(|x| x.mark))
5032        }
5033        self.client.send_query_and_decode::<
5034            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
5035            fidl_fuchsia_posix_socket::BaseSocketGetMarkResult,
5036        >(
5037            (domain,),
5038            0x57a2752c61d93d47,
5039            fidl::encoding::DynamicFlags::empty(),
5040            _decode,
5041        )
5042    }
5043
5044    type GetCookieResponseFut = fidl::client::QueryResponseFut<
5045        fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5046        fidl::encoding::DefaultFuchsiaResourceDialect,
5047    >;
5048    fn r#get_cookie(&self) -> Self::GetCookieResponseFut {
5049        fn _decode(
5050            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5051        ) -> Result<fidl_fuchsia_posix_socket::BaseSocketGetCookieResult, fidl::Error> {
5052            let _response = fidl::client::decode_transaction_body::<
5053                fidl::encoding::ResultType<
5054                    fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
5055                    fidl_fuchsia_posix::Errno,
5056                >,
5057                fidl::encoding::DefaultFuchsiaResourceDialect,
5058                0x2c2f47fd8f924e52,
5059            >(_buf?)?;
5060            Ok(_response.map(|x| x.value))
5061        }
5062        self.client.send_query_and_decode::<
5063            fidl::encoding::EmptyPayload,
5064            fidl_fuchsia_posix_socket::BaseSocketGetCookieResult,
5065        >(
5066            (),
5067            0x2c2f47fd8f924e52,
5068            fidl::encoding::DynamicFlags::empty(),
5069            _decode,
5070        )
5071    }
5072
5073    type BindResponseFut = fidl::client::QueryResponseFut<
5074        fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5075        fidl::encoding::DefaultFuchsiaResourceDialect,
5076    >;
5077    fn r#bind(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::BindResponseFut {
5078        fn _decode(
5079            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5080        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult, fidl::Error> {
5081            let _response = fidl::client::decode_transaction_body::<
5082                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5083                fidl::encoding::DefaultFuchsiaResourceDialect,
5084                0x4bc6400ae92125d,
5085            >(_buf?)?;
5086            Ok(_response.map(|x| x))
5087        }
5088        self.client.send_query_and_decode::<
5089            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
5090            fidl_fuchsia_posix_socket::BaseNetworkSocketBindResult,
5091        >(
5092            (addr,),
5093            0x4bc6400ae92125d,
5094            fidl::encoding::DynamicFlags::empty(),
5095            _decode,
5096        )
5097    }
5098
5099    type ConnectResponseFut = fidl::client::QueryResponseFut<
5100        fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5101        fidl::encoding::DefaultFuchsiaResourceDialect,
5102    >;
5103    fn r#connect(&self, mut addr: &fidl_fuchsia_net::SocketAddress) -> Self::ConnectResponseFut {
5104        fn _decode(
5105            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5106        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult, fidl::Error>
5107        {
5108            let _response = fidl::client::decode_transaction_body::<
5109                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5110                fidl::encoding::DefaultFuchsiaResourceDialect,
5111                0x5f05f19bfdd38871,
5112            >(_buf?)?;
5113            Ok(_response.map(|x| x))
5114        }
5115        self.client.send_query_and_decode::<
5116            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
5117            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectResult,
5118        >(
5119            (addr,),
5120            0x5f05f19bfdd38871,
5121            fidl::encoding::DynamicFlags::empty(),
5122            _decode,
5123        )
5124    }
5125
5126    type DisconnectResponseFut = fidl::client::QueryResponseFut<
5127        fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5128        fidl::encoding::DefaultFuchsiaResourceDialect,
5129    >;
5130    fn r#disconnect(&self) -> Self::DisconnectResponseFut {
5131        fn _decode(
5132            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5133        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult, fidl::Error>
5134        {
5135            let _response = fidl::client::decode_transaction_body::<
5136                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5137                fidl::encoding::DefaultFuchsiaResourceDialect,
5138                0x74e63b91f7b29b2,
5139            >(_buf?)?;
5140            Ok(_response.map(|x| x))
5141        }
5142        self.client.send_query_and_decode::<
5143            fidl::encoding::EmptyPayload,
5144            fidl_fuchsia_posix_socket::BaseNetworkSocketDisconnectResult,
5145        >(
5146            (),
5147            0x74e63b91f7b29b2,
5148            fidl::encoding::DynamicFlags::empty(),
5149            _decode,
5150        )
5151    }
5152
5153    type GetSockNameResponseFut = fidl::client::QueryResponseFut<
5154        fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5155        fidl::encoding::DefaultFuchsiaResourceDialect,
5156    >;
5157    fn r#get_sock_name(&self) -> Self::GetSockNameResponseFut {
5158        fn _decode(
5159            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5160        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult, fidl::Error>
5161        {
5162            let _response = fidl::client::decode_transaction_body::<
5163                fidl::encoding::ResultType<
5164                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
5165                    fidl_fuchsia_posix::Errno,
5166                >,
5167                fidl::encoding::DefaultFuchsiaResourceDialect,
5168                0x475f23f84a1a4f85,
5169            >(_buf?)?;
5170            Ok(_response.map(|x| x.addr))
5171        }
5172        self.client.send_query_and_decode::<
5173            fidl::encoding::EmptyPayload,
5174            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResult,
5175        >(
5176            (),
5177            0x475f23f84a1a4f85,
5178            fidl::encoding::DynamicFlags::empty(),
5179            _decode,
5180        )
5181    }
5182
5183    type GetPeerNameResponseFut = fidl::client::QueryResponseFut<
5184        fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5185        fidl::encoding::DefaultFuchsiaResourceDialect,
5186    >;
5187    fn r#get_peer_name(&self) -> Self::GetPeerNameResponseFut {
5188        fn _decode(
5189            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5190        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult, fidl::Error>
5191        {
5192            let _response = fidl::client::decode_transaction_body::<
5193                fidl::encoding::ResultType<
5194                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
5195                    fidl_fuchsia_posix::Errno,
5196                >,
5197                fidl::encoding::DefaultFuchsiaResourceDialect,
5198                0x1ffecf4bd5b6432e,
5199            >(_buf?)?;
5200            Ok(_response.map(|x| x.addr))
5201        }
5202        self.client.send_query_and_decode::<
5203            fidl::encoding::EmptyPayload,
5204            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResult,
5205        >(
5206            (),
5207            0x1ffecf4bd5b6432e,
5208            fidl::encoding::DynamicFlags::empty(),
5209            _decode,
5210        )
5211    }
5212
5213    type ShutdownResponseFut = fidl::client::QueryResponseFut<
5214        fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5215        fidl::encoding::DefaultFuchsiaResourceDialect,
5216    >;
5217    fn r#shutdown(
5218        &self,
5219        mut mode: fidl_fuchsia_posix_socket::ShutdownMode,
5220    ) -> Self::ShutdownResponseFut {
5221        fn _decode(
5222            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5223        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult, fidl::Error>
5224        {
5225            let _response = fidl::client::decode_transaction_body::<
5226                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5227                fidl::encoding::DefaultFuchsiaResourceDialect,
5228                0x247f38b6db68c336,
5229            >(_buf?)?;
5230            Ok(_response.map(|x| x))
5231        }
5232        self.client.send_query_and_decode::<
5233            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
5234            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownResult,
5235        >(
5236            (mode,),
5237            0x247f38b6db68c336,
5238            fidl::encoding::DynamicFlags::empty(),
5239            _decode,
5240        )
5241    }
5242
5243    type SetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5244        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5245        fidl::encoding::DefaultFuchsiaResourceDialect,
5246    >;
5247    fn r#set_ip_type_of_service(&self, mut value: u8) -> Self::SetIpTypeOfServiceResponseFut {
5248        fn _decode(
5249            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5250        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult, fidl::Error>
5251        {
5252            let _response = fidl::client::decode_transaction_body::<
5253                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5254                fidl::encoding::DefaultFuchsiaResourceDialect,
5255                0x995c600475b6d46,
5256            >(_buf?)?;
5257            Ok(_response.map(|x| x))
5258        }
5259        self.client.send_query_and_decode::<
5260            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
5261            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceResult,
5262        >(
5263            (value,),
5264            0x995c600475b6d46,
5265            fidl::encoding::DynamicFlags::empty(),
5266            _decode,
5267        )
5268    }
5269
5270    type GetIpTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5271        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5272        fidl::encoding::DefaultFuchsiaResourceDialect,
5273    >;
5274    fn r#get_ip_type_of_service(&self) -> Self::GetIpTypeOfServiceResponseFut {
5275        fn _decode(
5276            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5277        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult, fidl::Error>
5278        {
5279            let _response = fidl::client::decode_transaction_body::<
5280                fidl::encoding::ResultType<
5281                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
5282                    fidl_fuchsia_posix::Errno,
5283                >,
5284                fidl::encoding::DefaultFuchsiaResourceDialect,
5285                0x3814a04259f75fcb,
5286            >(_buf?)?;
5287            Ok(_response.map(|x| x.value))
5288        }
5289        self.client.send_query_and_decode::<
5290            fidl::encoding::EmptyPayload,
5291            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResult,
5292        >(
5293            (),
5294            0x3814a04259f75fcb,
5295            fidl::encoding::DynamicFlags::empty(),
5296            _decode,
5297        )
5298    }
5299
5300    type SetIpTtlResponseFut = fidl::client::QueryResponseFut<
5301        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5302        fidl::encoding::DefaultFuchsiaResourceDialect,
5303    >;
5304    fn r#set_ip_ttl(
5305        &self,
5306        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5307    ) -> Self::SetIpTtlResponseFut {
5308        fn _decode(
5309            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5310        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult, fidl::Error>
5311        {
5312            let _response = fidl::client::decode_transaction_body::<
5313                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5314                fidl::encoding::DefaultFuchsiaResourceDialect,
5315                0x29e2424b433ae1ef,
5316            >(_buf?)?;
5317            Ok(_response.map(|x| x))
5318        }
5319        self.client.send_query_and_decode::<
5320            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
5321            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlResult,
5322        >(
5323            (value,),
5324            0x29e2424b433ae1ef,
5325            fidl::encoding::DynamicFlags::empty(),
5326            _decode,
5327        )
5328    }
5329
5330    type GetIpTtlResponseFut = fidl::client::QueryResponseFut<
5331        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5332        fidl::encoding::DefaultFuchsiaResourceDialect,
5333    >;
5334    fn r#get_ip_ttl(&self) -> Self::GetIpTtlResponseFut {
5335        fn _decode(
5336            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5337        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult, fidl::Error>
5338        {
5339            let _response = fidl::client::decode_transaction_body::<
5340                fidl::encoding::ResultType<
5341                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
5342                    fidl_fuchsia_posix::Errno,
5343                >,
5344                fidl::encoding::DefaultFuchsiaResourceDialect,
5345                0x47e47fa1f24da471,
5346            >(_buf?)?;
5347            Ok(_response.map(|x| x.value))
5348        }
5349        self.client.send_query_and_decode::<
5350            fidl::encoding::EmptyPayload,
5351            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResult,
5352        >(
5353            (),
5354            0x47e47fa1f24da471,
5355            fidl::encoding::DynamicFlags::empty(),
5356            _decode,
5357        )
5358    }
5359
5360    type SetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5361        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5362        fidl::encoding::DefaultFuchsiaResourceDialect,
5363    >;
5364    fn r#set_ip_packet_info(&self, mut value: bool) -> Self::SetIpPacketInfoResponseFut {
5365        fn _decode(
5366            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5367        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult, fidl::Error>
5368        {
5369            let _response = fidl::client::decode_transaction_body::<
5370                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5371                fidl::encoding::DefaultFuchsiaResourceDialect,
5372                0x392d16bee20c0e16,
5373            >(_buf?)?;
5374            Ok(_response.map(|x| x))
5375        }
5376        self.client.send_query_and_decode::<
5377            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
5378            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoResult,
5379        >(
5380            (value,),
5381            0x392d16bee20c0e16,
5382            fidl::encoding::DynamicFlags::empty(),
5383            _decode,
5384        )
5385    }
5386
5387    type GetIpPacketInfoResponseFut = fidl::client::QueryResponseFut<
5388        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5389        fidl::encoding::DefaultFuchsiaResourceDialect,
5390    >;
5391    fn r#get_ip_packet_info(&self) -> Self::GetIpPacketInfoResponseFut {
5392        fn _decode(
5393            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5394        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult, fidl::Error>
5395        {
5396            let _response = fidl::client::decode_transaction_body::<
5397                fidl::encoding::ResultType<
5398                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
5399                    fidl_fuchsia_posix::Errno,
5400                >,
5401                fidl::encoding::DefaultFuchsiaResourceDialect,
5402                0x54b505f242280740,
5403            >(_buf?)?;
5404            Ok(_response.map(|x| x.value))
5405        }
5406        self.client.send_query_and_decode::<
5407            fidl::encoding::EmptyPayload,
5408            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResult,
5409        >(
5410            (),
5411            0x54b505f242280740,
5412            fidl::encoding::DynamicFlags::empty(),
5413            _decode,
5414        )
5415    }
5416
5417    type SetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5418        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5419        fidl::encoding::DefaultFuchsiaResourceDialect,
5420    >;
5421    fn r#set_ip_receive_type_of_service(
5422        &self,
5423        mut value: bool,
5424    ) -> Self::SetIpReceiveTypeOfServiceResponseFut {
5425        fn _decode(
5426            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5427        ) -> Result<
5428            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5429            fidl::Error,
5430        > {
5431            let _response = fidl::client::decode_transaction_body::<
5432                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5433                fidl::encoding::DefaultFuchsiaResourceDialect,
5434                0x6c4f6714995f84ef,
5435            >(_buf?)?;
5436            Ok(_response.map(|x| x))
5437        }
5438        self.client.send_query_and_decode::<
5439            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest,
5440            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceResult,
5441        >(
5442            (value,),
5443            0x6c4f6714995f84ef,
5444            fidl::encoding::DynamicFlags::empty(),
5445            _decode,
5446        )
5447    }
5448
5449    type GetIpReceiveTypeOfServiceResponseFut = fidl::client::QueryResponseFut<
5450        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5451        fidl::encoding::DefaultFuchsiaResourceDialect,
5452    >;
5453    fn r#get_ip_receive_type_of_service(&self) -> Self::GetIpReceiveTypeOfServiceResponseFut {
5454        fn _decode(
5455            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5456        ) -> Result<
5457            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5458            fidl::Error,
5459        > {
5460            let _response = fidl::client::decode_transaction_body::<
5461                fidl::encoding::ResultType<
5462                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
5463                    fidl_fuchsia_posix::Errno,
5464                >,
5465                fidl::encoding::DefaultFuchsiaResourceDialect,
5466                0x4158ba7dc2795960,
5467            >(_buf?)?;
5468            Ok(_response.map(|x| x.value))
5469        }
5470        self.client.send_query_and_decode::<
5471            fidl::encoding::EmptyPayload,
5472            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResult,
5473        >(
5474            (),
5475            0x4158ba7dc2795960,
5476            fidl::encoding::DynamicFlags::empty(),
5477            _decode,
5478        )
5479    }
5480
5481    type SetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5482        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5483        fidl::encoding::DefaultFuchsiaResourceDialect,
5484    >;
5485    fn r#set_ip_receive_ttl(&self, mut value: bool) -> Self::SetIpReceiveTtlResponseFut {
5486        fn _decode(
5487            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5488        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult, fidl::Error>
5489        {
5490            let _response = fidl::client::decode_transaction_body::<
5491                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5492                fidl::encoding::DefaultFuchsiaResourceDialect,
5493                0x46f15be0ce0ab82b,
5494            >(_buf?)?;
5495            Ok(_response.map(|x| x))
5496        }
5497        self.client.send_query_and_decode::<
5498            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
5499            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlResult,
5500        >(
5501            (value,),
5502            0x46f15be0ce0ab82b,
5503            fidl::encoding::DynamicFlags::empty(),
5504            _decode,
5505        )
5506    }
5507
5508    type GetIpReceiveTtlResponseFut = fidl::client::QueryResponseFut<
5509        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5510        fidl::encoding::DefaultFuchsiaResourceDialect,
5511    >;
5512    fn r#get_ip_receive_ttl(&self) -> Self::GetIpReceiveTtlResponseFut {
5513        fn _decode(
5514            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5515        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult, fidl::Error>
5516        {
5517            let _response = fidl::client::decode_transaction_body::<
5518                fidl::encoding::ResultType<
5519                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
5520                    fidl_fuchsia_posix::Errno,
5521                >,
5522                fidl::encoding::DefaultFuchsiaResourceDialect,
5523                0x678ddd5a5dfa2eb5,
5524            >(_buf?)?;
5525            Ok(_response.map(|x| x.value))
5526        }
5527        self.client.send_query_and_decode::<
5528            fidl::encoding::EmptyPayload,
5529            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResult,
5530        >(
5531            (),
5532            0x678ddd5a5dfa2eb5,
5533            fidl::encoding::DynamicFlags::empty(),
5534            _decode,
5535        )
5536    }
5537
5538    type SetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5539        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5540        fidl::encoding::DefaultFuchsiaResourceDialect,
5541    >;
5542    fn r#set_ip_multicast_interface(
5543        &self,
5544        mut iface: u64,
5545        mut address: &fidl_fuchsia_net::Ipv4Address,
5546    ) -> Self::SetIpMulticastInterfaceResponseFut {
5547        fn _decode(
5548            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5549        ) -> Result<
5550            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5551            fidl::Error,
5552        > {
5553            let _response = fidl::client::decode_transaction_body::<
5554                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5555                fidl::encoding::DefaultFuchsiaResourceDialect,
5556                0x752fbfa9b12befe,
5557            >(_buf?)?;
5558            Ok(_response.map(|x| x))
5559        }
5560        self.client.send_query_and_decode::<
5561            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest,
5562            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceResult,
5563        >(
5564            (iface, address,),
5565            0x752fbfa9b12befe,
5566            fidl::encoding::DynamicFlags::empty(),
5567            _decode,
5568        )
5569    }
5570
5571    type GetIpMulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5572        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5573        fidl::encoding::DefaultFuchsiaResourceDialect,
5574    >;
5575    fn r#get_ip_multicast_interface(&self) -> Self::GetIpMulticastInterfaceResponseFut {
5576        fn _decode(
5577            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5578        ) -> Result<
5579            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5580            fidl::Error,
5581        > {
5582            let _response = fidl::client::decode_transaction_body::<
5583                fidl::encoding::ResultType<
5584                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
5585                    fidl_fuchsia_posix::Errno,
5586                >,
5587                fidl::encoding::DefaultFuchsiaResourceDialect,
5588                0x320bd14c4df046c4,
5589            >(_buf?)?;
5590            Ok(_response.map(|x| x.value))
5591        }
5592        self.client.send_query_and_decode::<
5593            fidl::encoding::EmptyPayload,
5594            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResult,
5595        >(
5596            (),
5597            0x320bd14c4df046c4,
5598            fidl::encoding::DynamicFlags::empty(),
5599            _decode,
5600        )
5601    }
5602
5603    type SetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5604        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5605        fidl::encoding::DefaultFuchsiaResourceDialect,
5606    >;
5607    fn r#set_ip_multicast_ttl(
5608        &self,
5609        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
5610    ) -> Self::SetIpMulticastTtlResponseFut {
5611        fn _decode(
5612            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5613        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult, fidl::Error>
5614        {
5615            let _response = fidl::client::decode_transaction_body::<
5616                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5617                fidl::encoding::DefaultFuchsiaResourceDialect,
5618                0x63134d53772916a1,
5619            >(_buf?)?;
5620            Ok(_response.map(|x| x))
5621        }
5622        self.client.send_query_and_decode::<
5623            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
5624            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlResult,
5625        >(
5626            (value,),
5627            0x63134d53772916a1,
5628            fidl::encoding::DynamicFlags::empty(),
5629            _decode,
5630        )
5631    }
5632
5633    type GetIpMulticastTtlResponseFut = fidl::client::QueryResponseFut<
5634        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5635        fidl::encoding::DefaultFuchsiaResourceDialect,
5636    >;
5637    fn r#get_ip_multicast_ttl(&self) -> Self::GetIpMulticastTtlResponseFut {
5638        fn _decode(
5639            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5640        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult, fidl::Error>
5641        {
5642            let _response = fidl::client::decode_transaction_body::<
5643                fidl::encoding::ResultType<
5644                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
5645                    fidl_fuchsia_posix::Errno,
5646                >,
5647                fidl::encoding::DefaultFuchsiaResourceDialect,
5648                0x4665cd378f39e1a,
5649            >(_buf?)?;
5650            Ok(_response.map(|x| x.value))
5651        }
5652        self.client.send_query_and_decode::<
5653            fidl::encoding::EmptyPayload,
5654            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResult,
5655        >(
5656            (),
5657            0x4665cd378f39e1a,
5658            fidl::encoding::DynamicFlags::empty(),
5659            _decode,
5660        )
5661    }
5662
5663    type SetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5664        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5665        fidl::encoding::DefaultFuchsiaResourceDialect,
5666    >;
5667    fn r#set_ip_multicast_loopback(
5668        &self,
5669        mut value: bool,
5670    ) -> Self::SetIpMulticastLoopbackResponseFut {
5671        fn _decode(
5672            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5673        ) -> Result<
5674            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5675            fidl::Error,
5676        > {
5677            let _response = fidl::client::decode_transaction_body::<
5678                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5679                fidl::encoding::DefaultFuchsiaResourceDialect,
5680                0x20c55c11f00943ea,
5681            >(_buf?)?;
5682            Ok(_response.map(|x| x))
5683        }
5684        self.client.send_query_and_decode::<
5685            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest,
5686            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackResult,
5687        >(
5688            (value,),
5689            0x20c55c11f00943ea,
5690            fidl::encoding::DynamicFlags::empty(),
5691            _decode,
5692        )
5693    }
5694
5695    type GetIpMulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
5696        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5697        fidl::encoding::DefaultFuchsiaResourceDialect,
5698    >;
5699    fn r#get_ip_multicast_loopback(&self) -> Self::GetIpMulticastLoopbackResponseFut {
5700        fn _decode(
5701            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5702        ) -> Result<
5703            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5704            fidl::Error,
5705        > {
5706            let _response = fidl::client::decode_transaction_body::<
5707                fidl::encoding::ResultType<
5708                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
5709                    fidl_fuchsia_posix::Errno,
5710                >,
5711                fidl::encoding::DefaultFuchsiaResourceDialect,
5712                0x3b6b26ff558298f2,
5713            >(_buf?)?;
5714            Ok(_response.map(|x| x.value))
5715        }
5716        self.client.send_query_and_decode::<
5717            fidl::encoding::EmptyPayload,
5718            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResult,
5719        >(
5720            (),
5721            0x3b6b26ff558298f2,
5722            fidl::encoding::DynamicFlags::empty(),
5723            _decode,
5724        )
5725    }
5726
5727    type AddIpMembershipResponseFut = fidl::client::QueryResponseFut<
5728        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5729        fidl::encoding::DefaultFuchsiaResourceDialect,
5730    >;
5731    fn r#add_ip_membership(
5732        &self,
5733        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5734    ) -> Self::AddIpMembershipResponseFut {
5735        fn _decode(
5736            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5737        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult, fidl::Error>
5738        {
5739            let _response = fidl::client::decode_transaction_body::<
5740                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5741                fidl::encoding::DefaultFuchsiaResourceDialect,
5742                0x76bc7df115a3b4d0,
5743            >(_buf?)?;
5744            Ok(_response.map(|x| x))
5745        }
5746        self.client.send_query_and_decode::<
5747            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
5748            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipResult,
5749        >(
5750            (membership,),
5751            0x76bc7df115a3b4d0,
5752            fidl::encoding::DynamicFlags::empty(),
5753            _decode,
5754        )
5755    }
5756
5757    type DropIpMembershipResponseFut = fidl::client::QueryResponseFut<
5758        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5759        fidl::encoding::DefaultFuchsiaResourceDialect,
5760    >;
5761    fn r#drop_ip_membership(
5762        &self,
5763        mut membership: &fidl_fuchsia_posix_socket::IpMulticastMembership,
5764    ) -> Self::DropIpMembershipResponseFut {
5765        fn _decode(
5766            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5767        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult, fidl::Error>
5768        {
5769            let _response = fidl::client::decode_transaction_body::<
5770                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5771                fidl::encoding::DefaultFuchsiaResourceDialect,
5772                0x2888f3099188d03,
5773            >(_buf?)?;
5774            Ok(_response.map(|x| x))
5775        }
5776        self.client.send_query_and_decode::<
5777            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
5778            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipResult,
5779        >(
5780            (membership,),
5781            0x2888f3099188d03,
5782            fidl::encoding::DynamicFlags::empty(),
5783            _decode,
5784        )
5785    }
5786
5787    type SetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5788        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5789        fidl::encoding::DefaultFuchsiaResourceDialect,
5790    >;
5791    fn r#set_ip_transparent(&self, mut value: bool) -> Self::SetIpTransparentResponseFut {
5792        fn _decode(
5793            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5794        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult, fidl::Error>
5795        {
5796            let _response = fidl::client::decode_transaction_body::<
5797                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5798                fidl::encoding::DefaultFuchsiaResourceDialect,
5799                0x1ae532b0c066e3a0,
5800            >(_buf?)?;
5801            Ok(_response.map(|x| x))
5802        }
5803        self.client.send_query_and_decode::<
5804            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
5805            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentResult,
5806        >(
5807            (value,),
5808            0x1ae532b0c066e3a0,
5809            fidl::encoding::DynamicFlags::empty(),
5810            _decode,
5811        )
5812    }
5813
5814    type GetIpTransparentResponseFut = fidl::client::QueryResponseFut<
5815        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5816        fidl::encoding::DefaultFuchsiaResourceDialect,
5817    >;
5818    fn r#get_ip_transparent(&self) -> Self::GetIpTransparentResponseFut {
5819        fn _decode(
5820            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5821        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult, fidl::Error>
5822        {
5823            let _response = fidl::client::decode_transaction_body::<
5824                fidl::encoding::ResultType<
5825                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
5826                    fidl_fuchsia_posix::Errno,
5827                >,
5828                fidl::encoding::DefaultFuchsiaResourceDialect,
5829                0x51d43695962ebfb5,
5830            >(_buf?)?;
5831            Ok(_response.map(|x| x.value))
5832        }
5833        self.client.send_query_and_decode::<
5834            fidl::encoding::EmptyPayload,
5835            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResult,
5836        >(
5837            (),
5838            0x51d43695962ebfb5,
5839            fidl::encoding::DynamicFlags::empty(),
5840            _decode,
5841        )
5842    }
5843
5844    type SetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5845        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5846        fidl::encoding::DefaultFuchsiaResourceDialect,
5847    >;
5848    fn r#set_ip_receive_original_destination_address(
5849        &self,
5850        mut value: bool,
5851    ) -> Self::SetIpReceiveOriginalDestinationAddressResponseFut {
5852        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5853            let _response = fidl::client::decode_transaction_body::<
5854                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5855                fidl::encoding::DefaultFuchsiaResourceDialect,
5856                0x4722b4ce52f7840,
5857            >(_buf?)?;
5858            Ok(_response.map(|x| x))
5859        }
5860        self.client.send_query_and_decode::<
5861            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest,
5862            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressResult,
5863        >(
5864            (value,),
5865            0x4722b4ce52f7840,
5866            fidl::encoding::DynamicFlags::empty(),
5867            _decode,
5868        )
5869    }
5870
5871    type GetIpReceiveOriginalDestinationAddressResponseFut = fidl::client::QueryResponseFut<
5872        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5873        fidl::encoding::DefaultFuchsiaResourceDialect,
5874    >;
5875    fn r#get_ip_receive_original_destination_address(
5876        &self,
5877    ) -> Self::GetIpReceiveOriginalDestinationAddressResponseFut {
5878        fn _decode(mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult, fidl::Error>{
5879            let _response = fidl::client::decode_transaction_body::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>, fidl::encoding::DefaultFuchsiaResourceDialect, 0x2a0e7dc5d6bfdfe9>(_buf?)?;
5880            Ok(_response.map(|x| x.value))
5881        }
5882        self.client.send_query_and_decode::<
5883            fidl::encoding::EmptyPayload,
5884            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResult,
5885        >(
5886            (),
5887            0x2a0e7dc5d6bfdfe9,
5888            fidl::encoding::DynamicFlags::empty(),
5889            _decode,
5890        )
5891    }
5892
5893    type AddIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5894        fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5895        fidl::encoding::DefaultFuchsiaResourceDialect,
5896    >;
5897    fn r#add_ipv6_membership(
5898        &self,
5899        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5900    ) -> Self::AddIpv6MembershipResponseFut {
5901        fn _decode(
5902            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5903        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult, fidl::Error>
5904        {
5905            let _response = fidl::client::decode_transaction_body::<
5906                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5907                fidl::encoding::DefaultFuchsiaResourceDialect,
5908                0x7c94727acb4ea4b3,
5909            >(_buf?)?;
5910            Ok(_response.map(|x| x))
5911        }
5912        self.client.send_query_and_decode::<
5913            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
5914            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipResult,
5915        >(
5916            (membership,),
5917            0x7c94727acb4ea4b3,
5918            fidl::encoding::DynamicFlags::empty(),
5919            _decode,
5920        )
5921    }
5922
5923    type DropIpv6MembershipResponseFut = fidl::client::QueryResponseFut<
5924        fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5925        fidl::encoding::DefaultFuchsiaResourceDialect,
5926    >;
5927    fn r#drop_ipv6_membership(
5928        &self,
5929        mut membership: &fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
5930    ) -> Self::DropIpv6MembershipResponseFut {
5931        fn _decode(
5932            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5933        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult, fidl::Error>
5934        {
5935            let _response = fidl::client::decode_transaction_body::<
5936                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5937                fidl::encoding::DefaultFuchsiaResourceDialect,
5938                0x42104c70ccaba304,
5939            >(_buf?)?;
5940            Ok(_response.map(|x| x))
5941        }
5942        self.client.send_query_and_decode::<
5943            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
5944            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipResult,
5945        >(
5946            (membership,),
5947            0x42104c70ccaba304,
5948            fidl::encoding::DynamicFlags::empty(),
5949            _decode,
5950        )
5951    }
5952
5953    type SetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5954        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5955        fidl::encoding::DefaultFuchsiaResourceDialect,
5956    >;
5957    fn r#set_ipv6_multicast_interface(
5958        &self,
5959        mut value: u64,
5960    ) -> Self::SetIpv6MulticastInterfaceResponseFut {
5961        fn _decode(
5962            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5963        ) -> Result<
5964            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5965            fidl::Error,
5966        > {
5967            let _response = fidl::client::decode_transaction_body::<
5968                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
5969                fidl::encoding::DefaultFuchsiaResourceDialect,
5970                0x135f76db3774ab3b,
5971            >(_buf?)?;
5972            Ok(_response.map(|x| x))
5973        }
5974        self.client.send_query_and_decode::<
5975            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest,
5976            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceResult,
5977        >(
5978            (value,),
5979            0x135f76db3774ab3b,
5980            fidl::encoding::DynamicFlags::empty(),
5981            _decode,
5982        )
5983    }
5984
5985    type GetIpv6MulticastInterfaceResponseFut = fidl::client::QueryResponseFut<
5986        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5987        fidl::encoding::DefaultFuchsiaResourceDialect,
5988    >;
5989    fn r#get_ipv6_multicast_interface(&self) -> Self::GetIpv6MulticastInterfaceResponseFut {
5990        fn _decode(
5991            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
5992        ) -> Result<
5993            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
5994            fidl::Error,
5995        > {
5996            let _response = fidl::client::decode_transaction_body::<
5997                fidl::encoding::ResultType<
5998                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
5999                    fidl_fuchsia_posix::Errno,
6000                >,
6001                fidl::encoding::DefaultFuchsiaResourceDialect,
6002                0x1f26fcdd348f1882,
6003            >(_buf?)?;
6004            Ok(_response.map(|x| x.value))
6005        }
6006        self.client.send_query_and_decode::<
6007            fidl::encoding::EmptyPayload,
6008            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResult,
6009        >(
6010            (),
6011            0x1f26fcdd348f1882,
6012            fidl::encoding::DynamicFlags::empty(),
6013            _decode,
6014        )
6015    }
6016
6017    type SetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6018        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6019        fidl::encoding::DefaultFuchsiaResourceDialect,
6020    >;
6021    fn r#set_ipv6_unicast_hops(
6022        &self,
6023        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6024    ) -> Self::SetIpv6UnicastHopsResponseFut {
6025        fn _decode(
6026            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6027        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult, fidl::Error>
6028        {
6029            let _response = fidl::client::decode_transaction_body::<
6030                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6031                fidl::encoding::DefaultFuchsiaResourceDialect,
6032                0x157d51e98f462859,
6033            >(_buf?)?;
6034            Ok(_response.map(|x| x))
6035        }
6036        self.client.send_query_and_decode::<
6037            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
6038            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsResult,
6039        >(
6040            (value,),
6041            0x157d51e98f462859,
6042            fidl::encoding::DynamicFlags::empty(),
6043            _decode,
6044        )
6045    }
6046
6047    type GetIpv6UnicastHopsResponseFut = fidl::client::QueryResponseFut<
6048        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6049        fidl::encoding::DefaultFuchsiaResourceDialect,
6050    >;
6051    fn r#get_ipv6_unicast_hops(&self) -> Self::GetIpv6UnicastHopsResponseFut {
6052        fn _decode(
6053            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6054        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult, fidl::Error>
6055        {
6056            let _response = fidl::client::decode_transaction_body::<
6057                fidl::encoding::ResultType<
6058                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
6059                    fidl_fuchsia_posix::Errno,
6060                >,
6061                fidl::encoding::DefaultFuchsiaResourceDialect,
6062                0x21f4641cad8bd8d2,
6063            >(_buf?)?;
6064            Ok(_response.map(|x| x.value))
6065        }
6066        self.client.send_query_and_decode::<
6067            fidl::encoding::EmptyPayload,
6068            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResult,
6069        >(
6070            (),
6071            0x21f4641cad8bd8d2,
6072            fidl::encoding::DynamicFlags::empty(),
6073            _decode,
6074        )
6075    }
6076
6077    type SetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6078        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6079        fidl::encoding::DefaultFuchsiaResourceDialect,
6080    >;
6081    fn r#set_ipv6_receive_hop_limit(
6082        &self,
6083        mut value: bool,
6084    ) -> Self::SetIpv6ReceiveHopLimitResponseFut {
6085        fn _decode(
6086            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6087        ) -> Result<
6088            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6089            fidl::Error,
6090        > {
6091            let _response = fidl::client::decode_transaction_body::<
6092                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6093                fidl::encoding::DefaultFuchsiaResourceDialect,
6094                0x5c24808ed2e84a1e,
6095            >(_buf?)?;
6096            Ok(_response.map(|x| x))
6097        }
6098        self.client.send_query_and_decode::<
6099            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest,
6100            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitResult,
6101        >(
6102            (value,),
6103            0x5c24808ed2e84a1e,
6104            fidl::encoding::DynamicFlags::empty(),
6105            _decode,
6106        )
6107    }
6108
6109    type GetIpv6ReceiveHopLimitResponseFut = fidl::client::QueryResponseFut<
6110        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6111        fidl::encoding::DefaultFuchsiaResourceDialect,
6112    >;
6113    fn r#get_ipv6_receive_hop_limit(&self) -> Self::GetIpv6ReceiveHopLimitResponseFut {
6114        fn _decode(
6115            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6116        ) -> Result<
6117            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6118            fidl::Error,
6119        > {
6120            let _response = fidl::client::decode_transaction_body::<
6121                fidl::encoding::ResultType<
6122                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
6123                    fidl_fuchsia_posix::Errno,
6124                >,
6125                fidl::encoding::DefaultFuchsiaResourceDialect,
6126                0x341e06689885b4c0,
6127            >(_buf?)?;
6128            Ok(_response.map(|x| x.value))
6129        }
6130        self.client.send_query_and_decode::<
6131            fidl::encoding::EmptyPayload,
6132            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResult,
6133        >(
6134            (),
6135            0x341e06689885b4c0,
6136            fidl::encoding::DynamicFlags::empty(),
6137            _decode,
6138        )
6139    }
6140
6141    type SetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6142        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6143        fidl::encoding::DefaultFuchsiaResourceDialect,
6144    >;
6145    fn r#set_ipv6_multicast_hops(
6146        &self,
6147        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6148    ) -> Self::SetIpv6MulticastHopsResponseFut {
6149        fn _decode(
6150            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6151        ) -> Result<
6152            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6153            fidl::Error,
6154        > {
6155            let _response = fidl::client::decode_transaction_body::<
6156                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6157                fidl::encoding::DefaultFuchsiaResourceDialect,
6158                0x25b9cd4d181f82c1,
6159            >(_buf?)?;
6160            Ok(_response.map(|x| x))
6161        }
6162        self.client.send_query_and_decode::<
6163            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
6164            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsResult,
6165        >(
6166            (value,),
6167            0x25b9cd4d181f82c1,
6168            fidl::encoding::DynamicFlags::empty(),
6169            _decode,
6170        )
6171    }
6172
6173    type GetIpv6MulticastHopsResponseFut = fidl::client::QueryResponseFut<
6174        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6175        fidl::encoding::DefaultFuchsiaResourceDialect,
6176    >;
6177    fn r#get_ipv6_multicast_hops(&self) -> Self::GetIpv6MulticastHopsResponseFut {
6178        fn _decode(
6179            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6180        ) -> Result<
6181            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6182            fidl::Error,
6183        > {
6184            let _response = fidl::client::decode_transaction_body::<
6185                fidl::encoding::ResultType<
6186                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
6187                    fidl_fuchsia_posix::Errno,
6188                >,
6189                fidl::encoding::DefaultFuchsiaResourceDialect,
6190                0x52916948a365012a,
6191            >(_buf?)?;
6192            Ok(_response.map(|x| x.value))
6193        }
6194        self.client.send_query_and_decode::<
6195            fidl::encoding::EmptyPayload,
6196            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResult,
6197        >(
6198            (),
6199            0x52916948a365012a,
6200            fidl::encoding::DynamicFlags::empty(),
6201            _decode,
6202        )
6203    }
6204
6205    type SetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6206        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6207        fidl::encoding::DefaultFuchsiaResourceDialect,
6208    >;
6209    fn r#set_ipv6_multicast_loopback(
6210        &self,
6211        mut value: bool,
6212    ) -> Self::SetIpv6MulticastLoopbackResponseFut {
6213        fn _decode(
6214            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6215        ) -> Result<
6216            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6217            fidl::Error,
6218        > {
6219            let _response = fidl::client::decode_transaction_body::<
6220                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6221                fidl::encoding::DefaultFuchsiaResourceDialect,
6222                0x55701c409ff41b40,
6223            >(_buf?)?;
6224            Ok(_response.map(|x| x))
6225        }
6226        self.client.send_query_and_decode::<
6227            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest,
6228            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackResult,
6229        >(
6230            (value,),
6231            0x55701c409ff41b40,
6232            fidl::encoding::DynamicFlags::empty(),
6233            _decode,
6234        )
6235    }
6236
6237    type GetIpv6MulticastLoopbackResponseFut = fidl::client::QueryResponseFut<
6238        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6239        fidl::encoding::DefaultFuchsiaResourceDialect,
6240    >;
6241    fn r#get_ipv6_multicast_loopback(&self) -> Self::GetIpv6MulticastLoopbackResponseFut {
6242        fn _decode(
6243            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6244        ) -> Result<
6245            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6246            fidl::Error,
6247        > {
6248            let _response = fidl::client::decode_transaction_body::<
6249                fidl::encoding::ResultType<
6250                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
6251                    fidl_fuchsia_posix::Errno,
6252                >,
6253                fidl::encoding::DefaultFuchsiaResourceDialect,
6254                0x4415b701fde319c3,
6255            >(_buf?)?;
6256            Ok(_response.map(|x| x.value))
6257        }
6258        self.client.send_query_and_decode::<
6259            fidl::encoding::EmptyPayload,
6260            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResult,
6261        >(
6262            (),
6263            0x4415b701fde319c3,
6264            fidl::encoding::DynamicFlags::empty(),
6265            _decode,
6266        )
6267    }
6268
6269    type SetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6270        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6271        fidl::encoding::DefaultFuchsiaResourceDialect,
6272    >;
6273    fn r#set_ipv6_only(&self, mut value: bool) -> Self::SetIpv6OnlyResponseFut {
6274        fn _decode(
6275            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6276        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult, fidl::Error>
6277        {
6278            let _response = fidl::client::decode_transaction_body::<
6279                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6280                fidl::encoding::DefaultFuchsiaResourceDialect,
6281                0x4873f1364758cbba,
6282            >(_buf?)?;
6283            Ok(_response.map(|x| x))
6284        }
6285        self.client.send_query_and_decode::<
6286            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
6287            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyResult,
6288        >(
6289            (value,),
6290            0x4873f1364758cbba,
6291            fidl::encoding::DynamicFlags::empty(),
6292            _decode,
6293        )
6294    }
6295
6296    type GetIpv6OnlyResponseFut = fidl::client::QueryResponseFut<
6297        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6298        fidl::encoding::DefaultFuchsiaResourceDialect,
6299    >;
6300    fn r#get_ipv6_only(&self) -> Self::GetIpv6OnlyResponseFut {
6301        fn _decode(
6302            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6303        ) -> Result<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult, fidl::Error>
6304        {
6305            let _response = fidl::client::decode_transaction_body::<
6306                fidl::encoding::ResultType<
6307                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
6308                    fidl_fuchsia_posix::Errno,
6309                >,
6310                fidl::encoding::DefaultFuchsiaResourceDialect,
6311                0x4aa3340a1a26b89c,
6312            >(_buf?)?;
6313            Ok(_response.map(|x| x.value))
6314        }
6315        self.client.send_query_and_decode::<
6316            fidl::encoding::EmptyPayload,
6317            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResult,
6318        >(
6319            (),
6320            0x4aa3340a1a26b89c,
6321            fidl::encoding::DynamicFlags::empty(),
6322            _decode,
6323        )
6324    }
6325
6326    type SetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6327        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6328        fidl::encoding::DefaultFuchsiaResourceDialect,
6329    >;
6330    fn r#set_ipv6_receive_traffic_class(
6331        &self,
6332        mut value: bool,
6333    ) -> Self::SetIpv6ReceiveTrafficClassResponseFut {
6334        fn _decode(
6335            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6336        ) -> Result<
6337            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6338            fidl::Error,
6339        > {
6340            let _response = fidl::client::decode_transaction_body::<
6341                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6342                fidl::encoding::DefaultFuchsiaResourceDialect,
6343                0x58f07c8788d099a0,
6344            >(_buf?)?;
6345            Ok(_response.map(|x| x))
6346        }
6347        self.client.send_query_and_decode::<
6348            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest,
6349            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassResult,
6350        >(
6351            (value,),
6352            0x58f07c8788d099a0,
6353            fidl::encoding::DynamicFlags::empty(),
6354            _decode,
6355        )
6356    }
6357
6358    type GetIpv6ReceiveTrafficClassResponseFut = fidl::client::QueryResponseFut<
6359        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6360        fidl::encoding::DefaultFuchsiaResourceDialect,
6361    >;
6362    fn r#get_ipv6_receive_traffic_class(&self) -> Self::GetIpv6ReceiveTrafficClassResponseFut {
6363        fn _decode(
6364            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6365        ) -> Result<
6366            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6367            fidl::Error,
6368        > {
6369            let _response = fidl::client::decode_transaction_body::<
6370                fidl::encoding::ResultType<
6371                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
6372                    fidl_fuchsia_posix::Errno,
6373                >,
6374                fidl::encoding::DefaultFuchsiaResourceDialect,
6375                0x2e334df1da553ffa,
6376            >(_buf?)?;
6377            Ok(_response.map(|x| x.value))
6378        }
6379        self.client.send_query_and_decode::<
6380            fidl::encoding::EmptyPayload,
6381            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResult,
6382        >(
6383            (),
6384            0x2e334df1da553ffa,
6385            fidl::encoding::DynamicFlags::empty(),
6386            _decode,
6387        )
6388    }
6389
6390    type SetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6391        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6392        fidl::encoding::DefaultFuchsiaResourceDialect,
6393    >;
6394    fn r#set_ipv6_traffic_class(
6395        &self,
6396        mut value: &fidl_fuchsia_posix_socket::OptionalUint8,
6397    ) -> Self::SetIpv6TrafficClassResponseFut {
6398        fn _decode(
6399            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6400        ) -> Result<
6401            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6402            fidl::Error,
6403        > {
6404            let _response = fidl::client::decode_transaction_body::<
6405                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6406                fidl::encoding::DefaultFuchsiaResourceDialect,
6407                0x6af077800c5a0b4f,
6408            >(_buf?)?;
6409            Ok(_response.map(|x| x))
6410        }
6411        self.client.send_query_and_decode::<
6412            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
6413            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassResult,
6414        >(
6415            (value,),
6416            0x6af077800c5a0b4f,
6417            fidl::encoding::DynamicFlags::empty(),
6418            _decode,
6419        )
6420    }
6421
6422    type GetIpv6TrafficClassResponseFut = fidl::client::QueryResponseFut<
6423        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6424        fidl::encoding::DefaultFuchsiaResourceDialect,
6425    >;
6426    fn r#get_ipv6_traffic_class(&self) -> Self::GetIpv6TrafficClassResponseFut {
6427        fn _decode(
6428            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6429        ) -> Result<
6430            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6431            fidl::Error,
6432        > {
6433            let _response = fidl::client::decode_transaction_body::<
6434                fidl::encoding::ResultType<
6435                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
6436                    fidl_fuchsia_posix::Errno,
6437                >,
6438                fidl::encoding::DefaultFuchsiaResourceDialect,
6439                0x6baf6eed8fc2f04,
6440            >(_buf?)?;
6441            Ok(_response.map(|x| x.value))
6442        }
6443        self.client.send_query_and_decode::<
6444            fidl::encoding::EmptyPayload,
6445            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResult,
6446        >(
6447            (),
6448            0x6baf6eed8fc2f04,
6449            fidl::encoding::DynamicFlags::empty(),
6450            _decode,
6451        )
6452    }
6453
6454    type SetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6455        fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6456        fidl::encoding::DefaultFuchsiaResourceDialect,
6457    >;
6458    fn r#set_ipv6_receive_packet_info(
6459        &self,
6460        mut value: bool,
6461    ) -> Self::SetIpv6ReceivePacketInfoResponseFut {
6462        fn _decode(
6463            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6464        ) -> Result<
6465            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6466            fidl::Error,
6467        > {
6468            let _response = fidl::client::decode_transaction_body::<
6469                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6470                fidl::encoding::DefaultFuchsiaResourceDialect,
6471                0x19259775b1a92768,
6472            >(_buf?)?;
6473            Ok(_response.map(|x| x))
6474        }
6475        self.client.send_query_and_decode::<
6476            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest,
6477            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoResult,
6478        >(
6479            (value,),
6480            0x19259775b1a92768,
6481            fidl::encoding::DynamicFlags::empty(),
6482            _decode,
6483        )
6484    }
6485
6486    type GetIpv6ReceivePacketInfoResponseFut = fidl::client::QueryResponseFut<
6487        fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6488        fidl::encoding::DefaultFuchsiaResourceDialect,
6489    >;
6490    fn r#get_ipv6_receive_packet_info(&self) -> Self::GetIpv6ReceivePacketInfoResponseFut {
6491        fn _decode(
6492            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6493        ) -> Result<
6494            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6495            fidl::Error,
6496        > {
6497            let _response = fidl::client::decode_transaction_body::<
6498                fidl::encoding::ResultType<
6499                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
6500                    fidl_fuchsia_posix::Errno,
6501                >,
6502                fidl::encoding::DefaultFuchsiaResourceDialect,
6503                0x7acd4a2775baec75,
6504            >(_buf?)?;
6505            Ok(_response.map(|x| x.value))
6506        }
6507        self.client.send_query_and_decode::<
6508            fidl::encoding::EmptyPayload,
6509            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResult,
6510        >(
6511            (),
6512            0x7acd4a2775baec75,
6513            fidl::encoding::DynamicFlags::empty(),
6514            _decode,
6515        )
6516    }
6517
6518    type GetOriginalDestinationResponseFut = fidl::client::QueryResponseFut<
6519        fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6520        fidl::encoding::DefaultFuchsiaResourceDialect,
6521    >;
6522    fn r#get_original_destination(&self) -> Self::GetOriginalDestinationResponseFut {
6523        fn _decode(
6524            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6525        ) -> Result<
6526            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6527            fidl::Error,
6528        > {
6529            let _response = fidl::client::decode_transaction_body::<
6530                fidl::encoding::ResultType<
6531                    fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
6532                    fidl_fuchsia_posix::Errno,
6533                >,
6534                fidl::encoding::DefaultFuchsiaResourceDialect,
6535                0x38bf28f0dafdbac0,
6536            >(_buf?)?;
6537            Ok(_response.map(|x| x.value))
6538        }
6539        self.client.send_query_and_decode::<
6540            fidl::encoding::EmptyPayload,
6541            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResult,
6542        >(
6543            (),
6544            0x38bf28f0dafdbac0,
6545            fidl::encoding::DynamicFlags::empty(),
6546            _decode,
6547        )
6548    }
6549
6550    type DescribeResponseFut = fidl::client::QueryResponseFut<
6551        SocketDescribeResponse,
6552        fidl::encoding::DefaultFuchsiaResourceDialect,
6553    >;
6554    fn r#describe(&self) -> Self::DescribeResponseFut {
6555        fn _decode(
6556            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6557        ) -> Result<SocketDescribeResponse, fidl::Error> {
6558            let _response = fidl::client::decode_transaction_body::<
6559                SocketDescribeResponse,
6560                fidl::encoding::DefaultFuchsiaResourceDialect,
6561                0x335706eccf54a135,
6562            >(_buf?)?;
6563            Ok(_response)
6564        }
6565        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketDescribeResponse>(
6566            (),
6567            0x335706eccf54a135,
6568            fidl::encoding::DynamicFlags::empty(),
6569            _decode,
6570        )
6571    }
6572
6573    type RecvMsgResponseFut = fidl::client::QueryResponseFut<
6574        SocketRecvMsgResult,
6575        fidl::encoding::DefaultFuchsiaResourceDialect,
6576    >;
6577    fn r#recv_msg(
6578        &self,
6579        mut want_addr: bool,
6580        mut data_len: u32,
6581        mut want_control: bool,
6582        mut flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
6583    ) -> Self::RecvMsgResponseFut {
6584        fn _decode(
6585            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6586        ) -> Result<SocketRecvMsgResult, fidl::Error> {
6587            let _response = fidl::client::decode_transaction_body::<
6588                fidl::encoding::ResultType<SocketRecvMsgResponse, fidl_fuchsia_posix::Errno>,
6589                fidl::encoding::DefaultFuchsiaResourceDialect,
6590                0x1dfb695351d3aa1d,
6591            >(_buf?)?;
6592            Ok(_response.map(|x| (x.addr, x.data, x.control, x.truncated)))
6593        }
6594        self.client.send_query_and_decode::<SocketRecvMsgRequest, SocketRecvMsgResult>(
6595            (want_addr, data_len, want_control, flags),
6596            0x1dfb695351d3aa1d,
6597            fidl::encoding::DynamicFlags::empty(),
6598            _decode,
6599        )
6600    }
6601
6602    type SendMsgResponseFut = fidl::client::QueryResponseFut<
6603        SocketSendMsgResult,
6604        fidl::encoding::DefaultFuchsiaResourceDialect,
6605    >;
6606    fn r#send_msg(
6607        &self,
6608        mut addr: Option<&fidl_fuchsia_net::SocketAddress>,
6609        mut data: &[u8],
6610        mut control: &fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
6611        mut flags: fidl_fuchsia_posix_socket::SendMsgFlags,
6612    ) -> Self::SendMsgResponseFut {
6613        fn _decode(
6614            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6615        ) -> Result<SocketSendMsgResult, fidl::Error> {
6616            let _response = fidl::client::decode_transaction_body::<
6617                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6618                fidl::encoding::DefaultFuchsiaResourceDialect,
6619                0x2cf1eac9a7fc8958,
6620            >(_buf?)?;
6621            Ok(_response.map(|x| x))
6622        }
6623        self.client.send_query_and_decode::<SocketSendMsgRequest, SocketSendMsgResult>(
6624            (addr, data, control, flags),
6625            0x2cf1eac9a7fc8958,
6626            fidl::encoding::DynamicFlags::empty(),
6627            _decode,
6628        )
6629    }
6630
6631    type GetInfoResponseFut = fidl::client::QueryResponseFut<
6632        SocketGetInfoResult,
6633        fidl::encoding::DefaultFuchsiaResourceDialect,
6634    >;
6635    fn r#get_info(&self) -> Self::GetInfoResponseFut {
6636        fn _decode(
6637            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6638        ) -> Result<SocketGetInfoResult, fidl::Error> {
6639            let _response = fidl::client::decode_transaction_body::<
6640                fidl::encoding::ResultType<SocketGetInfoResponse, fidl_fuchsia_posix::Errno>,
6641                fidl::encoding::DefaultFuchsiaResourceDialect,
6642                0x39676f75aec339ba,
6643            >(_buf?)?;
6644            Ok(_response.map(|x| (x.domain, x.proto)))
6645        }
6646        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetInfoResult>(
6647            (),
6648            0x39676f75aec339ba,
6649            fidl::encoding::DynamicFlags::empty(),
6650            _decode,
6651        )
6652    }
6653
6654    type SetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6655        SocketSetIpHeaderIncludedResult,
6656        fidl::encoding::DefaultFuchsiaResourceDialect,
6657    >;
6658    fn r#set_ip_header_included(&self, mut value: bool) -> Self::SetIpHeaderIncludedResponseFut {
6659        fn _decode(
6660            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6661        ) -> Result<SocketSetIpHeaderIncludedResult, fidl::Error> {
6662            let _response = fidl::client::decode_transaction_body::<
6663                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6664                fidl::encoding::DefaultFuchsiaResourceDialect,
6665                0x5d06a606d95e8f3,
6666            >(_buf?)?;
6667            Ok(_response.map(|x| x))
6668        }
6669        self.client.send_query_and_decode::<
6670            SocketSetIpHeaderIncludedRequest,
6671            SocketSetIpHeaderIncludedResult,
6672        >(
6673            (value,),
6674            0x5d06a606d95e8f3,
6675            fidl::encoding::DynamicFlags::empty(),
6676            _decode,
6677        )
6678    }
6679
6680    type GetIpHeaderIncludedResponseFut = fidl::client::QueryResponseFut<
6681        SocketGetIpHeaderIncludedResult,
6682        fidl::encoding::DefaultFuchsiaResourceDialect,
6683    >;
6684    fn r#get_ip_header_included(&self) -> Self::GetIpHeaderIncludedResponseFut {
6685        fn _decode(
6686            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6687        ) -> Result<SocketGetIpHeaderIncludedResult, fidl::Error> {
6688            let _response = fidl::client::decode_transaction_body::<
6689                fidl::encoding::ResultType<
6690                    SocketGetIpHeaderIncludedResponse,
6691                    fidl_fuchsia_posix::Errno,
6692                >,
6693                fidl::encoding::DefaultFuchsiaResourceDialect,
6694                0x76125ad1f4d175f6,
6695            >(_buf?)?;
6696            Ok(_response.map(|x| x.value))
6697        }
6698        self.client
6699            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpHeaderIncludedResult>(
6700                (),
6701                0x76125ad1f4d175f6,
6702                fidl::encoding::DynamicFlags::empty(),
6703                _decode,
6704            )
6705    }
6706
6707    type SetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6708        SocketSetIcmpv6FilterResult,
6709        fidl::encoding::DefaultFuchsiaResourceDialect,
6710    >;
6711    fn r#set_icmpv6_filter(&self, mut filter: &Icmpv6Filter) -> Self::SetIcmpv6FilterResponseFut {
6712        fn _decode(
6713            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6714        ) -> Result<SocketSetIcmpv6FilterResult, fidl::Error> {
6715            let _response = fidl::client::decode_transaction_body::<
6716                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6717                fidl::encoding::DefaultFuchsiaResourceDialect,
6718                0x4ebea92a43ae68a9,
6719            >(_buf?)?;
6720            Ok(_response.map(|x| x))
6721        }
6722        self.client
6723            .send_query_and_decode::<SocketSetIcmpv6FilterRequest, SocketSetIcmpv6FilterResult>(
6724                (filter,),
6725                0x4ebea92a43ae68a9,
6726                fidl::encoding::DynamicFlags::empty(),
6727                _decode,
6728            )
6729    }
6730
6731    type GetIcmpv6FilterResponseFut = fidl::client::QueryResponseFut<
6732        SocketGetIcmpv6FilterResult,
6733        fidl::encoding::DefaultFuchsiaResourceDialect,
6734    >;
6735    fn r#get_icmpv6_filter(&self) -> Self::GetIcmpv6FilterResponseFut {
6736        fn _decode(
6737            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6738        ) -> Result<SocketGetIcmpv6FilterResult, fidl::Error> {
6739            let _response = fidl::client::decode_transaction_body::<
6740                fidl::encoding::ResultType<
6741                    SocketGetIcmpv6FilterResponse,
6742                    fidl_fuchsia_posix::Errno,
6743                >,
6744                fidl::encoding::DefaultFuchsiaResourceDialect,
6745                0x43bd4f3bc0970ace,
6746            >(_buf?)?;
6747            Ok(_response.map(|x| x.filter))
6748        }
6749        self.client
6750            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIcmpv6FilterResult>(
6751                (),
6752                0x43bd4f3bc0970ace,
6753                fidl::encoding::DynamicFlags::empty(),
6754                _decode,
6755            )
6756    }
6757
6758    type SetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6759        SocketSetIpv6ChecksumResult,
6760        fidl::encoding::DefaultFuchsiaResourceDialect,
6761    >;
6762    fn r#set_ipv6_checksum(
6763        &self,
6764        mut config: &Ipv6ChecksumConfiguration,
6765    ) -> Self::SetIpv6ChecksumResponseFut {
6766        fn _decode(
6767            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6768        ) -> Result<SocketSetIpv6ChecksumResult, fidl::Error> {
6769            let _response = fidl::client::decode_transaction_body::<
6770                fidl::encoding::ResultType<fidl::encoding::EmptyStruct, fidl_fuchsia_posix::Errno>,
6771                fidl::encoding::DefaultFuchsiaResourceDialect,
6772                0x18b7809577199cb4,
6773            >(_buf?)?;
6774            Ok(_response.map(|x| x))
6775        }
6776        self.client
6777            .send_query_and_decode::<SocketSetIpv6ChecksumRequest, SocketSetIpv6ChecksumResult>(
6778                (config,),
6779                0x18b7809577199cb4,
6780                fidl::encoding::DynamicFlags::empty(),
6781                _decode,
6782            )
6783    }
6784
6785    type GetIpv6ChecksumResponseFut = fidl::client::QueryResponseFut<
6786        SocketGetIpv6ChecksumResult,
6787        fidl::encoding::DefaultFuchsiaResourceDialect,
6788    >;
6789    fn r#get_ipv6_checksum(&self) -> Self::GetIpv6ChecksumResponseFut {
6790        fn _decode(
6791            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
6792        ) -> Result<SocketGetIpv6ChecksumResult, fidl::Error> {
6793            let _response = fidl::client::decode_transaction_body::<
6794                fidl::encoding::ResultType<
6795                    SocketGetIpv6ChecksumResponse,
6796                    fidl_fuchsia_posix::Errno,
6797                >,
6798                fidl::encoding::DefaultFuchsiaResourceDialect,
6799                0x1847bf5b2d263dd,
6800            >(_buf?)?;
6801            Ok(_response.map(|x| x.config))
6802        }
6803        self.client
6804            .send_query_and_decode::<fidl::encoding::EmptyPayload, SocketGetIpv6ChecksumResult>(
6805                (),
6806                0x1847bf5b2d263dd,
6807                fidl::encoding::DynamicFlags::empty(),
6808                _decode,
6809            )
6810    }
6811}
6812
6813pub struct SocketEventStream {
6814    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
6815}
6816
6817impl std::marker::Unpin for SocketEventStream {}
6818
6819impl futures::stream::FusedStream for SocketEventStream {
6820    fn is_terminated(&self) -> bool {
6821        self.event_receiver.is_terminated()
6822    }
6823}
6824
6825impl futures::Stream for SocketEventStream {
6826    type Item = Result<SocketEvent, fidl::Error>;
6827
6828    fn poll_next(
6829        mut self: std::pin::Pin<&mut Self>,
6830        cx: &mut std::task::Context<'_>,
6831    ) -> std::task::Poll<Option<Self::Item>> {
6832        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
6833            &mut self.event_receiver,
6834            cx
6835        )?) {
6836            Some(buf) => std::task::Poll::Ready(Some(SocketEvent::decode(buf))),
6837            None => std::task::Poll::Ready(None),
6838        }
6839    }
6840}
6841
6842#[derive(Debug)]
6843pub enum SocketEvent {}
6844
6845impl SocketEvent {
6846    /// Decodes a message buffer as a [`SocketEvent`].
6847    fn decode(
6848        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
6849    ) -> Result<SocketEvent, fidl::Error> {
6850        let (bytes, _handles) = buf.split_mut();
6851        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6852        debug_assert_eq!(tx_header.tx_id, 0);
6853        match tx_header.ordinal {
6854            _ => Err(fidl::Error::UnknownOrdinal {
6855                ordinal: tx_header.ordinal,
6856                protocol_name: <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
6857            }),
6858        }
6859    }
6860}
6861
6862/// A Stream of incoming requests for fuchsia.posix.socket.raw/Socket.
6863pub struct SocketRequestStream {
6864    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6865    is_terminated: bool,
6866}
6867
6868impl std::marker::Unpin for SocketRequestStream {}
6869
6870impl futures::stream::FusedStream for SocketRequestStream {
6871    fn is_terminated(&self) -> bool {
6872        self.is_terminated
6873    }
6874}
6875
6876impl fidl::endpoints::RequestStream for SocketRequestStream {
6877    type Protocol = SocketMarker;
6878    type ControlHandle = SocketControlHandle;
6879
6880    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
6881        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
6882    }
6883
6884    fn control_handle(&self) -> Self::ControlHandle {
6885        SocketControlHandle { inner: self.inner.clone() }
6886    }
6887
6888    fn into_inner(
6889        self,
6890    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
6891    {
6892        (self.inner, self.is_terminated)
6893    }
6894
6895    fn from_inner(
6896        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
6897        is_terminated: bool,
6898    ) -> Self {
6899        Self { inner, is_terminated }
6900    }
6901}
6902
6903impl futures::Stream for SocketRequestStream {
6904    type Item = Result<SocketRequest, fidl::Error>;
6905
6906    fn poll_next(
6907        mut self: std::pin::Pin<&mut Self>,
6908        cx: &mut std::task::Context<'_>,
6909    ) -> std::task::Poll<Option<Self::Item>> {
6910        let this = &mut *self;
6911        if this.inner.check_shutdown(cx) {
6912            this.is_terminated = true;
6913            return std::task::Poll::Ready(None);
6914        }
6915        if this.is_terminated {
6916            panic!("polled SocketRequestStream after completion");
6917        }
6918        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
6919            |bytes, handles| {
6920                match this.inner.channel().read_etc(cx, bytes, handles) {
6921                    std::task::Poll::Ready(Ok(())) => {}
6922                    std::task::Poll::Pending => return std::task::Poll::Pending,
6923                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
6924                        this.is_terminated = true;
6925                        return std::task::Poll::Ready(None);
6926                    }
6927                    std::task::Poll::Ready(Err(e)) => {
6928                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
6929                            e.into(),
6930                        ))));
6931                    }
6932                }
6933
6934                // A message has been received from the channel
6935                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
6936
6937                std::task::Poll::Ready(Some(match header.ordinal {
6938                    0x20d8a7aba2168a79 => {
6939                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
6940                        let mut req = fidl::new_empty!(
6941                            fidl_fuchsia_unknown::CloneableCloneRequest,
6942                            fidl::encoding::DefaultFuchsiaResourceDialect
6943                        );
6944                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_unknown::CloneableCloneRequest>(&header, _body_bytes, handles, &mut req)?;
6945                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6946                        Ok(SocketRequest::Clone { request: req.request, control_handle })
6947                    }
6948                    0x5ac5d459ad7f657e => {
6949                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6950                        let mut req = fidl::new_empty!(
6951                            fidl::encoding::EmptyPayload,
6952                            fidl::encoding::DefaultFuchsiaResourceDialect
6953                        );
6954                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6955                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6956                        Ok(SocketRequest::Close {
6957                            responder: SocketCloseResponder {
6958                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6959                                tx_id: header.tx_id,
6960                            },
6961                        })
6962                    }
6963                    0x2658edee9decfc06 => {
6964                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6965                        let mut req = fidl::new_empty!(
6966                            fidl::encoding::EmptyPayload,
6967                            fidl::encoding::DefaultFuchsiaResourceDialect
6968                        );
6969                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
6970                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6971                        Ok(SocketRequest::Query {
6972                            responder: SocketQueryResponder {
6973                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6974                                tx_id: header.tx_id,
6975                            },
6976                        })
6977                    }
6978                    0x1fd74ee8b9a4a876 => {
6979                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6980                        let mut req = fidl::new_empty!(
6981                            fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest,
6982                            fidl::encoding::DefaultFuchsiaResourceDialect
6983                        );
6984                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReuseAddressRequest>(&header, _body_bytes, handles, &mut req)?;
6985                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
6986                        Ok(SocketRequest::SetReuseAddress {
6987                            value: req.value,
6988
6989                            responder: SocketSetReuseAddressResponder {
6990                                control_handle: std::mem::ManuallyDrop::new(control_handle),
6991                                tx_id: header.tx_id,
6992                            },
6993                        })
6994                    }
6995                    0x67b7206b8d1bc0a5 => {
6996                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
6997                        let mut req = fidl::new_empty!(
6998                            fidl::encoding::EmptyPayload,
6999                            fidl::encoding::DefaultFuchsiaResourceDialect
7000                        );
7001                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7002                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7003                        Ok(SocketRequest::GetReuseAddress {
7004                            responder: SocketGetReuseAddressResponder {
7005                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7006                                tx_id: header.tx_id,
7007                            },
7008                        })
7009                    }
7010                    0x5aad39b33e5f6ebb => {
7011                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7012                        let mut req = fidl::new_empty!(
7013                            fidl::encoding::EmptyPayload,
7014                            fidl::encoding::DefaultFuchsiaResourceDialect
7015                        );
7016                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7017                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7018                        Ok(SocketRequest::GetError {
7019                            responder: SocketGetErrorResponder {
7020                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7021                                tx_id: header.tx_id,
7022                            },
7023                        })
7024                    }
7025                    0x6023e081ce3cd947 => {
7026                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7027                        let mut req = fidl::new_empty!(
7028                            fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest,
7029                            fidl::encoding::DefaultFuchsiaResourceDialect
7030                        );
7031                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBroadcastRequest>(&header, _body_bytes, handles, &mut req)?;
7032                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7033                        Ok(SocketRequest::SetBroadcast {
7034                            value: req.value,
7035
7036                            responder: SocketSetBroadcastResponder {
7037                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7038                                tx_id: header.tx_id,
7039                            },
7040                        })
7041                    }
7042                    0x68796fc556f9780d => {
7043                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7044                        let mut req = fidl::new_empty!(
7045                            fidl::encoding::EmptyPayload,
7046                            fidl::encoding::DefaultFuchsiaResourceDialect
7047                        );
7048                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7049                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7050                        Ok(SocketRequest::GetBroadcast {
7051                            responder: SocketGetBroadcastResponder {
7052                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7053                                tx_id: header.tx_id,
7054                            },
7055                        })
7056                    }
7057                    0x756eac32d73a7a70 => {
7058                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7059                        let mut req = fidl::new_empty!(
7060                            fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest,
7061                            fidl::encoding::DefaultFuchsiaResourceDialect
7062                        );
7063                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetSendBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7064                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7065                        Ok(SocketRequest::SetSendBuffer {
7066                            value_bytes: req.value_bytes,
7067
7068                            responder: SocketSetSendBufferResponder {
7069                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7070                                tx_id: header.tx_id,
7071                            },
7072                        })
7073                    }
7074                    0x78a52fd9c7b2410b => {
7075                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7076                        let mut req = fidl::new_empty!(
7077                            fidl::encoding::EmptyPayload,
7078                            fidl::encoding::DefaultFuchsiaResourceDialect
7079                        );
7080                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7081                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7082                        Ok(SocketRequest::GetSendBuffer {
7083                            responder: SocketGetSendBufferResponder {
7084                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7085                                tx_id: header.tx_id,
7086                            },
7087                        })
7088                    }
7089                    0x6b0cf2f1919c7001 => {
7090                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7091                        let mut req = fidl::new_empty!(
7092                            fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest,
7093                            fidl::encoding::DefaultFuchsiaResourceDialect
7094                        );
7095                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReceiveBufferRequest>(&header, _body_bytes, handles, &mut req)?;
7096                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7097                        Ok(SocketRequest::SetReceiveBuffer {
7098                            value_bytes: req.value_bytes,
7099
7100                            responder: SocketSetReceiveBufferResponder {
7101                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7102                                tx_id: header.tx_id,
7103                            },
7104                        })
7105                    }
7106                    0x14c1a4b64f709e5c => {
7107                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7108                        let mut req = fidl::new_empty!(
7109                            fidl::encoding::EmptyPayload,
7110                            fidl::encoding::DefaultFuchsiaResourceDialect
7111                        );
7112                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7113                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7114                        Ok(SocketRequest::GetReceiveBuffer {
7115                            responder: SocketGetReceiveBufferResponder {
7116                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7117                                tx_id: header.tx_id,
7118                            },
7119                        })
7120                    }
7121                    0x572df8f0b920d2c7 => {
7122                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7123                        let mut req = fidl::new_empty!(
7124                            fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest,
7125                            fidl::encoding::DefaultFuchsiaResourceDialect
7126                        );
7127                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetKeepAliveRequest>(&header, _body_bytes, handles, &mut req)?;
7128                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7129                        Ok(SocketRequest::SetKeepAlive {
7130                            value: req.value,
7131
7132                            responder: SocketSetKeepAliveResponder {
7133                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7134                                tx_id: header.tx_id,
7135                            },
7136                        })
7137                    }
7138                    0x2dd29d3215f2c9d2 => {
7139                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7140                        let mut req = fidl::new_empty!(
7141                            fidl::encoding::EmptyPayload,
7142                            fidl::encoding::DefaultFuchsiaResourceDialect
7143                        );
7144                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7145                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7146                        Ok(SocketRequest::GetKeepAlive {
7147                            responder: SocketGetKeepAliveResponder {
7148                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7149                                tx_id: header.tx_id,
7150                            },
7151                        })
7152                    }
7153                    0x3ecb49968bee439 => {
7154                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7155                        let mut req = fidl::new_empty!(
7156                            fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest,
7157                            fidl::encoding::DefaultFuchsiaResourceDialect
7158                        );
7159                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetOutOfBandInlineRequest>(&header, _body_bytes, handles, &mut req)?;
7160                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7161                        Ok(SocketRequest::SetOutOfBandInline {
7162                            value: req.value,
7163
7164                            responder: SocketSetOutOfBandInlineResponder {
7165                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7166                                tx_id: header.tx_id,
7167                            },
7168                        })
7169                    }
7170                    0x348c1ab3aeca1745 => {
7171                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7172                        let mut req = fidl::new_empty!(
7173                            fidl::encoding::EmptyPayload,
7174                            fidl::encoding::DefaultFuchsiaResourceDialect
7175                        );
7176                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7177                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7178                        Ok(SocketRequest::GetOutOfBandInline {
7179                            responder: SocketGetOutOfBandInlineResponder {
7180                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7181                                tx_id: header.tx_id,
7182                            },
7183                        })
7184                    }
7185                    0x6bbf00c53a4c78c2 => {
7186                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7187                        let mut req = fidl::new_empty!(
7188                            fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest,
7189                            fidl::encoding::DefaultFuchsiaResourceDialect
7190                        );
7191                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetNoCheckRequest>(&header, _body_bytes, handles, &mut req)?;
7192                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7193                        Ok(SocketRequest::SetNoCheck {
7194                            value: req.value,
7195
7196                            responder: SocketSetNoCheckResponder {
7197                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7198                                tx_id: header.tx_id,
7199                            },
7200                        })
7201                    }
7202                    0x2cd4249286417694 => {
7203                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7204                        let mut req = fidl::new_empty!(
7205                            fidl::encoding::EmptyPayload,
7206                            fidl::encoding::DefaultFuchsiaResourceDialect
7207                        );
7208                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7209                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7210                        Ok(SocketRequest::GetNoCheck {
7211                            responder: SocketGetNoCheckResponder {
7212                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7213                                tx_id: header.tx_id,
7214                            },
7215                        })
7216                    }
7217                    0x45386351246e998e => {
7218                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7219                        let mut req = fidl::new_empty!(
7220                            fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest,
7221                            fidl::encoding::DefaultFuchsiaResourceDialect
7222                        );
7223                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetLingerRequest>(&header, _body_bytes, handles, &mut req)?;
7224                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7225                        Ok(SocketRequest::SetLinger {
7226                            linger: req.linger,
7227                            length_secs: req.length_secs,
7228
7229                            responder: SocketSetLingerResponder {
7230                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7231                                tx_id: header.tx_id,
7232                            },
7233                        })
7234                    }
7235                    0x48eb20fc5ccb0e45 => {
7236                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7237                        let mut req = fidl::new_empty!(
7238                            fidl::encoding::EmptyPayload,
7239                            fidl::encoding::DefaultFuchsiaResourceDialect
7240                        );
7241                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7242                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7243                        Ok(SocketRequest::GetLinger {
7244                            responder: SocketGetLingerResponder {
7245                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7246                                tx_id: header.tx_id,
7247                            },
7248                        })
7249                    }
7250                    0x547dc9cc0455189e => {
7251                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7252                        let mut req = fidl::new_empty!(
7253                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest,
7254                            fidl::encoding::DefaultFuchsiaResourceDialect
7255                        );
7256                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortRequest>(&header, _body_bytes, handles, &mut req)?;
7257                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7258                        Ok(SocketRequest::SetReusePort {
7259                            value: req.value,
7260
7261                            responder: SocketSetReusePortResponder {
7262                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7263                                tx_id: header.tx_id,
7264                            },
7265                        })
7266                    }
7267                    0x24dd3e5cb36d9ccb => {
7268                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7269                        let mut req = fidl::new_empty!(
7270                            fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest,
7271                            fidl::encoding::DefaultFuchsiaResourceDialect
7272                        );
7273                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetReusePortDeprecatedRequest>(&header, _body_bytes, handles, &mut req)?;
7274                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7275                        Ok(SocketRequest::SetReusePortDeprecated {
7276                            value: req.value,
7277
7278                            responder: SocketSetReusePortDeprecatedResponder {
7279                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7280                                tx_id: header.tx_id,
7281                            },
7282                        })
7283                    }
7284                    0x7a112c1ab54ff828 => {
7285                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7286                        let mut req = fidl::new_empty!(
7287                            fidl::encoding::EmptyPayload,
7288                            fidl::encoding::DefaultFuchsiaResourceDialect
7289                        );
7290                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7291                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7292                        Ok(SocketRequest::GetReusePort {
7293                            responder: SocketGetReusePortResponder {
7294                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7295                                tx_id: header.tx_id,
7296                            },
7297                        })
7298                    }
7299                    0x67ce6db6c2ec8966 => {
7300                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7301                        let mut req = fidl::new_empty!(
7302                            fidl::encoding::EmptyPayload,
7303                            fidl::encoding::DefaultFuchsiaResourceDialect
7304                        );
7305                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7306                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7307                        Ok(SocketRequest::GetAcceptConn {
7308                            responder: SocketGetAcceptConnResponder {
7309                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7310                                tx_id: header.tx_id,
7311                            },
7312                        })
7313                    }
7314                    0x2118b483f28aafc4 => {
7315                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7316                        let mut req = fidl::new_empty!(
7317                            fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest,
7318                            fidl::encoding::DefaultFuchsiaResourceDialect
7319                        );
7320                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
7321                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7322                        Ok(SocketRequest::SetBindToDevice {
7323                            value: req.value,
7324
7325                            responder: SocketSetBindToDeviceResponder {
7326                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7327                                tx_id: header.tx_id,
7328                            },
7329                        })
7330                    }
7331                    0x1ab1fbf0ef7906c8 => {
7332                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7333                        let mut req = fidl::new_empty!(
7334                            fidl::encoding::EmptyPayload,
7335                            fidl::encoding::DefaultFuchsiaResourceDialect
7336                        );
7337                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7338                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7339                        Ok(SocketRequest::GetBindToDevice {
7340                            responder: SocketGetBindToDeviceResponder {
7341                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7342                                tx_id: header.tx_id,
7343                            },
7344                        })
7345                    }
7346                    0x6e387a0def00821 => {
7347                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7348                        let mut req = fidl::new_empty!(
7349                            fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest,
7350                            fidl::encoding::DefaultFuchsiaResourceDialect
7351                        );
7352                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetBindToInterfaceIndexRequest>(&header, _body_bytes, handles, &mut req)?;
7353                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7354                        Ok(SocketRequest::SetBindToInterfaceIndex {
7355                            value: req.value,
7356
7357                            responder: SocketSetBindToInterfaceIndexResponder {
7358                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7359                                tx_id: header.tx_id,
7360                            },
7361                        })
7362                    }
7363                    0x59c31dd3e3078295 => {
7364                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7365                        let mut req = fidl::new_empty!(
7366                            fidl::encoding::EmptyPayload,
7367                            fidl::encoding::DefaultFuchsiaResourceDialect
7368                        );
7369                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7370                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7371                        Ok(SocketRequest::GetBindToInterfaceIndex {
7372                            responder: SocketGetBindToInterfaceIndexResponder {
7373                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7374                                tx_id: header.tx_id,
7375                            },
7376                        })
7377                    }
7378                    0x285d6516c263d839 => {
7379                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7380                        let mut req = fidl::new_empty!(
7381                            fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest,
7382                            fidl::encoding::DefaultFuchsiaResourceDialect
7383                        );
7384                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetTimestampRequest>(&header, _body_bytes, handles, &mut req)?;
7385                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7386                        Ok(SocketRequest::SetTimestamp {
7387                            value: req.value,
7388
7389                            responder: SocketSetTimestampResponder {
7390                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7391                                tx_id: header.tx_id,
7392                            },
7393                        })
7394                    }
7395                    0x49f2fffbbcc2bd27 => {
7396                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7397                        let mut req = fidl::new_empty!(
7398                            fidl::encoding::EmptyPayload,
7399                            fidl::encoding::DefaultFuchsiaResourceDialect
7400                        );
7401                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7402                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7403                        Ok(SocketRequest::GetTimestamp {
7404                            responder: SocketGetTimestampResponder {
7405                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7406                                tx_id: header.tx_id,
7407                            },
7408                        })
7409                    }
7410                    0x6ead6de09f653236 => {
7411                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7412                        let mut req = fidl::new_empty!(
7413                            fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest,
7414                            fidl::encoding::DefaultFuchsiaResourceDialect
7415                        );
7416                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketSetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7417                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7418                        Ok(SocketRequest::SetMark {
7419                            domain: req.domain,
7420                            mark: req.mark,
7421
7422                            responder: SocketSetMarkResponder {
7423                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7424                                tx_id: header.tx_id,
7425                            },
7426                        })
7427                    }
7428                    0x57a2752c61d93d47 => {
7429                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7430                        let mut req = fidl::new_empty!(
7431                            fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest,
7432                            fidl::encoding::DefaultFuchsiaResourceDialect
7433                        );
7434                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseSocketGetMarkRequest>(&header, _body_bytes, handles, &mut req)?;
7435                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7436                        Ok(SocketRequest::GetMark {
7437                            domain: req.domain,
7438
7439                            responder: SocketGetMarkResponder {
7440                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7441                                tx_id: header.tx_id,
7442                            },
7443                        })
7444                    }
7445                    0x2c2f47fd8f924e52 => {
7446                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7447                        let mut req = fidl::new_empty!(
7448                            fidl::encoding::EmptyPayload,
7449                            fidl::encoding::DefaultFuchsiaResourceDialect
7450                        );
7451                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7452                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7453                        Ok(SocketRequest::GetCookie {
7454                            responder: SocketGetCookieResponder {
7455                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7456                                tx_id: header.tx_id,
7457                            },
7458                        })
7459                    }
7460                    0x4bc6400ae92125d => {
7461                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7462                        let mut req = fidl::new_empty!(
7463                            fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest,
7464                            fidl::encoding::DefaultFuchsiaResourceDialect
7465                        );
7466                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketBindRequest>(&header, _body_bytes, handles, &mut req)?;
7467                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7468                        Ok(SocketRequest::Bind {
7469                            addr: req.addr,
7470
7471                            responder: SocketBindResponder {
7472                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7473                                tx_id: header.tx_id,
7474                            },
7475                        })
7476                    }
7477                    0x5f05f19bfdd38871 => {
7478                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7479                        let mut req = fidl::new_empty!(
7480                            fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest,
7481                            fidl::encoding::DefaultFuchsiaResourceDialect
7482                        );
7483                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketConnectRequest>(&header, _body_bytes, handles, &mut req)?;
7484                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7485                        Ok(SocketRequest::Connect {
7486                            addr: req.addr,
7487
7488                            responder: SocketConnectResponder {
7489                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7490                                tx_id: header.tx_id,
7491                            },
7492                        })
7493                    }
7494                    0x74e63b91f7b29b2 => {
7495                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7496                        let mut req = fidl::new_empty!(
7497                            fidl::encoding::EmptyPayload,
7498                            fidl::encoding::DefaultFuchsiaResourceDialect
7499                        );
7500                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7501                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7502                        Ok(SocketRequest::Disconnect {
7503                            responder: SocketDisconnectResponder {
7504                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7505                                tx_id: header.tx_id,
7506                            },
7507                        })
7508                    }
7509                    0x475f23f84a1a4f85 => {
7510                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7511                        let mut req = fidl::new_empty!(
7512                            fidl::encoding::EmptyPayload,
7513                            fidl::encoding::DefaultFuchsiaResourceDialect
7514                        );
7515                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7516                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7517                        Ok(SocketRequest::GetSockName {
7518                            responder: SocketGetSockNameResponder {
7519                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7520                                tx_id: header.tx_id,
7521                            },
7522                        })
7523                    }
7524                    0x1ffecf4bd5b6432e => {
7525                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7526                        let mut req = fidl::new_empty!(
7527                            fidl::encoding::EmptyPayload,
7528                            fidl::encoding::DefaultFuchsiaResourceDialect
7529                        );
7530                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7531                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7532                        Ok(SocketRequest::GetPeerName {
7533                            responder: SocketGetPeerNameResponder {
7534                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7535                                tx_id: header.tx_id,
7536                            },
7537                        })
7538                    }
7539                    0x247f38b6db68c336 => {
7540                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7541                        let mut req = fidl::new_empty!(
7542                            fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest,
7543                            fidl::encoding::DefaultFuchsiaResourceDialect
7544                        );
7545                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketShutdownRequest>(&header, _body_bytes, handles, &mut req)?;
7546                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7547                        Ok(SocketRequest::Shutdown {
7548                            mode: req.mode,
7549
7550                            responder: SocketShutdownResponder {
7551                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7552                                tx_id: header.tx_id,
7553                            },
7554                        })
7555                    }
7556                    0x995c600475b6d46 => {
7557                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7558                        let mut req = fidl::new_empty!(
7559                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest,
7560                            fidl::encoding::DefaultFuchsiaResourceDialect
7561                        );
7562                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7563                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7564                        Ok(SocketRequest::SetIpTypeOfService {
7565                            value: req.value,
7566
7567                            responder: SocketSetIpTypeOfServiceResponder {
7568                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7569                                tx_id: header.tx_id,
7570                            },
7571                        })
7572                    }
7573                    0x3814a04259f75fcb => {
7574                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7575                        let mut req = fidl::new_empty!(
7576                            fidl::encoding::EmptyPayload,
7577                            fidl::encoding::DefaultFuchsiaResourceDialect
7578                        );
7579                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7580                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7581                        Ok(SocketRequest::GetIpTypeOfService {
7582                            responder: SocketGetIpTypeOfServiceResponder {
7583                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7584                                tx_id: header.tx_id,
7585                            },
7586                        })
7587                    }
7588                    0x29e2424b433ae1ef => {
7589                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7590                        let mut req = fidl::new_empty!(
7591                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest,
7592                            fidl::encoding::DefaultFuchsiaResourceDialect
7593                        );
7594                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7595                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7596                        Ok(SocketRequest::SetIpTtl {
7597                            value: req.value,
7598
7599                            responder: SocketSetIpTtlResponder {
7600                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7601                                tx_id: header.tx_id,
7602                            },
7603                        })
7604                    }
7605                    0x47e47fa1f24da471 => {
7606                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7607                        let mut req = fidl::new_empty!(
7608                            fidl::encoding::EmptyPayload,
7609                            fidl::encoding::DefaultFuchsiaResourceDialect
7610                        );
7611                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7612                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7613                        Ok(SocketRequest::GetIpTtl {
7614                            responder: SocketGetIpTtlResponder {
7615                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7616                                tx_id: header.tx_id,
7617                            },
7618                        })
7619                    }
7620                    0x392d16bee20c0e16 => {
7621                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7622                        let mut req = fidl::new_empty!(
7623                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest,
7624                            fidl::encoding::DefaultFuchsiaResourceDialect
7625                        );
7626                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpPacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
7627                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7628                        Ok(SocketRequest::SetIpPacketInfo {
7629                            value: req.value,
7630
7631                            responder: SocketSetIpPacketInfoResponder {
7632                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7633                                tx_id: header.tx_id,
7634                            },
7635                        })
7636                    }
7637                    0x54b505f242280740 => {
7638                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7639                        let mut req = fidl::new_empty!(
7640                            fidl::encoding::EmptyPayload,
7641                            fidl::encoding::DefaultFuchsiaResourceDialect
7642                        );
7643                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7644                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7645                        Ok(SocketRequest::GetIpPacketInfo {
7646                            responder: SocketGetIpPacketInfoResponder {
7647                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7648                                tx_id: header.tx_id,
7649                            },
7650                        })
7651                    }
7652                    0x6c4f6714995f84ef => {
7653                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7654                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7655                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTypeOfServiceRequest>(&header, _body_bytes, handles, &mut req)?;
7656                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7657                        Ok(SocketRequest::SetIpReceiveTypeOfService {
7658                            value: req.value,
7659
7660                            responder: SocketSetIpReceiveTypeOfServiceResponder {
7661                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7662                                tx_id: header.tx_id,
7663                            },
7664                        })
7665                    }
7666                    0x4158ba7dc2795960 => {
7667                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7668                        let mut req = fidl::new_empty!(
7669                            fidl::encoding::EmptyPayload,
7670                            fidl::encoding::DefaultFuchsiaResourceDialect
7671                        );
7672                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7673                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7674                        Ok(SocketRequest::GetIpReceiveTypeOfService {
7675                            responder: SocketGetIpReceiveTypeOfServiceResponder {
7676                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7677                                tx_id: header.tx_id,
7678                            },
7679                        })
7680                    }
7681                    0x46f15be0ce0ab82b => {
7682                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7683                        let mut req = fidl::new_empty!(
7684                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest,
7685                            fidl::encoding::DefaultFuchsiaResourceDialect
7686                        );
7687                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7688                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7689                        Ok(SocketRequest::SetIpReceiveTtl {
7690                            value: req.value,
7691
7692                            responder: SocketSetIpReceiveTtlResponder {
7693                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7694                                tx_id: header.tx_id,
7695                            },
7696                        })
7697                    }
7698                    0x678ddd5a5dfa2eb5 => {
7699                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7700                        let mut req = fidl::new_empty!(
7701                            fidl::encoding::EmptyPayload,
7702                            fidl::encoding::DefaultFuchsiaResourceDialect
7703                        );
7704                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7705                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7706                        Ok(SocketRequest::GetIpReceiveTtl {
7707                            responder: SocketGetIpReceiveTtlResponder {
7708                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7709                                tx_id: header.tx_id,
7710                            },
7711                        })
7712                    }
7713                    0x752fbfa9b12befe => {
7714                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7715                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7716                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7717                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7718                        Ok(SocketRequest::SetIpMulticastInterface {
7719                            iface: req.iface,
7720                            address: req.address,
7721
7722                            responder: SocketSetIpMulticastInterfaceResponder {
7723                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7724                                tx_id: header.tx_id,
7725                            },
7726                        })
7727                    }
7728                    0x320bd14c4df046c4 => {
7729                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7730                        let mut req = fidl::new_empty!(
7731                            fidl::encoding::EmptyPayload,
7732                            fidl::encoding::DefaultFuchsiaResourceDialect
7733                        );
7734                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7735                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7736                        Ok(SocketRequest::GetIpMulticastInterface {
7737                            responder: SocketGetIpMulticastInterfaceResponder {
7738                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7739                                tx_id: header.tx_id,
7740                            },
7741                        })
7742                    }
7743                    0x63134d53772916a1 => {
7744                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7745                        let mut req = fidl::new_empty!(
7746                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest,
7747                            fidl::encoding::DefaultFuchsiaResourceDialect
7748                        );
7749                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastTtlRequest>(&header, _body_bytes, handles, &mut req)?;
7750                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7751                        Ok(SocketRequest::SetIpMulticastTtl {
7752                            value: req.value,
7753
7754                            responder: SocketSetIpMulticastTtlResponder {
7755                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7756                                tx_id: header.tx_id,
7757                            },
7758                        })
7759                    }
7760                    0x4665cd378f39e1a => {
7761                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7762                        let mut req = fidl::new_empty!(
7763                            fidl::encoding::EmptyPayload,
7764                            fidl::encoding::DefaultFuchsiaResourceDialect
7765                        );
7766                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7767                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7768                        Ok(SocketRequest::GetIpMulticastTtl {
7769                            responder: SocketGetIpMulticastTtlResponder {
7770                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7771                                tx_id: header.tx_id,
7772                            },
7773                        })
7774                    }
7775                    0x20c55c11f00943ea => {
7776                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7777                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7778                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpMulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
7779                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7780                        Ok(SocketRequest::SetIpMulticastLoopback {
7781                            value: req.value,
7782
7783                            responder: SocketSetIpMulticastLoopbackResponder {
7784                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7785                                tx_id: header.tx_id,
7786                            },
7787                        })
7788                    }
7789                    0x3b6b26ff558298f2 => {
7790                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7791                        let mut req = fidl::new_empty!(
7792                            fidl::encoding::EmptyPayload,
7793                            fidl::encoding::DefaultFuchsiaResourceDialect
7794                        );
7795                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7796                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7797                        Ok(SocketRequest::GetIpMulticastLoopback {
7798                            responder: SocketGetIpMulticastLoopbackResponder {
7799                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7800                                tx_id: header.tx_id,
7801                            },
7802                        })
7803                    }
7804                    0x76bc7df115a3b4d0 => {
7805                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7806                        let mut req = fidl::new_empty!(
7807                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest,
7808                            fidl::encoding::DefaultFuchsiaResourceDialect
7809                        );
7810                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7811                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7812                        Ok(SocketRequest::AddIpMembership {
7813                            membership: req.membership,
7814
7815                            responder: SocketAddIpMembershipResponder {
7816                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7817                                tx_id: header.tx_id,
7818                            },
7819                        })
7820                    }
7821                    0x2888f3099188d03 => {
7822                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7823                        let mut req = fidl::new_empty!(
7824                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest,
7825                            fidl::encoding::DefaultFuchsiaResourceDialect
7826                        );
7827                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpMembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7828                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7829                        Ok(SocketRequest::DropIpMembership {
7830                            membership: req.membership,
7831
7832                            responder: SocketDropIpMembershipResponder {
7833                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7834                                tx_id: header.tx_id,
7835                            },
7836                        })
7837                    }
7838                    0x1ae532b0c066e3a0 => {
7839                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7840                        let mut req = fidl::new_empty!(
7841                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest,
7842                            fidl::encoding::DefaultFuchsiaResourceDialect
7843                        );
7844                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpTransparentRequest>(&header, _body_bytes, handles, &mut req)?;
7845                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7846                        Ok(SocketRequest::SetIpTransparent {
7847                            value: req.value,
7848
7849                            responder: SocketSetIpTransparentResponder {
7850                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7851                                tx_id: header.tx_id,
7852                            },
7853                        })
7854                    }
7855                    0x51d43695962ebfb5 => {
7856                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7857                        let mut req = fidl::new_empty!(
7858                            fidl::encoding::EmptyPayload,
7859                            fidl::encoding::DefaultFuchsiaResourceDialect
7860                        );
7861                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7862                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7863                        Ok(SocketRequest::GetIpTransparent {
7864                            responder: SocketGetIpTransparentResponder {
7865                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7866                                tx_id: header.tx_id,
7867                            },
7868                        })
7869                    }
7870                    0x4722b4ce52f7840 => {
7871                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7872                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7873                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpReceiveOriginalDestinationAddressRequest>(&header, _body_bytes, handles, &mut req)?;
7874                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7875                        Ok(SocketRequest::SetIpReceiveOriginalDestinationAddress {
7876                            value: req.value,
7877
7878                            responder: SocketSetIpReceiveOriginalDestinationAddressResponder {
7879                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7880                                tx_id: header.tx_id,
7881                            },
7882                        })
7883                    }
7884                    0x2a0e7dc5d6bfdfe9 => {
7885                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7886                        let mut req = fidl::new_empty!(
7887                            fidl::encoding::EmptyPayload,
7888                            fidl::encoding::DefaultFuchsiaResourceDialect
7889                        );
7890                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7891                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7892                        Ok(SocketRequest::GetIpReceiveOriginalDestinationAddress {
7893                            responder: SocketGetIpReceiveOriginalDestinationAddressResponder {
7894                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7895                                tx_id: header.tx_id,
7896                            },
7897                        })
7898                    }
7899                    0x7c94727acb4ea4b3 => {
7900                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7901                        let mut req = fidl::new_empty!(
7902                            fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest,
7903                            fidl::encoding::DefaultFuchsiaResourceDialect
7904                        );
7905                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketAddIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7906                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7907                        Ok(SocketRequest::AddIpv6Membership {
7908                            membership: req.membership,
7909
7910                            responder: SocketAddIpv6MembershipResponder {
7911                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7912                                tx_id: header.tx_id,
7913                            },
7914                        })
7915                    }
7916                    0x42104c70ccaba304 => {
7917                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7918                        let mut req = fidl::new_empty!(
7919                            fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest,
7920                            fidl::encoding::DefaultFuchsiaResourceDialect
7921                        );
7922                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketDropIpv6MembershipRequest>(&header, _body_bytes, handles, &mut req)?;
7923                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7924                        Ok(SocketRequest::DropIpv6Membership {
7925                            membership: req.membership,
7926
7927                            responder: SocketDropIpv6MembershipResponder {
7928                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7929                                tx_id: header.tx_id,
7930                            },
7931                        })
7932                    }
7933                    0x135f76db3774ab3b => {
7934                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7935                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7936                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastInterfaceRequest>(&header, _body_bytes, handles, &mut req)?;
7937                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7938                        Ok(SocketRequest::SetIpv6MulticastInterface {
7939                            value: req.value,
7940
7941                            responder: SocketSetIpv6MulticastInterfaceResponder {
7942                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7943                                tx_id: header.tx_id,
7944                            },
7945                        })
7946                    }
7947                    0x1f26fcdd348f1882 => {
7948                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7949                        let mut req = fidl::new_empty!(
7950                            fidl::encoding::EmptyPayload,
7951                            fidl::encoding::DefaultFuchsiaResourceDialect
7952                        );
7953                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7954                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7955                        Ok(SocketRequest::GetIpv6MulticastInterface {
7956                            responder: SocketGetIpv6MulticastInterfaceResponder {
7957                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7958                                tx_id: header.tx_id,
7959                            },
7960                        })
7961                    }
7962                    0x157d51e98f462859 => {
7963                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7964                        let mut req = fidl::new_empty!(
7965                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest,
7966                            fidl::encoding::DefaultFuchsiaResourceDialect
7967                        );
7968                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6UnicastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
7969                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7970                        Ok(SocketRequest::SetIpv6UnicastHops {
7971                            value: req.value,
7972
7973                            responder: SocketSetIpv6UnicastHopsResponder {
7974                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7975                                tx_id: header.tx_id,
7976                            },
7977                        })
7978                    }
7979                    0x21f4641cad8bd8d2 => {
7980                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7981                        let mut req = fidl::new_empty!(
7982                            fidl::encoding::EmptyPayload,
7983                            fidl::encoding::DefaultFuchsiaResourceDialect
7984                        );
7985                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
7986                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7987                        Ok(SocketRequest::GetIpv6UnicastHops {
7988                            responder: SocketGetIpv6UnicastHopsResponder {
7989                                control_handle: std::mem::ManuallyDrop::new(control_handle),
7990                                tx_id: header.tx_id,
7991                            },
7992                        })
7993                    }
7994                    0x5c24808ed2e84a1e => {
7995                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
7996                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
7997                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveHopLimitRequest>(&header, _body_bytes, handles, &mut req)?;
7998                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
7999                        Ok(SocketRequest::SetIpv6ReceiveHopLimit {
8000                            value: req.value,
8001
8002                            responder: SocketSetIpv6ReceiveHopLimitResponder {
8003                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8004                                tx_id: header.tx_id,
8005                            },
8006                        })
8007                    }
8008                    0x341e06689885b4c0 => {
8009                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8010                        let mut req = fidl::new_empty!(
8011                            fidl::encoding::EmptyPayload,
8012                            fidl::encoding::DefaultFuchsiaResourceDialect
8013                        );
8014                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8015                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8016                        Ok(SocketRequest::GetIpv6ReceiveHopLimit {
8017                            responder: SocketGetIpv6ReceiveHopLimitResponder {
8018                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8019                                tx_id: header.tx_id,
8020                            },
8021                        })
8022                    }
8023                    0x25b9cd4d181f82c1 => {
8024                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8025                        let mut req = fidl::new_empty!(
8026                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest,
8027                            fidl::encoding::DefaultFuchsiaResourceDialect
8028                        );
8029                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastHopsRequest>(&header, _body_bytes, handles, &mut req)?;
8030                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8031                        Ok(SocketRequest::SetIpv6MulticastHops {
8032                            value: req.value,
8033
8034                            responder: SocketSetIpv6MulticastHopsResponder {
8035                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8036                                tx_id: header.tx_id,
8037                            },
8038                        })
8039                    }
8040                    0x52916948a365012a => {
8041                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8042                        let mut req = fidl::new_empty!(
8043                            fidl::encoding::EmptyPayload,
8044                            fidl::encoding::DefaultFuchsiaResourceDialect
8045                        );
8046                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8047                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8048                        Ok(SocketRequest::GetIpv6MulticastHops {
8049                            responder: SocketGetIpv6MulticastHopsResponder {
8050                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8051                                tx_id: header.tx_id,
8052                            },
8053                        })
8054                    }
8055                    0x55701c409ff41b40 => {
8056                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8057                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8058                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6MulticastLoopbackRequest>(&header, _body_bytes, handles, &mut req)?;
8059                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8060                        Ok(SocketRequest::SetIpv6MulticastLoopback {
8061                            value: req.value,
8062
8063                            responder: SocketSetIpv6MulticastLoopbackResponder {
8064                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8065                                tx_id: header.tx_id,
8066                            },
8067                        })
8068                    }
8069                    0x4415b701fde319c3 => {
8070                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8071                        let mut req = fidl::new_empty!(
8072                            fidl::encoding::EmptyPayload,
8073                            fidl::encoding::DefaultFuchsiaResourceDialect
8074                        );
8075                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8076                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8077                        Ok(SocketRequest::GetIpv6MulticastLoopback {
8078                            responder: SocketGetIpv6MulticastLoopbackResponder {
8079                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8080                                tx_id: header.tx_id,
8081                            },
8082                        })
8083                    }
8084                    0x4873f1364758cbba => {
8085                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8086                        let mut req = fidl::new_empty!(
8087                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest,
8088                            fidl::encoding::DefaultFuchsiaResourceDialect
8089                        );
8090                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6OnlyRequest>(&header, _body_bytes, handles, &mut req)?;
8091                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8092                        Ok(SocketRequest::SetIpv6Only {
8093                            value: req.value,
8094
8095                            responder: SocketSetIpv6OnlyResponder {
8096                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8097                                tx_id: header.tx_id,
8098                            },
8099                        })
8100                    }
8101                    0x4aa3340a1a26b89c => {
8102                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8103                        let mut req = fidl::new_empty!(
8104                            fidl::encoding::EmptyPayload,
8105                            fidl::encoding::DefaultFuchsiaResourceDialect
8106                        );
8107                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8108                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8109                        Ok(SocketRequest::GetIpv6Only {
8110                            responder: SocketGetIpv6OnlyResponder {
8111                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8112                                tx_id: header.tx_id,
8113                            },
8114                        })
8115                    }
8116                    0x58f07c8788d099a0 => {
8117                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8118                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8119                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceiveTrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8120                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8121                        Ok(SocketRequest::SetIpv6ReceiveTrafficClass {
8122                            value: req.value,
8123
8124                            responder: SocketSetIpv6ReceiveTrafficClassResponder {
8125                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8126                                tx_id: header.tx_id,
8127                            },
8128                        })
8129                    }
8130                    0x2e334df1da553ffa => {
8131                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8132                        let mut req = fidl::new_empty!(
8133                            fidl::encoding::EmptyPayload,
8134                            fidl::encoding::DefaultFuchsiaResourceDialect
8135                        );
8136                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8137                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8138                        Ok(SocketRequest::GetIpv6ReceiveTrafficClass {
8139                            responder: SocketGetIpv6ReceiveTrafficClassResponder {
8140                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8141                                tx_id: header.tx_id,
8142                            },
8143                        })
8144                    }
8145                    0x6af077800c5a0b4f => {
8146                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8147                        let mut req = fidl::new_empty!(
8148                            fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest,
8149                            fidl::encoding::DefaultFuchsiaResourceDialect
8150                        );
8151                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6TrafficClassRequest>(&header, _body_bytes, handles, &mut req)?;
8152                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8153                        Ok(SocketRequest::SetIpv6TrafficClass {
8154                            value: req.value,
8155
8156                            responder: SocketSetIpv6TrafficClassResponder {
8157                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8158                                tx_id: header.tx_id,
8159                            },
8160                        })
8161                    }
8162                    0x6baf6eed8fc2f04 => {
8163                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8164                        let mut req = fidl::new_empty!(
8165                            fidl::encoding::EmptyPayload,
8166                            fidl::encoding::DefaultFuchsiaResourceDialect
8167                        );
8168                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8169                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8170                        Ok(SocketRequest::GetIpv6TrafficClass {
8171                            responder: SocketGetIpv6TrafficClassResponder {
8172                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8173                                tx_id: header.tx_id,
8174                            },
8175                        })
8176                    }
8177                    0x19259775b1a92768 => {
8178                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8179                        let mut req = fidl::new_empty!(fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
8180                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl_fuchsia_posix_socket::BaseNetworkSocketSetIpv6ReceivePacketInfoRequest>(&header, _body_bytes, handles, &mut req)?;
8181                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8182                        Ok(SocketRequest::SetIpv6ReceivePacketInfo {
8183                            value: req.value,
8184
8185                            responder: SocketSetIpv6ReceivePacketInfoResponder {
8186                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8187                                tx_id: header.tx_id,
8188                            },
8189                        })
8190                    }
8191                    0x7acd4a2775baec75 => {
8192                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8193                        let mut req = fidl::new_empty!(
8194                            fidl::encoding::EmptyPayload,
8195                            fidl::encoding::DefaultFuchsiaResourceDialect
8196                        );
8197                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8198                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8199                        Ok(SocketRequest::GetIpv6ReceivePacketInfo {
8200                            responder: SocketGetIpv6ReceivePacketInfoResponder {
8201                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8202                                tx_id: header.tx_id,
8203                            },
8204                        })
8205                    }
8206                    0x38bf28f0dafdbac0 => {
8207                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8208                        let mut req = fidl::new_empty!(
8209                            fidl::encoding::EmptyPayload,
8210                            fidl::encoding::DefaultFuchsiaResourceDialect
8211                        );
8212                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8213                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8214                        Ok(SocketRequest::GetOriginalDestination {
8215                            responder: SocketGetOriginalDestinationResponder {
8216                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8217                                tx_id: header.tx_id,
8218                            },
8219                        })
8220                    }
8221                    0x335706eccf54a135 => {
8222                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8223                        let mut req = fidl::new_empty!(
8224                            fidl::encoding::EmptyPayload,
8225                            fidl::encoding::DefaultFuchsiaResourceDialect
8226                        );
8227                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8228                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8229                        Ok(SocketRequest::Describe {
8230                            responder: SocketDescribeResponder {
8231                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8232                                tx_id: header.tx_id,
8233                            },
8234                        })
8235                    }
8236                    0x1dfb695351d3aa1d => {
8237                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8238                        let mut req = fidl::new_empty!(
8239                            SocketRecvMsgRequest,
8240                            fidl::encoding::DefaultFuchsiaResourceDialect
8241                        );
8242                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketRecvMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8243                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8244                        Ok(SocketRequest::RecvMsg {
8245                            want_addr: req.want_addr,
8246                            data_len: req.data_len,
8247                            want_control: req.want_control,
8248                            flags: req.flags,
8249
8250                            responder: SocketRecvMsgResponder {
8251                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8252                                tx_id: header.tx_id,
8253                            },
8254                        })
8255                    }
8256                    0x2cf1eac9a7fc8958 => {
8257                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8258                        let mut req = fidl::new_empty!(
8259                            SocketSendMsgRequest,
8260                            fidl::encoding::DefaultFuchsiaResourceDialect
8261                        );
8262                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSendMsgRequest>(&header, _body_bytes, handles, &mut req)?;
8263                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8264                        Ok(SocketRequest::SendMsg {
8265                            addr: req.addr,
8266                            data: req.data,
8267                            control: req.control,
8268                            flags: req.flags,
8269
8270                            responder: SocketSendMsgResponder {
8271                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8272                                tx_id: header.tx_id,
8273                            },
8274                        })
8275                    }
8276                    0x39676f75aec339ba => {
8277                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8278                        let mut req = fidl::new_empty!(
8279                            fidl::encoding::EmptyPayload,
8280                            fidl::encoding::DefaultFuchsiaResourceDialect
8281                        );
8282                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8283                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8284                        Ok(SocketRequest::GetInfo {
8285                            responder: SocketGetInfoResponder {
8286                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8287                                tx_id: header.tx_id,
8288                            },
8289                        })
8290                    }
8291                    0x5d06a606d95e8f3 => {
8292                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8293                        let mut req = fidl::new_empty!(
8294                            SocketSetIpHeaderIncludedRequest,
8295                            fidl::encoding::DefaultFuchsiaResourceDialect
8296                        );
8297                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpHeaderIncludedRequest>(&header, _body_bytes, handles, &mut req)?;
8298                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8299                        Ok(SocketRequest::SetIpHeaderIncluded {
8300                            value: req.value,
8301
8302                            responder: SocketSetIpHeaderIncludedResponder {
8303                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8304                                tx_id: header.tx_id,
8305                            },
8306                        })
8307                    }
8308                    0x76125ad1f4d175f6 => {
8309                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8310                        let mut req = fidl::new_empty!(
8311                            fidl::encoding::EmptyPayload,
8312                            fidl::encoding::DefaultFuchsiaResourceDialect
8313                        );
8314                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8315                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8316                        Ok(SocketRequest::GetIpHeaderIncluded {
8317                            responder: SocketGetIpHeaderIncludedResponder {
8318                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8319                                tx_id: header.tx_id,
8320                            },
8321                        })
8322                    }
8323                    0x4ebea92a43ae68a9 => {
8324                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8325                        let mut req = fidl::new_empty!(
8326                            SocketSetIcmpv6FilterRequest,
8327                            fidl::encoding::DefaultFuchsiaResourceDialect
8328                        );
8329                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIcmpv6FilterRequest>(&header, _body_bytes, handles, &mut req)?;
8330                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8331                        Ok(SocketRequest::SetIcmpv6Filter {
8332                            filter: req.filter,
8333
8334                            responder: SocketSetIcmpv6FilterResponder {
8335                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8336                                tx_id: header.tx_id,
8337                            },
8338                        })
8339                    }
8340                    0x43bd4f3bc0970ace => {
8341                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8342                        let mut req = fidl::new_empty!(
8343                            fidl::encoding::EmptyPayload,
8344                            fidl::encoding::DefaultFuchsiaResourceDialect
8345                        );
8346                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8347                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8348                        Ok(SocketRequest::GetIcmpv6Filter {
8349                            responder: SocketGetIcmpv6FilterResponder {
8350                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8351                                tx_id: header.tx_id,
8352                            },
8353                        })
8354                    }
8355                    0x18b7809577199cb4 => {
8356                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8357                        let mut req = fidl::new_empty!(
8358                            SocketSetIpv6ChecksumRequest,
8359                            fidl::encoding::DefaultFuchsiaResourceDialect
8360                        );
8361                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<SocketSetIpv6ChecksumRequest>(&header, _body_bytes, handles, &mut req)?;
8362                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8363                        Ok(SocketRequest::SetIpv6Checksum {
8364                            config: req.config,
8365
8366                            responder: SocketSetIpv6ChecksumResponder {
8367                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8368                                tx_id: header.tx_id,
8369                            },
8370                        })
8371                    }
8372                    0x1847bf5b2d263dd => {
8373                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
8374                        let mut req = fidl::new_empty!(
8375                            fidl::encoding::EmptyPayload,
8376                            fidl::encoding::DefaultFuchsiaResourceDialect
8377                        );
8378                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
8379                        let control_handle = SocketControlHandle { inner: this.inner.clone() };
8380                        Ok(SocketRequest::GetIpv6Checksum {
8381                            responder: SocketGetIpv6ChecksumResponder {
8382                                control_handle: std::mem::ManuallyDrop::new(control_handle),
8383                                tx_id: header.tx_id,
8384                            },
8385                        })
8386                    }
8387                    _ => Err(fidl::Error::UnknownOrdinal {
8388                        ordinal: header.ordinal,
8389                        protocol_name:
8390                            <SocketMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
8391                    }),
8392                }))
8393            },
8394        )
8395    }
8396}
8397
8398/// A raw network socket.
8399///
8400/// Once a socket has been retrieved from a provider, this interface is then
8401/// used to further configure and use the socket. This interface is essentially
8402/// POSIX.
8403///
8404/// All methods on this type are nonblocking; their exact behaviors match their
8405/// Linux counterparts.
8406///
8407/// *Warning:* This protocol is not yet ready for direct use by clients.
8408/// Instead, clients should use the BSD sockets API to interact with sockets.
8409/// We plan to change this protocol substantially and clients that couple
8410/// directly to this protocol will make those changes more difficult.
8411#[derive(Debug)]
8412pub enum SocketRequest {
8413    Clone {
8414        request: fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8415        control_handle: SocketControlHandle,
8416    },
8417    /// Terminates the connection.
8418    ///
8419    /// After calling `Close`, the client must not send any other requests.
8420    ///
8421    /// Servers, after sending the status response, should close the connection
8422    /// regardless of status and without sending an epitaph.
8423    ///
8424    /// Closing the client end of the channel should be semantically equivalent
8425    /// to calling `Close` without knowing when the close has completed or its
8426    /// status.
8427    Close {
8428        responder: SocketCloseResponder,
8429    },
8430    Query {
8431        responder: SocketQueryResponder,
8432    },
8433    /// Set `SOL_SOCKET` -> `SO_REUSEADDR`.
8434    SetReuseAddress {
8435        value: bool,
8436        responder: SocketSetReuseAddressResponder,
8437    },
8438    /// Get `SOL_SOCKET` -> `SO_REUSEADDR`.
8439    GetReuseAddress {
8440        responder: SocketGetReuseAddressResponder,
8441    },
8442    /// Get `SOL_SOCKET` -> `SO_ERROR`.
8443    /// Returns the last error if there is an error set on the socket.
8444    GetError {
8445        responder: SocketGetErrorResponder,
8446    },
8447    /// Set `SOL_SOCKET` -> `SO_BROADCAST`.
8448    SetBroadcast {
8449        value: bool,
8450        responder: SocketSetBroadcastResponder,
8451    },
8452    /// Get `SOL_SOCKET` -> `SO_BROADCAST`.
8453    GetBroadcast {
8454        responder: SocketGetBroadcastResponder,
8455    },
8456    /// Set `SOL_SOCKET` -> `SO_SNDBUF`.
8457    SetSendBuffer {
8458        value_bytes: u64,
8459        responder: SocketSetSendBufferResponder,
8460    },
8461    /// Get `SOL_SOCKET` -> `SO_SNDBUF`.
8462    GetSendBuffer {
8463        responder: SocketGetSendBufferResponder,
8464    },
8465    /// Set `SOL_SOCKET` -> `SO_RCVBUF`.
8466    SetReceiveBuffer {
8467        value_bytes: u64,
8468        responder: SocketSetReceiveBufferResponder,
8469    },
8470    /// Get `SOL_SOCKET` -> `SO_RCVBUF`.
8471    GetReceiveBuffer {
8472        responder: SocketGetReceiveBufferResponder,
8473    },
8474    /// Set `SOL_SOCKET` -> `SO_KEEPALIVE`.
8475    SetKeepAlive {
8476        value: bool,
8477        responder: SocketSetKeepAliveResponder,
8478    },
8479    /// Get `SOL_SOCKET` -> `SO_KEEPALIVE`.
8480    GetKeepAlive {
8481        responder: SocketGetKeepAliveResponder,
8482    },
8483    /// Set `SOL_SOCKET` -> `SO_OOBINLINE`.
8484    SetOutOfBandInline {
8485        value: bool,
8486        responder: SocketSetOutOfBandInlineResponder,
8487    },
8488    /// Get `SOL_SOCKET` -> `SO_OOBINLINE`.
8489    GetOutOfBandInline {
8490        responder: SocketGetOutOfBandInlineResponder,
8491    },
8492    /// Set `SOL_SOCKET` -> `SO_NO_CHECK`.
8493    SetNoCheck {
8494        value: bool,
8495        responder: SocketSetNoCheckResponder,
8496    },
8497    /// Get `SOL_SOCKET` -> `SO_NO_CHECK`.
8498    GetNoCheck {
8499        responder: SocketGetNoCheckResponder,
8500    },
8501    /// Set `SOL_SOCKET` -> `SO_LINGER`.
8502    SetLinger {
8503        linger: bool,
8504        length_secs: u32,
8505        responder: SocketSetLingerResponder,
8506    },
8507    /// Get `SOL_SOCKET` -> `SO_LINGER`.
8508    GetLinger {
8509        responder: SocketGetLingerResponder,
8510    },
8511    /// Set `SOL_SOCKET` -> `SO_REUSEPORT`.
8512    SetReusePort {
8513        value: fidl_fuchsia_posix_socket::ReusePortOption,
8514        responder: SocketSetReusePortResponder,
8515    },
8516    SetReusePortDeprecated {
8517        value: bool,
8518        responder: SocketSetReusePortDeprecatedResponder,
8519    },
8520    /// Get `SOL_SOCKET` -> `SO_REUSEPORT`.
8521    GetReusePort {
8522        responder: SocketGetReusePortResponder,
8523    },
8524    /// Get `SOL_SOCKET` -> `SO_ACCEPTCONN`.
8525    GetAcceptConn {
8526        responder: SocketGetAcceptConnResponder,
8527    },
8528    /// Set `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8529    SetBindToDevice {
8530        value: String,
8531        responder: SocketSetBindToDeviceResponder,
8532    },
8533    /// Get `SOL_SOCKET` -> `SO_BINDTODEVICE`.
8534    GetBindToDevice {
8535        responder: SocketGetBindToDeviceResponder,
8536    },
8537    /// Set `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8538    /// If `value` is 0, this clears the bound interface.
8539    SetBindToInterfaceIndex {
8540        value: u64,
8541        responder: SocketSetBindToInterfaceIndexResponder,
8542    },
8543    /// Get `SOL_SOCKET` -> `SO_BINDTOIFINDEX`.
8544    GetBindToInterfaceIndex {
8545        responder: SocketGetBindToInterfaceIndexResponder,
8546    },
8547    /// Set `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8548    SetTimestamp {
8549        value: fidl_fuchsia_posix_socket::TimestampOption,
8550        responder: SocketSetTimestampResponder,
8551    },
8552    /// Get `SOL_SOCKET` -> `SO_TIMESTAMP` or `SO_TIMESTAMPNS`.
8553    GetTimestamp {
8554        responder: SocketGetTimestampResponder,
8555    },
8556    /// Like setting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8557    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8558    /// mark can be set independently in each domain.
8559    SetMark {
8560        domain: fidl_fuchsia_net::MarkDomain,
8561        mark: fidl_fuchsia_posix_socket::OptionalUint32,
8562        responder: SocketSetMarkResponder,
8563    },
8564    /// Like getting `SOL_SOCKET` -> `SO_MARK`. The major difference is that
8565    /// unlike the standard SO_MARK, this API has multiple mark domains and each
8566    /// mark can be retrieved independently in each domain.
8567    GetMark {
8568        domain: fidl_fuchsia_net::MarkDomain,
8569        responder: SocketGetMarkResponder,
8570    },
8571    /// Get `SOL_SOCKET` -> `SO_COOKIE`.
8572    GetCookie {
8573        responder: SocketGetCookieResponder,
8574    },
8575    /// Sets the local address used for the socket.
8576    Bind {
8577        addr: fidl_fuchsia_net::SocketAddress,
8578        responder: SocketBindResponder,
8579    },
8580    /// Initiates a connection to a remote address.
8581    Connect {
8582        addr: fidl_fuchsia_net::SocketAddress,
8583        responder: SocketConnectResponder,
8584    },
8585    /// Clears connection information from this socket.
8586    Disconnect {
8587        responder: SocketDisconnectResponder,
8588    },
8589    /// Retrieves the local socket address.
8590    GetSockName {
8591        responder: SocketGetSockNameResponder,
8592    },
8593    /// Retrieves the remote socket address.
8594    GetPeerName {
8595        responder: SocketGetPeerNameResponder,
8596    },
8597    /// Shuts down part of the socket.
8598    Shutdown {
8599        mode: fidl_fuchsia_posix_socket::ShutdownMode,
8600        responder: SocketShutdownResponder,
8601    },
8602    /// Set `SOL_IP` -> `IP_TOS`.
8603    SetIpTypeOfService {
8604        value: u8,
8605        responder: SocketSetIpTypeOfServiceResponder,
8606    },
8607    /// Get `SOL_IP` -> `IP_TOS`.
8608    GetIpTypeOfService {
8609        responder: SocketGetIpTypeOfServiceResponder,
8610    },
8611    /// Set `SOL_IP` -> `IP_TTL`.
8612    SetIpTtl {
8613        value: fidl_fuchsia_posix_socket::OptionalUint8,
8614        responder: SocketSetIpTtlResponder,
8615    },
8616    /// Get `SOL_IP` -> `IP_TTL`.
8617    GetIpTtl {
8618        responder: SocketGetIpTtlResponder,
8619    },
8620    /// Set `SOL_IP` -> `IP_PKTINFO`.
8621    SetIpPacketInfo {
8622        value: bool,
8623        responder: SocketSetIpPacketInfoResponder,
8624    },
8625    /// Get `SOL_IP` -> `IP_PKTINFO`.
8626    GetIpPacketInfo {
8627        responder: SocketGetIpPacketInfoResponder,
8628    },
8629    /// Set `SOL_IP` -> `IP_RECVTOS`.
8630    SetIpReceiveTypeOfService {
8631        value: bool,
8632        responder: SocketSetIpReceiveTypeOfServiceResponder,
8633    },
8634    /// Get `SOL_IP` -> `IP_RECVTOS`.
8635    GetIpReceiveTypeOfService {
8636        responder: SocketGetIpReceiveTypeOfServiceResponder,
8637    },
8638    /// Set `SOL_IP` -> `IP_RECVTTL`.
8639    SetIpReceiveTtl {
8640        value: bool,
8641        responder: SocketSetIpReceiveTtlResponder,
8642    },
8643    /// Get `SOL_IP` -> `IP_RECVTTL`.
8644    GetIpReceiveTtl {
8645        responder: SocketGetIpReceiveTtlResponder,
8646    },
8647    /// Set `SOL_IP` -> `IP_MULTICAST_IF`.
8648    SetIpMulticastInterface {
8649        iface: u64,
8650        address: fidl_fuchsia_net::Ipv4Address,
8651        responder: SocketSetIpMulticastInterfaceResponder,
8652    },
8653    /// Get `SOL_IP` -> `IP_MULTICAST_IF`.
8654    GetIpMulticastInterface {
8655        responder: SocketGetIpMulticastInterfaceResponder,
8656    },
8657    /// Set `SOL_IP` -> `IP_MULTICAST_TTL`.
8658    SetIpMulticastTtl {
8659        value: fidl_fuchsia_posix_socket::OptionalUint8,
8660        responder: SocketSetIpMulticastTtlResponder,
8661    },
8662    /// Get `SOL_IP` -> `IP_MULTICAST_TTL`.
8663    GetIpMulticastTtl {
8664        responder: SocketGetIpMulticastTtlResponder,
8665    },
8666    /// Set `SOL_IP` -> `IP_MULTICAST_LOOP`.
8667    SetIpMulticastLoopback {
8668        value: bool,
8669        responder: SocketSetIpMulticastLoopbackResponder,
8670    },
8671    /// Get `SOL_IP` -> `IP_MULTICAST_LOOP`.
8672    GetIpMulticastLoopback {
8673        responder: SocketGetIpMulticastLoopbackResponder,
8674    },
8675    /// Set `SOL_IP` -> `IP_ADD_MEMBERSHIP`
8676    AddIpMembership {
8677        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8678        responder: SocketAddIpMembershipResponder,
8679    },
8680    /// Set `SOL_IP` -> `IP_DROP_MEMBERSHIP`
8681    DropIpMembership {
8682        membership: fidl_fuchsia_posix_socket::IpMulticastMembership,
8683        responder: SocketDropIpMembershipResponder,
8684    },
8685    /// Set `SOL_IP` -> `IP_TRANSPARENT`
8686    SetIpTransparent {
8687        value: bool,
8688        responder: SocketSetIpTransparentResponder,
8689    },
8690    /// Get `SOL_IP` -> `IP_TRANSPARENT`
8691    GetIpTransparent {
8692        responder: SocketGetIpTransparentResponder,
8693    },
8694    /// Set `SOL_IP` -> `IP_RECVORIGDSTADDR`
8695    SetIpReceiveOriginalDestinationAddress {
8696        value: bool,
8697        responder: SocketSetIpReceiveOriginalDestinationAddressResponder,
8698    },
8699    /// Get `SOL_IP` -> `IP_RECVORIGDSTADDR`
8700    GetIpReceiveOriginalDestinationAddress {
8701        responder: SocketGetIpReceiveOriginalDestinationAddressResponder,
8702    },
8703    /// Set `SOL_IPV6` -> `IPV6_ADD_MEMBERSHIP`.
8704    AddIpv6Membership {
8705        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8706        responder: SocketAddIpv6MembershipResponder,
8707    },
8708    /// Set `SOL_IPV6` -> `IPV6_DROP_MEMBERSHIP`.
8709    DropIpv6Membership {
8710        membership: fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
8711        responder: SocketDropIpv6MembershipResponder,
8712    },
8713    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8714    SetIpv6MulticastInterface {
8715        value: u64,
8716        responder: SocketSetIpv6MulticastInterfaceResponder,
8717    },
8718    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_IF`.
8719    GetIpv6MulticastInterface {
8720        responder: SocketGetIpv6MulticastInterfaceResponder,
8721    },
8722    /// Set `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8723    SetIpv6UnicastHops {
8724        value: fidl_fuchsia_posix_socket::OptionalUint8,
8725        responder: SocketSetIpv6UnicastHopsResponder,
8726    },
8727    /// Get `SOL_IPV6` -> `IPV6_UNICAST_HOPS`.
8728    GetIpv6UnicastHops {
8729        responder: SocketGetIpv6UnicastHopsResponder,
8730    },
8731    /// Set `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8732    SetIpv6ReceiveHopLimit {
8733        value: bool,
8734        responder: SocketSetIpv6ReceiveHopLimitResponder,
8735    },
8736    /// Get `SOL_IPV6` -> `IPV6_RECVHOPLIMIT`.
8737    GetIpv6ReceiveHopLimit {
8738        responder: SocketGetIpv6ReceiveHopLimitResponder,
8739    },
8740    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8741    SetIpv6MulticastHops {
8742        value: fidl_fuchsia_posix_socket::OptionalUint8,
8743        responder: SocketSetIpv6MulticastHopsResponder,
8744    },
8745    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_HOPS`.
8746    GetIpv6MulticastHops {
8747        responder: SocketGetIpv6MulticastHopsResponder,
8748    },
8749    /// Set `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8750    SetIpv6MulticastLoopback {
8751        value: bool,
8752        responder: SocketSetIpv6MulticastLoopbackResponder,
8753    },
8754    /// Get `SOL_IPV6` -> `IPV6_MULTICAST_LOOP`.
8755    GetIpv6MulticastLoopback {
8756        responder: SocketGetIpv6MulticastLoopbackResponder,
8757    },
8758    /// Set `SOL_IPV6` -> `IPV6_V6ONLY`.
8759    SetIpv6Only {
8760        value: bool,
8761        responder: SocketSetIpv6OnlyResponder,
8762    },
8763    /// Get `SOL_IPV6` -> `IPV6_V6ONLY`.
8764    GetIpv6Only {
8765        responder: SocketGetIpv6OnlyResponder,
8766    },
8767    /// Set `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8768    SetIpv6ReceiveTrafficClass {
8769        value: bool,
8770        responder: SocketSetIpv6ReceiveTrafficClassResponder,
8771    },
8772    /// Get `SOL_IPV6` -> `IPV6_RECVTCLASS`.
8773    GetIpv6ReceiveTrafficClass {
8774        responder: SocketGetIpv6ReceiveTrafficClassResponder,
8775    },
8776    /// Set `SOL_IPV6` -> `IPV6_TCLASS`
8777    SetIpv6TrafficClass {
8778        value: fidl_fuchsia_posix_socket::OptionalUint8,
8779        responder: SocketSetIpv6TrafficClassResponder,
8780    },
8781    /// Get `SOL_IPV6` -> `IPV6_TCLASS`.
8782    GetIpv6TrafficClass {
8783        responder: SocketGetIpv6TrafficClassResponder,
8784    },
8785    /// Set `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8786    SetIpv6ReceivePacketInfo {
8787        value: bool,
8788        responder: SocketSetIpv6ReceivePacketInfoResponder,
8789    },
8790    /// Get `SOL_IPV6` -> `IPV6_RECVPKTINFO`.
8791    GetIpv6ReceivePacketInfo {
8792        responder: SocketGetIpv6ReceivePacketInfoResponder,
8793    },
8794    /// Get `SOL_IP` -> `SO_ORIGINAL_DST`.
8795    GetOriginalDestination {
8796        responder: SocketGetOriginalDestinationResponder,
8797    },
8798    Describe {
8799        responder: SocketDescribeResponder,
8800    },
8801    /// Receives a message from the socket.
8802    ///
8803    /// + request `want_addr` request message's source address information to
8804    ///   be returned.
8805    /// + request `data_len` the maximum allowed length of the response data
8806    ///   buffer.
8807    /// + request `want_control` request ancillary data to be returned.
8808    /// + request `flags` flags for the receive request.
8809    /// - response `addr` the message's source address information, if
8810    ///   requested.
8811    /// - response `data` the message.
8812    /// - response `control` control messages, if requested.
8813    /// - response `truncated` indicates whether or not the returned message
8814    ///   was truncated.
8815    RecvMsg {
8816        want_addr: bool,
8817        data_len: u32,
8818        want_control: bool,
8819        flags: fidl_fuchsia_posix_socket::RecvMsgFlags,
8820        responder: SocketRecvMsgResponder,
8821    },
8822    /// Sends a message on the socket.
8823    ///
8824    /// + request `addr` the address to send the message to. If unset, will
8825    ///   send to the connected peer.
8826    /// + request `data` the message.
8827    /// + request `control` ancillary data.
8828    /// + request `flags` flags for the send request.
8829    SendMsg {
8830        addr: Option<Box<fidl_fuchsia_net::SocketAddress>>,
8831        data: Vec<u8>,
8832        control: fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
8833        flags: fidl_fuchsia_posix_socket::SendMsgFlags,
8834        responder: SocketSendMsgResponder,
8835    },
8836    /// Retrieves creation information from the socket.
8837    ///
8838    /// - response `domain` the socket's associated domain.
8839    /// - response `proto` the socket's associated protocol.
8840    GetInfo {
8841        responder: SocketGetInfoResponder,
8842    },
8843    /// Set `SOL_IP` -> `IP_HDRINCL`.
8844    SetIpHeaderIncluded {
8845        value: bool,
8846        responder: SocketSetIpHeaderIncludedResponder,
8847    },
8848    /// Get `SOL_IP` -> `IP_HDRINCL`.
8849    GetIpHeaderIncluded {
8850        responder: SocketGetIpHeaderIncludedResponder,
8851    },
8852    /// Set `SOL_ICMPV6` -> `ICMP6_FILTER`.
8853    SetIcmpv6Filter {
8854        filter: Icmpv6Filter,
8855        responder: SocketSetIcmpv6FilterResponder,
8856    },
8857    /// Get `SOL_ICMPV6` -> `ICMP6_FILTER`.
8858    GetIcmpv6Filter {
8859        responder: SocketGetIcmpv6FilterResponder,
8860    },
8861    /// Set `SOL_IPV6` -> `IPV6_CHECKSUM`.
8862    SetIpv6Checksum {
8863        config: Ipv6ChecksumConfiguration,
8864        responder: SocketSetIpv6ChecksumResponder,
8865    },
8866    /// Get `SOL_IPV6` -> `IPV6_CHECKSUM`.
8867    GetIpv6Checksum {
8868        responder: SocketGetIpv6ChecksumResponder,
8869    },
8870}
8871
8872impl SocketRequest {
8873    #[allow(irrefutable_let_patterns)]
8874    pub fn into_clone(
8875        self,
8876    ) -> Option<(
8877        fidl::endpoints::ServerEnd<fidl_fuchsia_unknown::CloneableMarker>,
8878        SocketControlHandle,
8879    )> {
8880        if let SocketRequest::Clone { request, control_handle } = self {
8881            Some((request, control_handle))
8882        } else {
8883            None
8884        }
8885    }
8886
8887    #[allow(irrefutable_let_patterns)]
8888    pub fn into_close(self) -> Option<(SocketCloseResponder)> {
8889        if let SocketRequest::Close { responder } = self { Some((responder)) } else { None }
8890    }
8891
8892    #[allow(irrefutable_let_patterns)]
8893    pub fn into_query(self) -> Option<(SocketQueryResponder)> {
8894        if let SocketRequest::Query { responder } = self { Some((responder)) } else { None }
8895    }
8896
8897    #[allow(irrefutable_let_patterns)]
8898    pub fn into_set_reuse_address(self) -> Option<(bool, SocketSetReuseAddressResponder)> {
8899        if let SocketRequest::SetReuseAddress { value, responder } = self {
8900            Some((value, responder))
8901        } else {
8902            None
8903        }
8904    }
8905
8906    #[allow(irrefutable_let_patterns)]
8907    pub fn into_get_reuse_address(self) -> Option<(SocketGetReuseAddressResponder)> {
8908        if let SocketRequest::GetReuseAddress { responder } = self {
8909            Some((responder))
8910        } else {
8911            None
8912        }
8913    }
8914
8915    #[allow(irrefutable_let_patterns)]
8916    pub fn into_get_error(self) -> Option<(SocketGetErrorResponder)> {
8917        if let SocketRequest::GetError { responder } = self { Some((responder)) } else { None }
8918    }
8919
8920    #[allow(irrefutable_let_patterns)]
8921    pub fn into_set_broadcast(self) -> Option<(bool, SocketSetBroadcastResponder)> {
8922        if let SocketRequest::SetBroadcast { value, responder } = self {
8923            Some((value, responder))
8924        } else {
8925            None
8926        }
8927    }
8928
8929    #[allow(irrefutable_let_patterns)]
8930    pub fn into_get_broadcast(self) -> Option<(SocketGetBroadcastResponder)> {
8931        if let SocketRequest::GetBroadcast { responder } = self { Some((responder)) } else { None }
8932    }
8933
8934    #[allow(irrefutable_let_patterns)]
8935    pub fn into_set_send_buffer(self) -> Option<(u64, SocketSetSendBufferResponder)> {
8936        if let SocketRequest::SetSendBuffer { value_bytes, responder } = self {
8937            Some((value_bytes, responder))
8938        } else {
8939            None
8940        }
8941    }
8942
8943    #[allow(irrefutable_let_patterns)]
8944    pub fn into_get_send_buffer(self) -> Option<(SocketGetSendBufferResponder)> {
8945        if let SocketRequest::GetSendBuffer { responder } = self { Some((responder)) } else { None }
8946    }
8947
8948    #[allow(irrefutable_let_patterns)]
8949    pub fn into_set_receive_buffer(self) -> Option<(u64, SocketSetReceiveBufferResponder)> {
8950        if let SocketRequest::SetReceiveBuffer { value_bytes, responder } = self {
8951            Some((value_bytes, responder))
8952        } else {
8953            None
8954        }
8955    }
8956
8957    #[allow(irrefutable_let_patterns)]
8958    pub fn into_get_receive_buffer(self) -> Option<(SocketGetReceiveBufferResponder)> {
8959        if let SocketRequest::GetReceiveBuffer { responder } = self {
8960            Some((responder))
8961        } else {
8962            None
8963        }
8964    }
8965
8966    #[allow(irrefutable_let_patterns)]
8967    pub fn into_set_keep_alive(self) -> Option<(bool, SocketSetKeepAliveResponder)> {
8968        if let SocketRequest::SetKeepAlive { value, responder } = self {
8969            Some((value, responder))
8970        } else {
8971            None
8972        }
8973    }
8974
8975    #[allow(irrefutable_let_patterns)]
8976    pub fn into_get_keep_alive(self) -> Option<(SocketGetKeepAliveResponder)> {
8977        if let SocketRequest::GetKeepAlive { responder } = self { Some((responder)) } else { None }
8978    }
8979
8980    #[allow(irrefutable_let_patterns)]
8981    pub fn into_set_out_of_band_inline(self) -> Option<(bool, SocketSetOutOfBandInlineResponder)> {
8982        if let SocketRequest::SetOutOfBandInline { value, responder } = self {
8983            Some((value, responder))
8984        } else {
8985            None
8986        }
8987    }
8988
8989    #[allow(irrefutable_let_patterns)]
8990    pub fn into_get_out_of_band_inline(self) -> Option<(SocketGetOutOfBandInlineResponder)> {
8991        if let SocketRequest::GetOutOfBandInline { responder } = self {
8992            Some((responder))
8993        } else {
8994            None
8995        }
8996    }
8997
8998    #[allow(irrefutable_let_patterns)]
8999    pub fn into_set_no_check(self) -> Option<(bool, SocketSetNoCheckResponder)> {
9000        if let SocketRequest::SetNoCheck { value, responder } = self {
9001            Some((value, responder))
9002        } else {
9003            None
9004        }
9005    }
9006
9007    #[allow(irrefutable_let_patterns)]
9008    pub fn into_get_no_check(self) -> Option<(SocketGetNoCheckResponder)> {
9009        if let SocketRequest::GetNoCheck { responder } = self { Some((responder)) } else { None }
9010    }
9011
9012    #[allow(irrefutable_let_patterns)]
9013    pub fn into_set_linger(self) -> Option<(bool, u32, SocketSetLingerResponder)> {
9014        if let SocketRequest::SetLinger { linger, length_secs, responder } = self {
9015            Some((linger, length_secs, responder))
9016        } else {
9017            None
9018        }
9019    }
9020
9021    #[allow(irrefutable_let_patterns)]
9022    pub fn into_get_linger(self) -> Option<(SocketGetLingerResponder)> {
9023        if let SocketRequest::GetLinger { responder } = self { Some((responder)) } else { None }
9024    }
9025
9026    #[allow(irrefutable_let_patterns)]
9027    pub fn into_set_reuse_port(
9028        self,
9029    ) -> Option<(fidl_fuchsia_posix_socket::ReusePortOption, SocketSetReusePortResponder)> {
9030        if let SocketRequest::SetReusePort { value, responder } = self {
9031            Some((value, responder))
9032        } else {
9033            None
9034        }
9035    }
9036
9037    #[allow(irrefutable_let_patterns)]
9038    pub fn into_set_reuse_port_deprecated(
9039        self,
9040    ) -> Option<(bool, SocketSetReusePortDeprecatedResponder)> {
9041        if let SocketRequest::SetReusePortDeprecated { value, responder } = self {
9042            Some((value, responder))
9043        } else {
9044            None
9045        }
9046    }
9047
9048    #[allow(irrefutable_let_patterns)]
9049    pub fn into_get_reuse_port(self) -> Option<(SocketGetReusePortResponder)> {
9050        if let SocketRequest::GetReusePort { responder } = self { Some((responder)) } else { None }
9051    }
9052
9053    #[allow(irrefutable_let_patterns)]
9054    pub fn into_get_accept_conn(self) -> Option<(SocketGetAcceptConnResponder)> {
9055        if let SocketRequest::GetAcceptConn { responder } = self { Some((responder)) } else { None }
9056    }
9057
9058    #[allow(irrefutable_let_patterns)]
9059    pub fn into_set_bind_to_device(self) -> Option<(String, SocketSetBindToDeviceResponder)> {
9060        if let SocketRequest::SetBindToDevice { value, responder } = self {
9061            Some((value, responder))
9062        } else {
9063            None
9064        }
9065    }
9066
9067    #[allow(irrefutable_let_patterns)]
9068    pub fn into_get_bind_to_device(self) -> Option<(SocketGetBindToDeviceResponder)> {
9069        if let SocketRequest::GetBindToDevice { responder } = self {
9070            Some((responder))
9071        } else {
9072            None
9073        }
9074    }
9075
9076    #[allow(irrefutable_let_patterns)]
9077    pub fn into_set_bind_to_interface_index(
9078        self,
9079    ) -> Option<(u64, SocketSetBindToInterfaceIndexResponder)> {
9080        if let SocketRequest::SetBindToInterfaceIndex { value, responder } = self {
9081            Some((value, responder))
9082        } else {
9083            None
9084        }
9085    }
9086
9087    #[allow(irrefutable_let_patterns)]
9088    pub fn into_get_bind_to_interface_index(
9089        self,
9090    ) -> Option<(SocketGetBindToInterfaceIndexResponder)> {
9091        if let SocketRequest::GetBindToInterfaceIndex { responder } = self {
9092            Some((responder))
9093        } else {
9094            None
9095        }
9096    }
9097
9098    #[allow(irrefutable_let_patterns)]
9099    pub fn into_set_timestamp(
9100        self,
9101    ) -> Option<(fidl_fuchsia_posix_socket::TimestampOption, SocketSetTimestampResponder)> {
9102        if let SocketRequest::SetTimestamp { value, responder } = self {
9103            Some((value, responder))
9104        } else {
9105            None
9106        }
9107    }
9108
9109    #[allow(irrefutable_let_patterns)]
9110    pub fn into_get_timestamp(self) -> Option<(SocketGetTimestampResponder)> {
9111        if let SocketRequest::GetTimestamp { responder } = self { Some((responder)) } else { None }
9112    }
9113
9114    #[allow(irrefutable_let_patterns)]
9115    pub fn into_set_mark(
9116        self,
9117    ) -> Option<(
9118        fidl_fuchsia_net::MarkDomain,
9119        fidl_fuchsia_posix_socket::OptionalUint32,
9120        SocketSetMarkResponder,
9121    )> {
9122        if let SocketRequest::SetMark { domain, mark, responder } = self {
9123            Some((domain, mark, responder))
9124        } else {
9125            None
9126        }
9127    }
9128
9129    #[allow(irrefutable_let_patterns)]
9130    pub fn into_get_mark(self) -> Option<(fidl_fuchsia_net::MarkDomain, SocketGetMarkResponder)> {
9131        if let SocketRequest::GetMark { domain, responder } = self {
9132            Some((domain, responder))
9133        } else {
9134            None
9135        }
9136    }
9137
9138    #[allow(irrefutable_let_patterns)]
9139    pub fn into_get_cookie(self) -> Option<(SocketGetCookieResponder)> {
9140        if let SocketRequest::GetCookie { responder } = self { Some((responder)) } else { None }
9141    }
9142
9143    #[allow(irrefutable_let_patterns)]
9144    pub fn into_bind(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketBindResponder)> {
9145        if let SocketRequest::Bind { addr, responder } = self {
9146            Some((addr, responder))
9147        } else {
9148            None
9149        }
9150    }
9151
9152    #[allow(irrefutable_let_patterns)]
9153    pub fn into_connect(self) -> Option<(fidl_fuchsia_net::SocketAddress, SocketConnectResponder)> {
9154        if let SocketRequest::Connect { addr, responder } = self {
9155            Some((addr, responder))
9156        } else {
9157            None
9158        }
9159    }
9160
9161    #[allow(irrefutable_let_patterns)]
9162    pub fn into_disconnect(self) -> Option<(SocketDisconnectResponder)> {
9163        if let SocketRequest::Disconnect { responder } = self { Some((responder)) } else { None }
9164    }
9165
9166    #[allow(irrefutable_let_patterns)]
9167    pub fn into_get_sock_name(self) -> Option<(SocketGetSockNameResponder)> {
9168        if let SocketRequest::GetSockName { responder } = self { Some((responder)) } else { None }
9169    }
9170
9171    #[allow(irrefutable_let_patterns)]
9172    pub fn into_get_peer_name(self) -> Option<(SocketGetPeerNameResponder)> {
9173        if let SocketRequest::GetPeerName { responder } = self { Some((responder)) } else { None }
9174    }
9175
9176    #[allow(irrefutable_let_patterns)]
9177    pub fn into_shutdown(
9178        self,
9179    ) -> Option<(fidl_fuchsia_posix_socket::ShutdownMode, SocketShutdownResponder)> {
9180        if let SocketRequest::Shutdown { mode, responder } = self {
9181            Some((mode, responder))
9182        } else {
9183            None
9184        }
9185    }
9186
9187    #[allow(irrefutable_let_patterns)]
9188    pub fn into_set_ip_type_of_service(self) -> Option<(u8, SocketSetIpTypeOfServiceResponder)> {
9189        if let SocketRequest::SetIpTypeOfService { value, responder } = self {
9190            Some((value, responder))
9191        } else {
9192            None
9193        }
9194    }
9195
9196    #[allow(irrefutable_let_patterns)]
9197    pub fn into_get_ip_type_of_service(self) -> Option<(SocketGetIpTypeOfServiceResponder)> {
9198        if let SocketRequest::GetIpTypeOfService { responder } = self {
9199            Some((responder))
9200        } else {
9201            None
9202        }
9203    }
9204
9205    #[allow(irrefutable_let_patterns)]
9206    pub fn into_set_ip_ttl(
9207        self,
9208    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpTtlResponder)> {
9209        if let SocketRequest::SetIpTtl { value, responder } = self {
9210            Some((value, responder))
9211        } else {
9212            None
9213        }
9214    }
9215
9216    #[allow(irrefutable_let_patterns)]
9217    pub fn into_get_ip_ttl(self) -> Option<(SocketGetIpTtlResponder)> {
9218        if let SocketRequest::GetIpTtl { responder } = self { Some((responder)) } else { None }
9219    }
9220
9221    #[allow(irrefutable_let_patterns)]
9222    pub fn into_set_ip_packet_info(self) -> Option<(bool, SocketSetIpPacketInfoResponder)> {
9223        if let SocketRequest::SetIpPacketInfo { value, responder } = self {
9224            Some((value, responder))
9225        } else {
9226            None
9227        }
9228    }
9229
9230    #[allow(irrefutable_let_patterns)]
9231    pub fn into_get_ip_packet_info(self) -> Option<(SocketGetIpPacketInfoResponder)> {
9232        if let SocketRequest::GetIpPacketInfo { responder } = self {
9233            Some((responder))
9234        } else {
9235            None
9236        }
9237    }
9238
9239    #[allow(irrefutable_let_patterns)]
9240    pub fn into_set_ip_receive_type_of_service(
9241        self,
9242    ) -> Option<(bool, SocketSetIpReceiveTypeOfServiceResponder)> {
9243        if let SocketRequest::SetIpReceiveTypeOfService { value, responder } = self {
9244            Some((value, responder))
9245        } else {
9246            None
9247        }
9248    }
9249
9250    #[allow(irrefutable_let_patterns)]
9251    pub fn into_get_ip_receive_type_of_service(
9252        self,
9253    ) -> Option<(SocketGetIpReceiveTypeOfServiceResponder)> {
9254        if let SocketRequest::GetIpReceiveTypeOfService { responder } = self {
9255            Some((responder))
9256        } else {
9257            None
9258        }
9259    }
9260
9261    #[allow(irrefutable_let_patterns)]
9262    pub fn into_set_ip_receive_ttl(self) -> Option<(bool, SocketSetIpReceiveTtlResponder)> {
9263        if let SocketRequest::SetIpReceiveTtl { value, responder } = self {
9264            Some((value, responder))
9265        } else {
9266            None
9267        }
9268    }
9269
9270    #[allow(irrefutable_let_patterns)]
9271    pub fn into_get_ip_receive_ttl(self) -> Option<(SocketGetIpReceiveTtlResponder)> {
9272        if let SocketRequest::GetIpReceiveTtl { responder } = self {
9273            Some((responder))
9274        } else {
9275            None
9276        }
9277    }
9278
9279    #[allow(irrefutable_let_patterns)]
9280    pub fn into_set_ip_multicast_interface(
9281        self,
9282    ) -> Option<(u64, fidl_fuchsia_net::Ipv4Address, SocketSetIpMulticastInterfaceResponder)> {
9283        if let SocketRequest::SetIpMulticastInterface { iface, address, responder } = self {
9284            Some((iface, address, responder))
9285        } else {
9286            None
9287        }
9288    }
9289
9290    #[allow(irrefutable_let_patterns)]
9291    pub fn into_get_ip_multicast_interface(
9292        self,
9293    ) -> Option<(SocketGetIpMulticastInterfaceResponder)> {
9294        if let SocketRequest::GetIpMulticastInterface { responder } = self {
9295            Some((responder))
9296        } else {
9297            None
9298        }
9299    }
9300
9301    #[allow(irrefutable_let_patterns)]
9302    pub fn into_set_ip_multicast_ttl(
9303        self,
9304    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpMulticastTtlResponder)> {
9305        if let SocketRequest::SetIpMulticastTtl { value, responder } = self {
9306            Some((value, responder))
9307        } else {
9308            None
9309        }
9310    }
9311
9312    #[allow(irrefutable_let_patterns)]
9313    pub fn into_get_ip_multicast_ttl(self) -> Option<(SocketGetIpMulticastTtlResponder)> {
9314        if let SocketRequest::GetIpMulticastTtl { responder } = self {
9315            Some((responder))
9316        } else {
9317            None
9318        }
9319    }
9320
9321    #[allow(irrefutable_let_patterns)]
9322    pub fn into_set_ip_multicast_loopback(
9323        self,
9324    ) -> Option<(bool, SocketSetIpMulticastLoopbackResponder)> {
9325        if let SocketRequest::SetIpMulticastLoopback { value, responder } = self {
9326            Some((value, responder))
9327        } else {
9328            None
9329        }
9330    }
9331
9332    #[allow(irrefutable_let_patterns)]
9333    pub fn into_get_ip_multicast_loopback(self) -> Option<(SocketGetIpMulticastLoopbackResponder)> {
9334        if let SocketRequest::GetIpMulticastLoopback { responder } = self {
9335            Some((responder))
9336        } else {
9337            None
9338        }
9339    }
9340
9341    #[allow(irrefutable_let_patterns)]
9342    pub fn into_add_ip_membership(
9343        self,
9344    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketAddIpMembershipResponder)>
9345    {
9346        if let SocketRequest::AddIpMembership { membership, responder } = self {
9347            Some((membership, responder))
9348        } else {
9349            None
9350        }
9351    }
9352
9353    #[allow(irrefutable_let_patterns)]
9354    pub fn into_drop_ip_membership(
9355        self,
9356    ) -> Option<(fidl_fuchsia_posix_socket::IpMulticastMembership, SocketDropIpMembershipResponder)>
9357    {
9358        if let SocketRequest::DropIpMembership { membership, responder } = self {
9359            Some((membership, responder))
9360        } else {
9361            None
9362        }
9363    }
9364
9365    #[allow(irrefutable_let_patterns)]
9366    pub fn into_set_ip_transparent(self) -> Option<(bool, SocketSetIpTransparentResponder)> {
9367        if let SocketRequest::SetIpTransparent { value, responder } = self {
9368            Some((value, responder))
9369        } else {
9370            None
9371        }
9372    }
9373
9374    #[allow(irrefutable_let_patterns)]
9375    pub fn into_get_ip_transparent(self) -> Option<(SocketGetIpTransparentResponder)> {
9376        if let SocketRequest::GetIpTransparent { responder } = self {
9377            Some((responder))
9378        } else {
9379            None
9380        }
9381    }
9382
9383    #[allow(irrefutable_let_patterns)]
9384    pub fn into_set_ip_receive_original_destination_address(
9385        self,
9386    ) -> Option<(bool, SocketSetIpReceiveOriginalDestinationAddressResponder)> {
9387        if let SocketRequest::SetIpReceiveOriginalDestinationAddress { value, responder } = self {
9388            Some((value, responder))
9389        } else {
9390            None
9391        }
9392    }
9393
9394    #[allow(irrefutable_let_patterns)]
9395    pub fn into_get_ip_receive_original_destination_address(
9396        self,
9397    ) -> Option<(SocketGetIpReceiveOriginalDestinationAddressResponder)> {
9398        if let SocketRequest::GetIpReceiveOriginalDestinationAddress { responder } = self {
9399            Some((responder))
9400        } else {
9401            None
9402        }
9403    }
9404
9405    #[allow(irrefutable_let_patterns)]
9406    pub fn into_add_ipv6_membership(
9407        self,
9408    ) -> Option<(
9409        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9410        SocketAddIpv6MembershipResponder,
9411    )> {
9412        if let SocketRequest::AddIpv6Membership { membership, responder } = self {
9413            Some((membership, responder))
9414        } else {
9415            None
9416        }
9417    }
9418
9419    #[allow(irrefutable_let_patterns)]
9420    pub fn into_drop_ipv6_membership(
9421        self,
9422    ) -> Option<(
9423        fidl_fuchsia_posix_socket::Ipv6MulticastMembership,
9424        SocketDropIpv6MembershipResponder,
9425    )> {
9426        if let SocketRequest::DropIpv6Membership { membership, responder } = self {
9427            Some((membership, responder))
9428        } else {
9429            None
9430        }
9431    }
9432
9433    #[allow(irrefutable_let_patterns)]
9434    pub fn into_set_ipv6_multicast_interface(
9435        self,
9436    ) -> Option<(u64, SocketSetIpv6MulticastInterfaceResponder)> {
9437        if let SocketRequest::SetIpv6MulticastInterface { 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_multicast_interface(
9446        self,
9447    ) -> Option<(SocketGetIpv6MulticastInterfaceResponder)> {
9448        if let SocketRequest::GetIpv6MulticastInterface { responder } = self {
9449            Some((responder))
9450        } else {
9451            None
9452        }
9453    }
9454
9455    #[allow(irrefutable_let_patterns)]
9456    pub fn into_set_ipv6_unicast_hops(
9457        self,
9458    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6UnicastHopsResponder)> {
9459        if let SocketRequest::SetIpv6UnicastHops { value, responder } = self {
9460            Some((value, responder))
9461        } else {
9462            None
9463        }
9464    }
9465
9466    #[allow(irrefutable_let_patterns)]
9467    pub fn into_get_ipv6_unicast_hops(self) -> Option<(SocketGetIpv6UnicastHopsResponder)> {
9468        if let SocketRequest::GetIpv6UnicastHops { responder } = self {
9469            Some((responder))
9470        } else {
9471            None
9472        }
9473    }
9474
9475    #[allow(irrefutable_let_patterns)]
9476    pub fn into_set_ipv6_receive_hop_limit(
9477        self,
9478    ) -> Option<(bool, SocketSetIpv6ReceiveHopLimitResponder)> {
9479        if let SocketRequest::SetIpv6ReceiveHopLimit { value, responder } = self {
9480            Some((value, responder))
9481        } else {
9482            None
9483        }
9484    }
9485
9486    #[allow(irrefutable_let_patterns)]
9487    pub fn into_get_ipv6_receive_hop_limit(
9488        self,
9489    ) -> Option<(SocketGetIpv6ReceiveHopLimitResponder)> {
9490        if let SocketRequest::GetIpv6ReceiveHopLimit { responder } = self {
9491            Some((responder))
9492        } else {
9493            None
9494        }
9495    }
9496
9497    #[allow(irrefutable_let_patterns)]
9498    pub fn into_set_ipv6_multicast_hops(
9499        self,
9500    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6MulticastHopsResponder)>
9501    {
9502        if let SocketRequest::SetIpv6MulticastHops { value, responder } = self {
9503            Some((value, responder))
9504        } else {
9505            None
9506        }
9507    }
9508
9509    #[allow(irrefutable_let_patterns)]
9510    pub fn into_get_ipv6_multicast_hops(self) -> Option<(SocketGetIpv6MulticastHopsResponder)> {
9511        if let SocketRequest::GetIpv6MulticastHops { responder } = self {
9512            Some((responder))
9513        } else {
9514            None
9515        }
9516    }
9517
9518    #[allow(irrefutable_let_patterns)]
9519    pub fn into_set_ipv6_multicast_loopback(
9520        self,
9521    ) -> Option<(bool, SocketSetIpv6MulticastLoopbackResponder)> {
9522        if let SocketRequest::SetIpv6MulticastLoopback { value, responder } = self {
9523            Some((value, responder))
9524        } else {
9525            None
9526        }
9527    }
9528
9529    #[allow(irrefutable_let_patterns)]
9530    pub fn into_get_ipv6_multicast_loopback(
9531        self,
9532    ) -> Option<(SocketGetIpv6MulticastLoopbackResponder)> {
9533        if let SocketRequest::GetIpv6MulticastLoopback { responder } = self {
9534            Some((responder))
9535        } else {
9536            None
9537        }
9538    }
9539
9540    #[allow(irrefutable_let_patterns)]
9541    pub fn into_set_ipv6_only(self) -> Option<(bool, SocketSetIpv6OnlyResponder)> {
9542        if let SocketRequest::SetIpv6Only { value, responder } = self {
9543            Some((value, responder))
9544        } else {
9545            None
9546        }
9547    }
9548
9549    #[allow(irrefutable_let_patterns)]
9550    pub fn into_get_ipv6_only(self) -> Option<(SocketGetIpv6OnlyResponder)> {
9551        if let SocketRequest::GetIpv6Only { responder } = self { Some((responder)) } else { None }
9552    }
9553
9554    #[allow(irrefutable_let_patterns)]
9555    pub fn into_set_ipv6_receive_traffic_class(
9556        self,
9557    ) -> Option<(bool, SocketSetIpv6ReceiveTrafficClassResponder)> {
9558        if let SocketRequest::SetIpv6ReceiveTrafficClass { value, responder } = self {
9559            Some((value, responder))
9560        } else {
9561            None
9562        }
9563    }
9564
9565    #[allow(irrefutable_let_patterns)]
9566    pub fn into_get_ipv6_receive_traffic_class(
9567        self,
9568    ) -> Option<(SocketGetIpv6ReceiveTrafficClassResponder)> {
9569        if let SocketRequest::GetIpv6ReceiveTrafficClass { responder } = self {
9570            Some((responder))
9571        } else {
9572            None
9573        }
9574    }
9575
9576    #[allow(irrefutable_let_patterns)]
9577    pub fn into_set_ipv6_traffic_class(
9578        self,
9579    ) -> Option<(fidl_fuchsia_posix_socket::OptionalUint8, SocketSetIpv6TrafficClassResponder)>
9580    {
9581        if let SocketRequest::SetIpv6TrafficClass { value, responder } = self {
9582            Some((value, responder))
9583        } else {
9584            None
9585        }
9586    }
9587
9588    #[allow(irrefutable_let_patterns)]
9589    pub fn into_get_ipv6_traffic_class(self) -> Option<(SocketGetIpv6TrafficClassResponder)> {
9590        if let SocketRequest::GetIpv6TrafficClass { responder } = self {
9591            Some((responder))
9592        } else {
9593            None
9594        }
9595    }
9596
9597    #[allow(irrefutable_let_patterns)]
9598    pub fn into_set_ipv6_receive_packet_info(
9599        self,
9600    ) -> Option<(bool, SocketSetIpv6ReceivePacketInfoResponder)> {
9601        if let SocketRequest::SetIpv6ReceivePacketInfo { value, responder } = self {
9602            Some((value, responder))
9603        } else {
9604            None
9605        }
9606    }
9607
9608    #[allow(irrefutable_let_patterns)]
9609    pub fn into_get_ipv6_receive_packet_info(
9610        self,
9611    ) -> Option<(SocketGetIpv6ReceivePacketInfoResponder)> {
9612        if let SocketRequest::GetIpv6ReceivePacketInfo { responder } = self {
9613            Some((responder))
9614        } else {
9615            None
9616        }
9617    }
9618
9619    #[allow(irrefutable_let_patterns)]
9620    pub fn into_get_original_destination(self) -> Option<(SocketGetOriginalDestinationResponder)> {
9621        if let SocketRequest::GetOriginalDestination { responder } = self {
9622            Some((responder))
9623        } else {
9624            None
9625        }
9626    }
9627
9628    #[allow(irrefutable_let_patterns)]
9629    pub fn into_describe(self) -> Option<(SocketDescribeResponder)> {
9630        if let SocketRequest::Describe { responder } = self { Some((responder)) } else { None }
9631    }
9632
9633    #[allow(irrefutable_let_patterns)]
9634    pub fn into_recv_msg(
9635        self,
9636    ) -> Option<(bool, u32, bool, fidl_fuchsia_posix_socket::RecvMsgFlags, SocketRecvMsgResponder)>
9637    {
9638        if let SocketRequest::RecvMsg { want_addr, data_len, want_control, flags, responder } = self
9639        {
9640            Some((want_addr, data_len, want_control, flags, responder))
9641        } else {
9642            None
9643        }
9644    }
9645
9646    #[allow(irrefutable_let_patterns)]
9647    pub fn into_send_msg(
9648        self,
9649    ) -> Option<(
9650        Option<Box<fidl_fuchsia_net::SocketAddress>>,
9651        Vec<u8>,
9652        fidl_fuchsia_posix_socket::NetworkSocketSendControlData,
9653        fidl_fuchsia_posix_socket::SendMsgFlags,
9654        SocketSendMsgResponder,
9655    )> {
9656        if let SocketRequest::SendMsg { addr, data, control, flags, responder } = self {
9657            Some((addr, data, control, flags, responder))
9658        } else {
9659            None
9660        }
9661    }
9662
9663    #[allow(irrefutable_let_patterns)]
9664    pub fn into_get_info(self) -> Option<(SocketGetInfoResponder)> {
9665        if let SocketRequest::GetInfo { responder } = self { Some((responder)) } else { None }
9666    }
9667
9668    #[allow(irrefutable_let_patterns)]
9669    pub fn into_set_ip_header_included(self) -> Option<(bool, SocketSetIpHeaderIncludedResponder)> {
9670        if let SocketRequest::SetIpHeaderIncluded { value, responder } = self {
9671            Some((value, responder))
9672        } else {
9673            None
9674        }
9675    }
9676
9677    #[allow(irrefutable_let_patterns)]
9678    pub fn into_get_ip_header_included(self) -> Option<(SocketGetIpHeaderIncludedResponder)> {
9679        if let SocketRequest::GetIpHeaderIncluded { responder } = self {
9680            Some((responder))
9681        } else {
9682            None
9683        }
9684    }
9685
9686    #[allow(irrefutable_let_patterns)]
9687    pub fn into_set_icmpv6_filter(self) -> Option<(Icmpv6Filter, SocketSetIcmpv6FilterResponder)> {
9688        if let SocketRequest::SetIcmpv6Filter { filter, responder } = self {
9689            Some((filter, responder))
9690        } else {
9691            None
9692        }
9693    }
9694
9695    #[allow(irrefutable_let_patterns)]
9696    pub fn into_get_icmpv6_filter(self) -> Option<(SocketGetIcmpv6FilterResponder)> {
9697        if let SocketRequest::GetIcmpv6Filter { responder } = self {
9698            Some((responder))
9699        } else {
9700            None
9701        }
9702    }
9703
9704    #[allow(irrefutable_let_patterns)]
9705    pub fn into_set_ipv6_checksum(
9706        self,
9707    ) -> Option<(Ipv6ChecksumConfiguration, SocketSetIpv6ChecksumResponder)> {
9708        if let SocketRequest::SetIpv6Checksum { config, responder } = self {
9709            Some((config, responder))
9710        } else {
9711            None
9712        }
9713    }
9714
9715    #[allow(irrefutable_let_patterns)]
9716    pub fn into_get_ipv6_checksum(self) -> Option<(SocketGetIpv6ChecksumResponder)> {
9717        if let SocketRequest::GetIpv6Checksum { responder } = self {
9718            Some((responder))
9719        } else {
9720            None
9721        }
9722    }
9723
9724    /// Name of the method defined in FIDL
9725    pub fn method_name(&self) -> &'static str {
9726        match *self {
9727            SocketRequest::Clone { .. } => "clone",
9728            SocketRequest::Close { .. } => "close",
9729            SocketRequest::Query { .. } => "query",
9730            SocketRequest::SetReuseAddress { .. } => "set_reuse_address",
9731            SocketRequest::GetReuseAddress { .. } => "get_reuse_address",
9732            SocketRequest::GetError { .. } => "get_error",
9733            SocketRequest::SetBroadcast { .. } => "set_broadcast",
9734            SocketRequest::GetBroadcast { .. } => "get_broadcast",
9735            SocketRequest::SetSendBuffer { .. } => "set_send_buffer",
9736            SocketRequest::GetSendBuffer { .. } => "get_send_buffer",
9737            SocketRequest::SetReceiveBuffer { .. } => "set_receive_buffer",
9738            SocketRequest::GetReceiveBuffer { .. } => "get_receive_buffer",
9739            SocketRequest::SetKeepAlive { .. } => "set_keep_alive",
9740            SocketRequest::GetKeepAlive { .. } => "get_keep_alive",
9741            SocketRequest::SetOutOfBandInline { .. } => "set_out_of_band_inline",
9742            SocketRequest::GetOutOfBandInline { .. } => "get_out_of_band_inline",
9743            SocketRequest::SetNoCheck { .. } => "set_no_check",
9744            SocketRequest::GetNoCheck { .. } => "get_no_check",
9745            SocketRequest::SetLinger { .. } => "set_linger",
9746            SocketRequest::GetLinger { .. } => "get_linger",
9747            SocketRequest::SetReusePort { .. } => "set_reuse_port",
9748            SocketRequest::SetReusePortDeprecated { .. } => "set_reuse_port_deprecated",
9749            SocketRequest::GetReusePort { .. } => "get_reuse_port",
9750            SocketRequest::GetAcceptConn { .. } => "get_accept_conn",
9751            SocketRequest::SetBindToDevice { .. } => "set_bind_to_device",
9752            SocketRequest::GetBindToDevice { .. } => "get_bind_to_device",
9753            SocketRequest::SetBindToInterfaceIndex { .. } => "set_bind_to_interface_index",
9754            SocketRequest::GetBindToInterfaceIndex { .. } => "get_bind_to_interface_index",
9755            SocketRequest::SetTimestamp { .. } => "set_timestamp",
9756            SocketRequest::GetTimestamp { .. } => "get_timestamp",
9757            SocketRequest::SetMark { .. } => "set_mark",
9758            SocketRequest::GetMark { .. } => "get_mark",
9759            SocketRequest::GetCookie { .. } => "get_cookie",
9760            SocketRequest::Bind { .. } => "bind",
9761            SocketRequest::Connect { .. } => "connect",
9762            SocketRequest::Disconnect { .. } => "disconnect",
9763            SocketRequest::GetSockName { .. } => "get_sock_name",
9764            SocketRequest::GetPeerName { .. } => "get_peer_name",
9765            SocketRequest::Shutdown { .. } => "shutdown",
9766            SocketRequest::SetIpTypeOfService { .. } => "set_ip_type_of_service",
9767            SocketRequest::GetIpTypeOfService { .. } => "get_ip_type_of_service",
9768            SocketRequest::SetIpTtl { .. } => "set_ip_ttl",
9769            SocketRequest::GetIpTtl { .. } => "get_ip_ttl",
9770            SocketRequest::SetIpPacketInfo { .. } => "set_ip_packet_info",
9771            SocketRequest::GetIpPacketInfo { .. } => "get_ip_packet_info",
9772            SocketRequest::SetIpReceiveTypeOfService { .. } => "set_ip_receive_type_of_service",
9773            SocketRequest::GetIpReceiveTypeOfService { .. } => "get_ip_receive_type_of_service",
9774            SocketRequest::SetIpReceiveTtl { .. } => "set_ip_receive_ttl",
9775            SocketRequest::GetIpReceiveTtl { .. } => "get_ip_receive_ttl",
9776            SocketRequest::SetIpMulticastInterface { .. } => "set_ip_multicast_interface",
9777            SocketRequest::GetIpMulticastInterface { .. } => "get_ip_multicast_interface",
9778            SocketRequest::SetIpMulticastTtl { .. } => "set_ip_multicast_ttl",
9779            SocketRequest::GetIpMulticastTtl { .. } => "get_ip_multicast_ttl",
9780            SocketRequest::SetIpMulticastLoopback { .. } => "set_ip_multicast_loopback",
9781            SocketRequest::GetIpMulticastLoopback { .. } => "get_ip_multicast_loopback",
9782            SocketRequest::AddIpMembership { .. } => "add_ip_membership",
9783            SocketRequest::DropIpMembership { .. } => "drop_ip_membership",
9784            SocketRequest::SetIpTransparent { .. } => "set_ip_transparent",
9785            SocketRequest::GetIpTransparent { .. } => "get_ip_transparent",
9786            SocketRequest::SetIpReceiveOriginalDestinationAddress { .. } => {
9787                "set_ip_receive_original_destination_address"
9788            }
9789            SocketRequest::GetIpReceiveOriginalDestinationAddress { .. } => {
9790                "get_ip_receive_original_destination_address"
9791            }
9792            SocketRequest::AddIpv6Membership { .. } => "add_ipv6_membership",
9793            SocketRequest::DropIpv6Membership { .. } => "drop_ipv6_membership",
9794            SocketRequest::SetIpv6MulticastInterface { .. } => "set_ipv6_multicast_interface",
9795            SocketRequest::GetIpv6MulticastInterface { .. } => "get_ipv6_multicast_interface",
9796            SocketRequest::SetIpv6UnicastHops { .. } => "set_ipv6_unicast_hops",
9797            SocketRequest::GetIpv6UnicastHops { .. } => "get_ipv6_unicast_hops",
9798            SocketRequest::SetIpv6ReceiveHopLimit { .. } => "set_ipv6_receive_hop_limit",
9799            SocketRequest::GetIpv6ReceiveHopLimit { .. } => "get_ipv6_receive_hop_limit",
9800            SocketRequest::SetIpv6MulticastHops { .. } => "set_ipv6_multicast_hops",
9801            SocketRequest::GetIpv6MulticastHops { .. } => "get_ipv6_multicast_hops",
9802            SocketRequest::SetIpv6MulticastLoopback { .. } => "set_ipv6_multicast_loopback",
9803            SocketRequest::GetIpv6MulticastLoopback { .. } => "get_ipv6_multicast_loopback",
9804            SocketRequest::SetIpv6Only { .. } => "set_ipv6_only",
9805            SocketRequest::GetIpv6Only { .. } => "get_ipv6_only",
9806            SocketRequest::SetIpv6ReceiveTrafficClass { .. } => "set_ipv6_receive_traffic_class",
9807            SocketRequest::GetIpv6ReceiveTrafficClass { .. } => "get_ipv6_receive_traffic_class",
9808            SocketRequest::SetIpv6TrafficClass { .. } => "set_ipv6_traffic_class",
9809            SocketRequest::GetIpv6TrafficClass { .. } => "get_ipv6_traffic_class",
9810            SocketRequest::SetIpv6ReceivePacketInfo { .. } => "set_ipv6_receive_packet_info",
9811            SocketRequest::GetIpv6ReceivePacketInfo { .. } => "get_ipv6_receive_packet_info",
9812            SocketRequest::GetOriginalDestination { .. } => "get_original_destination",
9813            SocketRequest::Describe { .. } => "describe",
9814            SocketRequest::RecvMsg { .. } => "recv_msg",
9815            SocketRequest::SendMsg { .. } => "send_msg",
9816            SocketRequest::GetInfo { .. } => "get_info",
9817            SocketRequest::SetIpHeaderIncluded { .. } => "set_ip_header_included",
9818            SocketRequest::GetIpHeaderIncluded { .. } => "get_ip_header_included",
9819            SocketRequest::SetIcmpv6Filter { .. } => "set_icmpv6_filter",
9820            SocketRequest::GetIcmpv6Filter { .. } => "get_icmpv6_filter",
9821            SocketRequest::SetIpv6Checksum { .. } => "set_ipv6_checksum",
9822            SocketRequest::GetIpv6Checksum { .. } => "get_ipv6_checksum",
9823        }
9824    }
9825}
9826
9827#[derive(Debug, Clone)]
9828pub struct SocketControlHandle {
9829    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
9830}
9831
9832impl fidl::endpoints::ControlHandle for SocketControlHandle {
9833    fn shutdown(&self) {
9834        self.inner.shutdown()
9835    }
9836    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
9837        self.inner.shutdown_with_epitaph(status)
9838    }
9839
9840    fn is_closed(&self) -> bool {
9841        self.inner.channel().is_closed()
9842    }
9843    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
9844        self.inner.channel().on_closed()
9845    }
9846
9847    #[cfg(target_os = "fuchsia")]
9848    fn signal_peer(
9849        &self,
9850        clear_mask: zx::Signals,
9851        set_mask: zx::Signals,
9852    ) -> Result<(), zx_status::Status> {
9853        use fidl::Peered;
9854        self.inner.channel().signal_peer(clear_mask, set_mask)
9855    }
9856}
9857
9858impl SocketControlHandle {}
9859
9860#[must_use = "FIDL methods require a response to be sent"]
9861#[derive(Debug)]
9862pub struct SocketCloseResponder {
9863    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9864    tx_id: u32,
9865}
9866
9867/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9868/// if the responder is dropped without sending a response, so that the client
9869/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9870impl std::ops::Drop for SocketCloseResponder {
9871    fn drop(&mut self) {
9872        self.control_handle.shutdown();
9873        // Safety: drops once, never accessed again
9874        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9875    }
9876}
9877
9878impl fidl::endpoints::Responder for SocketCloseResponder {
9879    type ControlHandle = SocketControlHandle;
9880
9881    fn control_handle(&self) -> &SocketControlHandle {
9882        &self.control_handle
9883    }
9884
9885    fn drop_without_shutdown(mut self) {
9886        // Safety: drops once, never accessed again due to mem::forget
9887        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9888        // Prevent Drop from running (which would shut down the channel)
9889        std::mem::forget(self);
9890    }
9891}
9892
9893impl SocketCloseResponder {
9894    /// Sends a response to the FIDL transaction.
9895    ///
9896    /// Sets the channel to shutdown if an error occurs.
9897    pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9898        let _result = self.send_raw(result);
9899        if _result.is_err() {
9900            self.control_handle.shutdown();
9901        }
9902        self.drop_without_shutdown();
9903        _result
9904    }
9905
9906    /// Similar to "send" but does not shutdown the channel if an error occurs.
9907    pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9908        let _result = self.send_raw(result);
9909        self.drop_without_shutdown();
9910        _result
9911    }
9912
9913    fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
9914        self.control_handle
9915            .inner
9916            .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
9917                result,
9918                self.tx_id,
9919                0x5ac5d459ad7f657e,
9920                fidl::encoding::DynamicFlags::empty(),
9921            )
9922    }
9923}
9924
9925#[must_use = "FIDL methods require a response to be sent"]
9926#[derive(Debug)]
9927pub struct SocketQueryResponder {
9928    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9929    tx_id: u32,
9930}
9931
9932/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9933/// if the responder is dropped without sending a response, so that the client
9934/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9935impl std::ops::Drop for SocketQueryResponder {
9936    fn drop(&mut self) {
9937        self.control_handle.shutdown();
9938        // Safety: drops once, never accessed again
9939        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9940    }
9941}
9942
9943impl fidl::endpoints::Responder for SocketQueryResponder {
9944    type ControlHandle = SocketControlHandle;
9945
9946    fn control_handle(&self) -> &SocketControlHandle {
9947        &self.control_handle
9948    }
9949
9950    fn drop_without_shutdown(mut self) {
9951        // Safety: drops once, never accessed again due to mem::forget
9952        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
9953        // Prevent Drop from running (which would shut down the channel)
9954        std::mem::forget(self);
9955    }
9956}
9957
9958impl SocketQueryResponder {
9959    /// Sends a response to the FIDL transaction.
9960    ///
9961    /// Sets the channel to shutdown if an error occurs.
9962    pub fn send(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9963        let _result = self.send_raw(protocol);
9964        if _result.is_err() {
9965            self.control_handle.shutdown();
9966        }
9967        self.drop_without_shutdown();
9968        _result
9969    }
9970
9971    /// Similar to "send" but does not shutdown the channel if an error occurs.
9972    pub fn send_no_shutdown_on_err(self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9973        let _result = self.send_raw(protocol);
9974        self.drop_without_shutdown();
9975        _result
9976    }
9977
9978    fn send_raw(&self, mut protocol: &[u8]) -> Result<(), fidl::Error> {
9979        self.control_handle.inner.send::<fidl_fuchsia_unknown::QueryableQueryResponse>(
9980            (protocol,),
9981            self.tx_id,
9982            0x2658edee9decfc06,
9983            fidl::encoding::DynamicFlags::empty(),
9984        )
9985    }
9986}
9987
9988#[must_use = "FIDL methods require a response to be sent"]
9989#[derive(Debug)]
9990pub struct SocketSetReuseAddressResponder {
9991    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
9992    tx_id: u32,
9993}
9994
9995/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
9996/// if the responder is dropped without sending a response, so that the client
9997/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
9998impl std::ops::Drop for SocketSetReuseAddressResponder {
9999    fn drop(&mut self) {
10000        self.control_handle.shutdown();
10001        // Safety: drops once, never accessed again
10002        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10003    }
10004}
10005
10006impl fidl::endpoints::Responder for SocketSetReuseAddressResponder {
10007    type ControlHandle = SocketControlHandle;
10008
10009    fn control_handle(&self) -> &SocketControlHandle {
10010        &self.control_handle
10011    }
10012
10013    fn drop_without_shutdown(mut self) {
10014        // Safety: drops once, never accessed again due to mem::forget
10015        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10016        // Prevent Drop from running (which would shut down the channel)
10017        std::mem::forget(self);
10018    }
10019}
10020
10021impl SocketSetReuseAddressResponder {
10022    /// Sends a response to the FIDL transaction.
10023    ///
10024    /// Sets the channel to shutdown if an error occurs.
10025    pub fn send(
10026        self,
10027        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10028    ) -> Result<(), fidl::Error> {
10029        let _result = self.send_raw(result);
10030        if _result.is_err() {
10031            self.control_handle.shutdown();
10032        }
10033        self.drop_without_shutdown();
10034        _result
10035    }
10036
10037    /// Similar to "send" but does not shutdown the channel if an error occurs.
10038    pub fn send_no_shutdown_on_err(
10039        self,
10040        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10041    ) -> Result<(), fidl::Error> {
10042        let _result = self.send_raw(result);
10043        self.drop_without_shutdown();
10044        _result
10045    }
10046
10047    fn send_raw(
10048        &self,
10049        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10050    ) -> Result<(), fidl::Error> {
10051        self.control_handle.inner.send::<fidl::encoding::ResultType<
10052            fidl::encoding::EmptyStruct,
10053            fidl_fuchsia_posix::Errno,
10054        >>(
10055            result,
10056            self.tx_id,
10057            0x1fd74ee8b9a4a876,
10058            fidl::encoding::DynamicFlags::empty(),
10059        )
10060    }
10061}
10062
10063#[must_use = "FIDL methods require a response to be sent"]
10064#[derive(Debug)]
10065pub struct SocketGetReuseAddressResponder {
10066    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10067    tx_id: u32,
10068}
10069
10070/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10071/// if the responder is dropped without sending a response, so that the client
10072/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10073impl std::ops::Drop for SocketGetReuseAddressResponder {
10074    fn drop(&mut self) {
10075        self.control_handle.shutdown();
10076        // Safety: drops once, never accessed again
10077        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10078    }
10079}
10080
10081impl fidl::endpoints::Responder for SocketGetReuseAddressResponder {
10082    type ControlHandle = SocketControlHandle;
10083
10084    fn control_handle(&self) -> &SocketControlHandle {
10085        &self.control_handle
10086    }
10087
10088    fn drop_without_shutdown(mut self) {
10089        // Safety: drops once, never accessed again due to mem::forget
10090        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10091        // Prevent Drop from running (which would shut down the channel)
10092        std::mem::forget(self);
10093    }
10094}
10095
10096impl SocketGetReuseAddressResponder {
10097    /// Sends a response to the FIDL transaction.
10098    ///
10099    /// Sets the channel to shutdown if an error occurs.
10100    pub fn send(
10101        self,
10102        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10103    ) -> Result<(), fidl::Error> {
10104        let _result = self.send_raw(result);
10105        if _result.is_err() {
10106            self.control_handle.shutdown();
10107        }
10108        self.drop_without_shutdown();
10109        _result
10110    }
10111
10112    /// Similar to "send" but does not shutdown the channel if an error occurs.
10113    pub fn send_no_shutdown_on_err(
10114        self,
10115        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10116    ) -> Result<(), fidl::Error> {
10117        let _result = self.send_raw(result);
10118        self.drop_without_shutdown();
10119        _result
10120    }
10121
10122    fn send_raw(
10123        &self,
10124        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10125    ) -> Result<(), fidl::Error> {
10126        self.control_handle.inner.send::<fidl::encoding::ResultType<
10127            fidl_fuchsia_posix_socket::BaseSocketGetReuseAddressResponse,
10128            fidl_fuchsia_posix::Errno,
10129        >>(
10130            result.map(|value| (value,)),
10131            self.tx_id,
10132            0x67b7206b8d1bc0a5,
10133            fidl::encoding::DynamicFlags::empty(),
10134        )
10135    }
10136}
10137
10138#[must_use = "FIDL methods require a response to be sent"]
10139#[derive(Debug)]
10140pub struct SocketGetErrorResponder {
10141    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10142    tx_id: u32,
10143}
10144
10145/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10146/// if the responder is dropped without sending a response, so that the client
10147/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10148impl std::ops::Drop for SocketGetErrorResponder {
10149    fn drop(&mut self) {
10150        self.control_handle.shutdown();
10151        // Safety: drops once, never accessed again
10152        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10153    }
10154}
10155
10156impl fidl::endpoints::Responder for SocketGetErrorResponder {
10157    type ControlHandle = SocketControlHandle;
10158
10159    fn control_handle(&self) -> &SocketControlHandle {
10160        &self.control_handle
10161    }
10162
10163    fn drop_without_shutdown(mut self) {
10164        // Safety: drops once, never accessed again due to mem::forget
10165        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10166        // Prevent Drop from running (which would shut down the channel)
10167        std::mem::forget(self);
10168    }
10169}
10170
10171impl SocketGetErrorResponder {
10172    /// Sends a response to the FIDL transaction.
10173    ///
10174    /// Sets the channel to shutdown if an error occurs.
10175    pub fn send(
10176        self,
10177        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10178    ) -> Result<(), fidl::Error> {
10179        let _result = self.send_raw(result);
10180        if _result.is_err() {
10181            self.control_handle.shutdown();
10182        }
10183        self.drop_without_shutdown();
10184        _result
10185    }
10186
10187    /// Similar to "send" but does not shutdown the channel if an error occurs.
10188    pub fn send_no_shutdown_on_err(
10189        self,
10190        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10191    ) -> Result<(), fidl::Error> {
10192        let _result = self.send_raw(result);
10193        self.drop_without_shutdown();
10194        _result
10195    }
10196
10197    fn send_raw(
10198        &self,
10199        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10200    ) -> Result<(), fidl::Error> {
10201        self.control_handle.inner.send::<fidl::encoding::ResultType<
10202            fidl::encoding::EmptyStruct,
10203            fidl_fuchsia_posix::Errno,
10204        >>(
10205            result,
10206            self.tx_id,
10207            0x5aad39b33e5f6ebb,
10208            fidl::encoding::DynamicFlags::empty(),
10209        )
10210    }
10211}
10212
10213#[must_use = "FIDL methods require a response to be sent"]
10214#[derive(Debug)]
10215pub struct SocketSetBroadcastResponder {
10216    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10217    tx_id: u32,
10218}
10219
10220/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10221/// if the responder is dropped without sending a response, so that the client
10222/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10223impl std::ops::Drop for SocketSetBroadcastResponder {
10224    fn drop(&mut self) {
10225        self.control_handle.shutdown();
10226        // Safety: drops once, never accessed again
10227        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10228    }
10229}
10230
10231impl fidl::endpoints::Responder for SocketSetBroadcastResponder {
10232    type ControlHandle = SocketControlHandle;
10233
10234    fn control_handle(&self) -> &SocketControlHandle {
10235        &self.control_handle
10236    }
10237
10238    fn drop_without_shutdown(mut self) {
10239        // Safety: drops once, never accessed again due to mem::forget
10240        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10241        // Prevent Drop from running (which would shut down the channel)
10242        std::mem::forget(self);
10243    }
10244}
10245
10246impl SocketSetBroadcastResponder {
10247    /// Sends a response to the FIDL transaction.
10248    ///
10249    /// Sets the channel to shutdown if an error occurs.
10250    pub fn send(
10251        self,
10252        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10253    ) -> Result<(), fidl::Error> {
10254        let _result = self.send_raw(result);
10255        if _result.is_err() {
10256            self.control_handle.shutdown();
10257        }
10258        self.drop_without_shutdown();
10259        _result
10260    }
10261
10262    /// Similar to "send" but does not shutdown the channel if an error occurs.
10263    pub fn send_no_shutdown_on_err(
10264        self,
10265        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10266    ) -> Result<(), fidl::Error> {
10267        let _result = self.send_raw(result);
10268        self.drop_without_shutdown();
10269        _result
10270    }
10271
10272    fn send_raw(
10273        &self,
10274        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10275    ) -> Result<(), fidl::Error> {
10276        self.control_handle.inner.send::<fidl::encoding::ResultType<
10277            fidl::encoding::EmptyStruct,
10278            fidl_fuchsia_posix::Errno,
10279        >>(
10280            result,
10281            self.tx_id,
10282            0x6023e081ce3cd947,
10283            fidl::encoding::DynamicFlags::empty(),
10284        )
10285    }
10286}
10287
10288#[must_use = "FIDL methods require a response to be sent"]
10289#[derive(Debug)]
10290pub struct SocketGetBroadcastResponder {
10291    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10292    tx_id: u32,
10293}
10294
10295/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10296/// if the responder is dropped without sending a response, so that the client
10297/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10298impl std::ops::Drop for SocketGetBroadcastResponder {
10299    fn drop(&mut self) {
10300        self.control_handle.shutdown();
10301        // Safety: drops once, never accessed again
10302        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10303    }
10304}
10305
10306impl fidl::endpoints::Responder for SocketGetBroadcastResponder {
10307    type ControlHandle = SocketControlHandle;
10308
10309    fn control_handle(&self) -> &SocketControlHandle {
10310        &self.control_handle
10311    }
10312
10313    fn drop_without_shutdown(mut self) {
10314        // Safety: drops once, never accessed again due to mem::forget
10315        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10316        // Prevent Drop from running (which would shut down the channel)
10317        std::mem::forget(self);
10318    }
10319}
10320
10321impl SocketGetBroadcastResponder {
10322    /// Sends a response to the FIDL transaction.
10323    ///
10324    /// Sets the channel to shutdown if an error occurs.
10325    pub fn send(
10326        self,
10327        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10328    ) -> Result<(), fidl::Error> {
10329        let _result = self.send_raw(result);
10330        if _result.is_err() {
10331            self.control_handle.shutdown();
10332        }
10333        self.drop_without_shutdown();
10334        _result
10335    }
10336
10337    /// Similar to "send" but does not shutdown the channel if an error occurs.
10338    pub fn send_no_shutdown_on_err(
10339        self,
10340        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10341    ) -> Result<(), fidl::Error> {
10342        let _result = self.send_raw(result);
10343        self.drop_without_shutdown();
10344        _result
10345    }
10346
10347    fn send_raw(
10348        &self,
10349        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10350    ) -> Result<(), fidl::Error> {
10351        self.control_handle.inner.send::<fidl::encoding::ResultType<
10352            fidl_fuchsia_posix_socket::BaseSocketGetBroadcastResponse,
10353            fidl_fuchsia_posix::Errno,
10354        >>(
10355            result.map(|value| (value,)),
10356            self.tx_id,
10357            0x68796fc556f9780d,
10358            fidl::encoding::DynamicFlags::empty(),
10359        )
10360    }
10361}
10362
10363#[must_use = "FIDL methods require a response to be sent"]
10364#[derive(Debug)]
10365pub struct SocketSetSendBufferResponder {
10366    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10367    tx_id: u32,
10368}
10369
10370/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10371/// if the responder is dropped without sending a response, so that the client
10372/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10373impl std::ops::Drop for SocketSetSendBufferResponder {
10374    fn drop(&mut self) {
10375        self.control_handle.shutdown();
10376        // Safety: drops once, never accessed again
10377        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10378    }
10379}
10380
10381impl fidl::endpoints::Responder for SocketSetSendBufferResponder {
10382    type ControlHandle = SocketControlHandle;
10383
10384    fn control_handle(&self) -> &SocketControlHandle {
10385        &self.control_handle
10386    }
10387
10388    fn drop_without_shutdown(mut self) {
10389        // Safety: drops once, never accessed again due to mem::forget
10390        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10391        // Prevent Drop from running (which would shut down the channel)
10392        std::mem::forget(self);
10393    }
10394}
10395
10396impl SocketSetSendBufferResponder {
10397    /// Sends a response to the FIDL transaction.
10398    ///
10399    /// Sets the channel to shutdown if an error occurs.
10400    pub fn send(
10401        self,
10402        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10403    ) -> Result<(), fidl::Error> {
10404        let _result = self.send_raw(result);
10405        if _result.is_err() {
10406            self.control_handle.shutdown();
10407        }
10408        self.drop_without_shutdown();
10409        _result
10410    }
10411
10412    /// Similar to "send" but does not shutdown the channel if an error occurs.
10413    pub fn send_no_shutdown_on_err(
10414        self,
10415        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10416    ) -> Result<(), fidl::Error> {
10417        let _result = self.send_raw(result);
10418        self.drop_without_shutdown();
10419        _result
10420    }
10421
10422    fn send_raw(
10423        &self,
10424        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10425    ) -> Result<(), fidl::Error> {
10426        self.control_handle.inner.send::<fidl::encoding::ResultType<
10427            fidl::encoding::EmptyStruct,
10428            fidl_fuchsia_posix::Errno,
10429        >>(
10430            result,
10431            self.tx_id,
10432            0x756eac32d73a7a70,
10433            fidl::encoding::DynamicFlags::empty(),
10434        )
10435    }
10436}
10437
10438#[must_use = "FIDL methods require a response to be sent"]
10439#[derive(Debug)]
10440pub struct SocketGetSendBufferResponder {
10441    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10442    tx_id: u32,
10443}
10444
10445/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10446/// if the responder is dropped without sending a response, so that the client
10447/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10448impl std::ops::Drop for SocketGetSendBufferResponder {
10449    fn drop(&mut self) {
10450        self.control_handle.shutdown();
10451        // Safety: drops once, never accessed again
10452        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10453    }
10454}
10455
10456impl fidl::endpoints::Responder for SocketGetSendBufferResponder {
10457    type ControlHandle = SocketControlHandle;
10458
10459    fn control_handle(&self) -> &SocketControlHandle {
10460        &self.control_handle
10461    }
10462
10463    fn drop_without_shutdown(mut self) {
10464        // Safety: drops once, never accessed again due to mem::forget
10465        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10466        // Prevent Drop from running (which would shut down the channel)
10467        std::mem::forget(self);
10468    }
10469}
10470
10471impl SocketGetSendBufferResponder {
10472    /// Sends a response to the FIDL transaction.
10473    ///
10474    /// Sets the channel to shutdown if an error occurs.
10475    pub fn send(
10476        self,
10477        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10478    ) -> Result<(), fidl::Error> {
10479        let _result = self.send_raw(result);
10480        if _result.is_err() {
10481            self.control_handle.shutdown();
10482        }
10483        self.drop_without_shutdown();
10484        _result
10485    }
10486
10487    /// Similar to "send" but does not shutdown the channel if an error occurs.
10488    pub fn send_no_shutdown_on_err(
10489        self,
10490        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10491    ) -> Result<(), fidl::Error> {
10492        let _result = self.send_raw(result);
10493        self.drop_without_shutdown();
10494        _result
10495    }
10496
10497    fn send_raw(
10498        &self,
10499        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10500    ) -> Result<(), fidl::Error> {
10501        self.control_handle.inner.send::<fidl::encoding::ResultType<
10502            fidl_fuchsia_posix_socket::BaseSocketGetSendBufferResponse,
10503            fidl_fuchsia_posix::Errno,
10504        >>(
10505            result.map(|value_bytes| (value_bytes,)),
10506            self.tx_id,
10507            0x78a52fd9c7b2410b,
10508            fidl::encoding::DynamicFlags::empty(),
10509        )
10510    }
10511}
10512
10513#[must_use = "FIDL methods require a response to be sent"]
10514#[derive(Debug)]
10515pub struct SocketSetReceiveBufferResponder {
10516    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10517    tx_id: u32,
10518}
10519
10520/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10521/// if the responder is dropped without sending a response, so that the client
10522/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10523impl std::ops::Drop for SocketSetReceiveBufferResponder {
10524    fn drop(&mut self) {
10525        self.control_handle.shutdown();
10526        // Safety: drops once, never accessed again
10527        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10528    }
10529}
10530
10531impl fidl::endpoints::Responder for SocketSetReceiveBufferResponder {
10532    type ControlHandle = SocketControlHandle;
10533
10534    fn control_handle(&self) -> &SocketControlHandle {
10535        &self.control_handle
10536    }
10537
10538    fn drop_without_shutdown(mut self) {
10539        // Safety: drops once, never accessed again due to mem::forget
10540        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10541        // Prevent Drop from running (which would shut down the channel)
10542        std::mem::forget(self);
10543    }
10544}
10545
10546impl SocketSetReceiveBufferResponder {
10547    /// Sends a response to the FIDL transaction.
10548    ///
10549    /// Sets the channel to shutdown if an error occurs.
10550    pub fn send(
10551        self,
10552        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10553    ) -> Result<(), fidl::Error> {
10554        let _result = self.send_raw(result);
10555        if _result.is_err() {
10556            self.control_handle.shutdown();
10557        }
10558        self.drop_without_shutdown();
10559        _result
10560    }
10561
10562    /// Similar to "send" but does not shutdown the channel if an error occurs.
10563    pub fn send_no_shutdown_on_err(
10564        self,
10565        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10566    ) -> Result<(), fidl::Error> {
10567        let _result = self.send_raw(result);
10568        self.drop_without_shutdown();
10569        _result
10570    }
10571
10572    fn send_raw(
10573        &self,
10574        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10575    ) -> Result<(), fidl::Error> {
10576        self.control_handle.inner.send::<fidl::encoding::ResultType<
10577            fidl::encoding::EmptyStruct,
10578            fidl_fuchsia_posix::Errno,
10579        >>(
10580            result,
10581            self.tx_id,
10582            0x6b0cf2f1919c7001,
10583            fidl::encoding::DynamicFlags::empty(),
10584        )
10585    }
10586}
10587
10588#[must_use = "FIDL methods require a response to be sent"]
10589#[derive(Debug)]
10590pub struct SocketGetReceiveBufferResponder {
10591    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10592    tx_id: u32,
10593}
10594
10595/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10596/// if the responder is dropped without sending a response, so that the client
10597/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10598impl std::ops::Drop for SocketGetReceiveBufferResponder {
10599    fn drop(&mut self) {
10600        self.control_handle.shutdown();
10601        // Safety: drops once, never accessed again
10602        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10603    }
10604}
10605
10606impl fidl::endpoints::Responder for SocketGetReceiveBufferResponder {
10607    type ControlHandle = SocketControlHandle;
10608
10609    fn control_handle(&self) -> &SocketControlHandle {
10610        &self.control_handle
10611    }
10612
10613    fn drop_without_shutdown(mut self) {
10614        // Safety: drops once, never accessed again due to mem::forget
10615        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10616        // Prevent Drop from running (which would shut down the channel)
10617        std::mem::forget(self);
10618    }
10619}
10620
10621impl SocketGetReceiveBufferResponder {
10622    /// Sends a response to the FIDL transaction.
10623    ///
10624    /// Sets the channel to shutdown if an error occurs.
10625    pub fn send(
10626        self,
10627        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10628    ) -> Result<(), fidl::Error> {
10629        let _result = self.send_raw(result);
10630        if _result.is_err() {
10631            self.control_handle.shutdown();
10632        }
10633        self.drop_without_shutdown();
10634        _result
10635    }
10636
10637    /// Similar to "send" but does not shutdown the channel if an error occurs.
10638    pub fn send_no_shutdown_on_err(
10639        self,
10640        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10641    ) -> Result<(), fidl::Error> {
10642        let _result = self.send_raw(result);
10643        self.drop_without_shutdown();
10644        _result
10645    }
10646
10647    fn send_raw(
10648        &self,
10649        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
10650    ) -> Result<(), fidl::Error> {
10651        self.control_handle.inner.send::<fidl::encoding::ResultType<
10652            fidl_fuchsia_posix_socket::BaseSocketGetReceiveBufferResponse,
10653            fidl_fuchsia_posix::Errno,
10654        >>(
10655            result.map(|value_bytes| (value_bytes,)),
10656            self.tx_id,
10657            0x14c1a4b64f709e5c,
10658            fidl::encoding::DynamicFlags::empty(),
10659        )
10660    }
10661}
10662
10663#[must_use = "FIDL methods require a response to be sent"]
10664#[derive(Debug)]
10665pub struct SocketSetKeepAliveResponder {
10666    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10667    tx_id: u32,
10668}
10669
10670/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10671/// if the responder is dropped without sending a response, so that the client
10672/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10673impl std::ops::Drop for SocketSetKeepAliveResponder {
10674    fn drop(&mut self) {
10675        self.control_handle.shutdown();
10676        // Safety: drops once, never accessed again
10677        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10678    }
10679}
10680
10681impl fidl::endpoints::Responder for SocketSetKeepAliveResponder {
10682    type ControlHandle = SocketControlHandle;
10683
10684    fn control_handle(&self) -> &SocketControlHandle {
10685        &self.control_handle
10686    }
10687
10688    fn drop_without_shutdown(mut self) {
10689        // Safety: drops once, never accessed again due to mem::forget
10690        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10691        // Prevent Drop from running (which would shut down the channel)
10692        std::mem::forget(self);
10693    }
10694}
10695
10696impl SocketSetKeepAliveResponder {
10697    /// Sends a response to the FIDL transaction.
10698    ///
10699    /// Sets the channel to shutdown if an error occurs.
10700    pub fn send(
10701        self,
10702        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10703    ) -> Result<(), fidl::Error> {
10704        let _result = self.send_raw(result);
10705        if _result.is_err() {
10706            self.control_handle.shutdown();
10707        }
10708        self.drop_without_shutdown();
10709        _result
10710    }
10711
10712    /// Similar to "send" but does not shutdown the channel if an error occurs.
10713    pub fn send_no_shutdown_on_err(
10714        self,
10715        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10716    ) -> Result<(), fidl::Error> {
10717        let _result = self.send_raw(result);
10718        self.drop_without_shutdown();
10719        _result
10720    }
10721
10722    fn send_raw(
10723        &self,
10724        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10725    ) -> Result<(), fidl::Error> {
10726        self.control_handle.inner.send::<fidl::encoding::ResultType<
10727            fidl::encoding::EmptyStruct,
10728            fidl_fuchsia_posix::Errno,
10729        >>(
10730            result,
10731            self.tx_id,
10732            0x572df8f0b920d2c7,
10733            fidl::encoding::DynamicFlags::empty(),
10734        )
10735    }
10736}
10737
10738#[must_use = "FIDL methods require a response to be sent"]
10739#[derive(Debug)]
10740pub struct SocketGetKeepAliveResponder {
10741    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10742    tx_id: u32,
10743}
10744
10745/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10746/// if the responder is dropped without sending a response, so that the client
10747/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10748impl std::ops::Drop for SocketGetKeepAliveResponder {
10749    fn drop(&mut self) {
10750        self.control_handle.shutdown();
10751        // Safety: drops once, never accessed again
10752        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10753    }
10754}
10755
10756impl fidl::endpoints::Responder for SocketGetKeepAliveResponder {
10757    type ControlHandle = SocketControlHandle;
10758
10759    fn control_handle(&self) -> &SocketControlHandle {
10760        &self.control_handle
10761    }
10762
10763    fn drop_without_shutdown(mut self) {
10764        // Safety: drops once, never accessed again due to mem::forget
10765        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10766        // Prevent Drop from running (which would shut down the channel)
10767        std::mem::forget(self);
10768    }
10769}
10770
10771impl SocketGetKeepAliveResponder {
10772    /// Sends a response to the FIDL transaction.
10773    ///
10774    /// Sets the channel to shutdown if an error occurs.
10775    pub fn send(
10776        self,
10777        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10778    ) -> Result<(), fidl::Error> {
10779        let _result = self.send_raw(result);
10780        if _result.is_err() {
10781            self.control_handle.shutdown();
10782        }
10783        self.drop_without_shutdown();
10784        _result
10785    }
10786
10787    /// Similar to "send" but does not shutdown the channel if an error occurs.
10788    pub fn send_no_shutdown_on_err(
10789        self,
10790        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10791    ) -> Result<(), fidl::Error> {
10792        let _result = self.send_raw(result);
10793        self.drop_without_shutdown();
10794        _result
10795    }
10796
10797    fn send_raw(
10798        &self,
10799        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10800    ) -> Result<(), fidl::Error> {
10801        self.control_handle.inner.send::<fidl::encoding::ResultType<
10802            fidl_fuchsia_posix_socket::BaseSocketGetKeepAliveResponse,
10803            fidl_fuchsia_posix::Errno,
10804        >>(
10805            result.map(|value| (value,)),
10806            self.tx_id,
10807            0x2dd29d3215f2c9d2,
10808            fidl::encoding::DynamicFlags::empty(),
10809        )
10810    }
10811}
10812
10813#[must_use = "FIDL methods require a response to be sent"]
10814#[derive(Debug)]
10815pub struct SocketSetOutOfBandInlineResponder {
10816    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10817    tx_id: u32,
10818}
10819
10820/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10821/// if the responder is dropped without sending a response, so that the client
10822/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10823impl std::ops::Drop for SocketSetOutOfBandInlineResponder {
10824    fn drop(&mut self) {
10825        self.control_handle.shutdown();
10826        // Safety: drops once, never accessed again
10827        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10828    }
10829}
10830
10831impl fidl::endpoints::Responder for SocketSetOutOfBandInlineResponder {
10832    type ControlHandle = SocketControlHandle;
10833
10834    fn control_handle(&self) -> &SocketControlHandle {
10835        &self.control_handle
10836    }
10837
10838    fn drop_without_shutdown(mut self) {
10839        // Safety: drops once, never accessed again due to mem::forget
10840        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10841        // Prevent Drop from running (which would shut down the channel)
10842        std::mem::forget(self);
10843    }
10844}
10845
10846impl SocketSetOutOfBandInlineResponder {
10847    /// Sends a response to the FIDL transaction.
10848    ///
10849    /// Sets the channel to shutdown if an error occurs.
10850    pub fn send(
10851        self,
10852        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10853    ) -> Result<(), fidl::Error> {
10854        let _result = self.send_raw(result);
10855        if _result.is_err() {
10856            self.control_handle.shutdown();
10857        }
10858        self.drop_without_shutdown();
10859        _result
10860    }
10861
10862    /// Similar to "send" but does not shutdown the channel if an error occurs.
10863    pub fn send_no_shutdown_on_err(
10864        self,
10865        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10866    ) -> Result<(), fidl::Error> {
10867        let _result = self.send_raw(result);
10868        self.drop_without_shutdown();
10869        _result
10870    }
10871
10872    fn send_raw(
10873        &self,
10874        mut result: Result<(), fidl_fuchsia_posix::Errno>,
10875    ) -> Result<(), fidl::Error> {
10876        self.control_handle.inner.send::<fidl::encoding::ResultType<
10877            fidl::encoding::EmptyStruct,
10878            fidl_fuchsia_posix::Errno,
10879        >>(
10880            result,
10881            self.tx_id,
10882            0x3ecb49968bee439,
10883            fidl::encoding::DynamicFlags::empty(),
10884        )
10885    }
10886}
10887
10888#[must_use = "FIDL methods require a response to be sent"]
10889#[derive(Debug)]
10890pub struct SocketGetOutOfBandInlineResponder {
10891    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10892    tx_id: u32,
10893}
10894
10895/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10896/// if the responder is dropped without sending a response, so that the client
10897/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10898impl std::ops::Drop for SocketGetOutOfBandInlineResponder {
10899    fn drop(&mut self) {
10900        self.control_handle.shutdown();
10901        // Safety: drops once, never accessed again
10902        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10903    }
10904}
10905
10906impl fidl::endpoints::Responder for SocketGetOutOfBandInlineResponder {
10907    type ControlHandle = SocketControlHandle;
10908
10909    fn control_handle(&self) -> &SocketControlHandle {
10910        &self.control_handle
10911    }
10912
10913    fn drop_without_shutdown(mut self) {
10914        // Safety: drops once, never accessed again due to mem::forget
10915        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10916        // Prevent Drop from running (which would shut down the channel)
10917        std::mem::forget(self);
10918    }
10919}
10920
10921impl SocketGetOutOfBandInlineResponder {
10922    /// Sends a response to the FIDL transaction.
10923    ///
10924    /// Sets the channel to shutdown if an error occurs.
10925    pub fn send(
10926        self,
10927        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10928    ) -> Result<(), fidl::Error> {
10929        let _result = self.send_raw(result);
10930        if _result.is_err() {
10931            self.control_handle.shutdown();
10932        }
10933        self.drop_without_shutdown();
10934        _result
10935    }
10936
10937    /// Similar to "send" but does not shutdown the channel if an error occurs.
10938    pub fn send_no_shutdown_on_err(
10939        self,
10940        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10941    ) -> Result<(), fidl::Error> {
10942        let _result = self.send_raw(result);
10943        self.drop_without_shutdown();
10944        _result
10945    }
10946
10947    fn send_raw(
10948        &self,
10949        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
10950    ) -> Result<(), fidl::Error> {
10951        self.control_handle.inner.send::<fidl::encoding::ResultType<
10952            fidl_fuchsia_posix_socket::BaseSocketGetOutOfBandInlineResponse,
10953            fidl_fuchsia_posix::Errno,
10954        >>(
10955            result.map(|value| (value,)),
10956            self.tx_id,
10957            0x348c1ab3aeca1745,
10958            fidl::encoding::DynamicFlags::empty(),
10959        )
10960    }
10961}
10962
10963#[must_use = "FIDL methods require a response to be sent"]
10964#[derive(Debug)]
10965pub struct SocketSetNoCheckResponder {
10966    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
10967    tx_id: u32,
10968}
10969
10970/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
10971/// if the responder is dropped without sending a response, so that the client
10972/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
10973impl std::ops::Drop for SocketSetNoCheckResponder {
10974    fn drop(&mut self) {
10975        self.control_handle.shutdown();
10976        // Safety: drops once, never accessed again
10977        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10978    }
10979}
10980
10981impl fidl::endpoints::Responder for SocketSetNoCheckResponder {
10982    type ControlHandle = SocketControlHandle;
10983
10984    fn control_handle(&self) -> &SocketControlHandle {
10985        &self.control_handle
10986    }
10987
10988    fn drop_without_shutdown(mut self) {
10989        // Safety: drops once, never accessed again due to mem::forget
10990        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
10991        // Prevent Drop from running (which would shut down the channel)
10992        std::mem::forget(self);
10993    }
10994}
10995
10996impl SocketSetNoCheckResponder {
10997    /// Sends a response to the FIDL transaction.
10998    ///
10999    /// Sets the channel to shutdown if an error occurs.
11000    pub fn send(
11001        self,
11002        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11003    ) -> Result<(), fidl::Error> {
11004        let _result = self.send_raw(result);
11005        if _result.is_err() {
11006            self.control_handle.shutdown();
11007        }
11008        self.drop_without_shutdown();
11009        _result
11010    }
11011
11012    /// Similar to "send" but does not shutdown the channel if an error occurs.
11013    pub fn send_no_shutdown_on_err(
11014        self,
11015        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11016    ) -> Result<(), fidl::Error> {
11017        let _result = self.send_raw(result);
11018        self.drop_without_shutdown();
11019        _result
11020    }
11021
11022    fn send_raw(
11023        &self,
11024        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11025    ) -> Result<(), fidl::Error> {
11026        self.control_handle.inner.send::<fidl::encoding::ResultType<
11027            fidl::encoding::EmptyStruct,
11028            fidl_fuchsia_posix::Errno,
11029        >>(
11030            result,
11031            self.tx_id,
11032            0x6bbf00c53a4c78c2,
11033            fidl::encoding::DynamicFlags::empty(),
11034        )
11035    }
11036}
11037
11038#[must_use = "FIDL methods require a response to be sent"]
11039#[derive(Debug)]
11040pub struct SocketGetNoCheckResponder {
11041    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11042    tx_id: u32,
11043}
11044
11045/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11046/// if the responder is dropped without sending a response, so that the client
11047/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11048impl std::ops::Drop for SocketGetNoCheckResponder {
11049    fn drop(&mut self) {
11050        self.control_handle.shutdown();
11051        // Safety: drops once, never accessed again
11052        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11053    }
11054}
11055
11056impl fidl::endpoints::Responder for SocketGetNoCheckResponder {
11057    type ControlHandle = SocketControlHandle;
11058
11059    fn control_handle(&self) -> &SocketControlHandle {
11060        &self.control_handle
11061    }
11062
11063    fn drop_without_shutdown(mut self) {
11064        // Safety: drops once, never accessed again due to mem::forget
11065        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11066        // Prevent Drop from running (which would shut down the channel)
11067        std::mem::forget(self);
11068    }
11069}
11070
11071impl SocketGetNoCheckResponder {
11072    /// Sends a response to the FIDL transaction.
11073    ///
11074    /// Sets the channel to shutdown if an error occurs.
11075    pub fn send(
11076        self,
11077        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11078    ) -> Result<(), fidl::Error> {
11079        let _result = self.send_raw(result);
11080        if _result.is_err() {
11081            self.control_handle.shutdown();
11082        }
11083        self.drop_without_shutdown();
11084        _result
11085    }
11086
11087    /// Similar to "send" but does not shutdown the channel if an error occurs.
11088    pub fn send_no_shutdown_on_err(
11089        self,
11090        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11091    ) -> Result<(), fidl::Error> {
11092        let _result = self.send_raw(result);
11093        self.drop_without_shutdown();
11094        _result
11095    }
11096
11097    fn send_raw(
11098        &self,
11099        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11100    ) -> Result<(), fidl::Error> {
11101        self.control_handle.inner.send::<fidl::encoding::ResultType<
11102            fidl_fuchsia_posix_socket::BaseSocketGetNoCheckResponse,
11103            fidl_fuchsia_posix::Errno,
11104        >>(
11105            result.map(|value| (value,)),
11106            self.tx_id,
11107            0x2cd4249286417694,
11108            fidl::encoding::DynamicFlags::empty(),
11109        )
11110    }
11111}
11112
11113#[must_use = "FIDL methods require a response to be sent"]
11114#[derive(Debug)]
11115pub struct SocketSetLingerResponder {
11116    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11117    tx_id: u32,
11118}
11119
11120/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11121/// if the responder is dropped without sending a response, so that the client
11122/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11123impl std::ops::Drop for SocketSetLingerResponder {
11124    fn drop(&mut self) {
11125        self.control_handle.shutdown();
11126        // Safety: drops once, never accessed again
11127        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11128    }
11129}
11130
11131impl fidl::endpoints::Responder for SocketSetLingerResponder {
11132    type ControlHandle = SocketControlHandle;
11133
11134    fn control_handle(&self) -> &SocketControlHandle {
11135        &self.control_handle
11136    }
11137
11138    fn drop_without_shutdown(mut self) {
11139        // Safety: drops once, never accessed again due to mem::forget
11140        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11141        // Prevent Drop from running (which would shut down the channel)
11142        std::mem::forget(self);
11143    }
11144}
11145
11146impl SocketSetLingerResponder {
11147    /// Sends a response to the FIDL transaction.
11148    ///
11149    /// Sets the channel to shutdown if an error occurs.
11150    pub fn send(
11151        self,
11152        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11153    ) -> Result<(), fidl::Error> {
11154        let _result = self.send_raw(result);
11155        if _result.is_err() {
11156            self.control_handle.shutdown();
11157        }
11158        self.drop_without_shutdown();
11159        _result
11160    }
11161
11162    /// Similar to "send" but does not shutdown the channel if an error occurs.
11163    pub fn send_no_shutdown_on_err(
11164        self,
11165        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11166    ) -> Result<(), fidl::Error> {
11167        let _result = self.send_raw(result);
11168        self.drop_without_shutdown();
11169        _result
11170    }
11171
11172    fn send_raw(
11173        &self,
11174        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11175    ) -> Result<(), fidl::Error> {
11176        self.control_handle.inner.send::<fidl::encoding::ResultType<
11177            fidl::encoding::EmptyStruct,
11178            fidl_fuchsia_posix::Errno,
11179        >>(
11180            result,
11181            self.tx_id,
11182            0x45386351246e998e,
11183            fidl::encoding::DynamicFlags::empty(),
11184        )
11185    }
11186}
11187
11188#[must_use = "FIDL methods require a response to be sent"]
11189#[derive(Debug)]
11190pub struct SocketGetLingerResponder {
11191    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11192    tx_id: u32,
11193}
11194
11195/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11196/// if the responder is dropped without sending a response, so that the client
11197/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11198impl std::ops::Drop for SocketGetLingerResponder {
11199    fn drop(&mut self) {
11200        self.control_handle.shutdown();
11201        // Safety: drops once, never accessed again
11202        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11203    }
11204}
11205
11206impl fidl::endpoints::Responder for SocketGetLingerResponder {
11207    type ControlHandle = SocketControlHandle;
11208
11209    fn control_handle(&self) -> &SocketControlHandle {
11210        &self.control_handle
11211    }
11212
11213    fn drop_without_shutdown(mut self) {
11214        // Safety: drops once, never accessed again due to mem::forget
11215        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11216        // Prevent Drop from running (which would shut down the channel)
11217        std::mem::forget(self);
11218    }
11219}
11220
11221impl SocketGetLingerResponder {
11222    /// Sends a response to the FIDL transaction.
11223    ///
11224    /// Sets the channel to shutdown if an error occurs.
11225    pub fn send(
11226        self,
11227        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11228    ) -> Result<(), fidl::Error> {
11229        let _result = self.send_raw(result);
11230        if _result.is_err() {
11231            self.control_handle.shutdown();
11232        }
11233        self.drop_without_shutdown();
11234        _result
11235    }
11236
11237    /// Similar to "send" but does not shutdown the channel if an error occurs.
11238    pub fn send_no_shutdown_on_err(
11239        self,
11240        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11241    ) -> Result<(), fidl::Error> {
11242        let _result = self.send_raw(result);
11243        self.drop_without_shutdown();
11244        _result
11245    }
11246
11247    fn send_raw(
11248        &self,
11249        mut result: Result<(bool, u32), fidl_fuchsia_posix::Errno>,
11250    ) -> Result<(), fidl::Error> {
11251        self.control_handle.inner.send::<fidl::encoding::ResultType<
11252            fidl_fuchsia_posix_socket::BaseSocketGetLingerResponse,
11253            fidl_fuchsia_posix::Errno,
11254        >>(
11255            result,
11256            self.tx_id,
11257            0x48eb20fc5ccb0e45,
11258            fidl::encoding::DynamicFlags::empty(),
11259        )
11260    }
11261}
11262
11263#[must_use = "FIDL methods require a response to be sent"]
11264#[derive(Debug)]
11265pub struct SocketSetReusePortResponder {
11266    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11267    tx_id: u32,
11268}
11269
11270/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11271/// if the responder is dropped without sending a response, so that the client
11272/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11273impl std::ops::Drop for SocketSetReusePortResponder {
11274    fn drop(&mut self) {
11275        self.control_handle.shutdown();
11276        // Safety: drops once, never accessed again
11277        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11278    }
11279}
11280
11281impl fidl::endpoints::Responder for SocketSetReusePortResponder {
11282    type ControlHandle = SocketControlHandle;
11283
11284    fn control_handle(&self) -> &SocketControlHandle {
11285        &self.control_handle
11286    }
11287
11288    fn drop_without_shutdown(mut self) {
11289        // Safety: drops once, never accessed again due to mem::forget
11290        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11291        // Prevent Drop from running (which would shut down the channel)
11292        std::mem::forget(self);
11293    }
11294}
11295
11296impl SocketSetReusePortResponder {
11297    /// Sends a response to the FIDL transaction.
11298    ///
11299    /// Sets the channel to shutdown if an error occurs.
11300    pub fn send(
11301        self,
11302        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11303    ) -> Result<(), fidl::Error> {
11304        let _result = self.send_raw(result);
11305        if _result.is_err() {
11306            self.control_handle.shutdown();
11307        }
11308        self.drop_without_shutdown();
11309        _result
11310    }
11311
11312    /// Similar to "send" but does not shutdown the channel if an error occurs.
11313    pub fn send_no_shutdown_on_err(
11314        self,
11315        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11316    ) -> Result<(), fidl::Error> {
11317        let _result = self.send_raw(result);
11318        self.drop_without_shutdown();
11319        _result
11320    }
11321
11322    fn send_raw(
11323        &self,
11324        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11325    ) -> Result<(), fidl::Error> {
11326        self.control_handle.inner.send::<fidl::encoding::ResultType<
11327            fidl::encoding::EmptyStruct,
11328            fidl_fuchsia_posix::Errno,
11329        >>(
11330            result,
11331            self.tx_id,
11332            0x547dc9cc0455189e,
11333            fidl::encoding::DynamicFlags::empty(),
11334        )
11335    }
11336}
11337
11338#[must_use = "FIDL methods require a response to be sent"]
11339#[derive(Debug)]
11340pub struct SocketSetReusePortDeprecatedResponder {
11341    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11342    tx_id: u32,
11343}
11344
11345/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11346/// if the responder is dropped without sending a response, so that the client
11347/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11348impl std::ops::Drop for SocketSetReusePortDeprecatedResponder {
11349    fn drop(&mut self) {
11350        self.control_handle.shutdown();
11351        // Safety: drops once, never accessed again
11352        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11353    }
11354}
11355
11356impl fidl::endpoints::Responder for SocketSetReusePortDeprecatedResponder {
11357    type ControlHandle = SocketControlHandle;
11358
11359    fn control_handle(&self) -> &SocketControlHandle {
11360        &self.control_handle
11361    }
11362
11363    fn drop_without_shutdown(mut self) {
11364        // Safety: drops once, never accessed again due to mem::forget
11365        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11366        // Prevent Drop from running (which would shut down the channel)
11367        std::mem::forget(self);
11368    }
11369}
11370
11371impl SocketSetReusePortDeprecatedResponder {
11372    /// Sends a response to the FIDL transaction.
11373    ///
11374    /// Sets the channel to shutdown if an error occurs.
11375    pub fn send(
11376        self,
11377        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11378    ) -> Result<(), fidl::Error> {
11379        let _result = self.send_raw(result);
11380        if _result.is_err() {
11381            self.control_handle.shutdown();
11382        }
11383        self.drop_without_shutdown();
11384        _result
11385    }
11386
11387    /// Similar to "send" but does not shutdown the channel if an error occurs.
11388    pub fn send_no_shutdown_on_err(
11389        self,
11390        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11391    ) -> Result<(), fidl::Error> {
11392        let _result = self.send_raw(result);
11393        self.drop_without_shutdown();
11394        _result
11395    }
11396
11397    fn send_raw(
11398        &self,
11399        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11400    ) -> Result<(), fidl::Error> {
11401        self.control_handle.inner.send::<fidl::encoding::ResultType<
11402            fidl::encoding::EmptyStruct,
11403            fidl_fuchsia_posix::Errno,
11404        >>(
11405            result,
11406            self.tx_id,
11407            0x24dd3e5cb36d9ccb,
11408            fidl::encoding::DynamicFlags::empty(),
11409        )
11410    }
11411}
11412
11413#[must_use = "FIDL methods require a response to be sent"]
11414#[derive(Debug)]
11415pub struct SocketGetReusePortResponder {
11416    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11417    tx_id: u32,
11418}
11419
11420/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11421/// if the responder is dropped without sending a response, so that the client
11422/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11423impl std::ops::Drop for SocketGetReusePortResponder {
11424    fn drop(&mut self) {
11425        self.control_handle.shutdown();
11426        // Safety: drops once, never accessed again
11427        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11428    }
11429}
11430
11431impl fidl::endpoints::Responder for SocketGetReusePortResponder {
11432    type ControlHandle = SocketControlHandle;
11433
11434    fn control_handle(&self) -> &SocketControlHandle {
11435        &self.control_handle
11436    }
11437
11438    fn drop_without_shutdown(mut self) {
11439        // Safety: drops once, never accessed again due to mem::forget
11440        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11441        // Prevent Drop from running (which would shut down the channel)
11442        std::mem::forget(self);
11443    }
11444}
11445
11446impl SocketGetReusePortResponder {
11447    /// Sends a response to the FIDL transaction.
11448    ///
11449    /// Sets the channel to shutdown if an error occurs.
11450    pub fn send(
11451        self,
11452        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11453    ) -> Result<(), fidl::Error> {
11454        let _result = self.send_raw(result);
11455        if _result.is_err() {
11456            self.control_handle.shutdown();
11457        }
11458        self.drop_without_shutdown();
11459        _result
11460    }
11461
11462    /// Similar to "send" but does not shutdown the channel if an error occurs.
11463    pub fn send_no_shutdown_on_err(
11464        self,
11465        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11466    ) -> Result<(), fidl::Error> {
11467        let _result = self.send_raw(result);
11468        self.drop_without_shutdown();
11469        _result
11470    }
11471
11472    fn send_raw(
11473        &self,
11474        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11475    ) -> Result<(), fidl::Error> {
11476        self.control_handle.inner.send::<fidl::encoding::ResultType<
11477            fidl_fuchsia_posix_socket::BaseSocketGetReusePortResponse,
11478            fidl_fuchsia_posix::Errno,
11479        >>(
11480            result.map(|value| (value,)),
11481            self.tx_id,
11482            0x7a112c1ab54ff828,
11483            fidl::encoding::DynamicFlags::empty(),
11484        )
11485    }
11486}
11487
11488#[must_use = "FIDL methods require a response to be sent"]
11489#[derive(Debug)]
11490pub struct SocketGetAcceptConnResponder {
11491    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11492    tx_id: u32,
11493}
11494
11495/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11496/// if the responder is dropped without sending a response, so that the client
11497/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11498impl std::ops::Drop for SocketGetAcceptConnResponder {
11499    fn drop(&mut self) {
11500        self.control_handle.shutdown();
11501        // Safety: drops once, never accessed again
11502        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11503    }
11504}
11505
11506impl fidl::endpoints::Responder for SocketGetAcceptConnResponder {
11507    type ControlHandle = SocketControlHandle;
11508
11509    fn control_handle(&self) -> &SocketControlHandle {
11510        &self.control_handle
11511    }
11512
11513    fn drop_without_shutdown(mut self) {
11514        // Safety: drops once, never accessed again due to mem::forget
11515        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11516        // Prevent Drop from running (which would shut down the channel)
11517        std::mem::forget(self);
11518    }
11519}
11520
11521impl SocketGetAcceptConnResponder {
11522    /// Sends a response to the FIDL transaction.
11523    ///
11524    /// Sets the channel to shutdown if an error occurs.
11525    pub fn send(
11526        self,
11527        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11528    ) -> Result<(), fidl::Error> {
11529        let _result = self.send_raw(result);
11530        if _result.is_err() {
11531            self.control_handle.shutdown();
11532        }
11533        self.drop_without_shutdown();
11534        _result
11535    }
11536
11537    /// Similar to "send" but does not shutdown the channel if an error occurs.
11538    pub fn send_no_shutdown_on_err(
11539        self,
11540        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11541    ) -> Result<(), fidl::Error> {
11542        let _result = self.send_raw(result);
11543        self.drop_without_shutdown();
11544        _result
11545    }
11546
11547    fn send_raw(
11548        &self,
11549        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
11550    ) -> Result<(), fidl::Error> {
11551        self.control_handle.inner.send::<fidl::encoding::ResultType<
11552            fidl_fuchsia_posix_socket::BaseSocketGetAcceptConnResponse,
11553            fidl_fuchsia_posix::Errno,
11554        >>(
11555            result.map(|value| (value,)),
11556            self.tx_id,
11557            0x67ce6db6c2ec8966,
11558            fidl::encoding::DynamicFlags::empty(),
11559        )
11560    }
11561}
11562
11563#[must_use = "FIDL methods require a response to be sent"]
11564#[derive(Debug)]
11565pub struct SocketSetBindToDeviceResponder {
11566    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11567    tx_id: u32,
11568}
11569
11570/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11571/// if the responder is dropped without sending a response, so that the client
11572/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11573impl std::ops::Drop for SocketSetBindToDeviceResponder {
11574    fn drop(&mut self) {
11575        self.control_handle.shutdown();
11576        // Safety: drops once, never accessed again
11577        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11578    }
11579}
11580
11581impl fidl::endpoints::Responder for SocketSetBindToDeviceResponder {
11582    type ControlHandle = SocketControlHandle;
11583
11584    fn control_handle(&self) -> &SocketControlHandle {
11585        &self.control_handle
11586    }
11587
11588    fn drop_without_shutdown(mut self) {
11589        // Safety: drops once, never accessed again due to mem::forget
11590        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11591        // Prevent Drop from running (which would shut down the channel)
11592        std::mem::forget(self);
11593    }
11594}
11595
11596impl SocketSetBindToDeviceResponder {
11597    /// Sends a response to the FIDL transaction.
11598    ///
11599    /// Sets the channel to shutdown if an error occurs.
11600    pub fn send(
11601        self,
11602        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11603    ) -> Result<(), fidl::Error> {
11604        let _result = self.send_raw(result);
11605        if _result.is_err() {
11606            self.control_handle.shutdown();
11607        }
11608        self.drop_without_shutdown();
11609        _result
11610    }
11611
11612    /// Similar to "send" but does not shutdown the channel if an error occurs.
11613    pub fn send_no_shutdown_on_err(
11614        self,
11615        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11616    ) -> Result<(), fidl::Error> {
11617        let _result = self.send_raw(result);
11618        self.drop_without_shutdown();
11619        _result
11620    }
11621
11622    fn send_raw(
11623        &self,
11624        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11625    ) -> Result<(), fidl::Error> {
11626        self.control_handle.inner.send::<fidl::encoding::ResultType<
11627            fidl::encoding::EmptyStruct,
11628            fidl_fuchsia_posix::Errno,
11629        >>(
11630            result,
11631            self.tx_id,
11632            0x2118b483f28aafc4,
11633            fidl::encoding::DynamicFlags::empty(),
11634        )
11635    }
11636}
11637
11638#[must_use = "FIDL methods require a response to be sent"]
11639#[derive(Debug)]
11640pub struct SocketGetBindToDeviceResponder {
11641    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11642    tx_id: u32,
11643}
11644
11645/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11646/// if the responder is dropped without sending a response, so that the client
11647/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11648impl std::ops::Drop for SocketGetBindToDeviceResponder {
11649    fn drop(&mut self) {
11650        self.control_handle.shutdown();
11651        // Safety: drops once, never accessed again
11652        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11653    }
11654}
11655
11656impl fidl::endpoints::Responder for SocketGetBindToDeviceResponder {
11657    type ControlHandle = SocketControlHandle;
11658
11659    fn control_handle(&self) -> &SocketControlHandle {
11660        &self.control_handle
11661    }
11662
11663    fn drop_without_shutdown(mut self) {
11664        // Safety: drops once, never accessed again due to mem::forget
11665        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11666        // Prevent Drop from running (which would shut down the channel)
11667        std::mem::forget(self);
11668    }
11669}
11670
11671impl SocketGetBindToDeviceResponder {
11672    /// Sends a response to the FIDL transaction.
11673    ///
11674    /// Sets the channel to shutdown if an error occurs.
11675    pub fn send(
11676        self,
11677        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11678    ) -> Result<(), fidl::Error> {
11679        let _result = self.send_raw(result);
11680        if _result.is_err() {
11681            self.control_handle.shutdown();
11682        }
11683        self.drop_without_shutdown();
11684        _result
11685    }
11686
11687    /// Similar to "send" but does not shutdown the channel if an error occurs.
11688    pub fn send_no_shutdown_on_err(
11689        self,
11690        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11691    ) -> Result<(), fidl::Error> {
11692        let _result = self.send_raw(result);
11693        self.drop_without_shutdown();
11694        _result
11695    }
11696
11697    fn send_raw(
11698        &self,
11699        mut result: Result<&str, fidl_fuchsia_posix::Errno>,
11700    ) -> Result<(), fidl::Error> {
11701        self.control_handle.inner.send::<fidl::encoding::ResultType<
11702            fidl_fuchsia_posix_socket::BaseSocketGetBindToDeviceResponse,
11703            fidl_fuchsia_posix::Errno,
11704        >>(
11705            result.map(|value| (value,)),
11706            self.tx_id,
11707            0x1ab1fbf0ef7906c8,
11708            fidl::encoding::DynamicFlags::empty(),
11709        )
11710    }
11711}
11712
11713#[must_use = "FIDL methods require a response to be sent"]
11714#[derive(Debug)]
11715pub struct SocketSetBindToInterfaceIndexResponder {
11716    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11717    tx_id: u32,
11718}
11719
11720/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11721/// if the responder is dropped without sending a response, so that the client
11722/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11723impl std::ops::Drop for SocketSetBindToInterfaceIndexResponder {
11724    fn drop(&mut self) {
11725        self.control_handle.shutdown();
11726        // Safety: drops once, never accessed again
11727        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11728    }
11729}
11730
11731impl fidl::endpoints::Responder for SocketSetBindToInterfaceIndexResponder {
11732    type ControlHandle = SocketControlHandle;
11733
11734    fn control_handle(&self) -> &SocketControlHandle {
11735        &self.control_handle
11736    }
11737
11738    fn drop_without_shutdown(mut self) {
11739        // Safety: drops once, never accessed again due to mem::forget
11740        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11741        // Prevent Drop from running (which would shut down the channel)
11742        std::mem::forget(self);
11743    }
11744}
11745
11746impl SocketSetBindToInterfaceIndexResponder {
11747    /// Sends a response to the FIDL transaction.
11748    ///
11749    /// Sets the channel to shutdown if an error occurs.
11750    pub fn send(
11751        self,
11752        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11753    ) -> Result<(), fidl::Error> {
11754        let _result = self.send_raw(result);
11755        if _result.is_err() {
11756            self.control_handle.shutdown();
11757        }
11758        self.drop_without_shutdown();
11759        _result
11760    }
11761
11762    /// Similar to "send" but does not shutdown the channel if an error occurs.
11763    pub fn send_no_shutdown_on_err(
11764        self,
11765        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11766    ) -> Result<(), fidl::Error> {
11767        let _result = self.send_raw(result);
11768        self.drop_without_shutdown();
11769        _result
11770    }
11771
11772    fn send_raw(
11773        &self,
11774        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11775    ) -> Result<(), fidl::Error> {
11776        self.control_handle.inner.send::<fidl::encoding::ResultType<
11777            fidl::encoding::EmptyStruct,
11778            fidl_fuchsia_posix::Errno,
11779        >>(
11780            result,
11781            self.tx_id,
11782            0x6e387a0def00821,
11783            fidl::encoding::DynamicFlags::empty(),
11784        )
11785    }
11786}
11787
11788#[must_use = "FIDL methods require a response to be sent"]
11789#[derive(Debug)]
11790pub struct SocketGetBindToInterfaceIndexResponder {
11791    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11792    tx_id: u32,
11793}
11794
11795/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11796/// if the responder is dropped without sending a response, so that the client
11797/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11798impl std::ops::Drop for SocketGetBindToInterfaceIndexResponder {
11799    fn drop(&mut self) {
11800        self.control_handle.shutdown();
11801        // Safety: drops once, never accessed again
11802        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11803    }
11804}
11805
11806impl fidl::endpoints::Responder for SocketGetBindToInterfaceIndexResponder {
11807    type ControlHandle = SocketControlHandle;
11808
11809    fn control_handle(&self) -> &SocketControlHandle {
11810        &self.control_handle
11811    }
11812
11813    fn drop_without_shutdown(mut self) {
11814        // Safety: drops once, never accessed again due to mem::forget
11815        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11816        // Prevent Drop from running (which would shut down the channel)
11817        std::mem::forget(self);
11818    }
11819}
11820
11821impl SocketGetBindToInterfaceIndexResponder {
11822    /// Sends a response to the FIDL transaction.
11823    ///
11824    /// Sets the channel to shutdown if an error occurs.
11825    pub fn send(
11826        self,
11827        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11828    ) -> Result<(), fidl::Error> {
11829        let _result = self.send_raw(result);
11830        if _result.is_err() {
11831            self.control_handle.shutdown();
11832        }
11833        self.drop_without_shutdown();
11834        _result
11835    }
11836
11837    /// Similar to "send" but does not shutdown the channel if an error occurs.
11838    pub fn send_no_shutdown_on_err(
11839        self,
11840        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11841    ) -> Result<(), fidl::Error> {
11842        let _result = self.send_raw(result);
11843        self.drop_without_shutdown();
11844        _result
11845    }
11846
11847    fn send_raw(
11848        &self,
11849        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
11850    ) -> Result<(), fidl::Error> {
11851        self.control_handle.inner.send::<fidl::encoding::ResultType<
11852            fidl_fuchsia_posix_socket::BaseSocketGetBindToInterfaceIndexResponse,
11853            fidl_fuchsia_posix::Errno,
11854        >>(
11855            result.map(|value| (value,)),
11856            self.tx_id,
11857            0x59c31dd3e3078295,
11858            fidl::encoding::DynamicFlags::empty(),
11859        )
11860    }
11861}
11862
11863#[must_use = "FIDL methods require a response to be sent"]
11864#[derive(Debug)]
11865pub struct SocketSetTimestampResponder {
11866    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11867    tx_id: u32,
11868}
11869
11870/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11871/// if the responder is dropped without sending a response, so that the client
11872/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11873impl std::ops::Drop for SocketSetTimestampResponder {
11874    fn drop(&mut self) {
11875        self.control_handle.shutdown();
11876        // Safety: drops once, never accessed again
11877        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11878    }
11879}
11880
11881impl fidl::endpoints::Responder for SocketSetTimestampResponder {
11882    type ControlHandle = SocketControlHandle;
11883
11884    fn control_handle(&self) -> &SocketControlHandle {
11885        &self.control_handle
11886    }
11887
11888    fn drop_without_shutdown(mut self) {
11889        // Safety: drops once, never accessed again due to mem::forget
11890        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11891        // Prevent Drop from running (which would shut down the channel)
11892        std::mem::forget(self);
11893    }
11894}
11895
11896impl SocketSetTimestampResponder {
11897    /// Sends a response to the FIDL transaction.
11898    ///
11899    /// Sets the channel to shutdown if an error occurs.
11900    pub fn send(
11901        self,
11902        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11903    ) -> Result<(), fidl::Error> {
11904        let _result = self.send_raw(result);
11905        if _result.is_err() {
11906            self.control_handle.shutdown();
11907        }
11908        self.drop_without_shutdown();
11909        _result
11910    }
11911
11912    /// Similar to "send" but does not shutdown the channel if an error occurs.
11913    pub fn send_no_shutdown_on_err(
11914        self,
11915        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11916    ) -> Result<(), fidl::Error> {
11917        let _result = self.send_raw(result);
11918        self.drop_without_shutdown();
11919        _result
11920    }
11921
11922    fn send_raw(
11923        &self,
11924        mut result: Result<(), fidl_fuchsia_posix::Errno>,
11925    ) -> Result<(), fidl::Error> {
11926        self.control_handle.inner.send::<fidl::encoding::ResultType<
11927            fidl::encoding::EmptyStruct,
11928            fidl_fuchsia_posix::Errno,
11929        >>(
11930            result,
11931            self.tx_id,
11932            0x285d6516c263d839,
11933            fidl::encoding::DynamicFlags::empty(),
11934        )
11935    }
11936}
11937
11938#[must_use = "FIDL methods require a response to be sent"]
11939#[derive(Debug)]
11940pub struct SocketGetTimestampResponder {
11941    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
11942    tx_id: u32,
11943}
11944
11945/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
11946/// if the responder is dropped without sending a response, so that the client
11947/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
11948impl std::ops::Drop for SocketGetTimestampResponder {
11949    fn drop(&mut self) {
11950        self.control_handle.shutdown();
11951        // Safety: drops once, never accessed again
11952        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11953    }
11954}
11955
11956impl fidl::endpoints::Responder for SocketGetTimestampResponder {
11957    type ControlHandle = SocketControlHandle;
11958
11959    fn control_handle(&self) -> &SocketControlHandle {
11960        &self.control_handle
11961    }
11962
11963    fn drop_without_shutdown(mut self) {
11964        // Safety: drops once, never accessed again due to mem::forget
11965        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
11966        // Prevent Drop from running (which would shut down the channel)
11967        std::mem::forget(self);
11968    }
11969}
11970
11971impl SocketGetTimestampResponder {
11972    /// Sends a response to the FIDL transaction.
11973    ///
11974    /// Sets the channel to shutdown if an error occurs.
11975    pub fn send(
11976        self,
11977        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11978    ) -> Result<(), fidl::Error> {
11979        let _result = self.send_raw(result);
11980        if _result.is_err() {
11981            self.control_handle.shutdown();
11982        }
11983        self.drop_without_shutdown();
11984        _result
11985    }
11986
11987    /// Similar to "send" but does not shutdown the channel if an error occurs.
11988    pub fn send_no_shutdown_on_err(
11989        self,
11990        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
11991    ) -> Result<(), fidl::Error> {
11992        let _result = self.send_raw(result);
11993        self.drop_without_shutdown();
11994        _result
11995    }
11996
11997    fn send_raw(
11998        &self,
11999        mut result: Result<fidl_fuchsia_posix_socket::TimestampOption, fidl_fuchsia_posix::Errno>,
12000    ) -> Result<(), fidl::Error> {
12001        self.control_handle.inner.send::<fidl::encoding::ResultType<
12002            fidl_fuchsia_posix_socket::BaseSocketGetTimestampResponse,
12003            fidl_fuchsia_posix::Errno,
12004        >>(
12005            result.map(|value| (value,)),
12006            self.tx_id,
12007            0x49f2fffbbcc2bd27,
12008            fidl::encoding::DynamicFlags::empty(),
12009        )
12010    }
12011}
12012
12013#[must_use = "FIDL methods require a response to be sent"]
12014#[derive(Debug)]
12015pub struct SocketSetMarkResponder {
12016    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12017    tx_id: u32,
12018}
12019
12020/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12021/// if the responder is dropped without sending a response, so that the client
12022/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12023impl std::ops::Drop for SocketSetMarkResponder {
12024    fn drop(&mut self) {
12025        self.control_handle.shutdown();
12026        // Safety: drops once, never accessed again
12027        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12028    }
12029}
12030
12031impl fidl::endpoints::Responder for SocketSetMarkResponder {
12032    type ControlHandle = SocketControlHandle;
12033
12034    fn control_handle(&self) -> &SocketControlHandle {
12035        &self.control_handle
12036    }
12037
12038    fn drop_without_shutdown(mut self) {
12039        // Safety: drops once, never accessed again due to mem::forget
12040        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12041        // Prevent Drop from running (which would shut down the channel)
12042        std::mem::forget(self);
12043    }
12044}
12045
12046impl SocketSetMarkResponder {
12047    /// Sends a response to the FIDL transaction.
12048    ///
12049    /// Sets the channel to shutdown if an error occurs.
12050    pub fn send(
12051        self,
12052        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12053    ) -> Result<(), fidl::Error> {
12054        let _result = self.send_raw(result);
12055        if _result.is_err() {
12056            self.control_handle.shutdown();
12057        }
12058        self.drop_without_shutdown();
12059        _result
12060    }
12061
12062    /// Similar to "send" but does not shutdown the channel if an error occurs.
12063    pub fn send_no_shutdown_on_err(
12064        self,
12065        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12066    ) -> Result<(), fidl::Error> {
12067        let _result = self.send_raw(result);
12068        self.drop_without_shutdown();
12069        _result
12070    }
12071
12072    fn send_raw(
12073        &self,
12074        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12075    ) -> Result<(), fidl::Error> {
12076        self.control_handle.inner.send::<fidl::encoding::ResultType<
12077            fidl::encoding::EmptyStruct,
12078            fidl_fuchsia_posix::Errno,
12079        >>(
12080            result,
12081            self.tx_id,
12082            0x6ead6de09f653236,
12083            fidl::encoding::DynamicFlags::empty(),
12084        )
12085    }
12086}
12087
12088#[must_use = "FIDL methods require a response to be sent"]
12089#[derive(Debug)]
12090pub struct SocketGetMarkResponder {
12091    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12092    tx_id: u32,
12093}
12094
12095/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12096/// if the responder is dropped without sending a response, so that the client
12097/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12098impl std::ops::Drop for SocketGetMarkResponder {
12099    fn drop(&mut self) {
12100        self.control_handle.shutdown();
12101        // Safety: drops once, never accessed again
12102        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12103    }
12104}
12105
12106impl fidl::endpoints::Responder for SocketGetMarkResponder {
12107    type ControlHandle = SocketControlHandle;
12108
12109    fn control_handle(&self) -> &SocketControlHandle {
12110        &self.control_handle
12111    }
12112
12113    fn drop_without_shutdown(mut self) {
12114        // Safety: drops once, never accessed again due to mem::forget
12115        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12116        // Prevent Drop from running (which would shut down the channel)
12117        std::mem::forget(self);
12118    }
12119}
12120
12121impl SocketGetMarkResponder {
12122    /// Sends a response to the FIDL transaction.
12123    ///
12124    /// Sets the channel to shutdown if an error occurs.
12125    pub fn send(
12126        self,
12127        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12128    ) -> Result<(), fidl::Error> {
12129        let _result = self.send_raw(result);
12130        if _result.is_err() {
12131            self.control_handle.shutdown();
12132        }
12133        self.drop_without_shutdown();
12134        _result
12135    }
12136
12137    /// Similar to "send" but does not shutdown the channel if an error occurs.
12138    pub fn send_no_shutdown_on_err(
12139        self,
12140        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12141    ) -> Result<(), fidl::Error> {
12142        let _result = self.send_raw(result);
12143        self.drop_without_shutdown();
12144        _result
12145    }
12146
12147    fn send_raw(
12148        &self,
12149        mut result: Result<&fidl_fuchsia_posix_socket::OptionalUint32, fidl_fuchsia_posix::Errno>,
12150    ) -> Result<(), fidl::Error> {
12151        self.control_handle.inner.send::<fidl::encoding::ResultType<
12152            fidl_fuchsia_posix_socket::BaseSocketGetMarkResponse,
12153            fidl_fuchsia_posix::Errno,
12154        >>(
12155            result.map(|mark| (mark,)),
12156            self.tx_id,
12157            0x57a2752c61d93d47,
12158            fidl::encoding::DynamicFlags::empty(),
12159        )
12160    }
12161}
12162
12163#[must_use = "FIDL methods require a response to be sent"]
12164#[derive(Debug)]
12165pub struct SocketGetCookieResponder {
12166    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12167    tx_id: u32,
12168}
12169
12170/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12171/// if the responder is dropped without sending a response, so that the client
12172/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12173impl std::ops::Drop for SocketGetCookieResponder {
12174    fn drop(&mut self) {
12175        self.control_handle.shutdown();
12176        // Safety: drops once, never accessed again
12177        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12178    }
12179}
12180
12181impl fidl::endpoints::Responder for SocketGetCookieResponder {
12182    type ControlHandle = SocketControlHandle;
12183
12184    fn control_handle(&self) -> &SocketControlHandle {
12185        &self.control_handle
12186    }
12187
12188    fn drop_without_shutdown(mut self) {
12189        // Safety: drops once, never accessed again due to mem::forget
12190        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12191        // Prevent Drop from running (which would shut down the channel)
12192        std::mem::forget(self);
12193    }
12194}
12195
12196impl SocketGetCookieResponder {
12197    /// Sends a response to the FIDL transaction.
12198    ///
12199    /// Sets the channel to shutdown if an error occurs.
12200    pub fn send(
12201        self,
12202        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12203    ) -> Result<(), fidl::Error> {
12204        let _result = self.send_raw(result);
12205        if _result.is_err() {
12206            self.control_handle.shutdown();
12207        }
12208        self.drop_without_shutdown();
12209        _result
12210    }
12211
12212    /// Similar to "send" but does not shutdown the channel if an error occurs.
12213    pub fn send_no_shutdown_on_err(
12214        self,
12215        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12216    ) -> Result<(), fidl::Error> {
12217        let _result = self.send_raw(result);
12218        self.drop_without_shutdown();
12219        _result
12220    }
12221
12222    fn send_raw(
12223        &self,
12224        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
12225    ) -> Result<(), fidl::Error> {
12226        self.control_handle.inner.send::<fidl::encoding::ResultType<
12227            fidl_fuchsia_posix_socket::BaseSocketGetCookieResponse,
12228            fidl_fuchsia_posix::Errno,
12229        >>(
12230            result.map(|value| (value,)),
12231            self.tx_id,
12232            0x2c2f47fd8f924e52,
12233            fidl::encoding::DynamicFlags::empty(),
12234        )
12235    }
12236}
12237
12238#[must_use = "FIDL methods require a response to be sent"]
12239#[derive(Debug)]
12240pub struct SocketBindResponder {
12241    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12242    tx_id: u32,
12243}
12244
12245/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12246/// if the responder is dropped without sending a response, so that the client
12247/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12248impl std::ops::Drop for SocketBindResponder {
12249    fn drop(&mut self) {
12250        self.control_handle.shutdown();
12251        // Safety: drops once, never accessed again
12252        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12253    }
12254}
12255
12256impl fidl::endpoints::Responder for SocketBindResponder {
12257    type ControlHandle = SocketControlHandle;
12258
12259    fn control_handle(&self) -> &SocketControlHandle {
12260        &self.control_handle
12261    }
12262
12263    fn drop_without_shutdown(mut self) {
12264        // Safety: drops once, never accessed again due to mem::forget
12265        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12266        // Prevent Drop from running (which would shut down the channel)
12267        std::mem::forget(self);
12268    }
12269}
12270
12271impl SocketBindResponder {
12272    /// Sends a response to the FIDL transaction.
12273    ///
12274    /// Sets the channel to shutdown if an error occurs.
12275    pub fn send(
12276        self,
12277        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12278    ) -> Result<(), fidl::Error> {
12279        let _result = self.send_raw(result);
12280        if _result.is_err() {
12281            self.control_handle.shutdown();
12282        }
12283        self.drop_without_shutdown();
12284        _result
12285    }
12286
12287    /// Similar to "send" but does not shutdown the channel if an error occurs.
12288    pub fn send_no_shutdown_on_err(
12289        self,
12290        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12291    ) -> Result<(), fidl::Error> {
12292        let _result = self.send_raw(result);
12293        self.drop_without_shutdown();
12294        _result
12295    }
12296
12297    fn send_raw(
12298        &self,
12299        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12300    ) -> Result<(), fidl::Error> {
12301        self.control_handle.inner.send::<fidl::encoding::ResultType<
12302            fidl::encoding::EmptyStruct,
12303            fidl_fuchsia_posix::Errno,
12304        >>(
12305            result,
12306            self.tx_id,
12307            0x4bc6400ae92125d,
12308            fidl::encoding::DynamicFlags::empty(),
12309        )
12310    }
12311}
12312
12313#[must_use = "FIDL methods require a response to be sent"]
12314#[derive(Debug)]
12315pub struct SocketConnectResponder {
12316    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12317    tx_id: u32,
12318}
12319
12320/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12321/// if the responder is dropped without sending a response, so that the client
12322/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12323impl std::ops::Drop for SocketConnectResponder {
12324    fn drop(&mut self) {
12325        self.control_handle.shutdown();
12326        // Safety: drops once, never accessed again
12327        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12328    }
12329}
12330
12331impl fidl::endpoints::Responder for SocketConnectResponder {
12332    type ControlHandle = SocketControlHandle;
12333
12334    fn control_handle(&self) -> &SocketControlHandle {
12335        &self.control_handle
12336    }
12337
12338    fn drop_without_shutdown(mut self) {
12339        // Safety: drops once, never accessed again due to mem::forget
12340        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12341        // Prevent Drop from running (which would shut down the channel)
12342        std::mem::forget(self);
12343    }
12344}
12345
12346impl SocketConnectResponder {
12347    /// Sends a response to the FIDL transaction.
12348    ///
12349    /// Sets the channel to shutdown if an error occurs.
12350    pub fn send(
12351        self,
12352        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12353    ) -> Result<(), fidl::Error> {
12354        let _result = self.send_raw(result);
12355        if _result.is_err() {
12356            self.control_handle.shutdown();
12357        }
12358        self.drop_without_shutdown();
12359        _result
12360    }
12361
12362    /// Similar to "send" but does not shutdown the channel if an error occurs.
12363    pub fn send_no_shutdown_on_err(
12364        self,
12365        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12366    ) -> Result<(), fidl::Error> {
12367        let _result = self.send_raw(result);
12368        self.drop_without_shutdown();
12369        _result
12370    }
12371
12372    fn send_raw(
12373        &self,
12374        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12375    ) -> Result<(), fidl::Error> {
12376        self.control_handle.inner.send::<fidl::encoding::ResultType<
12377            fidl::encoding::EmptyStruct,
12378            fidl_fuchsia_posix::Errno,
12379        >>(
12380            result,
12381            self.tx_id,
12382            0x5f05f19bfdd38871,
12383            fidl::encoding::DynamicFlags::empty(),
12384        )
12385    }
12386}
12387
12388#[must_use = "FIDL methods require a response to be sent"]
12389#[derive(Debug)]
12390pub struct SocketDisconnectResponder {
12391    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12392    tx_id: u32,
12393}
12394
12395/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12396/// if the responder is dropped without sending a response, so that the client
12397/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12398impl std::ops::Drop for SocketDisconnectResponder {
12399    fn drop(&mut self) {
12400        self.control_handle.shutdown();
12401        // Safety: drops once, never accessed again
12402        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12403    }
12404}
12405
12406impl fidl::endpoints::Responder for SocketDisconnectResponder {
12407    type ControlHandle = SocketControlHandle;
12408
12409    fn control_handle(&self) -> &SocketControlHandle {
12410        &self.control_handle
12411    }
12412
12413    fn drop_without_shutdown(mut self) {
12414        // Safety: drops once, never accessed again due to mem::forget
12415        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12416        // Prevent Drop from running (which would shut down the channel)
12417        std::mem::forget(self);
12418    }
12419}
12420
12421impl SocketDisconnectResponder {
12422    /// Sends a response to the FIDL transaction.
12423    ///
12424    /// Sets the channel to shutdown if an error occurs.
12425    pub fn send(
12426        self,
12427        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12428    ) -> Result<(), fidl::Error> {
12429        let _result = self.send_raw(result);
12430        if _result.is_err() {
12431            self.control_handle.shutdown();
12432        }
12433        self.drop_without_shutdown();
12434        _result
12435    }
12436
12437    /// Similar to "send" but does not shutdown the channel if an error occurs.
12438    pub fn send_no_shutdown_on_err(
12439        self,
12440        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12441    ) -> Result<(), fidl::Error> {
12442        let _result = self.send_raw(result);
12443        self.drop_without_shutdown();
12444        _result
12445    }
12446
12447    fn send_raw(
12448        &self,
12449        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12450    ) -> Result<(), fidl::Error> {
12451        self.control_handle.inner.send::<fidl::encoding::ResultType<
12452            fidl::encoding::EmptyStruct,
12453            fidl_fuchsia_posix::Errno,
12454        >>(
12455            result,
12456            self.tx_id,
12457            0x74e63b91f7b29b2,
12458            fidl::encoding::DynamicFlags::empty(),
12459        )
12460    }
12461}
12462
12463#[must_use = "FIDL methods require a response to be sent"]
12464#[derive(Debug)]
12465pub struct SocketGetSockNameResponder {
12466    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12467    tx_id: u32,
12468}
12469
12470/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12471/// if the responder is dropped without sending a response, so that the client
12472/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12473impl std::ops::Drop for SocketGetSockNameResponder {
12474    fn drop(&mut self) {
12475        self.control_handle.shutdown();
12476        // Safety: drops once, never accessed again
12477        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12478    }
12479}
12480
12481impl fidl::endpoints::Responder for SocketGetSockNameResponder {
12482    type ControlHandle = SocketControlHandle;
12483
12484    fn control_handle(&self) -> &SocketControlHandle {
12485        &self.control_handle
12486    }
12487
12488    fn drop_without_shutdown(mut self) {
12489        // Safety: drops once, never accessed again due to mem::forget
12490        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12491        // Prevent Drop from running (which would shut down the channel)
12492        std::mem::forget(self);
12493    }
12494}
12495
12496impl SocketGetSockNameResponder {
12497    /// Sends a response to the FIDL transaction.
12498    ///
12499    /// Sets the channel to shutdown if an error occurs.
12500    pub fn send(
12501        self,
12502        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12503    ) -> Result<(), fidl::Error> {
12504        let _result = self.send_raw(result);
12505        if _result.is_err() {
12506            self.control_handle.shutdown();
12507        }
12508        self.drop_without_shutdown();
12509        _result
12510    }
12511
12512    /// Similar to "send" but does not shutdown the channel if an error occurs.
12513    pub fn send_no_shutdown_on_err(
12514        self,
12515        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12516    ) -> Result<(), fidl::Error> {
12517        let _result = self.send_raw(result);
12518        self.drop_without_shutdown();
12519        _result
12520    }
12521
12522    fn send_raw(
12523        &self,
12524        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12525    ) -> Result<(), fidl::Error> {
12526        self.control_handle.inner.send::<fidl::encoding::ResultType<
12527            fidl_fuchsia_posix_socket::BaseNetworkSocketGetSockNameResponse,
12528            fidl_fuchsia_posix::Errno,
12529        >>(
12530            result.map(|addr| (addr,)),
12531            self.tx_id,
12532            0x475f23f84a1a4f85,
12533            fidl::encoding::DynamicFlags::empty(),
12534        )
12535    }
12536}
12537
12538#[must_use = "FIDL methods require a response to be sent"]
12539#[derive(Debug)]
12540pub struct SocketGetPeerNameResponder {
12541    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12542    tx_id: u32,
12543}
12544
12545/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12546/// if the responder is dropped without sending a response, so that the client
12547/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12548impl std::ops::Drop for SocketGetPeerNameResponder {
12549    fn drop(&mut self) {
12550        self.control_handle.shutdown();
12551        // Safety: drops once, never accessed again
12552        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12553    }
12554}
12555
12556impl fidl::endpoints::Responder for SocketGetPeerNameResponder {
12557    type ControlHandle = SocketControlHandle;
12558
12559    fn control_handle(&self) -> &SocketControlHandle {
12560        &self.control_handle
12561    }
12562
12563    fn drop_without_shutdown(mut self) {
12564        // Safety: drops once, never accessed again due to mem::forget
12565        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12566        // Prevent Drop from running (which would shut down the channel)
12567        std::mem::forget(self);
12568    }
12569}
12570
12571impl SocketGetPeerNameResponder {
12572    /// Sends a response to the FIDL transaction.
12573    ///
12574    /// Sets the channel to shutdown if an error occurs.
12575    pub fn send(
12576        self,
12577        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12578    ) -> Result<(), fidl::Error> {
12579        let _result = self.send_raw(result);
12580        if _result.is_err() {
12581            self.control_handle.shutdown();
12582        }
12583        self.drop_without_shutdown();
12584        _result
12585    }
12586
12587    /// Similar to "send" but does not shutdown the channel if an error occurs.
12588    pub fn send_no_shutdown_on_err(
12589        self,
12590        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12591    ) -> Result<(), fidl::Error> {
12592        let _result = self.send_raw(result);
12593        self.drop_without_shutdown();
12594        _result
12595    }
12596
12597    fn send_raw(
12598        &self,
12599        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
12600    ) -> Result<(), fidl::Error> {
12601        self.control_handle.inner.send::<fidl::encoding::ResultType<
12602            fidl_fuchsia_posix_socket::BaseNetworkSocketGetPeerNameResponse,
12603            fidl_fuchsia_posix::Errno,
12604        >>(
12605            result.map(|addr| (addr,)),
12606            self.tx_id,
12607            0x1ffecf4bd5b6432e,
12608            fidl::encoding::DynamicFlags::empty(),
12609        )
12610    }
12611}
12612
12613#[must_use = "FIDL methods require a response to be sent"]
12614#[derive(Debug)]
12615pub struct SocketShutdownResponder {
12616    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12617    tx_id: u32,
12618}
12619
12620/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12621/// if the responder is dropped without sending a response, so that the client
12622/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12623impl std::ops::Drop for SocketShutdownResponder {
12624    fn drop(&mut self) {
12625        self.control_handle.shutdown();
12626        // Safety: drops once, never accessed again
12627        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12628    }
12629}
12630
12631impl fidl::endpoints::Responder for SocketShutdownResponder {
12632    type ControlHandle = SocketControlHandle;
12633
12634    fn control_handle(&self) -> &SocketControlHandle {
12635        &self.control_handle
12636    }
12637
12638    fn drop_without_shutdown(mut self) {
12639        // Safety: drops once, never accessed again due to mem::forget
12640        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12641        // Prevent Drop from running (which would shut down the channel)
12642        std::mem::forget(self);
12643    }
12644}
12645
12646impl SocketShutdownResponder {
12647    /// Sends a response to the FIDL transaction.
12648    ///
12649    /// Sets the channel to shutdown if an error occurs.
12650    pub fn send(
12651        self,
12652        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12653    ) -> Result<(), fidl::Error> {
12654        let _result = self.send_raw(result);
12655        if _result.is_err() {
12656            self.control_handle.shutdown();
12657        }
12658        self.drop_without_shutdown();
12659        _result
12660    }
12661
12662    /// Similar to "send" but does not shutdown the channel if an error occurs.
12663    pub fn send_no_shutdown_on_err(
12664        self,
12665        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12666    ) -> Result<(), fidl::Error> {
12667        let _result = self.send_raw(result);
12668        self.drop_without_shutdown();
12669        _result
12670    }
12671
12672    fn send_raw(
12673        &self,
12674        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12675    ) -> Result<(), fidl::Error> {
12676        self.control_handle.inner.send::<fidl::encoding::ResultType<
12677            fidl::encoding::EmptyStruct,
12678            fidl_fuchsia_posix::Errno,
12679        >>(
12680            result,
12681            self.tx_id,
12682            0x247f38b6db68c336,
12683            fidl::encoding::DynamicFlags::empty(),
12684        )
12685    }
12686}
12687
12688#[must_use = "FIDL methods require a response to be sent"]
12689#[derive(Debug)]
12690pub struct SocketSetIpTypeOfServiceResponder {
12691    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12692    tx_id: u32,
12693}
12694
12695/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12696/// if the responder is dropped without sending a response, so that the client
12697/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12698impl std::ops::Drop for SocketSetIpTypeOfServiceResponder {
12699    fn drop(&mut self) {
12700        self.control_handle.shutdown();
12701        // Safety: drops once, never accessed again
12702        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12703    }
12704}
12705
12706impl fidl::endpoints::Responder for SocketSetIpTypeOfServiceResponder {
12707    type ControlHandle = SocketControlHandle;
12708
12709    fn control_handle(&self) -> &SocketControlHandle {
12710        &self.control_handle
12711    }
12712
12713    fn drop_without_shutdown(mut self) {
12714        // Safety: drops once, never accessed again due to mem::forget
12715        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12716        // Prevent Drop from running (which would shut down the channel)
12717        std::mem::forget(self);
12718    }
12719}
12720
12721impl SocketSetIpTypeOfServiceResponder {
12722    /// Sends a response to the FIDL transaction.
12723    ///
12724    /// Sets the channel to shutdown if an error occurs.
12725    pub fn send(
12726        self,
12727        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12728    ) -> Result<(), fidl::Error> {
12729        let _result = self.send_raw(result);
12730        if _result.is_err() {
12731            self.control_handle.shutdown();
12732        }
12733        self.drop_without_shutdown();
12734        _result
12735    }
12736
12737    /// Similar to "send" but does not shutdown the channel if an error occurs.
12738    pub fn send_no_shutdown_on_err(
12739        self,
12740        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12741    ) -> Result<(), fidl::Error> {
12742        let _result = self.send_raw(result);
12743        self.drop_without_shutdown();
12744        _result
12745    }
12746
12747    fn send_raw(
12748        &self,
12749        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12750    ) -> Result<(), fidl::Error> {
12751        self.control_handle.inner.send::<fidl::encoding::ResultType<
12752            fidl::encoding::EmptyStruct,
12753            fidl_fuchsia_posix::Errno,
12754        >>(
12755            result,
12756            self.tx_id,
12757            0x995c600475b6d46,
12758            fidl::encoding::DynamicFlags::empty(),
12759        )
12760    }
12761}
12762
12763#[must_use = "FIDL methods require a response to be sent"]
12764#[derive(Debug)]
12765pub struct SocketGetIpTypeOfServiceResponder {
12766    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12767    tx_id: u32,
12768}
12769
12770/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12771/// if the responder is dropped without sending a response, so that the client
12772/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12773impl std::ops::Drop for SocketGetIpTypeOfServiceResponder {
12774    fn drop(&mut self) {
12775        self.control_handle.shutdown();
12776        // Safety: drops once, never accessed again
12777        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12778    }
12779}
12780
12781impl fidl::endpoints::Responder for SocketGetIpTypeOfServiceResponder {
12782    type ControlHandle = SocketControlHandle;
12783
12784    fn control_handle(&self) -> &SocketControlHandle {
12785        &self.control_handle
12786    }
12787
12788    fn drop_without_shutdown(mut self) {
12789        // Safety: drops once, never accessed again due to mem::forget
12790        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12791        // Prevent Drop from running (which would shut down the channel)
12792        std::mem::forget(self);
12793    }
12794}
12795
12796impl SocketGetIpTypeOfServiceResponder {
12797    /// Sends a response to the FIDL transaction.
12798    ///
12799    /// Sets the channel to shutdown if an error occurs.
12800    pub fn send(
12801        self,
12802        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12803    ) -> Result<(), fidl::Error> {
12804        let _result = self.send_raw(result);
12805        if _result.is_err() {
12806            self.control_handle.shutdown();
12807        }
12808        self.drop_without_shutdown();
12809        _result
12810    }
12811
12812    /// Similar to "send" but does not shutdown the channel if an error occurs.
12813    pub fn send_no_shutdown_on_err(
12814        self,
12815        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12816    ) -> Result<(), fidl::Error> {
12817        let _result = self.send_raw(result);
12818        self.drop_without_shutdown();
12819        _result
12820    }
12821
12822    fn send_raw(
12823        &self,
12824        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12825    ) -> Result<(), fidl::Error> {
12826        self.control_handle.inner.send::<fidl::encoding::ResultType<
12827            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTypeOfServiceResponse,
12828            fidl_fuchsia_posix::Errno,
12829        >>(
12830            result.map(|value| (value,)),
12831            self.tx_id,
12832            0x3814a04259f75fcb,
12833            fidl::encoding::DynamicFlags::empty(),
12834        )
12835    }
12836}
12837
12838#[must_use = "FIDL methods require a response to be sent"]
12839#[derive(Debug)]
12840pub struct SocketSetIpTtlResponder {
12841    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12842    tx_id: u32,
12843}
12844
12845/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12846/// if the responder is dropped without sending a response, so that the client
12847/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12848impl std::ops::Drop for SocketSetIpTtlResponder {
12849    fn drop(&mut self) {
12850        self.control_handle.shutdown();
12851        // Safety: drops once, never accessed again
12852        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12853    }
12854}
12855
12856impl fidl::endpoints::Responder for SocketSetIpTtlResponder {
12857    type ControlHandle = SocketControlHandle;
12858
12859    fn control_handle(&self) -> &SocketControlHandle {
12860        &self.control_handle
12861    }
12862
12863    fn drop_without_shutdown(mut self) {
12864        // Safety: drops once, never accessed again due to mem::forget
12865        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12866        // Prevent Drop from running (which would shut down the channel)
12867        std::mem::forget(self);
12868    }
12869}
12870
12871impl SocketSetIpTtlResponder {
12872    /// Sends a response to the FIDL transaction.
12873    ///
12874    /// Sets the channel to shutdown if an error occurs.
12875    pub fn send(
12876        self,
12877        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12878    ) -> Result<(), fidl::Error> {
12879        let _result = self.send_raw(result);
12880        if _result.is_err() {
12881            self.control_handle.shutdown();
12882        }
12883        self.drop_without_shutdown();
12884        _result
12885    }
12886
12887    /// Similar to "send" but does not shutdown the channel if an error occurs.
12888    pub fn send_no_shutdown_on_err(
12889        self,
12890        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12891    ) -> Result<(), fidl::Error> {
12892        let _result = self.send_raw(result);
12893        self.drop_without_shutdown();
12894        _result
12895    }
12896
12897    fn send_raw(
12898        &self,
12899        mut result: Result<(), fidl_fuchsia_posix::Errno>,
12900    ) -> Result<(), fidl::Error> {
12901        self.control_handle.inner.send::<fidl::encoding::ResultType<
12902            fidl::encoding::EmptyStruct,
12903            fidl_fuchsia_posix::Errno,
12904        >>(
12905            result,
12906            self.tx_id,
12907            0x29e2424b433ae1ef,
12908            fidl::encoding::DynamicFlags::empty(),
12909        )
12910    }
12911}
12912
12913#[must_use = "FIDL methods require a response to be sent"]
12914#[derive(Debug)]
12915pub struct SocketGetIpTtlResponder {
12916    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12917    tx_id: u32,
12918}
12919
12920/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12921/// if the responder is dropped without sending a response, so that the client
12922/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12923impl std::ops::Drop for SocketGetIpTtlResponder {
12924    fn drop(&mut self) {
12925        self.control_handle.shutdown();
12926        // Safety: drops once, never accessed again
12927        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12928    }
12929}
12930
12931impl fidl::endpoints::Responder for SocketGetIpTtlResponder {
12932    type ControlHandle = SocketControlHandle;
12933
12934    fn control_handle(&self) -> &SocketControlHandle {
12935        &self.control_handle
12936    }
12937
12938    fn drop_without_shutdown(mut self) {
12939        // Safety: drops once, never accessed again due to mem::forget
12940        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
12941        // Prevent Drop from running (which would shut down the channel)
12942        std::mem::forget(self);
12943    }
12944}
12945
12946impl SocketGetIpTtlResponder {
12947    /// Sends a response to the FIDL transaction.
12948    ///
12949    /// Sets the channel to shutdown if an error occurs.
12950    pub fn send(
12951        self,
12952        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12953    ) -> Result<(), fidl::Error> {
12954        let _result = self.send_raw(result);
12955        if _result.is_err() {
12956            self.control_handle.shutdown();
12957        }
12958        self.drop_without_shutdown();
12959        _result
12960    }
12961
12962    /// Similar to "send" but does not shutdown the channel if an error occurs.
12963    pub fn send_no_shutdown_on_err(
12964        self,
12965        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12966    ) -> Result<(), fidl::Error> {
12967        let _result = self.send_raw(result);
12968        self.drop_without_shutdown();
12969        _result
12970    }
12971
12972    fn send_raw(
12973        &self,
12974        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
12975    ) -> Result<(), fidl::Error> {
12976        self.control_handle.inner.send::<fidl::encoding::ResultType<
12977            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTtlResponse,
12978            fidl_fuchsia_posix::Errno,
12979        >>(
12980            result.map(|value| (value,)),
12981            self.tx_id,
12982            0x47e47fa1f24da471,
12983            fidl::encoding::DynamicFlags::empty(),
12984        )
12985    }
12986}
12987
12988#[must_use = "FIDL methods require a response to be sent"]
12989#[derive(Debug)]
12990pub struct SocketSetIpPacketInfoResponder {
12991    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
12992    tx_id: u32,
12993}
12994
12995/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
12996/// if the responder is dropped without sending a response, so that the client
12997/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
12998impl std::ops::Drop for SocketSetIpPacketInfoResponder {
12999    fn drop(&mut self) {
13000        self.control_handle.shutdown();
13001        // Safety: drops once, never accessed again
13002        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13003    }
13004}
13005
13006impl fidl::endpoints::Responder for SocketSetIpPacketInfoResponder {
13007    type ControlHandle = SocketControlHandle;
13008
13009    fn control_handle(&self) -> &SocketControlHandle {
13010        &self.control_handle
13011    }
13012
13013    fn drop_without_shutdown(mut self) {
13014        // Safety: drops once, never accessed again due to mem::forget
13015        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13016        // Prevent Drop from running (which would shut down the channel)
13017        std::mem::forget(self);
13018    }
13019}
13020
13021impl SocketSetIpPacketInfoResponder {
13022    /// Sends a response to the FIDL transaction.
13023    ///
13024    /// Sets the channel to shutdown if an error occurs.
13025    pub fn send(
13026        self,
13027        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13028    ) -> Result<(), fidl::Error> {
13029        let _result = self.send_raw(result);
13030        if _result.is_err() {
13031            self.control_handle.shutdown();
13032        }
13033        self.drop_without_shutdown();
13034        _result
13035    }
13036
13037    /// Similar to "send" but does not shutdown the channel if an error occurs.
13038    pub fn send_no_shutdown_on_err(
13039        self,
13040        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13041    ) -> Result<(), fidl::Error> {
13042        let _result = self.send_raw(result);
13043        self.drop_without_shutdown();
13044        _result
13045    }
13046
13047    fn send_raw(
13048        &self,
13049        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13050    ) -> Result<(), fidl::Error> {
13051        self.control_handle.inner.send::<fidl::encoding::ResultType<
13052            fidl::encoding::EmptyStruct,
13053            fidl_fuchsia_posix::Errno,
13054        >>(
13055            result,
13056            self.tx_id,
13057            0x392d16bee20c0e16,
13058            fidl::encoding::DynamicFlags::empty(),
13059        )
13060    }
13061}
13062
13063#[must_use = "FIDL methods require a response to be sent"]
13064#[derive(Debug)]
13065pub struct SocketGetIpPacketInfoResponder {
13066    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13067    tx_id: u32,
13068}
13069
13070/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13071/// if the responder is dropped without sending a response, so that the client
13072/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13073impl std::ops::Drop for SocketGetIpPacketInfoResponder {
13074    fn drop(&mut self) {
13075        self.control_handle.shutdown();
13076        // Safety: drops once, never accessed again
13077        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13078    }
13079}
13080
13081impl fidl::endpoints::Responder for SocketGetIpPacketInfoResponder {
13082    type ControlHandle = SocketControlHandle;
13083
13084    fn control_handle(&self) -> &SocketControlHandle {
13085        &self.control_handle
13086    }
13087
13088    fn drop_without_shutdown(mut self) {
13089        // Safety: drops once, never accessed again due to mem::forget
13090        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13091        // Prevent Drop from running (which would shut down the channel)
13092        std::mem::forget(self);
13093    }
13094}
13095
13096impl SocketGetIpPacketInfoResponder {
13097    /// Sends a response to the FIDL transaction.
13098    ///
13099    /// Sets the channel to shutdown if an error occurs.
13100    pub fn send(
13101        self,
13102        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13103    ) -> Result<(), fidl::Error> {
13104        let _result = self.send_raw(result);
13105        if _result.is_err() {
13106            self.control_handle.shutdown();
13107        }
13108        self.drop_without_shutdown();
13109        _result
13110    }
13111
13112    /// Similar to "send" but does not shutdown the channel if an error occurs.
13113    pub fn send_no_shutdown_on_err(
13114        self,
13115        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13116    ) -> Result<(), fidl::Error> {
13117        let _result = self.send_raw(result);
13118        self.drop_without_shutdown();
13119        _result
13120    }
13121
13122    fn send_raw(
13123        &self,
13124        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13125    ) -> Result<(), fidl::Error> {
13126        self.control_handle.inner.send::<fidl::encoding::ResultType<
13127            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpPacketInfoResponse,
13128            fidl_fuchsia_posix::Errno,
13129        >>(
13130            result.map(|value| (value,)),
13131            self.tx_id,
13132            0x54b505f242280740,
13133            fidl::encoding::DynamicFlags::empty(),
13134        )
13135    }
13136}
13137
13138#[must_use = "FIDL methods require a response to be sent"]
13139#[derive(Debug)]
13140pub struct SocketSetIpReceiveTypeOfServiceResponder {
13141    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13142    tx_id: u32,
13143}
13144
13145/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13146/// if the responder is dropped without sending a response, so that the client
13147/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13148impl std::ops::Drop for SocketSetIpReceiveTypeOfServiceResponder {
13149    fn drop(&mut self) {
13150        self.control_handle.shutdown();
13151        // Safety: drops once, never accessed again
13152        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13153    }
13154}
13155
13156impl fidl::endpoints::Responder for SocketSetIpReceiveTypeOfServiceResponder {
13157    type ControlHandle = SocketControlHandle;
13158
13159    fn control_handle(&self) -> &SocketControlHandle {
13160        &self.control_handle
13161    }
13162
13163    fn drop_without_shutdown(mut self) {
13164        // Safety: drops once, never accessed again due to mem::forget
13165        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13166        // Prevent Drop from running (which would shut down the channel)
13167        std::mem::forget(self);
13168    }
13169}
13170
13171impl SocketSetIpReceiveTypeOfServiceResponder {
13172    /// Sends a response to the FIDL transaction.
13173    ///
13174    /// Sets the channel to shutdown if an error occurs.
13175    pub fn send(
13176        self,
13177        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13178    ) -> Result<(), fidl::Error> {
13179        let _result = self.send_raw(result);
13180        if _result.is_err() {
13181            self.control_handle.shutdown();
13182        }
13183        self.drop_without_shutdown();
13184        _result
13185    }
13186
13187    /// Similar to "send" but does not shutdown the channel if an error occurs.
13188    pub fn send_no_shutdown_on_err(
13189        self,
13190        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13191    ) -> Result<(), fidl::Error> {
13192        let _result = self.send_raw(result);
13193        self.drop_without_shutdown();
13194        _result
13195    }
13196
13197    fn send_raw(
13198        &self,
13199        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13200    ) -> Result<(), fidl::Error> {
13201        self.control_handle.inner.send::<fidl::encoding::ResultType<
13202            fidl::encoding::EmptyStruct,
13203            fidl_fuchsia_posix::Errno,
13204        >>(
13205            result,
13206            self.tx_id,
13207            0x6c4f6714995f84ef,
13208            fidl::encoding::DynamicFlags::empty(),
13209        )
13210    }
13211}
13212
13213#[must_use = "FIDL methods require a response to be sent"]
13214#[derive(Debug)]
13215pub struct SocketGetIpReceiveTypeOfServiceResponder {
13216    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13217    tx_id: u32,
13218}
13219
13220/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13221/// if the responder is dropped without sending a response, so that the client
13222/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13223impl std::ops::Drop for SocketGetIpReceiveTypeOfServiceResponder {
13224    fn drop(&mut self) {
13225        self.control_handle.shutdown();
13226        // Safety: drops once, never accessed again
13227        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13228    }
13229}
13230
13231impl fidl::endpoints::Responder for SocketGetIpReceiveTypeOfServiceResponder {
13232    type ControlHandle = SocketControlHandle;
13233
13234    fn control_handle(&self) -> &SocketControlHandle {
13235        &self.control_handle
13236    }
13237
13238    fn drop_without_shutdown(mut self) {
13239        // Safety: drops once, never accessed again due to mem::forget
13240        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13241        // Prevent Drop from running (which would shut down the channel)
13242        std::mem::forget(self);
13243    }
13244}
13245
13246impl SocketGetIpReceiveTypeOfServiceResponder {
13247    /// Sends a response to the FIDL transaction.
13248    ///
13249    /// Sets the channel to shutdown if an error occurs.
13250    pub fn send(
13251        self,
13252        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13253    ) -> Result<(), fidl::Error> {
13254        let _result = self.send_raw(result);
13255        if _result.is_err() {
13256            self.control_handle.shutdown();
13257        }
13258        self.drop_without_shutdown();
13259        _result
13260    }
13261
13262    /// Similar to "send" but does not shutdown the channel if an error occurs.
13263    pub fn send_no_shutdown_on_err(
13264        self,
13265        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13266    ) -> Result<(), fidl::Error> {
13267        let _result = self.send_raw(result);
13268        self.drop_without_shutdown();
13269        _result
13270    }
13271
13272    fn send_raw(
13273        &self,
13274        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13275    ) -> Result<(), fidl::Error> {
13276        self.control_handle.inner.send::<fidl::encoding::ResultType<
13277            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTypeOfServiceResponse,
13278            fidl_fuchsia_posix::Errno,
13279        >>(
13280            result.map(|value| (value,)),
13281            self.tx_id,
13282            0x4158ba7dc2795960,
13283            fidl::encoding::DynamicFlags::empty(),
13284        )
13285    }
13286}
13287
13288#[must_use = "FIDL methods require a response to be sent"]
13289#[derive(Debug)]
13290pub struct SocketSetIpReceiveTtlResponder {
13291    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13292    tx_id: u32,
13293}
13294
13295/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13296/// if the responder is dropped without sending a response, so that the client
13297/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13298impl std::ops::Drop for SocketSetIpReceiveTtlResponder {
13299    fn drop(&mut self) {
13300        self.control_handle.shutdown();
13301        // Safety: drops once, never accessed again
13302        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13303    }
13304}
13305
13306impl fidl::endpoints::Responder for SocketSetIpReceiveTtlResponder {
13307    type ControlHandle = SocketControlHandle;
13308
13309    fn control_handle(&self) -> &SocketControlHandle {
13310        &self.control_handle
13311    }
13312
13313    fn drop_without_shutdown(mut self) {
13314        // Safety: drops once, never accessed again due to mem::forget
13315        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13316        // Prevent Drop from running (which would shut down the channel)
13317        std::mem::forget(self);
13318    }
13319}
13320
13321impl SocketSetIpReceiveTtlResponder {
13322    /// Sends a response to the FIDL transaction.
13323    ///
13324    /// Sets the channel to shutdown if an error occurs.
13325    pub fn send(
13326        self,
13327        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13328    ) -> Result<(), fidl::Error> {
13329        let _result = self.send_raw(result);
13330        if _result.is_err() {
13331            self.control_handle.shutdown();
13332        }
13333        self.drop_without_shutdown();
13334        _result
13335    }
13336
13337    /// Similar to "send" but does not shutdown the channel if an error occurs.
13338    pub fn send_no_shutdown_on_err(
13339        self,
13340        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13341    ) -> Result<(), fidl::Error> {
13342        let _result = self.send_raw(result);
13343        self.drop_without_shutdown();
13344        _result
13345    }
13346
13347    fn send_raw(
13348        &self,
13349        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13350    ) -> Result<(), fidl::Error> {
13351        self.control_handle.inner.send::<fidl::encoding::ResultType<
13352            fidl::encoding::EmptyStruct,
13353            fidl_fuchsia_posix::Errno,
13354        >>(
13355            result,
13356            self.tx_id,
13357            0x46f15be0ce0ab82b,
13358            fidl::encoding::DynamicFlags::empty(),
13359        )
13360    }
13361}
13362
13363#[must_use = "FIDL methods require a response to be sent"]
13364#[derive(Debug)]
13365pub struct SocketGetIpReceiveTtlResponder {
13366    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13367    tx_id: u32,
13368}
13369
13370/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13371/// if the responder is dropped without sending a response, so that the client
13372/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13373impl std::ops::Drop for SocketGetIpReceiveTtlResponder {
13374    fn drop(&mut self) {
13375        self.control_handle.shutdown();
13376        // Safety: drops once, never accessed again
13377        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13378    }
13379}
13380
13381impl fidl::endpoints::Responder for SocketGetIpReceiveTtlResponder {
13382    type ControlHandle = SocketControlHandle;
13383
13384    fn control_handle(&self) -> &SocketControlHandle {
13385        &self.control_handle
13386    }
13387
13388    fn drop_without_shutdown(mut self) {
13389        // Safety: drops once, never accessed again due to mem::forget
13390        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13391        // Prevent Drop from running (which would shut down the channel)
13392        std::mem::forget(self);
13393    }
13394}
13395
13396impl SocketGetIpReceiveTtlResponder {
13397    /// Sends a response to the FIDL transaction.
13398    ///
13399    /// Sets the channel to shutdown if an error occurs.
13400    pub fn send(
13401        self,
13402        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13403    ) -> Result<(), fidl::Error> {
13404        let _result = self.send_raw(result);
13405        if _result.is_err() {
13406            self.control_handle.shutdown();
13407        }
13408        self.drop_without_shutdown();
13409        _result
13410    }
13411
13412    /// Similar to "send" but does not shutdown the channel if an error occurs.
13413    pub fn send_no_shutdown_on_err(
13414        self,
13415        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13416    ) -> Result<(), fidl::Error> {
13417        let _result = self.send_raw(result);
13418        self.drop_without_shutdown();
13419        _result
13420    }
13421
13422    fn send_raw(
13423        &self,
13424        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13425    ) -> Result<(), fidl::Error> {
13426        self.control_handle.inner.send::<fidl::encoding::ResultType<
13427            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveTtlResponse,
13428            fidl_fuchsia_posix::Errno,
13429        >>(
13430            result.map(|value| (value,)),
13431            self.tx_id,
13432            0x678ddd5a5dfa2eb5,
13433            fidl::encoding::DynamicFlags::empty(),
13434        )
13435    }
13436}
13437
13438#[must_use = "FIDL methods require a response to be sent"]
13439#[derive(Debug)]
13440pub struct SocketSetIpMulticastInterfaceResponder {
13441    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13442    tx_id: u32,
13443}
13444
13445/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13446/// if the responder is dropped without sending a response, so that the client
13447/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13448impl std::ops::Drop for SocketSetIpMulticastInterfaceResponder {
13449    fn drop(&mut self) {
13450        self.control_handle.shutdown();
13451        // Safety: drops once, never accessed again
13452        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13453    }
13454}
13455
13456impl fidl::endpoints::Responder for SocketSetIpMulticastInterfaceResponder {
13457    type ControlHandle = SocketControlHandle;
13458
13459    fn control_handle(&self) -> &SocketControlHandle {
13460        &self.control_handle
13461    }
13462
13463    fn drop_without_shutdown(mut self) {
13464        // Safety: drops once, never accessed again due to mem::forget
13465        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13466        // Prevent Drop from running (which would shut down the channel)
13467        std::mem::forget(self);
13468    }
13469}
13470
13471impl SocketSetIpMulticastInterfaceResponder {
13472    /// Sends a response to the FIDL transaction.
13473    ///
13474    /// Sets the channel to shutdown if an error occurs.
13475    pub fn send(
13476        self,
13477        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13478    ) -> Result<(), fidl::Error> {
13479        let _result = self.send_raw(result);
13480        if _result.is_err() {
13481            self.control_handle.shutdown();
13482        }
13483        self.drop_without_shutdown();
13484        _result
13485    }
13486
13487    /// Similar to "send" but does not shutdown the channel if an error occurs.
13488    pub fn send_no_shutdown_on_err(
13489        self,
13490        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13491    ) -> Result<(), fidl::Error> {
13492        let _result = self.send_raw(result);
13493        self.drop_without_shutdown();
13494        _result
13495    }
13496
13497    fn send_raw(
13498        &self,
13499        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13500    ) -> Result<(), fidl::Error> {
13501        self.control_handle.inner.send::<fidl::encoding::ResultType<
13502            fidl::encoding::EmptyStruct,
13503            fidl_fuchsia_posix::Errno,
13504        >>(
13505            result,
13506            self.tx_id,
13507            0x752fbfa9b12befe,
13508            fidl::encoding::DynamicFlags::empty(),
13509        )
13510    }
13511}
13512
13513#[must_use = "FIDL methods require a response to be sent"]
13514#[derive(Debug)]
13515pub struct SocketGetIpMulticastInterfaceResponder {
13516    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13517    tx_id: u32,
13518}
13519
13520/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13521/// if the responder is dropped without sending a response, so that the client
13522/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13523impl std::ops::Drop for SocketGetIpMulticastInterfaceResponder {
13524    fn drop(&mut self) {
13525        self.control_handle.shutdown();
13526        // Safety: drops once, never accessed again
13527        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13528    }
13529}
13530
13531impl fidl::endpoints::Responder for SocketGetIpMulticastInterfaceResponder {
13532    type ControlHandle = SocketControlHandle;
13533
13534    fn control_handle(&self) -> &SocketControlHandle {
13535        &self.control_handle
13536    }
13537
13538    fn drop_without_shutdown(mut self) {
13539        // Safety: drops once, never accessed again due to mem::forget
13540        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13541        // Prevent Drop from running (which would shut down the channel)
13542        std::mem::forget(self);
13543    }
13544}
13545
13546impl SocketGetIpMulticastInterfaceResponder {
13547    /// Sends a response to the FIDL transaction.
13548    ///
13549    /// Sets the channel to shutdown if an error occurs.
13550    pub fn send(
13551        self,
13552        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13553    ) -> Result<(), fidl::Error> {
13554        let _result = self.send_raw(result);
13555        if _result.is_err() {
13556            self.control_handle.shutdown();
13557        }
13558        self.drop_without_shutdown();
13559        _result
13560    }
13561
13562    /// Similar to "send" but does not shutdown the channel if an error occurs.
13563    pub fn send_no_shutdown_on_err(
13564        self,
13565        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13566    ) -> Result<(), fidl::Error> {
13567        let _result = self.send_raw(result);
13568        self.drop_without_shutdown();
13569        _result
13570    }
13571
13572    fn send_raw(
13573        &self,
13574        mut result: Result<&fidl_fuchsia_net::Ipv4Address, fidl_fuchsia_posix::Errno>,
13575    ) -> Result<(), fidl::Error> {
13576        self.control_handle.inner.send::<fidl::encoding::ResultType<
13577            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastInterfaceResponse,
13578            fidl_fuchsia_posix::Errno,
13579        >>(
13580            result.map(|value| (value,)),
13581            self.tx_id,
13582            0x320bd14c4df046c4,
13583            fidl::encoding::DynamicFlags::empty(),
13584        )
13585    }
13586}
13587
13588#[must_use = "FIDL methods require a response to be sent"]
13589#[derive(Debug)]
13590pub struct SocketSetIpMulticastTtlResponder {
13591    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13592    tx_id: u32,
13593}
13594
13595/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13596/// if the responder is dropped without sending a response, so that the client
13597/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13598impl std::ops::Drop for SocketSetIpMulticastTtlResponder {
13599    fn drop(&mut self) {
13600        self.control_handle.shutdown();
13601        // Safety: drops once, never accessed again
13602        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13603    }
13604}
13605
13606impl fidl::endpoints::Responder for SocketSetIpMulticastTtlResponder {
13607    type ControlHandle = SocketControlHandle;
13608
13609    fn control_handle(&self) -> &SocketControlHandle {
13610        &self.control_handle
13611    }
13612
13613    fn drop_without_shutdown(mut self) {
13614        // Safety: drops once, never accessed again due to mem::forget
13615        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13616        // Prevent Drop from running (which would shut down the channel)
13617        std::mem::forget(self);
13618    }
13619}
13620
13621impl SocketSetIpMulticastTtlResponder {
13622    /// Sends a response to the FIDL transaction.
13623    ///
13624    /// Sets the channel to shutdown if an error occurs.
13625    pub fn send(
13626        self,
13627        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13628    ) -> Result<(), fidl::Error> {
13629        let _result = self.send_raw(result);
13630        if _result.is_err() {
13631            self.control_handle.shutdown();
13632        }
13633        self.drop_without_shutdown();
13634        _result
13635    }
13636
13637    /// Similar to "send" but does not shutdown the channel if an error occurs.
13638    pub fn send_no_shutdown_on_err(
13639        self,
13640        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13641    ) -> Result<(), fidl::Error> {
13642        let _result = self.send_raw(result);
13643        self.drop_without_shutdown();
13644        _result
13645    }
13646
13647    fn send_raw(
13648        &self,
13649        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13650    ) -> Result<(), fidl::Error> {
13651        self.control_handle.inner.send::<fidl::encoding::ResultType<
13652            fidl::encoding::EmptyStruct,
13653            fidl_fuchsia_posix::Errno,
13654        >>(
13655            result,
13656            self.tx_id,
13657            0x63134d53772916a1,
13658            fidl::encoding::DynamicFlags::empty(),
13659        )
13660    }
13661}
13662
13663#[must_use = "FIDL methods require a response to be sent"]
13664#[derive(Debug)]
13665pub struct SocketGetIpMulticastTtlResponder {
13666    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13667    tx_id: u32,
13668}
13669
13670/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13671/// if the responder is dropped without sending a response, so that the client
13672/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13673impl std::ops::Drop for SocketGetIpMulticastTtlResponder {
13674    fn drop(&mut self) {
13675        self.control_handle.shutdown();
13676        // Safety: drops once, never accessed again
13677        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13678    }
13679}
13680
13681impl fidl::endpoints::Responder for SocketGetIpMulticastTtlResponder {
13682    type ControlHandle = SocketControlHandle;
13683
13684    fn control_handle(&self) -> &SocketControlHandle {
13685        &self.control_handle
13686    }
13687
13688    fn drop_without_shutdown(mut self) {
13689        // Safety: drops once, never accessed again due to mem::forget
13690        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13691        // Prevent Drop from running (which would shut down the channel)
13692        std::mem::forget(self);
13693    }
13694}
13695
13696impl SocketGetIpMulticastTtlResponder {
13697    /// Sends a response to the FIDL transaction.
13698    ///
13699    /// Sets the channel to shutdown if an error occurs.
13700    pub fn send(
13701        self,
13702        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13703    ) -> Result<(), fidl::Error> {
13704        let _result = self.send_raw(result);
13705        if _result.is_err() {
13706            self.control_handle.shutdown();
13707        }
13708        self.drop_without_shutdown();
13709        _result
13710    }
13711
13712    /// Similar to "send" but does not shutdown the channel if an error occurs.
13713    pub fn send_no_shutdown_on_err(
13714        self,
13715        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13716    ) -> Result<(), fidl::Error> {
13717        let _result = self.send_raw(result);
13718        self.drop_without_shutdown();
13719        _result
13720    }
13721
13722    fn send_raw(
13723        &self,
13724        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
13725    ) -> Result<(), fidl::Error> {
13726        self.control_handle.inner.send::<fidl::encoding::ResultType<
13727            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastTtlResponse,
13728            fidl_fuchsia_posix::Errno,
13729        >>(
13730            result.map(|value| (value,)),
13731            self.tx_id,
13732            0x4665cd378f39e1a,
13733            fidl::encoding::DynamicFlags::empty(),
13734        )
13735    }
13736}
13737
13738#[must_use = "FIDL methods require a response to be sent"]
13739#[derive(Debug)]
13740pub struct SocketSetIpMulticastLoopbackResponder {
13741    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13742    tx_id: u32,
13743}
13744
13745/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13746/// if the responder is dropped without sending a response, so that the client
13747/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13748impl std::ops::Drop for SocketSetIpMulticastLoopbackResponder {
13749    fn drop(&mut self) {
13750        self.control_handle.shutdown();
13751        // Safety: drops once, never accessed again
13752        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13753    }
13754}
13755
13756impl fidl::endpoints::Responder for SocketSetIpMulticastLoopbackResponder {
13757    type ControlHandle = SocketControlHandle;
13758
13759    fn control_handle(&self) -> &SocketControlHandle {
13760        &self.control_handle
13761    }
13762
13763    fn drop_without_shutdown(mut self) {
13764        // Safety: drops once, never accessed again due to mem::forget
13765        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13766        // Prevent Drop from running (which would shut down the channel)
13767        std::mem::forget(self);
13768    }
13769}
13770
13771impl SocketSetIpMulticastLoopbackResponder {
13772    /// Sends a response to the FIDL transaction.
13773    ///
13774    /// Sets the channel to shutdown if an error occurs.
13775    pub fn send(
13776        self,
13777        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13778    ) -> Result<(), fidl::Error> {
13779        let _result = self.send_raw(result);
13780        if _result.is_err() {
13781            self.control_handle.shutdown();
13782        }
13783        self.drop_without_shutdown();
13784        _result
13785    }
13786
13787    /// Similar to "send" but does not shutdown the channel if an error occurs.
13788    pub fn send_no_shutdown_on_err(
13789        self,
13790        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13791    ) -> Result<(), fidl::Error> {
13792        let _result = self.send_raw(result);
13793        self.drop_without_shutdown();
13794        _result
13795    }
13796
13797    fn send_raw(
13798        &self,
13799        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13800    ) -> Result<(), fidl::Error> {
13801        self.control_handle.inner.send::<fidl::encoding::ResultType<
13802            fidl::encoding::EmptyStruct,
13803            fidl_fuchsia_posix::Errno,
13804        >>(
13805            result,
13806            self.tx_id,
13807            0x20c55c11f00943ea,
13808            fidl::encoding::DynamicFlags::empty(),
13809        )
13810    }
13811}
13812
13813#[must_use = "FIDL methods require a response to be sent"]
13814#[derive(Debug)]
13815pub struct SocketGetIpMulticastLoopbackResponder {
13816    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13817    tx_id: u32,
13818}
13819
13820/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13821/// if the responder is dropped without sending a response, so that the client
13822/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13823impl std::ops::Drop for SocketGetIpMulticastLoopbackResponder {
13824    fn drop(&mut self) {
13825        self.control_handle.shutdown();
13826        // Safety: drops once, never accessed again
13827        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13828    }
13829}
13830
13831impl fidl::endpoints::Responder for SocketGetIpMulticastLoopbackResponder {
13832    type ControlHandle = SocketControlHandle;
13833
13834    fn control_handle(&self) -> &SocketControlHandle {
13835        &self.control_handle
13836    }
13837
13838    fn drop_without_shutdown(mut self) {
13839        // Safety: drops once, never accessed again due to mem::forget
13840        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13841        // Prevent Drop from running (which would shut down the channel)
13842        std::mem::forget(self);
13843    }
13844}
13845
13846impl SocketGetIpMulticastLoopbackResponder {
13847    /// Sends a response to the FIDL transaction.
13848    ///
13849    /// Sets the channel to shutdown if an error occurs.
13850    pub fn send(
13851        self,
13852        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13853    ) -> Result<(), fidl::Error> {
13854        let _result = self.send_raw(result);
13855        if _result.is_err() {
13856            self.control_handle.shutdown();
13857        }
13858        self.drop_without_shutdown();
13859        _result
13860    }
13861
13862    /// Similar to "send" but does not shutdown the channel if an error occurs.
13863    pub fn send_no_shutdown_on_err(
13864        self,
13865        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13866    ) -> Result<(), fidl::Error> {
13867        let _result = self.send_raw(result);
13868        self.drop_without_shutdown();
13869        _result
13870    }
13871
13872    fn send_raw(
13873        &self,
13874        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
13875    ) -> Result<(), fidl::Error> {
13876        self.control_handle.inner.send::<fidl::encoding::ResultType<
13877            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpMulticastLoopbackResponse,
13878            fidl_fuchsia_posix::Errno,
13879        >>(
13880            result.map(|value| (value,)),
13881            self.tx_id,
13882            0x3b6b26ff558298f2,
13883            fidl::encoding::DynamicFlags::empty(),
13884        )
13885    }
13886}
13887
13888#[must_use = "FIDL methods require a response to be sent"]
13889#[derive(Debug)]
13890pub struct SocketAddIpMembershipResponder {
13891    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13892    tx_id: u32,
13893}
13894
13895/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13896/// if the responder is dropped without sending a response, so that the client
13897/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13898impl std::ops::Drop for SocketAddIpMembershipResponder {
13899    fn drop(&mut self) {
13900        self.control_handle.shutdown();
13901        // Safety: drops once, never accessed again
13902        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13903    }
13904}
13905
13906impl fidl::endpoints::Responder for SocketAddIpMembershipResponder {
13907    type ControlHandle = SocketControlHandle;
13908
13909    fn control_handle(&self) -> &SocketControlHandle {
13910        &self.control_handle
13911    }
13912
13913    fn drop_without_shutdown(mut self) {
13914        // Safety: drops once, never accessed again due to mem::forget
13915        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13916        // Prevent Drop from running (which would shut down the channel)
13917        std::mem::forget(self);
13918    }
13919}
13920
13921impl SocketAddIpMembershipResponder {
13922    /// Sends a response to the FIDL transaction.
13923    ///
13924    /// Sets the channel to shutdown if an error occurs.
13925    pub fn send(
13926        self,
13927        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13928    ) -> Result<(), fidl::Error> {
13929        let _result = self.send_raw(result);
13930        if _result.is_err() {
13931            self.control_handle.shutdown();
13932        }
13933        self.drop_without_shutdown();
13934        _result
13935    }
13936
13937    /// Similar to "send" but does not shutdown the channel if an error occurs.
13938    pub fn send_no_shutdown_on_err(
13939        self,
13940        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13941    ) -> Result<(), fidl::Error> {
13942        let _result = self.send_raw(result);
13943        self.drop_without_shutdown();
13944        _result
13945    }
13946
13947    fn send_raw(
13948        &self,
13949        mut result: Result<(), fidl_fuchsia_posix::Errno>,
13950    ) -> Result<(), fidl::Error> {
13951        self.control_handle.inner.send::<fidl::encoding::ResultType<
13952            fidl::encoding::EmptyStruct,
13953            fidl_fuchsia_posix::Errno,
13954        >>(
13955            result,
13956            self.tx_id,
13957            0x76bc7df115a3b4d0,
13958            fidl::encoding::DynamicFlags::empty(),
13959        )
13960    }
13961}
13962
13963#[must_use = "FIDL methods require a response to be sent"]
13964#[derive(Debug)]
13965pub struct SocketDropIpMembershipResponder {
13966    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
13967    tx_id: u32,
13968}
13969
13970/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
13971/// if the responder is dropped without sending a response, so that the client
13972/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
13973impl std::ops::Drop for SocketDropIpMembershipResponder {
13974    fn drop(&mut self) {
13975        self.control_handle.shutdown();
13976        // Safety: drops once, never accessed again
13977        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13978    }
13979}
13980
13981impl fidl::endpoints::Responder for SocketDropIpMembershipResponder {
13982    type ControlHandle = SocketControlHandle;
13983
13984    fn control_handle(&self) -> &SocketControlHandle {
13985        &self.control_handle
13986    }
13987
13988    fn drop_without_shutdown(mut self) {
13989        // Safety: drops once, never accessed again due to mem::forget
13990        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
13991        // Prevent Drop from running (which would shut down the channel)
13992        std::mem::forget(self);
13993    }
13994}
13995
13996impl SocketDropIpMembershipResponder {
13997    /// Sends a response to the FIDL transaction.
13998    ///
13999    /// Sets the channel to shutdown if an error occurs.
14000    pub fn send(
14001        self,
14002        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14003    ) -> Result<(), fidl::Error> {
14004        let _result = self.send_raw(result);
14005        if _result.is_err() {
14006            self.control_handle.shutdown();
14007        }
14008        self.drop_without_shutdown();
14009        _result
14010    }
14011
14012    /// Similar to "send" but does not shutdown the channel if an error occurs.
14013    pub fn send_no_shutdown_on_err(
14014        self,
14015        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14016    ) -> Result<(), fidl::Error> {
14017        let _result = self.send_raw(result);
14018        self.drop_without_shutdown();
14019        _result
14020    }
14021
14022    fn send_raw(
14023        &self,
14024        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14025    ) -> Result<(), fidl::Error> {
14026        self.control_handle.inner.send::<fidl::encoding::ResultType<
14027            fidl::encoding::EmptyStruct,
14028            fidl_fuchsia_posix::Errno,
14029        >>(
14030            result,
14031            self.tx_id,
14032            0x2888f3099188d03,
14033            fidl::encoding::DynamicFlags::empty(),
14034        )
14035    }
14036}
14037
14038#[must_use = "FIDL methods require a response to be sent"]
14039#[derive(Debug)]
14040pub struct SocketSetIpTransparentResponder {
14041    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14042    tx_id: u32,
14043}
14044
14045/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14046/// if the responder is dropped without sending a response, so that the client
14047/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14048impl std::ops::Drop for SocketSetIpTransparentResponder {
14049    fn drop(&mut self) {
14050        self.control_handle.shutdown();
14051        // Safety: drops once, never accessed again
14052        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14053    }
14054}
14055
14056impl fidl::endpoints::Responder for SocketSetIpTransparentResponder {
14057    type ControlHandle = SocketControlHandle;
14058
14059    fn control_handle(&self) -> &SocketControlHandle {
14060        &self.control_handle
14061    }
14062
14063    fn drop_without_shutdown(mut self) {
14064        // Safety: drops once, never accessed again due to mem::forget
14065        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14066        // Prevent Drop from running (which would shut down the channel)
14067        std::mem::forget(self);
14068    }
14069}
14070
14071impl SocketSetIpTransparentResponder {
14072    /// Sends a response to the FIDL transaction.
14073    ///
14074    /// Sets the channel to shutdown if an error occurs.
14075    pub fn send(
14076        self,
14077        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14078    ) -> Result<(), fidl::Error> {
14079        let _result = self.send_raw(result);
14080        if _result.is_err() {
14081            self.control_handle.shutdown();
14082        }
14083        self.drop_without_shutdown();
14084        _result
14085    }
14086
14087    /// Similar to "send" but does not shutdown the channel if an error occurs.
14088    pub fn send_no_shutdown_on_err(
14089        self,
14090        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14091    ) -> Result<(), fidl::Error> {
14092        let _result = self.send_raw(result);
14093        self.drop_without_shutdown();
14094        _result
14095    }
14096
14097    fn send_raw(
14098        &self,
14099        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14100    ) -> Result<(), fidl::Error> {
14101        self.control_handle.inner.send::<fidl::encoding::ResultType<
14102            fidl::encoding::EmptyStruct,
14103            fidl_fuchsia_posix::Errno,
14104        >>(
14105            result,
14106            self.tx_id,
14107            0x1ae532b0c066e3a0,
14108            fidl::encoding::DynamicFlags::empty(),
14109        )
14110    }
14111}
14112
14113#[must_use = "FIDL methods require a response to be sent"]
14114#[derive(Debug)]
14115pub struct SocketGetIpTransparentResponder {
14116    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14117    tx_id: u32,
14118}
14119
14120/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14121/// if the responder is dropped without sending a response, so that the client
14122/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14123impl std::ops::Drop for SocketGetIpTransparentResponder {
14124    fn drop(&mut self) {
14125        self.control_handle.shutdown();
14126        // Safety: drops once, never accessed again
14127        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14128    }
14129}
14130
14131impl fidl::endpoints::Responder for SocketGetIpTransparentResponder {
14132    type ControlHandle = SocketControlHandle;
14133
14134    fn control_handle(&self) -> &SocketControlHandle {
14135        &self.control_handle
14136    }
14137
14138    fn drop_without_shutdown(mut self) {
14139        // Safety: drops once, never accessed again due to mem::forget
14140        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14141        // Prevent Drop from running (which would shut down the channel)
14142        std::mem::forget(self);
14143    }
14144}
14145
14146impl SocketGetIpTransparentResponder {
14147    /// Sends a response to the FIDL transaction.
14148    ///
14149    /// Sets the channel to shutdown if an error occurs.
14150    pub fn send(
14151        self,
14152        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14153    ) -> Result<(), fidl::Error> {
14154        let _result = self.send_raw(result);
14155        if _result.is_err() {
14156            self.control_handle.shutdown();
14157        }
14158        self.drop_without_shutdown();
14159        _result
14160    }
14161
14162    /// Similar to "send" but does not shutdown the channel if an error occurs.
14163    pub fn send_no_shutdown_on_err(
14164        self,
14165        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14166    ) -> Result<(), fidl::Error> {
14167        let _result = self.send_raw(result);
14168        self.drop_without_shutdown();
14169        _result
14170    }
14171
14172    fn send_raw(
14173        &self,
14174        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14175    ) -> Result<(), fidl::Error> {
14176        self.control_handle.inner.send::<fidl::encoding::ResultType<
14177            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpTransparentResponse,
14178            fidl_fuchsia_posix::Errno,
14179        >>(
14180            result.map(|value| (value,)),
14181            self.tx_id,
14182            0x51d43695962ebfb5,
14183            fidl::encoding::DynamicFlags::empty(),
14184        )
14185    }
14186}
14187
14188#[must_use = "FIDL methods require a response to be sent"]
14189#[derive(Debug)]
14190pub struct SocketSetIpReceiveOriginalDestinationAddressResponder {
14191    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14192    tx_id: u32,
14193}
14194
14195/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14196/// if the responder is dropped without sending a response, so that the client
14197/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14198impl std::ops::Drop for SocketSetIpReceiveOriginalDestinationAddressResponder {
14199    fn drop(&mut self) {
14200        self.control_handle.shutdown();
14201        // Safety: drops once, never accessed again
14202        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14203    }
14204}
14205
14206impl fidl::endpoints::Responder for SocketSetIpReceiveOriginalDestinationAddressResponder {
14207    type ControlHandle = SocketControlHandle;
14208
14209    fn control_handle(&self) -> &SocketControlHandle {
14210        &self.control_handle
14211    }
14212
14213    fn drop_without_shutdown(mut self) {
14214        // Safety: drops once, never accessed again due to mem::forget
14215        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14216        // Prevent Drop from running (which would shut down the channel)
14217        std::mem::forget(self);
14218    }
14219}
14220
14221impl SocketSetIpReceiveOriginalDestinationAddressResponder {
14222    /// Sends a response to the FIDL transaction.
14223    ///
14224    /// Sets the channel to shutdown if an error occurs.
14225    pub fn send(
14226        self,
14227        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14228    ) -> Result<(), fidl::Error> {
14229        let _result = self.send_raw(result);
14230        if _result.is_err() {
14231            self.control_handle.shutdown();
14232        }
14233        self.drop_without_shutdown();
14234        _result
14235    }
14236
14237    /// Similar to "send" but does not shutdown the channel if an error occurs.
14238    pub fn send_no_shutdown_on_err(
14239        self,
14240        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14241    ) -> Result<(), fidl::Error> {
14242        let _result = self.send_raw(result);
14243        self.drop_without_shutdown();
14244        _result
14245    }
14246
14247    fn send_raw(
14248        &self,
14249        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14250    ) -> Result<(), fidl::Error> {
14251        self.control_handle.inner.send::<fidl::encoding::ResultType<
14252            fidl::encoding::EmptyStruct,
14253            fidl_fuchsia_posix::Errno,
14254        >>(
14255            result,
14256            self.tx_id,
14257            0x4722b4ce52f7840,
14258            fidl::encoding::DynamicFlags::empty(),
14259        )
14260    }
14261}
14262
14263#[must_use = "FIDL methods require a response to be sent"]
14264#[derive(Debug)]
14265pub struct SocketGetIpReceiveOriginalDestinationAddressResponder {
14266    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14267    tx_id: u32,
14268}
14269
14270/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14271/// if the responder is dropped without sending a response, so that the client
14272/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14273impl std::ops::Drop for SocketGetIpReceiveOriginalDestinationAddressResponder {
14274    fn drop(&mut self) {
14275        self.control_handle.shutdown();
14276        // Safety: drops once, never accessed again
14277        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14278    }
14279}
14280
14281impl fidl::endpoints::Responder for SocketGetIpReceiveOriginalDestinationAddressResponder {
14282    type ControlHandle = SocketControlHandle;
14283
14284    fn control_handle(&self) -> &SocketControlHandle {
14285        &self.control_handle
14286    }
14287
14288    fn drop_without_shutdown(mut self) {
14289        // Safety: drops once, never accessed again due to mem::forget
14290        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14291        // Prevent Drop from running (which would shut down the channel)
14292        std::mem::forget(self);
14293    }
14294}
14295
14296impl SocketGetIpReceiveOriginalDestinationAddressResponder {
14297    /// Sends a response to the FIDL transaction.
14298    ///
14299    /// Sets the channel to shutdown if an error occurs.
14300    pub fn send(
14301        self,
14302        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14303    ) -> Result<(), fidl::Error> {
14304        let _result = self.send_raw(result);
14305        if _result.is_err() {
14306            self.control_handle.shutdown();
14307        }
14308        self.drop_without_shutdown();
14309        _result
14310    }
14311
14312    /// Similar to "send" but does not shutdown the channel if an error occurs.
14313    pub fn send_no_shutdown_on_err(
14314        self,
14315        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14316    ) -> Result<(), fidl::Error> {
14317        let _result = self.send_raw(result);
14318        self.drop_without_shutdown();
14319        _result
14320    }
14321
14322    fn send_raw(
14323        &self,
14324        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14325    ) -> Result<(), fidl::Error> {
14326        self.control_handle.inner.send::<fidl::encoding::ResultType<fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpReceiveOriginalDestinationAddressResponse, fidl_fuchsia_posix::Errno>>(
14327            result.map(|value| (value,)),
14328            self.tx_id,
14329            0x2a0e7dc5d6bfdfe9,
14330            fidl::encoding::DynamicFlags::empty()
14331        )
14332    }
14333}
14334
14335#[must_use = "FIDL methods require a response to be sent"]
14336#[derive(Debug)]
14337pub struct SocketAddIpv6MembershipResponder {
14338    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14339    tx_id: u32,
14340}
14341
14342/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14343/// if the responder is dropped without sending a response, so that the client
14344/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14345impl std::ops::Drop for SocketAddIpv6MembershipResponder {
14346    fn drop(&mut self) {
14347        self.control_handle.shutdown();
14348        // Safety: drops once, never accessed again
14349        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14350    }
14351}
14352
14353impl fidl::endpoints::Responder for SocketAddIpv6MembershipResponder {
14354    type ControlHandle = SocketControlHandle;
14355
14356    fn control_handle(&self) -> &SocketControlHandle {
14357        &self.control_handle
14358    }
14359
14360    fn drop_without_shutdown(mut self) {
14361        // Safety: drops once, never accessed again due to mem::forget
14362        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14363        // Prevent Drop from running (which would shut down the channel)
14364        std::mem::forget(self);
14365    }
14366}
14367
14368impl SocketAddIpv6MembershipResponder {
14369    /// Sends a response to the FIDL transaction.
14370    ///
14371    /// Sets the channel to shutdown if an error occurs.
14372    pub fn send(
14373        self,
14374        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14375    ) -> Result<(), fidl::Error> {
14376        let _result = self.send_raw(result);
14377        if _result.is_err() {
14378            self.control_handle.shutdown();
14379        }
14380        self.drop_without_shutdown();
14381        _result
14382    }
14383
14384    /// Similar to "send" but does not shutdown the channel if an error occurs.
14385    pub fn send_no_shutdown_on_err(
14386        self,
14387        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14388    ) -> Result<(), fidl::Error> {
14389        let _result = self.send_raw(result);
14390        self.drop_without_shutdown();
14391        _result
14392    }
14393
14394    fn send_raw(
14395        &self,
14396        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14397    ) -> Result<(), fidl::Error> {
14398        self.control_handle.inner.send::<fidl::encoding::ResultType<
14399            fidl::encoding::EmptyStruct,
14400            fidl_fuchsia_posix::Errno,
14401        >>(
14402            result,
14403            self.tx_id,
14404            0x7c94727acb4ea4b3,
14405            fidl::encoding::DynamicFlags::empty(),
14406        )
14407    }
14408}
14409
14410#[must_use = "FIDL methods require a response to be sent"]
14411#[derive(Debug)]
14412pub struct SocketDropIpv6MembershipResponder {
14413    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14414    tx_id: u32,
14415}
14416
14417/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14418/// if the responder is dropped without sending a response, so that the client
14419/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14420impl std::ops::Drop for SocketDropIpv6MembershipResponder {
14421    fn drop(&mut self) {
14422        self.control_handle.shutdown();
14423        // Safety: drops once, never accessed again
14424        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14425    }
14426}
14427
14428impl fidl::endpoints::Responder for SocketDropIpv6MembershipResponder {
14429    type ControlHandle = SocketControlHandle;
14430
14431    fn control_handle(&self) -> &SocketControlHandle {
14432        &self.control_handle
14433    }
14434
14435    fn drop_without_shutdown(mut self) {
14436        // Safety: drops once, never accessed again due to mem::forget
14437        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14438        // Prevent Drop from running (which would shut down the channel)
14439        std::mem::forget(self);
14440    }
14441}
14442
14443impl SocketDropIpv6MembershipResponder {
14444    /// Sends a response to the FIDL transaction.
14445    ///
14446    /// Sets the channel to shutdown if an error occurs.
14447    pub fn send(
14448        self,
14449        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14450    ) -> Result<(), fidl::Error> {
14451        let _result = self.send_raw(result);
14452        if _result.is_err() {
14453            self.control_handle.shutdown();
14454        }
14455        self.drop_without_shutdown();
14456        _result
14457    }
14458
14459    /// Similar to "send" but does not shutdown the channel if an error occurs.
14460    pub fn send_no_shutdown_on_err(
14461        self,
14462        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14463    ) -> Result<(), fidl::Error> {
14464        let _result = self.send_raw(result);
14465        self.drop_without_shutdown();
14466        _result
14467    }
14468
14469    fn send_raw(
14470        &self,
14471        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14472    ) -> Result<(), fidl::Error> {
14473        self.control_handle.inner.send::<fidl::encoding::ResultType<
14474            fidl::encoding::EmptyStruct,
14475            fidl_fuchsia_posix::Errno,
14476        >>(
14477            result,
14478            self.tx_id,
14479            0x42104c70ccaba304,
14480            fidl::encoding::DynamicFlags::empty(),
14481        )
14482    }
14483}
14484
14485#[must_use = "FIDL methods require a response to be sent"]
14486#[derive(Debug)]
14487pub struct SocketSetIpv6MulticastInterfaceResponder {
14488    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14489    tx_id: u32,
14490}
14491
14492/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14493/// if the responder is dropped without sending a response, so that the client
14494/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14495impl std::ops::Drop for SocketSetIpv6MulticastInterfaceResponder {
14496    fn drop(&mut self) {
14497        self.control_handle.shutdown();
14498        // Safety: drops once, never accessed again
14499        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14500    }
14501}
14502
14503impl fidl::endpoints::Responder for SocketSetIpv6MulticastInterfaceResponder {
14504    type ControlHandle = SocketControlHandle;
14505
14506    fn control_handle(&self) -> &SocketControlHandle {
14507        &self.control_handle
14508    }
14509
14510    fn drop_without_shutdown(mut self) {
14511        // Safety: drops once, never accessed again due to mem::forget
14512        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14513        // Prevent Drop from running (which would shut down the channel)
14514        std::mem::forget(self);
14515    }
14516}
14517
14518impl SocketSetIpv6MulticastInterfaceResponder {
14519    /// Sends a response to the FIDL transaction.
14520    ///
14521    /// Sets the channel to shutdown if an error occurs.
14522    pub fn send(
14523        self,
14524        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14525    ) -> Result<(), fidl::Error> {
14526        let _result = self.send_raw(result);
14527        if _result.is_err() {
14528            self.control_handle.shutdown();
14529        }
14530        self.drop_without_shutdown();
14531        _result
14532    }
14533
14534    /// Similar to "send" but does not shutdown the channel if an error occurs.
14535    pub fn send_no_shutdown_on_err(
14536        self,
14537        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14538    ) -> Result<(), fidl::Error> {
14539        let _result = self.send_raw(result);
14540        self.drop_without_shutdown();
14541        _result
14542    }
14543
14544    fn send_raw(
14545        &self,
14546        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14547    ) -> Result<(), fidl::Error> {
14548        self.control_handle.inner.send::<fidl::encoding::ResultType<
14549            fidl::encoding::EmptyStruct,
14550            fidl_fuchsia_posix::Errno,
14551        >>(
14552            result,
14553            self.tx_id,
14554            0x135f76db3774ab3b,
14555            fidl::encoding::DynamicFlags::empty(),
14556        )
14557    }
14558}
14559
14560#[must_use = "FIDL methods require a response to be sent"]
14561#[derive(Debug)]
14562pub struct SocketGetIpv6MulticastInterfaceResponder {
14563    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14564    tx_id: u32,
14565}
14566
14567/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14568/// if the responder is dropped without sending a response, so that the client
14569/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14570impl std::ops::Drop for SocketGetIpv6MulticastInterfaceResponder {
14571    fn drop(&mut self) {
14572        self.control_handle.shutdown();
14573        // Safety: drops once, never accessed again
14574        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14575    }
14576}
14577
14578impl fidl::endpoints::Responder for SocketGetIpv6MulticastInterfaceResponder {
14579    type ControlHandle = SocketControlHandle;
14580
14581    fn control_handle(&self) -> &SocketControlHandle {
14582        &self.control_handle
14583    }
14584
14585    fn drop_without_shutdown(mut self) {
14586        // Safety: drops once, never accessed again due to mem::forget
14587        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14588        // Prevent Drop from running (which would shut down the channel)
14589        std::mem::forget(self);
14590    }
14591}
14592
14593impl SocketGetIpv6MulticastInterfaceResponder {
14594    /// Sends a response to the FIDL transaction.
14595    ///
14596    /// Sets the channel to shutdown if an error occurs.
14597    pub fn send(
14598        self,
14599        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14600    ) -> Result<(), fidl::Error> {
14601        let _result = self.send_raw(result);
14602        if _result.is_err() {
14603            self.control_handle.shutdown();
14604        }
14605        self.drop_without_shutdown();
14606        _result
14607    }
14608
14609    /// Similar to "send" but does not shutdown the channel if an error occurs.
14610    pub fn send_no_shutdown_on_err(
14611        self,
14612        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14613    ) -> Result<(), fidl::Error> {
14614        let _result = self.send_raw(result);
14615        self.drop_without_shutdown();
14616        _result
14617    }
14618
14619    fn send_raw(
14620        &self,
14621        mut result: Result<u64, fidl_fuchsia_posix::Errno>,
14622    ) -> Result<(), fidl::Error> {
14623        self.control_handle.inner.send::<fidl::encoding::ResultType<
14624            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastInterfaceResponse,
14625            fidl_fuchsia_posix::Errno,
14626        >>(
14627            result.map(|value| (value,)),
14628            self.tx_id,
14629            0x1f26fcdd348f1882,
14630            fidl::encoding::DynamicFlags::empty(),
14631        )
14632    }
14633}
14634
14635#[must_use = "FIDL methods require a response to be sent"]
14636#[derive(Debug)]
14637pub struct SocketSetIpv6UnicastHopsResponder {
14638    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14639    tx_id: u32,
14640}
14641
14642/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14643/// if the responder is dropped without sending a response, so that the client
14644/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14645impl std::ops::Drop for SocketSetIpv6UnicastHopsResponder {
14646    fn drop(&mut self) {
14647        self.control_handle.shutdown();
14648        // Safety: drops once, never accessed again
14649        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14650    }
14651}
14652
14653impl fidl::endpoints::Responder for SocketSetIpv6UnicastHopsResponder {
14654    type ControlHandle = SocketControlHandle;
14655
14656    fn control_handle(&self) -> &SocketControlHandle {
14657        &self.control_handle
14658    }
14659
14660    fn drop_without_shutdown(mut self) {
14661        // Safety: drops once, never accessed again due to mem::forget
14662        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14663        // Prevent Drop from running (which would shut down the channel)
14664        std::mem::forget(self);
14665    }
14666}
14667
14668impl SocketSetIpv6UnicastHopsResponder {
14669    /// Sends a response to the FIDL transaction.
14670    ///
14671    /// Sets the channel to shutdown if an error occurs.
14672    pub fn send(
14673        self,
14674        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14675    ) -> Result<(), fidl::Error> {
14676        let _result = self.send_raw(result);
14677        if _result.is_err() {
14678            self.control_handle.shutdown();
14679        }
14680        self.drop_without_shutdown();
14681        _result
14682    }
14683
14684    /// Similar to "send" but does not shutdown the channel if an error occurs.
14685    pub fn send_no_shutdown_on_err(
14686        self,
14687        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14688    ) -> Result<(), fidl::Error> {
14689        let _result = self.send_raw(result);
14690        self.drop_without_shutdown();
14691        _result
14692    }
14693
14694    fn send_raw(
14695        &self,
14696        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14697    ) -> Result<(), fidl::Error> {
14698        self.control_handle.inner.send::<fidl::encoding::ResultType<
14699            fidl::encoding::EmptyStruct,
14700            fidl_fuchsia_posix::Errno,
14701        >>(
14702            result,
14703            self.tx_id,
14704            0x157d51e98f462859,
14705            fidl::encoding::DynamicFlags::empty(),
14706        )
14707    }
14708}
14709
14710#[must_use = "FIDL methods require a response to be sent"]
14711#[derive(Debug)]
14712pub struct SocketGetIpv6UnicastHopsResponder {
14713    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14714    tx_id: u32,
14715}
14716
14717/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14718/// if the responder is dropped without sending a response, so that the client
14719/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14720impl std::ops::Drop for SocketGetIpv6UnicastHopsResponder {
14721    fn drop(&mut self) {
14722        self.control_handle.shutdown();
14723        // Safety: drops once, never accessed again
14724        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14725    }
14726}
14727
14728impl fidl::endpoints::Responder for SocketGetIpv6UnicastHopsResponder {
14729    type ControlHandle = SocketControlHandle;
14730
14731    fn control_handle(&self) -> &SocketControlHandle {
14732        &self.control_handle
14733    }
14734
14735    fn drop_without_shutdown(mut self) {
14736        // Safety: drops once, never accessed again due to mem::forget
14737        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14738        // Prevent Drop from running (which would shut down the channel)
14739        std::mem::forget(self);
14740    }
14741}
14742
14743impl SocketGetIpv6UnicastHopsResponder {
14744    /// Sends a response to the FIDL transaction.
14745    ///
14746    /// Sets the channel to shutdown if an error occurs.
14747    pub fn send(
14748        self,
14749        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14750    ) -> Result<(), fidl::Error> {
14751        let _result = self.send_raw(result);
14752        if _result.is_err() {
14753            self.control_handle.shutdown();
14754        }
14755        self.drop_without_shutdown();
14756        _result
14757    }
14758
14759    /// Similar to "send" but does not shutdown the channel if an error occurs.
14760    pub fn send_no_shutdown_on_err(
14761        self,
14762        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14763    ) -> Result<(), fidl::Error> {
14764        let _result = self.send_raw(result);
14765        self.drop_without_shutdown();
14766        _result
14767    }
14768
14769    fn send_raw(
14770        &self,
14771        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
14772    ) -> Result<(), fidl::Error> {
14773        self.control_handle.inner.send::<fidl::encoding::ResultType<
14774            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6UnicastHopsResponse,
14775            fidl_fuchsia_posix::Errno,
14776        >>(
14777            result.map(|value| (value,)),
14778            self.tx_id,
14779            0x21f4641cad8bd8d2,
14780            fidl::encoding::DynamicFlags::empty(),
14781        )
14782    }
14783}
14784
14785#[must_use = "FIDL methods require a response to be sent"]
14786#[derive(Debug)]
14787pub struct SocketSetIpv6ReceiveHopLimitResponder {
14788    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14789    tx_id: u32,
14790}
14791
14792/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14793/// if the responder is dropped without sending a response, so that the client
14794/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14795impl std::ops::Drop for SocketSetIpv6ReceiveHopLimitResponder {
14796    fn drop(&mut self) {
14797        self.control_handle.shutdown();
14798        // Safety: drops once, never accessed again
14799        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14800    }
14801}
14802
14803impl fidl::endpoints::Responder for SocketSetIpv6ReceiveHopLimitResponder {
14804    type ControlHandle = SocketControlHandle;
14805
14806    fn control_handle(&self) -> &SocketControlHandle {
14807        &self.control_handle
14808    }
14809
14810    fn drop_without_shutdown(mut self) {
14811        // Safety: drops once, never accessed again due to mem::forget
14812        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14813        // Prevent Drop from running (which would shut down the channel)
14814        std::mem::forget(self);
14815    }
14816}
14817
14818impl SocketSetIpv6ReceiveHopLimitResponder {
14819    /// Sends a response to the FIDL transaction.
14820    ///
14821    /// Sets the channel to shutdown if an error occurs.
14822    pub fn send(
14823        self,
14824        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14825    ) -> Result<(), fidl::Error> {
14826        let _result = self.send_raw(result);
14827        if _result.is_err() {
14828            self.control_handle.shutdown();
14829        }
14830        self.drop_without_shutdown();
14831        _result
14832    }
14833
14834    /// Similar to "send" but does not shutdown the channel if an error occurs.
14835    pub fn send_no_shutdown_on_err(
14836        self,
14837        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14838    ) -> Result<(), fidl::Error> {
14839        let _result = self.send_raw(result);
14840        self.drop_without_shutdown();
14841        _result
14842    }
14843
14844    fn send_raw(
14845        &self,
14846        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14847    ) -> Result<(), fidl::Error> {
14848        self.control_handle.inner.send::<fidl::encoding::ResultType<
14849            fidl::encoding::EmptyStruct,
14850            fidl_fuchsia_posix::Errno,
14851        >>(
14852            result,
14853            self.tx_id,
14854            0x5c24808ed2e84a1e,
14855            fidl::encoding::DynamicFlags::empty(),
14856        )
14857    }
14858}
14859
14860#[must_use = "FIDL methods require a response to be sent"]
14861#[derive(Debug)]
14862pub struct SocketGetIpv6ReceiveHopLimitResponder {
14863    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14864    tx_id: u32,
14865}
14866
14867/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14868/// if the responder is dropped without sending a response, so that the client
14869/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14870impl std::ops::Drop for SocketGetIpv6ReceiveHopLimitResponder {
14871    fn drop(&mut self) {
14872        self.control_handle.shutdown();
14873        // Safety: drops once, never accessed again
14874        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14875    }
14876}
14877
14878impl fidl::endpoints::Responder for SocketGetIpv6ReceiveHopLimitResponder {
14879    type ControlHandle = SocketControlHandle;
14880
14881    fn control_handle(&self) -> &SocketControlHandle {
14882        &self.control_handle
14883    }
14884
14885    fn drop_without_shutdown(mut self) {
14886        // Safety: drops once, never accessed again due to mem::forget
14887        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14888        // Prevent Drop from running (which would shut down the channel)
14889        std::mem::forget(self);
14890    }
14891}
14892
14893impl SocketGetIpv6ReceiveHopLimitResponder {
14894    /// Sends a response to the FIDL transaction.
14895    ///
14896    /// Sets the channel to shutdown if an error occurs.
14897    pub fn send(
14898        self,
14899        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14900    ) -> Result<(), fidl::Error> {
14901        let _result = self.send_raw(result);
14902        if _result.is_err() {
14903            self.control_handle.shutdown();
14904        }
14905        self.drop_without_shutdown();
14906        _result
14907    }
14908
14909    /// Similar to "send" but does not shutdown the channel if an error occurs.
14910    pub fn send_no_shutdown_on_err(
14911        self,
14912        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14913    ) -> Result<(), fidl::Error> {
14914        let _result = self.send_raw(result);
14915        self.drop_without_shutdown();
14916        _result
14917    }
14918
14919    fn send_raw(
14920        &self,
14921        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
14922    ) -> Result<(), fidl::Error> {
14923        self.control_handle.inner.send::<fidl::encoding::ResultType<
14924            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveHopLimitResponse,
14925            fidl_fuchsia_posix::Errno,
14926        >>(
14927            result.map(|value| (value,)),
14928            self.tx_id,
14929            0x341e06689885b4c0,
14930            fidl::encoding::DynamicFlags::empty(),
14931        )
14932    }
14933}
14934
14935#[must_use = "FIDL methods require a response to be sent"]
14936#[derive(Debug)]
14937pub struct SocketSetIpv6MulticastHopsResponder {
14938    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
14939    tx_id: u32,
14940}
14941
14942/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
14943/// if the responder is dropped without sending a response, so that the client
14944/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
14945impl std::ops::Drop for SocketSetIpv6MulticastHopsResponder {
14946    fn drop(&mut self) {
14947        self.control_handle.shutdown();
14948        // Safety: drops once, never accessed again
14949        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14950    }
14951}
14952
14953impl fidl::endpoints::Responder for SocketSetIpv6MulticastHopsResponder {
14954    type ControlHandle = SocketControlHandle;
14955
14956    fn control_handle(&self) -> &SocketControlHandle {
14957        &self.control_handle
14958    }
14959
14960    fn drop_without_shutdown(mut self) {
14961        // Safety: drops once, never accessed again due to mem::forget
14962        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
14963        // Prevent Drop from running (which would shut down the channel)
14964        std::mem::forget(self);
14965    }
14966}
14967
14968impl SocketSetIpv6MulticastHopsResponder {
14969    /// Sends a response to the FIDL transaction.
14970    ///
14971    /// Sets the channel to shutdown if an error occurs.
14972    pub fn send(
14973        self,
14974        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14975    ) -> Result<(), fidl::Error> {
14976        let _result = self.send_raw(result);
14977        if _result.is_err() {
14978            self.control_handle.shutdown();
14979        }
14980        self.drop_without_shutdown();
14981        _result
14982    }
14983
14984    /// Similar to "send" but does not shutdown the channel if an error occurs.
14985    pub fn send_no_shutdown_on_err(
14986        self,
14987        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14988    ) -> Result<(), fidl::Error> {
14989        let _result = self.send_raw(result);
14990        self.drop_without_shutdown();
14991        _result
14992    }
14993
14994    fn send_raw(
14995        &self,
14996        mut result: Result<(), fidl_fuchsia_posix::Errno>,
14997    ) -> Result<(), fidl::Error> {
14998        self.control_handle.inner.send::<fidl::encoding::ResultType<
14999            fidl::encoding::EmptyStruct,
15000            fidl_fuchsia_posix::Errno,
15001        >>(
15002            result,
15003            self.tx_id,
15004            0x25b9cd4d181f82c1,
15005            fidl::encoding::DynamicFlags::empty(),
15006        )
15007    }
15008}
15009
15010#[must_use = "FIDL methods require a response to be sent"]
15011#[derive(Debug)]
15012pub struct SocketGetIpv6MulticastHopsResponder {
15013    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15014    tx_id: u32,
15015}
15016
15017/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15018/// if the responder is dropped without sending a response, so that the client
15019/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15020impl std::ops::Drop for SocketGetIpv6MulticastHopsResponder {
15021    fn drop(&mut self) {
15022        self.control_handle.shutdown();
15023        // Safety: drops once, never accessed again
15024        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15025    }
15026}
15027
15028impl fidl::endpoints::Responder for SocketGetIpv6MulticastHopsResponder {
15029    type ControlHandle = SocketControlHandle;
15030
15031    fn control_handle(&self) -> &SocketControlHandle {
15032        &self.control_handle
15033    }
15034
15035    fn drop_without_shutdown(mut self) {
15036        // Safety: drops once, never accessed again due to mem::forget
15037        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15038        // Prevent Drop from running (which would shut down the channel)
15039        std::mem::forget(self);
15040    }
15041}
15042
15043impl SocketGetIpv6MulticastHopsResponder {
15044    /// Sends a response to the FIDL transaction.
15045    ///
15046    /// Sets the channel to shutdown if an error occurs.
15047    pub fn send(
15048        self,
15049        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15050    ) -> Result<(), fidl::Error> {
15051        let _result = self.send_raw(result);
15052        if _result.is_err() {
15053            self.control_handle.shutdown();
15054        }
15055        self.drop_without_shutdown();
15056        _result
15057    }
15058
15059    /// Similar to "send" but does not shutdown the channel if an error occurs.
15060    pub fn send_no_shutdown_on_err(
15061        self,
15062        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15063    ) -> Result<(), fidl::Error> {
15064        let _result = self.send_raw(result);
15065        self.drop_without_shutdown();
15066        _result
15067    }
15068
15069    fn send_raw(
15070        &self,
15071        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15072    ) -> Result<(), fidl::Error> {
15073        self.control_handle.inner.send::<fidl::encoding::ResultType<
15074            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastHopsResponse,
15075            fidl_fuchsia_posix::Errno,
15076        >>(
15077            result.map(|value| (value,)),
15078            self.tx_id,
15079            0x52916948a365012a,
15080            fidl::encoding::DynamicFlags::empty(),
15081        )
15082    }
15083}
15084
15085#[must_use = "FIDL methods require a response to be sent"]
15086#[derive(Debug)]
15087pub struct SocketSetIpv6MulticastLoopbackResponder {
15088    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15089    tx_id: u32,
15090}
15091
15092/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15093/// if the responder is dropped without sending a response, so that the client
15094/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15095impl std::ops::Drop for SocketSetIpv6MulticastLoopbackResponder {
15096    fn drop(&mut self) {
15097        self.control_handle.shutdown();
15098        // Safety: drops once, never accessed again
15099        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15100    }
15101}
15102
15103impl fidl::endpoints::Responder for SocketSetIpv6MulticastLoopbackResponder {
15104    type ControlHandle = SocketControlHandle;
15105
15106    fn control_handle(&self) -> &SocketControlHandle {
15107        &self.control_handle
15108    }
15109
15110    fn drop_without_shutdown(mut self) {
15111        // Safety: drops once, never accessed again due to mem::forget
15112        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15113        // Prevent Drop from running (which would shut down the channel)
15114        std::mem::forget(self);
15115    }
15116}
15117
15118impl SocketSetIpv6MulticastLoopbackResponder {
15119    /// Sends a response to the FIDL transaction.
15120    ///
15121    /// Sets the channel to shutdown if an error occurs.
15122    pub fn send(
15123        self,
15124        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15125    ) -> Result<(), fidl::Error> {
15126        let _result = self.send_raw(result);
15127        if _result.is_err() {
15128            self.control_handle.shutdown();
15129        }
15130        self.drop_without_shutdown();
15131        _result
15132    }
15133
15134    /// Similar to "send" but does not shutdown the channel if an error occurs.
15135    pub fn send_no_shutdown_on_err(
15136        self,
15137        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15138    ) -> Result<(), fidl::Error> {
15139        let _result = self.send_raw(result);
15140        self.drop_without_shutdown();
15141        _result
15142    }
15143
15144    fn send_raw(
15145        &self,
15146        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15147    ) -> Result<(), fidl::Error> {
15148        self.control_handle.inner.send::<fidl::encoding::ResultType<
15149            fidl::encoding::EmptyStruct,
15150            fidl_fuchsia_posix::Errno,
15151        >>(
15152            result,
15153            self.tx_id,
15154            0x55701c409ff41b40,
15155            fidl::encoding::DynamicFlags::empty(),
15156        )
15157    }
15158}
15159
15160#[must_use = "FIDL methods require a response to be sent"]
15161#[derive(Debug)]
15162pub struct SocketGetIpv6MulticastLoopbackResponder {
15163    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15164    tx_id: u32,
15165}
15166
15167/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15168/// if the responder is dropped without sending a response, so that the client
15169/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15170impl std::ops::Drop for SocketGetIpv6MulticastLoopbackResponder {
15171    fn drop(&mut self) {
15172        self.control_handle.shutdown();
15173        // Safety: drops once, never accessed again
15174        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15175    }
15176}
15177
15178impl fidl::endpoints::Responder for SocketGetIpv6MulticastLoopbackResponder {
15179    type ControlHandle = SocketControlHandle;
15180
15181    fn control_handle(&self) -> &SocketControlHandle {
15182        &self.control_handle
15183    }
15184
15185    fn drop_without_shutdown(mut self) {
15186        // Safety: drops once, never accessed again due to mem::forget
15187        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15188        // Prevent Drop from running (which would shut down the channel)
15189        std::mem::forget(self);
15190    }
15191}
15192
15193impl SocketGetIpv6MulticastLoopbackResponder {
15194    /// Sends a response to the FIDL transaction.
15195    ///
15196    /// Sets the channel to shutdown if an error occurs.
15197    pub fn send(
15198        self,
15199        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15200    ) -> Result<(), fidl::Error> {
15201        let _result = self.send_raw(result);
15202        if _result.is_err() {
15203            self.control_handle.shutdown();
15204        }
15205        self.drop_without_shutdown();
15206        _result
15207    }
15208
15209    /// Similar to "send" but does not shutdown the channel if an error occurs.
15210    pub fn send_no_shutdown_on_err(
15211        self,
15212        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15213    ) -> Result<(), fidl::Error> {
15214        let _result = self.send_raw(result);
15215        self.drop_without_shutdown();
15216        _result
15217    }
15218
15219    fn send_raw(
15220        &self,
15221        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15222    ) -> Result<(), fidl::Error> {
15223        self.control_handle.inner.send::<fidl::encoding::ResultType<
15224            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6MulticastLoopbackResponse,
15225            fidl_fuchsia_posix::Errno,
15226        >>(
15227            result.map(|value| (value,)),
15228            self.tx_id,
15229            0x4415b701fde319c3,
15230            fidl::encoding::DynamicFlags::empty(),
15231        )
15232    }
15233}
15234
15235#[must_use = "FIDL methods require a response to be sent"]
15236#[derive(Debug)]
15237pub struct SocketSetIpv6OnlyResponder {
15238    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15239    tx_id: u32,
15240}
15241
15242/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15243/// if the responder is dropped without sending a response, so that the client
15244/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15245impl std::ops::Drop for SocketSetIpv6OnlyResponder {
15246    fn drop(&mut self) {
15247        self.control_handle.shutdown();
15248        // Safety: drops once, never accessed again
15249        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15250    }
15251}
15252
15253impl fidl::endpoints::Responder for SocketSetIpv6OnlyResponder {
15254    type ControlHandle = SocketControlHandle;
15255
15256    fn control_handle(&self) -> &SocketControlHandle {
15257        &self.control_handle
15258    }
15259
15260    fn drop_without_shutdown(mut self) {
15261        // Safety: drops once, never accessed again due to mem::forget
15262        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15263        // Prevent Drop from running (which would shut down the channel)
15264        std::mem::forget(self);
15265    }
15266}
15267
15268impl SocketSetIpv6OnlyResponder {
15269    /// Sends a response to the FIDL transaction.
15270    ///
15271    /// Sets the channel to shutdown if an error occurs.
15272    pub fn send(
15273        self,
15274        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15275    ) -> Result<(), fidl::Error> {
15276        let _result = self.send_raw(result);
15277        if _result.is_err() {
15278            self.control_handle.shutdown();
15279        }
15280        self.drop_without_shutdown();
15281        _result
15282    }
15283
15284    /// Similar to "send" but does not shutdown the channel if an error occurs.
15285    pub fn send_no_shutdown_on_err(
15286        self,
15287        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15288    ) -> Result<(), fidl::Error> {
15289        let _result = self.send_raw(result);
15290        self.drop_without_shutdown();
15291        _result
15292    }
15293
15294    fn send_raw(
15295        &self,
15296        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15297    ) -> Result<(), fidl::Error> {
15298        self.control_handle.inner.send::<fidl::encoding::ResultType<
15299            fidl::encoding::EmptyStruct,
15300            fidl_fuchsia_posix::Errno,
15301        >>(
15302            result,
15303            self.tx_id,
15304            0x4873f1364758cbba,
15305            fidl::encoding::DynamicFlags::empty(),
15306        )
15307    }
15308}
15309
15310#[must_use = "FIDL methods require a response to be sent"]
15311#[derive(Debug)]
15312pub struct SocketGetIpv6OnlyResponder {
15313    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15314    tx_id: u32,
15315}
15316
15317/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15318/// if the responder is dropped without sending a response, so that the client
15319/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15320impl std::ops::Drop for SocketGetIpv6OnlyResponder {
15321    fn drop(&mut self) {
15322        self.control_handle.shutdown();
15323        // Safety: drops once, never accessed again
15324        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15325    }
15326}
15327
15328impl fidl::endpoints::Responder for SocketGetIpv6OnlyResponder {
15329    type ControlHandle = SocketControlHandle;
15330
15331    fn control_handle(&self) -> &SocketControlHandle {
15332        &self.control_handle
15333    }
15334
15335    fn drop_without_shutdown(mut self) {
15336        // Safety: drops once, never accessed again due to mem::forget
15337        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15338        // Prevent Drop from running (which would shut down the channel)
15339        std::mem::forget(self);
15340    }
15341}
15342
15343impl SocketGetIpv6OnlyResponder {
15344    /// Sends a response to the FIDL transaction.
15345    ///
15346    /// Sets the channel to shutdown if an error occurs.
15347    pub fn send(
15348        self,
15349        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15350    ) -> Result<(), fidl::Error> {
15351        let _result = self.send_raw(result);
15352        if _result.is_err() {
15353            self.control_handle.shutdown();
15354        }
15355        self.drop_without_shutdown();
15356        _result
15357    }
15358
15359    /// Similar to "send" but does not shutdown the channel if an error occurs.
15360    pub fn send_no_shutdown_on_err(
15361        self,
15362        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15363    ) -> Result<(), fidl::Error> {
15364        let _result = self.send_raw(result);
15365        self.drop_without_shutdown();
15366        _result
15367    }
15368
15369    fn send_raw(
15370        &self,
15371        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15372    ) -> Result<(), fidl::Error> {
15373        self.control_handle.inner.send::<fidl::encoding::ResultType<
15374            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6OnlyResponse,
15375            fidl_fuchsia_posix::Errno,
15376        >>(
15377            result.map(|value| (value,)),
15378            self.tx_id,
15379            0x4aa3340a1a26b89c,
15380            fidl::encoding::DynamicFlags::empty(),
15381        )
15382    }
15383}
15384
15385#[must_use = "FIDL methods require a response to be sent"]
15386#[derive(Debug)]
15387pub struct SocketSetIpv6ReceiveTrafficClassResponder {
15388    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15389    tx_id: u32,
15390}
15391
15392/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15393/// if the responder is dropped without sending a response, so that the client
15394/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15395impl std::ops::Drop for SocketSetIpv6ReceiveTrafficClassResponder {
15396    fn drop(&mut self) {
15397        self.control_handle.shutdown();
15398        // Safety: drops once, never accessed again
15399        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15400    }
15401}
15402
15403impl fidl::endpoints::Responder for SocketSetIpv6ReceiveTrafficClassResponder {
15404    type ControlHandle = SocketControlHandle;
15405
15406    fn control_handle(&self) -> &SocketControlHandle {
15407        &self.control_handle
15408    }
15409
15410    fn drop_without_shutdown(mut self) {
15411        // Safety: drops once, never accessed again due to mem::forget
15412        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15413        // Prevent Drop from running (which would shut down the channel)
15414        std::mem::forget(self);
15415    }
15416}
15417
15418impl SocketSetIpv6ReceiveTrafficClassResponder {
15419    /// Sends a response to the FIDL transaction.
15420    ///
15421    /// Sets the channel to shutdown if an error occurs.
15422    pub fn send(
15423        self,
15424        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15425    ) -> Result<(), fidl::Error> {
15426        let _result = self.send_raw(result);
15427        if _result.is_err() {
15428            self.control_handle.shutdown();
15429        }
15430        self.drop_without_shutdown();
15431        _result
15432    }
15433
15434    /// Similar to "send" but does not shutdown the channel if an error occurs.
15435    pub fn send_no_shutdown_on_err(
15436        self,
15437        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15438    ) -> Result<(), fidl::Error> {
15439        let _result = self.send_raw(result);
15440        self.drop_without_shutdown();
15441        _result
15442    }
15443
15444    fn send_raw(
15445        &self,
15446        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15447    ) -> Result<(), fidl::Error> {
15448        self.control_handle.inner.send::<fidl::encoding::ResultType<
15449            fidl::encoding::EmptyStruct,
15450            fidl_fuchsia_posix::Errno,
15451        >>(
15452            result,
15453            self.tx_id,
15454            0x58f07c8788d099a0,
15455            fidl::encoding::DynamicFlags::empty(),
15456        )
15457    }
15458}
15459
15460#[must_use = "FIDL methods require a response to be sent"]
15461#[derive(Debug)]
15462pub struct SocketGetIpv6ReceiveTrafficClassResponder {
15463    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15464    tx_id: u32,
15465}
15466
15467/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15468/// if the responder is dropped without sending a response, so that the client
15469/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15470impl std::ops::Drop for SocketGetIpv6ReceiveTrafficClassResponder {
15471    fn drop(&mut self) {
15472        self.control_handle.shutdown();
15473        // Safety: drops once, never accessed again
15474        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15475    }
15476}
15477
15478impl fidl::endpoints::Responder for SocketGetIpv6ReceiveTrafficClassResponder {
15479    type ControlHandle = SocketControlHandle;
15480
15481    fn control_handle(&self) -> &SocketControlHandle {
15482        &self.control_handle
15483    }
15484
15485    fn drop_without_shutdown(mut self) {
15486        // Safety: drops once, never accessed again due to mem::forget
15487        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15488        // Prevent Drop from running (which would shut down the channel)
15489        std::mem::forget(self);
15490    }
15491}
15492
15493impl SocketGetIpv6ReceiveTrafficClassResponder {
15494    /// Sends a response to the FIDL transaction.
15495    ///
15496    /// Sets the channel to shutdown if an error occurs.
15497    pub fn send(
15498        self,
15499        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15500    ) -> Result<(), fidl::Error> {
15501        let _result = self.send_raw(result);
15502        if _result.is_err() {
15503            self.control_handle.shutdown();
15504        }
15505        self.drop_without_shutdown();
15506        _result
15507    }
15508
15509    /// Similar to "send" but does not shutdown the channel if an error occurs.
15510    pub fn send_no_shutdown_on_err(
15511        self,
15512        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15513    ) -> Result<(), fidl::Error> {
15514        let _result = self.send_raw(result);
15515        self.drop_without_shutdown();
15516        _result
15517    }
15518
15519    fn send_raw(
15520        &self,
15521        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15522    ) -> Result<(), fidl::Error> {
15523        self.control_handle.inner.send::<fidl::encoding::ResultType<
15524            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceiveTrafficClassResponse,
15525            fidl_fuchsia_posix::Errno,
15526        >>(
15527            result.map(|value| (value,)),
15528            self.tx_id,
15529            0x2e334df1da553ffa,
15530            fidl::encoding::DynamicFlags::empty(),
15531        )
15532    }
15533}
15534
15535#[must_use = "FIDL methods require a response to be sent"]
15536#[derive(Debug)]
15537pub struct SocketSetIpv6TrafficClassResponder {
15538    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15539    tx_id: u32,
15540}
15541
15542/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15543/// if the responder is dropped without sending a response, so that the client
15544/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15545impl std::ops::Drop for SocketSetIpv6TrafficClassResponder {
15546    fn drop(&mut self) {
15547        self.control_handle.shutdown();
15548        // Safety: drops once, never accessed again
15549        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15550    }
15551}
15552
15553impl fidl::endpoints::Responder for SocketSetIpv6TrafficClassResponder {
15554    type ControlHandle = SocketControlHandle;
15555
15556    fn control_handle(&self) -> &SocketControlHandle {
15557        &self.control_handle
15558    }
15559
15560    fn drop_without_shutdown(mut self) {
15561        // Safety: drops once, never accessed again due to mem::forget
15562        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15563        // Prevent Drop from running (which would shut down the channel)
15564        std::mem::forget(self);
15565    }
15566}
15567
15568impl SocketSetIpv6TrafficClassResponder {
15569    /// Sends a response to the FIDL transaction.
15570    ///
15571    /// Sets the channel to shutdown if an error occurs.
15572    pub fn send(
15573        self,
15574        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15575    ) -> Result<(), fidl::Error> {
15576        let _result = self.send_raw(result);
15577        if _result.is_err() {
15578            self.control_handle.shutdown();
15579        }
15580        self.drop_without_shutdown();
15581        _result
15582    }
15583
15584    /// Similar to "send" but does not shutdown the channel if an error occurs.
15585    pub fn send_no_shutdown_on_err(
15586        self,
15587        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15588    ) -> Result<(), fidl::Error> {
15589        let _result = self.send_raw(result);
15590        self.drop_without_shutdown();
15591        _result
15592    }
15593
15594    fn send_raw(
15595        &self,
15596        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15597    ) -> Result<(), fidl::Error> {
15598        self.control_handle.inner.send::<fidl::encoding::ResultType<
15599            fidl::encoding::EmptyStruct,
15600            fidl_fuchsia_posix::Errno,
15601        >>(
15602            result,
15603            self.tx_id,
15604            0x6af077800c5a0b4f,
15605            fidl::encoding::DynamicFlags::empty(),
15606        )
15607    }
15608}
15609
15610#[must_use = "FIDL methods require a response to be sent"]
15611#[derive(Debug)]
15612pub struct SocketGetIpv6TrafficClassResponder {
15613    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15614    tx_id: u32,
15615}
15616
15617/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15618/// if the responder is dropped without sending a response, so that the client
15619/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15620impl std::ops::Drop for SocketGetIpv6TrafficClassResponder {
15621    fn drop(&mut self) {
15622        self.control_handle.shutdown();
15623        // Safety: drops once, never accessed again
15624        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15625    }
15626}
15627
15628impl fidl::endpoints::Responder for SocketGetIpv6TrafficClassResponder {
15629    type ControlHandle = SocketControlHandle;
15630
15631    fn control_handle(&self) -> &SocketControlHandle {
15632        &self.control_handle
15633    }
15634
15635    fn drop_without_shutdown(mut self) {
15636        // Safety: drops once, never accessed again due to mem::forget
15637        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15638        // Prevent Drop from running (which would shut down the channel)
15639        std::mem::forget(self);
15640    }
15641}
15642
15643impl SocketGetIpv6TrafficClassResponder {
15644    /// Sends a response to the FIDL transaction.
15645    ///
15646    /// Sets the channel to shutdown if an error occurs.
15647    pub fn send(
15648        self,
15649        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15650    ) -> Result<(), fidl::Error> {
15651        let _result = self.send_raw(result);
15652        if _result.is_err() {
15653            self.control_handle.shutdown();
15654        }
15655        self.drop_without_shutdown();
15656        _result
15657    }
15658
15659    /// Similar to "send" but does not shutdown the channel if an error occurs.
15660    pub fn send_no_shutdown_on_err(
15661        self,
15662        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15663    ) -> Result<(), fidl::Error> {
15664        let _result = self.send_raw(result);
15665        self.drop_without_shutdown();
15666        _result
15667    }
15668
15669    fn send_raw(
15670        &self,
15671        mut result: Result<u8, fidl_fuchsia_posix::Errno>,
15672    ) -> Result<(), fidl::Error> {
15673        self.control_handle.inner.send::<fidl::encoding::ResultType<
15674            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6TrafficClassResponse,
15675            fidl_fuchsia_posix::Errno,
15676        >>(
15677            result.map(|value| (value,)),
15678            self.tx_id,
15679            0x6baf6eed8fc2f04,
15680            fidl::encoding::DynamicFlags::empty(),
15681        )
15682    }
15683}
15684
15685#[must_use = "FIDL methods require a response to be sent"]
15686#[derive(Debug)]
15687pub struct SocketSetIpv6ReceivePacketInfoResponder {
15688    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15689    tx_id: u32,
15690}
15691
15692/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15693/// if the responder is dropped without sending a response, so that the client
15694/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15695impl std::ops::Drop for SocketSetIpv6ReceivePacketInfoResponder {
15696    fn drop(&mut self) {
15697        self.control_handle.shutdown();
15698        // Safety: drops once, never accessed again
15699        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15700    }
15701}
15702
15703impl fidl::endpoints::Responder for SocketSetIpv6ReceivePacketInfoResponder {
15704    type ControlHandle = SocketControlHandle;
15705
15706    fn control_handle(&self) -> &SocketControlHandle {
15707        &self.control_handle
15708    }
15709
15710    fn drop_without_shutdown(mut self) {
15711        // Safety: drops once, never accessed again due to mem::forget
15712        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15713        // Prevent Drop from running (which would shut down the channel)
15714        std::mem::forget(self);
15715    }
15716}
15717
15718impl SocketSetIpv6ReceivePacketInfoResponder {
15719    /// Sends a response to the FIDL transaction.
15720    ///
15721    /// Sets the channel to shutdown if an error occurs.
15722    pub fn send(
15723        self,
15724        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15725    ) -> Result<(), fidl::Error> {
15726        let _result = self.send_raw(result);
15727        if _result.is_err() {
15728            self.control_handle.shutdown();
15729        }
15730        self.drop_without_shutdown();
15731        _result
15732    }
15733
15734    /// Similar to "send" but does not shutdown the channel if an error occurs.
15735    pub fn send_no_shutdown_on_err(
15736        self,
15737        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15738    ) -> Result<(), fidl::Error> {
15739        let _result = self.send_raw(result);
15740        self.drop_without_shutdown();
15741        _result
15742    }
15743
15744    fn send_raw(
15745        &self,
15746        mut result: Result<(), fidl_fuchsia_posix::Errno>,
15747    ) -> Result<(), fidl::Error> {
15748        self.control_handle.inner.send::<fidl::encoding::ResultType<
15749            fidl::encoding::EmptyStruct,
15750            fidl_fuchsia_posix::Errno,
15751        >>(
15752            result,
15753            self.tx_id,
15754            0x19259775b1a92768,
15755            fidl::encoding::DynamicFlags::empty(),
15756        )
15757    }
15758}
15759
15760#[must_use = "FIDL methods require a response to be sent"]
15761#[derive(Debug)]
15762pub struct SocketGetIpv6ReceivePacketInfoResponder {
15763    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15764    tx_id: u32,
15765}
15766
15767/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15768/// if the responder is dropped without sending a response, so that the client
15769/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15770impl std::ops::Drop for SocketGetIpv6ReceivePacketInfoResponder {
15771    fn drop(&mut self) {
15772        self.control_handle.shutdown();
15773        // Safety: drops once, never accessed again
15774        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15775    }
15776}
15777
15778impl fidl::endpoints::Responder for SocketGetIpv6ReceivePacketInfoResponder {
15779    type ControlHandle = SocketControlHandle;
15780
15781    fn control_handle(&self) -> &SocketControlHandle {
15782        &self.control_handle
15783    }
15784
15785    fn drop_without_shutdown(mut self) {
15786        // Safety: drops once, never accessed again due to mem::forget
15787        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15788        // Prevent Drop from running (which would shut down the channel)
15789        std::mem::forget(self);
15790    }
15791}
15792
15793impl SocketGetIpv6ReceivePacketInfoResponder {
15794    /// Sends a response to the FIDL transaction.
15795    ///
15796    /// Sets the channel to shutdown if an error occurs.
15797    pub fn send(
15798        self,
15799        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15800    ) -> Result<(), fidl::Error> {
15801        let _result = self.send_raw(result);
15802        if _result.is_err() {
15803            self.control_handle.shutdown();
15804        }
15805        self.drop_without_shutdown();
15806        _result
15807    }
15808
15809    /// Similar to "send" but does not shutdown the channel if an error occurs.
15810    pub fn send_no_shutdown_on_err(
15811        self,
15812        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15813    ) -> Result<(), fidl::Error> {
15814        let _result = self.send_raw(result);
15815        self.drop_without_shutdown();
15816        _result
15817    }
15818
15819    fn send_raw(
15820        &self,
15821        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
15822    ) -> Result<(), fidl::Error> {
15823        self.control_handle.inner.send::<fidl::encoding::ResultType<
15824            fidl_fuchsia_posix_socket::BaseNetworkSocketGetIpv6ReceivePacketInfoResponse,
15825            fidl_fuchsia_posix::Errno,
15826        >>(
15827            result.map(|value| (value,)),
15828            self.tx_id,
15829            0x7acd4a2775baec75,
15830            fidl::encoding::DynamicFlags::empty(),
15831        )
15832    }
15833}
15834
15835#[must_use = "FIDL methods require a response to be sent"]
15836#[derive(Debug)]
15837pub struct SocketGetOriginalDestinationResponder {
15838    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15839    tx_id: u32,
15840}
15841
15842/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15843/// if the responder is dropped without sending a response, so that the client
15844/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15845impl std::ops::Drop for SocketGetOriginalDestinationResponder {
15846    fn drop(&mut self) {
15847        self.control_handle.shutdown();
15848        // Safety: drops once, never accessed again
15849        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15850    }
15851}
15852
15853impl fidl::endpoints::Responder for SocketGetOriginalDestinationResponder {
15854    type ControlHandle = SocketControlHandle;
15855
15856    fn control_handle(&self) -> &SocketControlHandle {
15857        &self.control_handle
15858    }
15859
15860    fn drop_without_shutdown(mut self) {
15861        // Safety: drops once, never accessed again due to mem::forget
15862        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15863        // Prevent Drop from running (which would shut down the channel)
15864        std::mem::forget(self);
15865    }
15866}
15867
15868impl SocketGetOriginalDestinationResponder {
15869    /// Sends a response to the FIDL transaction.
15870    ///
15871    /// Sets the channel to shutdown if an error occurs.
15872    pub fn send(
15873        self,
15874        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15875    ) -> Result<(), fidl::Error> {
15876        let _result = self.send_raw(result);
15877        if _result.is_err() {
15878            self.control_handle.shutdown();
15879        }
15880        self.drop_without_shutdown();
15881        _result
15882    }
15883
15884    /// Similar to "send" but does not shutdown the channel if an error occurs.
15885    pub fn send_no_shutdown_on_err(
15886        self,
15887        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15888    ) -> Result<(), fidl::Error> {
15889        let _result = self.send_raw(result);
15890        self.drop_without_shutdown();
15891        _result
15892    }
15893
15894    fn send_raw(
15895        &self,
15896        mut result: Result<&fidl_fuchsia_net::SocketAddress, fidl_fuchsia_posix::Errno>,
15897    ) -> Result<(), fidl::Error> {
15898        self.control_handle.inner.send::<fidl::encoding::ResultType<
15899            fidl_fuchsia_posix_socket::BaseNetworkSocketGetOriginalDestinationResponse,
15900            fidl_fuchsia_posix::Errno,
15901        >>(
15902            result.map(|value| (value,)),
15903            self.tx_id,
15904            0x38bf28f0dafdbac0,
15905            fidl::encoding::DynamicFlags::empty(),
15906        )
15907    }
15908}
15909
15910#[must_use = "FIDL methods require a response to be sent"]
15911#[derive(Debug)]
15912pub struct SocketDescribeResponder {
15913    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15914    tx_id: u32,
15915}
15916
15917/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15918/// if the responder is dropped without sending a response, so that the client
15919/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15920impl std::ops::Drop for SocketDescribeResponder {
15921    fn drop(&mut self) {
15922        self.control_handle.shutdown();
15923        // Safety: drops once, never accessed again
15924        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15925    }
15926}
15927
15928impl fidl::endpoints::Responder for SocketDescribeResponder {
15929    type ControlHandle = SocketControlHandle;
15930
15931    fn control_handle(&self) -> &SocketControlHandle {
15932        &self.control_handle
15933    }
15934
15935    fn drop_without_shutdown(mut self) {
15936        // Safety: drops once, never accessed again due to mem::forget
15937        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15938        // Prevent Drop from running (which would shut down the channel)
15939        std::mem::forget(self);
15940    }
15941}
15942
15943impl SocketDescribeResponder {
15944    /// Sends a response to the FIDL transaction.
15945    ///
15946    /// Sets the channel to shutdown if an error occurs.
15947    pub fn send(self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15948        let _result = self.send_raw(payload);
15949        if _result.is_err() {
15950            self.control_handle.shutdown();
15951        }
15952        self.drop_without_shutdown();
15953        _result
15954    }
15955
15956    /// Similar to "send" but does not shutdown the channel if an error occurs.
15957    pub fn send_no_shutdown_on_err(
15958        self,
15959        mut payload: SocketDescribeResponse,
15960    ) -> Result<(), fidl::Error> {
15961        let _result = self.send_raw(payload);
15962        self.drop_without_shutdown();
15963        _result
15964    }
15965
15966    fn send_raw(&self, mut payload: SocketDescribeResponse) -> Result<(), fidl::Error> {
15967        self.control_handle.inner.send::<SocketDescribeResponse>(
15968            &mut payload,
15969            self.tx_id,
15970            0x335706eccf54a135,
15971            fidl::encoding::DynamicFlags::empty(),
15972        )
15973    }
15974}
15975
15976#[must_use = "FIDL methods require a response to be sent"]
15977#[derive(Debug)]
15978pub struct SocketRecvMsgResponder {
15979    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
15980    tx_id: u32,
15981}
15982
15983/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
15984/// if the responder is dropped without sending a response, so that the client
15985/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
15986impl std::ops::Drop for SocketRecvMsgResponder {
15987    fn drop(&mut self) {
15988        self.control_handle.shutdown();
15989        // Safety: drops once, never accessed again
15990        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
15991    }
15992}
15993
15994impl fidl::endpoints::Responder for SocketRecvMsgResponder {
15995    type ControlHandle = SocketControlHandle;
15996
15997    fn control_handle(&self) -> &SocketControlHandle {
15998        &self.control_handle
15999    }
16000
16001    fn drop_without_shutdown(mut self) {
16002        // Safety: drops once, never accessed again due to mem::forget
16003        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16004        // Prevent Drop from running (which would shut down the channel)
16005        std::mem::forget(self);
16006    }
16007}
16008
16009impl SocketRecvMsgResponder {
16010    /// Sends a response to the FIDL transaction.
16011    ///
16012    /// Sets the channel to shutdown if an error occurs.
16013    pub fn send(
16014        self,
16015        mut result: Result<
16016            (
16017                Option<&fidl_fuchsia_net::SocketAddress>,
16018                &[u8],
16019                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16020                u32,
16021            ),
16022            fidl_fuchsia_posix::Errno,
16023        >,
16024    ) -> Result<(), fidl::Error> {
16025        let _result = self.send_raw(result);
16026        if _result.is_err() {
16027            self.control_handle.shutdown();
16028        }
16029        self.drop_without_shutdown();
16030        _result
16031    }
16032
16033    /// Similar to "send" but does not shutdown the channel if an error occurs.
16034    pub fn send_no_shutdown_on_err(
16035        self,
16036        mut result: Result<
16037            (
16038                Option<&fidl_fuchsia_net::SocketAddress>,
16039                &[u8],
16040                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16041                u32,
16042            ),
16043            fidl_fuchsia_posix::Errno,
16044        >,
16045    ) -> Result<(), fidl::Error> {
16046        let _result = self.send_raw(result);
16047        self.drop_without_shutdown();
16048        _result
16049    }
16050
16051    fn send_raw(
16052        &self,
16053        mut result: Result<
16054            (
16055                Option<&fidl_fuchsia_net::SocketAddress>,
16056                &[u8],
16057                &fidl_fuchsia_posix_socket::NetworkSocketRecvControlData,
16058                u32,
16059            ),
16060            fidl_fuchsia_posix::Errno,
16061        >,
16062    ) -> Result<(), fidl::Error> {
16063        self.control_handle.inner.send::<fidl::encoding::ResultType<
16064            SocketRecvMsgResponse,
16065            fidl_fuchsia_posix::Errno,
16066        >>(
16067            result,
16068            self.tx_id,
16069            0x1dfb695351d3aa1d,
16070            fidl::encoding::DynamicFlags::empty(),
16071        )
16072    }
16073}
16074
16075#[must_use = "FIDL methods require a response to be sent"]
16076#[derive(Debug)]
16077pub struct SocketSendMsgResponder {
16078    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16079    tx_id: u32,
16080}
16081
16082/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16083/// if the responder is dropped without sending a response, so that the client
16084/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16085impl std::ops::Drop for SocketSendMsgResponder {
16086    fn drop(&mut self) {
16087        self.control_handle.shutdown();
16088        // Safety: drops once, never accessed again
16089        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16090    }
16091}
16092
16093impl fidl::endpoints::Responder for SocketSendMsgResponder {
16094    type ControlHandle = SocketControlHandle;
16095
16096    fn control_handle(&self) -> &SocketControlHandle {
16097        &self.control_handle
16098    }
16099
16100    fn drop_without_shutdown(mut self) {
16101        // Safety: drops once, never accessed again due to mem::forget
16102        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16103        // Prevent Drop from running (which would shut down the channel)
16104        std::mem::forget(self);
16105    }
16106}
16107
16108impl SocketSendMsgResponder {
16109    /// Sends a response to the FIDL transaction.
16110    ///
16111    /// Sets the channel to shutdown if an error occurs.
16112    pub fn send(
16113        self,
16114        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16115    ) -> Result<(), fidl::Error> {
16116        let _result = self.send_raw(result);
16117        if _result.is_err() {
16118            self.control_handle.shutdown();
16119        }
16120        self.drop_without_shutdown();
16121        _result
16122    }
16123
16124    /// Similar to "send" but does not shutdown the channel if an error occurs.
16125    pub fn send_no_shutdown_on_err(
16126        self,
16127        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16128    ) -> Result<(), fidl::Error> {
16129        let _result = self.send_raw(result);
16130        self.drop_without_shutdown();
16131        _result
16132    }
16133
16134    fn send_raw(
16135        &self,
16136        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16137    ) -> Result<(), fidl::Error> {
16138        self.control_handle.inner.send::<fidl::encoding::ResultType<
16139            fidl::encoding::EmptyStruct,
16140            fidl_fuchsia_posix::Errno,
16141        >>(
16142            result,
16143            self.tx_id,
16144            0x2cf1eac9a7fc8958,
16145            fidl::encoding::DynamicFlags::empty(),
16146        )
16147    }
16148}
16149
16150#[must_use = "FIDL methods require a response to be sent"]
16151#[derive(Debug)]
16152pub struct SocketGetInfoResponder {
16153    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16154    tx_id: u32,
16155}
16156
16157/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16158/// if the responder is dropped without sending a response, so that the client
16159/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16160impl std::ops::Drop for SocketGetInfoResponder {
16161    fn drop(&mut self) {
16162        self.control_handle.shutdown();
16163        // Safety: drops once, never accessed again
16164        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16165    }
16166}
16167
16168impl fidl::endpoints::Responder for SocketGetInfoResponder {
16169    type ControlHandle = SocketControlHandle;
16170
16171    fn control_handle(&self) -> &SocketControlHandle {
16172        &self.control_handle
16173    }
16174
16175    fn drop_without_shutdown(mut self) {
16176        // Safety: drops once, never accessed again due to mem::forget
16177        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16178        // Prevent Drop from running (which would shut down the channel)
16179        std::mem::forget(self);
16180    }
16181}
16182
16183impl SocketGetInfoResponder {
16184    /// Sends a response to the FIDL transaction.
16185    ///
16186    /// Sets the channel to shutdown if an error occurs.
16187    pub fn send(
16188        self,
16189        mut result: Result<
16190            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16191            fidl_fuchsia_posix::Errno,
16192        >,
16193    ) -> Result<(), fidl::Error> {
16194        let _result = self.send_raw(result);
16195        if _result.is_err() {
16196            self.control_handle.shutdown();
16197        }
16198        self.drop_without_shutdown();
16199        _result
16200    }
16201
16202    /// Similar to "send" but does not shutdown the channel if an error occurs.
16203    pub fn send_no_shutdown_on_err(
16204        self,
16205        mut result: Result<
16206            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16207            fidl_fuchsia_posix::Errno,
16208        >,
16209    ) -> Result<(), fidl::Error> {
16210        let _result = self.send_raw(result);
16211        self.drop_without_shutdown();
16212        _result
16213    }
16214
16215    fn send_raw(
16216        &self,
16217        mut result: Result<
16218            (fidl_fuchsia_posix_socket::Domain, &ProtocolAssociation),
16219            fidl_fuchsia_posix::Errno,
16220        >,
16221    ) -> Result<(), fidl::Error> {
16222        self.control_handle.inner.send::<fidl::encoding::ResultType<
16223            SocketGetInfoResponse,
16224            fidl_fuchsia_posix::Errno,
16225        >>(
16226            result,
16227            self.tx_id,
16228            0x39676f75aec339ba,
16229            fidl::encoding::DynamicFlags::empty(),
16230        )
16231    }
16232}
16233
16234#[must_use = "FIDL methods require a response to be sent"]
16235#[derive(Debug)]
16236pub struct SocketSetIpHeaderIncludedResponder {
16237    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16238    tx_id: u32,
16239}
16240
16241/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16242/// if the responder is dropped without sending a response, so that the client
16243/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16244impl std::ops::Drop for SocketSetIpHeaderIncludedResponder {
16245    fn drop(&mut self) {
16246        self.control_handle.shutdown();
16247        // Safety: drops once, never accessed again
16248        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16249    }
16250}
16251
16252impl fidl::endpoints::Responder for SocketSetIpHeaderIncludedResponder {
16253    type ControlHandle = SocketControlHandle;
16254
16255    fn control_handle(&self) -> &SocketControlHandle {
16256        &self.control_handle
16257    }
16258
16259    fn drop_without_shutdown(mut self) {
16260        // Safety: drops once, never accessed again due to mem::forget
16261        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16262        // Prevent Drop from running (which would shut down the channel)
16263        std::mem::forget(self);
16264    }
16265}
16266
16267impl SocketSetIpHeaderIncludedResponder {
16268    /// Sends a response to the FIDL transaction.
16269    ///
16270    /// Sets the channel to shutdown if an error occurs.
16271    pub fn send(
16272        self,
16273        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16274    ) -> Result<(), fidl::Error> {
16275        let _result = self.send_raw(result);
16276        if _result.is_err() {
16277            self.control_handle.shutdown();
16278        }
16279        self.drop_without_shutdown();
16280        _result
16281    }
16282
16283    /// Similar to "send" but does not shutdown the channel if an error occurs.
16284    pub fn send_no_shutdown_on_err(
16285        self,
16286        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16287    ) -> Result<(), fidl::Error> {
16288        let _result = self.send_raw(result);
16289        self.drop_without_shutdown();
16290        _result
16291    }
16292
16293    fn send_raw(
16294        &self,
16295        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16296    ) -> Result<(), fidl::Error> {
16297        self.control_handle.inner.send::<fidl::encoding::ResultType<
16298            fidl::encoding::EmptyStruct,
16299            fidl_fuchsia_posix::Errno,
16300        >>(
16301            result,
16302            self.tx_id,
16303            0x5d06a606d95e8f3,
16304            fidl::encoding::DynamicFlags::empty(),
16305        )
16306    }
16307}
16308
16309#[must_use = "FIDL methods require a response to be sent"]
16310#[derive(Debug)]
16311pub struct SocketGetIpHeaderIncludedResponder {
16312    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16313    tx_id: u32,
16314}
16315
16316/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16317/// if the responder is dropped without sending a response, so that the client
16318/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16319impl std::ops::Drop for SocketGetIpHeaderIncludedResponder {
16320    fn drop(&mut self) {
16321        self.control_handle.shutdown();
16322        // Safety: drops once, never accessed again
16323        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16324    }
16325}
16326
16327impl fidl::endpoints::Responder for SocketGetIpHeaderIncludedResponder {
16328    type ControlHandle = SocketControlHandle;
16329
16330    fn control_handle(&self) -> &SocketControlHandle {
16331        &self.control_handle
16332    }
16333
16334    fn drop_without_shutdown(mut self) {
16335        // Safety: drops once, never accessed again due to mem::forget
16336        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16337        // Prevent Drop from running (which would shut down the channel)
16338        std::mem::forget(self);
16339    }
16340}
16341
16342impl SocketGetIpHeaderIncludedResponder {
16343    /// Sends a response to the FIDL transaction.
16344    ///
16345    /// Sets the channel to shutdown if an error occurs.
16346    pub fn send(
16347        self,
16348        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16349    ) -> Result<(), fidl::Error> {
16350        let _result = self.send_raw(result);
16351        if _result.is_err() {
16352            self.control_handle.shutdown();
16353        }
16354        self.drop_without_shutdown();
16355        _result
16356    }
16357
16358    /// Similar to "send" but does not shutdown the channel if an error occurs.
16359    pub fn send_no_shutdown_on_err(
16360        self,
16361        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16362    ) -> Result<(), fidl::Error> {
16363        let _result = self.send_raw(result);
16364        self.drop_without_shutdown();
16365        _result
16366    }
16367
16368    fn send_raw(
16369        &self,
16370        mut result: Result<bool, fidl_fuchsia_posix::Errno>,
16371    ) -> Result<(), fidl::Error> {
16372        self.control_handle.inner.send::<fidl::encoding::ResultType<
16373            SocketGetIpHeaderIncludedResponse,
16374            fidl_fuchsia_posix::Errno,
16375        >>(
16376            result.map(|value| (value,)),
16377            self.tx_id,
16378            0x76125ad1f4d175f6,
16379            fidl::encoding::DynamicFlags::empty(),
16380        )
16381    }
16382}
16383
16384#[must_use = "FIDL methods require a response to be sent"]
16385#[derive(Debug)]
16386pub struct SocketSetIcmpv6FilterResponder {
16387    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16388    tx_id: u32,
16389}
16390
16391/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16392/// if the responder is dropped without sending a response, so that the client
16393/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16394impl std::ops::Drop for SocketSetIcmpv6FilterResponder {
16395    fn drop(&mut self) {
16396        self.control_handle.shutdown();
16397        // Safety: drops once, never accessed again
16398        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16399    }
16400}
16401
16402impl fidl::endpoints::Responder for SocketSetIcmpv6FilterResponder {
16403    type ControlHandle = SocketControlHandle;
16404
16405    fn control_handle(&self) -> &SocketControlHandle {
16406        &self.control_handle
16407    }
16408
16409    fn drop_without_shutdown(mut self) {
16410        // Safety: drops once, never accessed again due to mem::forget
16411        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16412        // Prevent Drop from running (which would shut down the channel)
16413        std::mem::forget(self);
16414    }
16415}
16416
16417impl SocketSetIcmpv6FilterResponder {
16418    /// Sends a response to the FIDL transaction.
16419    ///
16420    /// Sets the channel to shutdown if an error occurs.
16421    pub fn send(
16422        self,
16423        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16424    ) -> Result<(), fidl::Error> {
16425        let _result = self.send_raw(result);
16426        if _result.is_err() {
16427            self.control_handle.shutdown();
16428        }
16429        self.drop_without_shutdown();
16430        _result
16431    }
16432
16433    /// Similar to "send" but does not shutdown the channel if an error occurs.
16434    pub fn send_no_shutdown_on_err(
16435        self,
16436        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16437    ) -> Result<(), fidl::Error> {
16438        let _result = self.send_raw(result);
16439        self.drop_without_shutdown();
16440        _result
16441    }
16442
16443    fn send_raw(
16444        &self,
16445        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16446    ) -> Result<(), fidl::Error> {
16447        self.control_handle.inner.send::<fidl::encoding::ResultType<
16448            fidl::encoding::EmptyStruct,
16449            fidl_fuchsia_posix::Errno,
16450        >>(
16451            result,
16452            self.tx_id,
16453            0x4ebea92a43ae68a9,
16454            fidl::encoding::DynamicFlags::empty(),
16455        )
16456    }
16457}
16458
16459#[must_use = "FIDL methods require a response to be sent"]
16460#[derive(Debug)]
16461pub struct SocketGetIcmpv6FilterResponder {
16462    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16463    tx_id: u32,
16464}
16465
16466/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16467/// if the responder is dropped without sending a response, so that the client
16468/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16469impl std::ops::Drop for SocketGetIcmpv6FilterResponder {
16470    fn drop(&mut self) {
16471        self.control_handle.shutdown();
16472        // Safety: drops once, never accessed again
16473        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16474    }
16475}
16476
16477impl fidl::endpoints::Responder for SocketGetIcmpv6FilterResponder {
16478    type ControlHandle = SocketControlHandle;
16479
16480    fn control_handle(&self) -> &SocketControlHandle {
16481        &self.control_handle
16482    }
16483
16484    fn drop_without_shutdown(mut self) {
16485        // Safety: drops once, never accessed again due to mem::forget
16486        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16487        // Prevent Drop from running (which would shut down the channel)
16488        std::mem::forget(self);
16489    }
16490}
16491
16492impl SocketGetIcmpv6FilterResponder {
16493    /// Sends a response to the FIDL transaction.
16494    ///
16495    /// Sets the channel to shutdown if an error occurs.
16496    pub fn send(
16497        self,
16498        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16499    ) -> Result<(), fidl::Error> {
16500        let _result = self.send_raw(result);
16501        if _result.is_err() {
16502            self.control_handle.shutdown();
16503        }
16504        self.drop_without_shutdown();
16505        _result
16506    }
16507
16508    /// Similar to "send" but does not shutdown the channel if an error occurs.
16509    pub fn send_no_shutdown_on_err(
16510        self,
16511        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16512    ) -> Result<(), fidl::Error> {
16513        let _result = self.send_raw(result);
16514        self.drop_without_shutdown();
16515        _result
16516    }
16517
16518    fn send_raw(
16519        &self,
16520        mut result: Result<&Icmpv6Filter, fidl_fuchsia_posix::Errno>,
16521    ) -> Result<(), fidl::Error> {
16522        self.control_handle.inner.send::<fidl::encoding::ResultType<
16523            SocketGetIcmpv6FilterResponse,
16524            fidl_fuchsia_posix::Errno,
16525        >>(
16526            result.map(|filter| (filter,)),
16527            self.tx_id,
16528            0x43bd4f3bc0970ace,
16529            fidl::encoding::DynamicFlags::empty(),
16530        )
16531    }
16532}
16533
16534#[must_use = "FIDL methods require a response to be sent"]
16535#[derive(Debug)]
16536pub struct SocketSetIpv6ChecksumResponder {
16537    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16538    tx_id: u32,
16539}
16540
16541/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16542/// if the responder is dropped without sending a response, so that the client
16543/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16544impl std::ops::Drop for SocketSetIpv6ChecksumResponder {
16545    fn drop(&mut self) {
16546        self.control_handle.shutdown();
16547        // Safety: drops once, never accessed again
16548        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16549    }
16550}
16551
16552impl fidl::endpoints::Responder for SocketSetIpv6ChecksumResponder {
16553    type ControlHandle = SocketControlHandle;
16554
16555    fn control_handle(&self) -> &SocketControlHandle {
16556        &self.control_handle
16557    }
16558
16559    fn drop_without_shutdown(mut self) {
16560        // Safety: drops once, never accessed again due to mem::forget
16561        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16562        // Prevent Drop from running (which would shut down the channel)
16563        std::mem::forget(self);
16564    }
16565}
16566
16567impl SocketSetIpv6ChecksumResponder {
16568    /// Sends a response to the FIDL transaction.
16569    ///
16570    /// Sets the channel to shutdown if an error occurs.
16571    pub fn send(
16572        self,
16573        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16574    ) -> Result<(), fidl::Error> {
16575        let _result = self.send_raw(result);
16576        if _result.is_err() {
16577            self.control_handle.shutdown();
16578        }
16579        self.drop_without_shutdown();
16580        _result
16581    }
16582
16583    /// Similar to "send" but does not shutdown the channel if an error occurs.
16584    pub fn send_no_shutdown_on_err(
16585        self,
16586        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16587    ) -> Result<(), fidl::Error> {
16588        let _result = self.send_raw(result);
16589        self.drop_without_shutdown();
16590        _result
16591    }
16592
16593    fn send_raw(
16594        &self,
16595        mut result: Result<(), fidl_fuchsia_posix::Errno>,
16596    ) -> Result<(), fidl::Error> {
16597        self.control_handle.inner.send::<fidl::encoding::ResultType<
16598            fidl::encoding::EmptyStruct,
16599            fidl_fuchsia_posix::Errno,
16600        >>(
16601            result,
16602            self.tx_id,
16603            0x18b7809577199cb4,
16604            fidl::encoding::DynamicFlags::empty(),
16605        )
16606    }
16607}
16608
16609#[must_use = "FIDL methods require a response to be sent"]
16610#[derive(Debug)]
16611pub struct SocketGetIpv6ChecksumResponder {
16612    control_handle: std::mem::ManuallyDrop<SocketControlHandle>,
16613    tx_id: u32,
16614}
16615
16616/// Set the the channel to be shutdown (see [`SocketControlHandle::shutdown`])
16617/// if the responder is dropped without sending a response, so that the client
16618/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
16619impl std::ops::Drop for SocketGetIpv6ChecksumResponder {
16620    fn drop(&mut self) {
16621        self.control_handle.shutdown();
16622        // Safety: drops once, never accessed again
16623        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16624    }
16625}
16626
16627impl fidl::endpoints::Responder for SocketGetIpv6ChecksumResponder {
16628    type ControlHandle = SocketControlHandle;
16629
16630    fn control_handle(&self) -> &SocketControlHandle {
16631        &self.control_handle
16632    }
16633
16634    fn drop_without_shutdown(mut self) {
16635        // Safety: drops once, never accessed again due to mem::forget
16636        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
16637        // Prevent Drop from running (which would shut down the channel)
16638        std::mem::forget(self);
16639    }
16640}
16641
16642impl SocketGetIpv6ChecksumResponder {
16643    /// Sends a response to the FIDL transaction.
16644    ///
16645    /// Sets the channel to shutdown if an error occurs.
16646    pub fn send(
16647        self,
16648        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16649    ) -> Result<(), fidl::Error> {
16650        let _result = self.send_raw(result);
16651        if _result.is_err() {
16652            self.control_handle.shutdown();
16653        }
16654        self.drop_without_shutdown();
16655        _result
16656    }
16657
16658    /// Similar to "send" but does not shutdown the channel if an error occurs.
16659    pub fn send_no_shutdown_on_err(
16660        self,
16661        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16662    ) -> Result<(), fidl::Error> {
16663        let _result = self.send_raw(result);
16664        self.drop_without_shutdown();
16665        _result
16666    }
16667
16668    fn send_raw(
16669        &self,
16670        mut result: Result<&Ipv6ChecksumConfiguration, fidl_fuchsia_posix::Errno>,
16671    ) -> Result<(), fidl::Error> {
16672        self.control_handle.inner.send::<fidl::encoding::ResultType<
16673            SocketGetIpv6ChecksumResponse,
16674            fidl_fuchsia_posix::Errno,
16675        >>(
16676            result.map(|config| (config,)),
16677            self.tx_id,
16678            0x1847bf5b2d263dd,
16679            fidl::encoding::DynamicFlags::empty(),
16680        )
16681    }
16682}
16683
16684mod internal {
16685    use super::*;
16686
16687    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsRequest {
16688        type Borrowed<'a> = &'a mut Self;
16689        fn take_or_borrow<'a>(
16690            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16691        ) -> Self::Borrowed<'a> {
16692            value
16693        }
16694    }
16695
16696    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsRequest {
16697        type Owned = Self;
16698
16699        #[inline(always)]
16700        fn inline_align(_context: fidl::encoding::Context) -> usize {
16701            8
16702        }
16703
16704        #[inline(always)]
16705        fn inline_size(_context: fidl::encoding::Context) -> usize {
16706            40
16707        }
16708    }
16709
16710    unsafe impl
16711        fidl::encoding::Encode<
16712            ProviderSocketWithOptionsRequest,
16713            fidl::encoding::DefaultFuchsiaResourceDialect,
16714        > for &mut ProviderSocketWithOptionsRequest
16715    {
16716        #[inline]
16717        unsafe fn encode(
16718            self,
16719            encoder: &mut fidl::encoding::Encoder<
16720                '_,
16721                fidl::encoding::DefaultFuchsiaResourceDialect,
16722            >,
16723            offset: usize,
16724            _depth: fidl::encoding::Depth,
16725        ) -> fidl::Result<()> {
16726            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16727            // Delegate to tuple encoding.
16728            fidl::encoding::Encode::<ProviderSocketWithOptionsRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16729                (
16730                    <fidl_fuchsia_posix_socket::Domain as fidl::encoding::ValueTypeMarker>::borrow(&self.domain),
16731                    <ProtocolAssociation as fidl::encoding::ValueTypeMarker>::borrow(&self.proto),
16732                    <fidl_fuchsia_posix_socket::SocketCreationOptions as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.opts),
16733                ),
16734                encoder, offset, _depth
16735            )
16736        }
16737    }
16738    unsafe impl<
16739        T0: fidl::encoding::Encode<
16740                fidl_fuchsia_posix_socket::Domain,
16741                fidl::encoding::DefaultFuchsiaResourceDialect,
16742            >,
16743        T1: fidl::encoding::Encode<ProtocolAssociation, fidl::encoding::DefaultFuchsiaResourceDialect>,
16744        T2: fidl::encoding::Encode<
16745                fidl_fuchsia_posix_socket::SocketCreationOptions,
16746                fidl::encoding::DefaultFuchsiaResourceDialect,
16747            >,
16748    >
16749        fidl::encoding::Encode<
16750            ProviderSocketWithOptionsRequest,
16751            fidl::encoding::DefaultFuchsiaResourceDialect,
16752        > for (T0, T1, T2)
16753    {
16754        #[inline]
16755        unsafe fn encode(
16756            self,
16757            encoder: &mut fidl::encoding::Encoder<
16758                '_,
16759                fidl::encoding::DefaultFuchsiaResourceDialect,
16760            >,
16761            offset: usize,
16762            depth: fidl::encoding::Depth,
16763        ) -> fidl::Result<()> {
16764            encoder.debug_check_bounds::<ProviderSocketWithOptionsRequest>(offset);
16765            // Zero out padding regions. There's no need to apply masks
16766            // because the unmasked parts will be overwritten by fields.
16767            unsafe {
16768                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
16769                (ptr as *mut u64).write_unaligned(0);
16770            }
16771            // Write the fields.
16772            self.0.encode(encoder, offset + 0, depth)?;
16773            self.1.encode(encoder, offset + 8, depth)?;
16774            self.2.encode(encoder, offset + 24, depth)?;
16775            Ok(())
16776        }
16777    }
16778
16779    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16780        for ProviderSocketWithOptionsRequest
16781    {
16782        #[inline(always)]
16783        fn new_empty() -> Self {
16784            Self {
16785                domain: fidl::new_empty!(
16786                    fidl_fuchsia_posix_socket::Domain,
16787                    fidl::encoding::DefaultFuchsiaResourceDialect
16788                ),
16789                proto: fidl::new_empty!(
16790                    ProtocolAssociation,
16791                    fidl::encoding::DefaultFuchsiaResourceDialect
16792                ),
16793                opts: fidl::new_empty!(
16794                    fidl_fuchsia_posix_socket::SocketCreationOptions,
16795                    fidl::encoding::DefaultFuchsiaResourceDialect
16796                ),
16797            }
16798        }
16799
16800        #[inline]
16801        unsafe fn decode(
16802            &mut self,
16803            decoder: &mut fidl::encoding::Decoder<
16804                '_,
16805                fidl::encoding::DefaultFuchsiaResourceDialect,
16806            >,
16807            offset: usize,
16808            _depth: fidl::encoding::Depth,
16809        ) -> fidl::Result<()> {
16810            decoder.debug_check_bounds::<Self>(offset);
16811            // Verify that padding bytes are zero.
16812            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
16813            let padval = unsafe { (ptr as *const u64).read_unaligned() };
16814            let mask = 0xffffffffffff0000u64;
16815            let maskedval = padval & mask;
16816            if maskedval != 0 {
16817                return Err(fidl::Error::NonZeroPadding {
16818                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
16819                });
16820            }
16821            fidl::decode!(
16822                fidl_fuchsia_posix_socket::Domain,
16823                fidl::encoding::DefaultFuchsiaResourceDialect,
16824                &mut self.domain,
16825                decoder,
16826                offset + 0,
16827                _depth
16828            )?;
16829            fidl::decode!(
16830                ProtocolAssociation,
16831                fidl::encoding::DefaultFuchsiaResourceDialect,
16832                &mut self.proto,
16833                decoder,
16834                offset + 8,
16835                _depth
16836            )?;
16837            fidl::decode!(
16838                fidl_fuchsia_posix_socket::SocketCreationOptions,
16839                fidl::encoding::DefaultFuchsiaResourceDialect,
16840                &mut self.opts,
16841                decoder,
16842                offset + 24,
16843                _depth
16844            )?;
16845            Ok(())
16846        }
16847    }
16848
16849    impl fidl::encoding::ResourceTypeMarker for ProviderSocketWithOptionsResponse {
16850        type Borrowed<'a> = &'a mut Self;
16851        fn take_or_borrow<'a>(
16852            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16853        ) -> Self::Borrowed<'a> {
16854            value
16855        }
16856    }
16857
16858    unsafe impl fidl::encoding::TypeMarker for ProviderSocketWithOptionsResponse {
16859        type Owned = Self;
16860
16861        #[inline(always)]
16862        fn inline_align(_context: fidl::encoding::Context) -> usize {
16863            4
16864        }
16865
16866        #[inline(always)]
16867        fn inline_size(_context: fidl::encoding::Context) -> usize {
16868            4
16869        }
16870    }
16871
16872    unsafe impl
16873        fidl::encoding::Encode<
16874            ProviderSocketWithOptionsResponse,
16875            fidl::encoding::DefaultFuchsiaResourceDialect,
16876        > for &mut ProviderSocketWithOptionsResponse
16877    {
16878        #[inline]
16879        unsafe fn encode(
16880            self,
16881            encoder: &mut fidl::encoding::Encoder<
16882                '_,
16883                fidl::encoding::DefaultFuchsiaResourceDialect,
16884            >,
16885            offset: usize,
16886            _depth: fidl::encoding::Depth,
16887        ) -> fidl::Result<()> {
16888            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16889            // Delegate to tuple encoding.
16890            fidl::encoding::Encode::<ProviderSocketWithOptionsResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
16891                (
16892                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
16893                ),
16894                encoder, offset, _depth
16895            )
16896        }
16897    }
16898    unsafe impl<
16899        T0: fidl::encoding::Encode<
16900                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16901                fidl::encoding::DefaultFuchsiaResourceDialect,
16902            >,
16903    >
16904        fidl::encoding::Encode<
16905            ProviderSocketWithOptionsResponse,
16906            fidl::encoding::DefaultFuchsiaResourceDialect,
16907        > for (T0,)
16908    {
16909        #[inline]
16910        unsafe fn encode(
16911            self,
16912            encoder: &mut fidl::encoding::Encoder<
16913                '_,
16914                fidl::encoding::DefaultFuchsiaResourceDialect,
16915            >,
16916            offset: usize,
16917            depth: fidl::encoding::Depth,
16918        ) -> fidl::Result<()> {
16919            encoder.debug_check_bounds::<ProviderSocketWithOptionsResponse>(offset);
16920            // Zero out padding regions. There's no need to apply masks
16921            // because the unmasked parts will be overwritten by fields.
16922            // Write the fields.
16923            self.0.encode(encoder, offset + 0, depth)?;
16924            Ok(())
16925        }
16926    }
16927
16928    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
16929        for ProviderSocketWithOptionsResponse
16930    {
16931        #[inline(always)]
16932        fn new_empty() -> Self {
16933            Self {
16934                s: fidl::new_empty!(
16935                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16936                    fidl::encoding::DefaultFuchsiaResourceDialect
16937                ),
16938            }
16939        }
16940
16941        #[inline]
16942        unsafe fn decode(
16943            &mut self,
16944            decoder: &mut fidl::encoding::Decoder<
16945                '_,
16946                fidl::encoding::DefaultFuchsiaResourceDialect,
16947            >,
16948            offset: usize,
16949            _depth: fidl::encoding::Depth,
16950        ) -> fidl::Result<()> {
16951            decoder.debug_check_bounds::<Self>(offset);
16952            // Verify that padding bytes are zero.
16953            fidl::decode!(
16954                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
16955                fidl::encoding::DefaultFuchsiaResourceDialect,
16956                &mut self.s,
16957                decoder,
16958                offset + 0,
16959                _depth
16960            )?;
16961            Ok(())
16962        }
16963    }
16964
16965    impl fidl::encoding::ResourceTypeMarker for ProviderSocketResponse {
16966        type Borrowed<'a> = &'a mut Self;
16967        fn take_or_borrow<'a>(
16968            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
16969        ) -> Self::Borrowed<'a> {
16970            value
16971        }
16972    }
16973
16974    unsafe impl fidl::encoding::TypeMarker for ProviderSocketResponse {
16975        type Owned = Self;
16976
16977        #[inline(always)]
16978        fn inline_align(_context: fidl::encoding::Context) -> usize {
16979            4
16980        }
16981
16982        #[inline(always)]
16983        fn inline_size(_context: fidl::encoding::Context) -> usize {
16984            4
16985        }
16986    }
16987
16988    unsafe impl
16989        fidl::encoding::Encode<
16990            ProviderSocketResponse,
16991            fidl::encoding::DefaultFuchsiaResourceDialect,
16992        > for &mut ProviderSocketResponse
16993    {
16994        #[inline]
16995        unsafe fn encode(
16996            self,
16997            encoder: &mut fidl::encoding::Encoder<
16998                '_,
16999                fidl::encoding::DefaultFuchsiaResourceDialect,
17000            >,
17001            offset: usize,
17002            _depth: fidl::encoding::Depth,
17003        ) -> fidl::Result<()> {
17004            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17005            // Delegate to tuple encoding.
17006            fidl::encoding::Encode::<ProviderSocketResponse, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
17007                (
17008                    <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.s),
17009                ),
17010                encoder, offset, _depth
17011            )
17012        }
17013    }
17014    unsafe impl<
17015        T0: fidl::encoding::Encode<
17016                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17017                fidl::encoding::DefaultFuchsiaResourceDialect,
17018            >,
17019    >
17020        fidl::encoding::Encode<
17021            ProviderSocketResponse,
17022            fidl::encoding::DefaultFuchsiaResourceDialect,
17023        > for (T0,)
17024    {
17025        #[inline]
17026        unsafe fn encode(
17027            self,
17028            encoder: &mut fidl::encoding::Encoder<
17029                '_,
17030                fidl::encoding::DefaultFuchsiaResourceDialect,
17031            >,
17032            offset: usize,
17033            depth: fidl::encoding::Depth,
17034        ) -> fidl::Result<()> {
17035            encoder.debug_check_bounds::<ProviderSocketResponse>(offset);
17036            // Zero out padding regions. There's no need to apply masks
17037            // because the unmasked parts will be overwritten by fields.
17038            // Write the fields.
17039            self.0.encode(encoder, offset + 0, depth)?;
17040            Ok(())
17041        }
17042    }
17043
17044    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17045        for ProviderSocketResponse
17046    {
17047        #[inline(always)]
17048        fn new_empty() -> Self {
17049            Self {
17050                s: fidl::new_empty!(
17051                    fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17052                    fidl::encoding::DefaultFuchsiaResourceDialect
17053                ),
17054            }
17055        }
17056
17057        #[inline]
17058        unsafe fn decode(
17059            &mut self,
17060            decoder: &mut fidl::encoding::Decoder<
17061                '_,
17062                fidl::encoding::DefaultFuchsiaResourceDialect,
17063            >,
17064            offset: usize,
17065            _depth: fidl::encoding::Depth,
17066        ) -> fidl::Result<()> {
17067            decoder.debug_check_bounds::<Self>(offset);
17068            // Verify that padding bytes are zero.
17069            fidl::decode!(
17070                fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<SocketMarker>>,
17071                fidl::encoding::DefaultFuchsiaResourceDialect,
17072                &mut self.s,
17073                decoder,
17074                offset + 0,
17075                _depth
17076            )?;
17077            Ok(())
17078        }
17079    }
17080
17081    impl SocketDescribeResponse {
17082        #[inline(always)]
17083        fn max_ordinal_present(&self) -> u64 {
17084            if let Some(_) = self.event {
17085                return 1;
17086            }
17087            0
17088        }
17089    }
17090
17091    impl fidl::encoding::ResourceTypeMarker for SocketDescribeResponse {
17092        type Borrowed<'a> = &'a mut Self;
17093        fn take_or_borrow<'a>(
17094            value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
17095        ) -> Self::Borrowed<'a> {
17096            value
17097        }
17098    }
17099
17100    unsafe impl fidl::encoding::TypeMarker for SocketDescribeResponse {
17101        type Owned = Self;
17102
17103        #[inline(always)]
17104        fn inline_align(_context: fidl::encoding::Context) -> usize {
17105            8
17106        }
17107
17108        #[inline(always)]
17109        fn inline_size(_context: fidl::encoding::Context) -> usize {
17110            16
17111        }
17112    }
17113
17114    unsafe impl
17115        fidl::encoding::Encode<
17116            SocketDescribeResponse,
17117            fidl::encoding::DefaultFuchsiaResourceDialect,
17118        > for &mut SocketDescribeResponse
17119    {
17120        unsafe fn encode(
17121            self,
17122            encoder: &mut fidl::encoding::Encoder<
17123                '_,
17124                fidl::encoding::DefaultFuchsiaResourceDialect,
17125            >,
17126            offset: usize,
17127            mut depth: fidl::encoding::Depth,
17128        ) -> fidl::Result<()> {
17129            encoder.debug_check_bounds::<SocketDescribeResponse>(offset);
17130            // Vector header
17131            let max_ordinal: u64 = self.max_ordinal_present();
17132            encoder.write_num(max_ordinal, offset);
17133            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
17134            // Calling encoder.out_of_line_offset(0) is not allowed.
17135            if max_ordinal == 0 {
17136                return Ok(());
17137            }
17138            depth.increment()?;
17139            let envelope_size = 8;
17140            let bytes_len = max_ordinal as usize * envelope_size;
17141            #[allow(unused_variables)]
17142            let offset = encoder.out_of_line_offset(bytes_len);
17143            let mut _prev_end_offset: usize = 0;
17144            if 1 > max_ordinal {
17145                return Ok(());
17146            }
17147
17148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
17149            // are envelope_size bytes.
17150            let cur_offset: usize = (1 - 1) * envelope_size;
17151
17152            // Zero reserved fields.
17153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
17154
17155            // Safety:
17156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
17157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
17158            //   envelope_size bytes, there is always sufficient room.
17159            fidl::encoding::encode_in_envelope_optional::<
17160                fidl::encoding::HandleType<
17161                    fidl::EventPair,
17162                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17163                    2147483648,
17164                >,
17165                fidl::encoding::DefaultFuchsiaResourceDialect,
17166            >(
17167                self.event.as_mut().map(
17168                    <fidl::encoding::HandleType<
17169                        fidl::EventPair,
17170                        { fidl::ObjectType::EVENTPAIR.into_raw() },
17171                        2147483648,
17172                    > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
17173                ),
17174                encoder,
17175                offset + cur_offset,
17176                depth,
17177            )?;
17178
17179            _prev_end_offset = cur_offset + envelope_size;
17180
17181            Ok(())
17182        }
17183    }
17184
17185    impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
17186        for SocketDescribeResponse
17187    {
17188        #[inline(always)]
17189        fn new_empty() -> Self {
17190            Self::default()
17191        }
17192
17193        unsafe fn decode(
17194            &mut self,
17195            decoder: &mut fidl::encoding::Decoder<
17196                '_,
17197                fidl::encoding::DefaultFuchsiaResourceDialect,
17198            >,
17199            offset: usize,
17200            mut depth: fidl::encoding::Depth,
17201        ) -> fidl::Result<()> {
17202            decoder.debug_check_bounds::<Self>(offset);
17203            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
17204                None => return Err(fidl::Error::NotNullable),
17205                Some(len) => len,
17206            };
17207            // Calling decoder.out_of_line_offset(0) is not allowed.
17208            if len == 0 {
17209                return Ok(());
17210            };
17211            depth.increment()?;
17212            let envelope_size = 8;
17213            let bytes_len = len * envelope_size;
17214            let offset = decoder.out_of_line_offset(bytes_len)?;
17215            // Decode the envelope for each type.
17216            let mut _next_ordinal_to_read = 0;
17217            let mut next_offset = offset;
17218            let end_offset = offset + bytes_len;
17219            _next_ordinal_to_read += 1;
17220            if next_offset >= end_offset {
17221                return Ok(());
17222            }
17223
17224            // Decode unknown envelopes for gaps in ordinals.
17225            while _next_ordinal_to_read < 1 {
17226                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17227                _next_ordinal_to_read += 1;
17228                next_offset += envelope_size;
17229            }
17230
17231            let next_out_of_line = decoder.next_out_of_line();
17232            let handles_before = decoder.remaining_handles();
17233            if let Some((inlined, num_bytes, num_handles)) =
17234                fidl::encoding::decode_envelope_header(decoder, next_offset)?
17235            {
17236                let member_inline_size = <fidl::encoding::HandleType<
17237                    fidl::EventPair,
17238                    { fidl::ObjectType::EVENTPAIR.into_raw() },
17239                    2147483648,
17240                > as fidl::encoding::TypeMarker>::inline_size(
17241                    decoder.context
17242                );
17243                if inlined != (member_inline_size <= 4) {
17244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
17245                }
17246                let inner_offset;
17247                let mut inner_depth = depth.clone();
17248                if inlined {
17249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
17250                    inner_offset = next_offset;
17251                } else {
17252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
17253                    inner_depth.increment()?;
17254                }
17255                let val_ref =
17256                self.event.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect));
17257                fidl::decode!(fidl::encoding::HandleType<fidl::EventPair, { fidl::ObjectType::EVENTPAIR.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val_ref, decoder, inner_offset, inner_depth)?;
17258                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
17259                {
17260                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
17261                }
17262                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
17263                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
17264                }
17265            }
17266
17267            next_offset += envelope_size;
17268
17269            // Decode the remaining unknown envelopes.
17270            while next_offset < end_offset {
17271                _next_ordinal_to_read += 1;
17272                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
17273                next_offset += envelope_size;
17274            }
17275
17276            Ok(())
17277        }
17278    }
17279}